విస్తరణ మరియు ఆన్లైన్
i18n.site
సింగిల్-పేజీ అప్లికేషన్ ఆర్కిటెక్చర్ను స్వీకరిస్తుంది మరియు వెబ్సైట్ ప్రవేశ పేజీ మరియు వెబ్సైట్ కంటెంట్ స్వతంత్రంగా అమలు చేయబడతాయి.
పై అనువాదాన్ని అమలు చేసిన తర్వాత, డైరెక్టరీలు htm
మరియు v
md/out/dev
డైరెక్టరీ క్రింద జనరేట్ చేయబడతాయి.
ఇక్కడ, dev
అంటే ఇది .i18n/htm/dev.yml
కాన్ఫిగరేషన్ ఫైల్ ఆధారంగా నిర్మించబడింది.
dev
డైరెక్టరీ :
htm
డైరెక్టరీ అనేది వెబ్సైట్ ప్రవేశ పేజీ.
v
డైరెక్టరీలో వెర్షన్ నంబర్లతో వెబ్సైట్ కంటెంట్ ఉంది.
స్థానిక ప్రివ్యూ సంస్కరణ సంఖ్య గురించి పట్టించుకోదు మరియు అన్ని ఫైల్లను out/dev/v/0.1.0
డైరెక్టరీకి కాపీ చేస్తుంది.
అధికారిక విడుదల కోసం, మార్చబడిన ఫైల్లు కొత్త వెర్షన్ నంబర్ డైరెక్టరీకి కాపీ చేయబడతాయి.
-c
తో కాన్ఫిగరేషన్ ఫైల్ను పేర్కొనండి
విభిన్న కాన్ఫిగరేషన్ ఫైల్లు out
డైరెక్టరీలో సంబంధిత డైరెక్టరీలను సృష్టిస్తాయి.
ఉదాహరణకు, .i18n/htm/main.yml
out/main
డైరెక్టరీని సృష్టిస్తుంది.
dev.yml
మరియు main.yml
డిఫాల్ట్ కాన్ఫిగరేషన్లు.
dev
అనేది development
యొక్క సంక్షిప్తీకరణ, స్థానిక పరిదృశ్యం కోసం ఉపయోగించే అభివృద్ధి వాతావరణాన్ని సూచిస్తుంది మరియు ఇది డిఫాల్ట్ కాన్ఫిగరేషన్ ఫైల్ కూడా.
ol
అనేది online
యొక్క సంక్షిప్తీకరణ, ఇది అధికారిక విడుదల కోసం ఉపయోగించబడుతుంది, ఇది -n
నుండి npm
వరకు విడుదల చేయడానికి కమాండ్ లైన్ పారామితులను ఉపయోగిస్తున్నప్పుడు డిఫాల్ట్ కాన్ఫిగరేషన్ ఫైల్.
మీరు ఉపయోగించాల్సిన కాన్ఫిగరేషన్ ఫైల్ పేరును పేర్కొనడానికి కమాండ్ లైన్లో --htm_conf
ఉపయోగించండి:
ఉదాహరణకు:
i18n.site --htm_conf dist --save
ఇక్కడ --save
నవీకరణ విడుదల సంస్కరణ సంఖ్యను సూచిస్తుంది.
npmjs.comకు కంటెంట్ను ప్రచురించండి
కు కంటెంట్ని ప్రచురించడం npmjs.com సిఫార్సు చేయబడిన డిఫాల్ట్ పరిష్కారం ( ముందు-ముగింపు అధిక లభ్యత చూడండి).
npm & పోస్ట్
nodejs
ఇన్స్టాల్ చేయండి, npm login
తో లాగిన్ చేయండి.
md/.i18n/htm/main.yml
సవరించండి మరియు md:
YOUR_NPM_PACKAGE
ని మీ స్వంత npm
ప్యాకేజీ పేరుగా మార్చండి npmjs.com
ఆపై md/.i18n/htm/main.package.json
సవరించండి
అనువదించడానికి మరియు ప్రచురించడానికి md
డైరెక్టరీలో i18n.site --npm
లేదా i18n.site -n
అమలు చేయండి.
మీరు ప్రచురించడానికి నిరంతర ఏకీకరణ వాతావరణాన్ని ఉపయోగిస్తే, nodejs
ఇన్స్టాల్ చేయాల్సిన అవసరం లేదు. లాగిన్ చేసిన మరియు పబ్లిషింగ్ అనుమతులు ~/.npmrc
పర్యావరణానికి కాపీ చేయండి.
మీరు main.yml
లో v:
ప్యాకేజీ పేరును సవరించినట్లయితే, దయచేసి ముందుగా .i18n/v/main
తొలగించి, ఆపై ప్రచురించాలని నిర్ధారించుకోండి .
npm ద్వారా ప్రాక్సీ సర్వర్ ప్రచురించబడింది
చైనా ప్రధాన భూభాగంలోని వినియోగదారులు నెట్వర్క్ సమస్యలను ఎదుర్కొంటే మరియు npm
ప్యాకేజీలను ప్రచురించలేకపోతే, వారు ప్రాక్సీ సర్వర్ను కాన్ఫిగర్ చేయడానికి పర్యావరణ వేరియబుల్ https_proxy
సెట్ చేయవచ్చు.
మీ ప్రాక్సీ సర్వర్ పోర్ట్ 7890
అని ఊహిస్తూ, మీరు వ్రాయవచ్చు:
https_proxy=http://127.0.0.1:7890 i18n.site -n
స్వీయ-హోస్ట్ కంటెంట్
మీరు కంటెంట్ను స్వీయ-హోస్ట్ చేయాలనుకుంటే, ముందుగా md/.i18n/htm/main.yml
సవరించండి మరియు v: //i18n-v.xxx.com
వంటి మీ URL ఉపసర్గకు v: //unpkg.com/i18n.site
మార్చండి.
md
డైరెక్టరీని నమోదు చేసి, అమలు చేయండి
i18n.site --htm_conf ol --save
లేదా సంక్షిప్తీకరణ
i18n.site -c ol -s
తర్వాత, md/out/main/v
డైరెక్టరీలోని కంటెంట్ను v:
లో సెట్ చేసిన URL ప్రిఫిక్స్ పాత్కు కాన్ఫిగర్ చేయండి.
చివరగా, /.v
నుండి 1s
వరకు ముగిసే మార్గం యొక్క కాష్ సమయాన్ని కాన్ఫిగర్ చేయండి , లేకుంటే కొత్తగా విడుదల చేసిన కంటెంట్ని వెంటనే యాక్సెస్ చేయడం సాధ్యం కాదు.
అనవసరమైన అభ్యర్థనలను తగ్గించడానికి ఇతర మార్గాల కోసం కాష్ సమయాన్ని ఒక సంవత్సరం లేదా అంతకంటే ఎక్కువ కాలానికి సెట్ చేయవచ్చు.
కంటెంట్ని s3కి హోస్ట్ చేయండి
స్వీయ- CDN
కంటెంట్ కోసం, మీ స్వంత సర్వర్ని ఉపయోగించడంతో పాటు, మరొక సాధారణ ఎంపిక S3
+
మీరు S3
సర్వర్కు లాగిన్ చేయడానికి rclone ఉపయోగించవచ్చు, ఆపై క్రింది స్క్రిప్ట్ను చూడండి మరియు సవరించండి మరియు ప్రతి విడుదలకు S3
కి పెరుగుతున్న మార్పులను మాత్రమే కాపీ చేయండి.
i18n.site -c ol -s
s3=your-s3
bucket=your-bucket
ver=$(head -1 .i18n/v/main/v.hash | cut -c 2-)
rclone copy --overwrite-dir out/main/htm/v/$ver $s3:/$bucket/$ver
rclone copy out/main/v/.v "$s3:/$bucket/"
CDN
కాన్ఫిగర్ చేయాలని గుర్తుంచుకోండి, తద్వారా /.v
తో ముగిసే మార్గం యొక్క కాష్ సమయం 1s
అవుతుంది, లేకపోతే కొత్తగా విడుదల చేసిన కంటెంట్ని వెంటనే యాక్సెస్ చేయడం సాధ్యం కాదు.
వెబ్సైట్ను ప్రచురించండి
వెబ్సైట్ను ఎక్కడైనా అమలు చేయవచ్చు github page మరియు cloudflare page మంచి ఎంపికలు.
వెబ్సైట్ ఒకే పేజీ అప్లికేషన్ ఆర్కిటెక్చర్ని ఉపయోగిస్తున్నందున, .
నుండి index.html
వరకు లేని URL పాత్లను తిరిగి వ్రాయాలని గుర్తుంచుకోండి.
వెబ్సైట్ ఎంట్రీ పేజీని ఒకసారి మాత్రమే అమలు చేయాలి మరియు తదుపరి కంటెంట్ అప్డేట్ల కోసం వెబ్సైట్ ఎంట్రీ పేజీని మళ్లీ అమలు చేయాల్సిన అవసరం లేదు.
గిథబ్ పేజీలో అమలు చేయండి
ఒక సంస్థను సృష్టించడానికి మొదట github క్లిక్ చేయండి i18n-demo
ఒక ఉదాహరణ.
ఆపై ఈ సంస్థ క్రింద వేర్హౌస్ i18n-demo.github.io
ని సృష్టించండి (దయచేసి మీరు సృష్టించిన సంస్థ పేరుతో i18n-demo
భర్తీ చేయండి):
మునుపటి కథనంలోని కంటెంట్ను : , దయచేసి ఈ డైరెక్టరీని నమోదు చేసి రన్ చేయండి out/main/htm
ln -s index.html 404.html
URL పాత్ రీరైటింగ్కు github page
మద్దతు ఇవ్వనందున, బదులుగా 404.html
ఉపయోగించబడుతుంది.
ఆపై htm
డైరెక్టరీలో కింది ఆదేశాన్ని అమలు చేయండి ( i18n-demo/i18n-demo.github.io.git
మీ స్వంత గిడ్డంగి చిరునామాతో భర్తీ చేయాలని గుర్తుంచుకోండి) :
git init
git branch -M main
git remote add origin [email protected]:i18n-demo/i18n-demo.github.io.git
git push -u origin main -f
కోడ్ను నొక్కిన తర్వాత, మీరు దాన్ని యాక్సెస్ చేయడానికి ముందు github page
యొక్క విస్తరణ విజయవంతంగా (క్రింద చూపిన విధంగా) అమలు అయ్యే వరకు వేచి ఉండండి.
డెమో పేజీ కోసం దయచేసి చూడండి:
https://i18n-demo.github.io
క్లౌడ్ఫ్లేర్ పేజీలో అమర్చండి
cloudflare page github page
cloudflare page
యొక్క విస్తరణ సాధారణంగా ఎగువ github page
యొక్క విస్తరణపై ఆధారపడి ఉంటుంది.
ఒక ప్రాజెక్ట్ను సృష్టించండి మరియు పైన ఉన్న i18n-demo.github.io
గిడ్డంగిని బంధించండి.
ప్రక్రియ క్రింది చిత్రంలో చూపబడింది:
సంస్థ i18n-demo
కి ప్రాప్యతను మంజూరు చేయడానికి దయచేసి Add Account
క్లిక్ చేయండి.
మీరు మరొక సంస్థ యొక్క వేర్హౌస్ను కట్టుబడి ఉన్నట్లయితే, కొత్త సంస్థ ప్రదర్శించబడటానికి ముందు రెండుసార్లు అధికారం ఇవ్వడానికి మీరు Add Account
రెండుసార్లు క్లిక్ చేయాల్సి రావచ్చు.
తరువాత, వేర్హౌస్ i18n-demo.github.io
ఎంచుకుని, ఆపై Begin setup
క్లిక్ చేసి, తదుపరి దశల కోసం డిఫాల్ట్ విలువలను ఉపయోగించండి.
మొదటిసారి బైండింగ్ చేసిన తర్వాత, మీరు దీన్ని యాక్సెస్ చేయడానికి కొన్ని నిమిషాలు వేచి ఉండాలి.
విస్తరణ తర్వాత, మీరు అనుకూల డొమైన్ పేరును బైండ్ చేయవచ్చు.
కస్టమ్ డొమైన్ పేరును బైండింగ్ చేసిన తర్వాత, దిగువ చూపిన విధంగా సింగిల్-పేజీ అప్లికేషన్ యొక్క పాత్ రీరైటింగ్ను కాన్ఫిగర్ చేయడానికి దయచేసి డొమైన్ పేరుకు వెళ్లండి:
పై చిత్రంలో ఉన్న నియమాలు క్రింది విధంగా ఉన్నాయి, దయచేసి మీరు కట్టుబడి ఉన్న డొమైన్ పేరుతో దిగువన ఉన్న i18n.site
భర్తీ చేయండి.
(http.host in {"i18n.site"}) and not (
substring(http.request.uri.path,-3) in {".js" ".gz"} or
substring(http.request.uri.path,-4) in {".htm" ".rss" ".css" ".svg" ".ico" ".png" ".xml" ".txt"} or
substring(http.request.uri.path,-5) in {".html" ".avif" ".json"} or
ends_with(http.request.uri.path,".webmanifest")
)
అదనంగా, దయచేసి దిగువ చూపిన విధంగా కాష్ నియమాలను కాన్ఫిగర్ చేయండి మరియు కాష్ వ్యవధిని ఒక నెలకు సెట్ చేయండి.
దయచేసి పై చిత్రంలో రెండవ దశలో సరిపోలే డొమైన్ పేరును మీరు కట్టుబడి ఉన్న డొమైన్ పేరుకు మార్చండి.
చైనా ప్రధాన భూభాగంలో వెబ్సైట్ విస్తరణను ఆప్టిమైజ్ చేయడం
మీరు మెయిన్ల్యాండ్ చైనా యొక్క నెట్వర్క్ వాతావరణంలో మెరుగైన ప్రాప్యత పనితీరును పొందాలనుకుంటే, దయచేసి ముందుగా డొమైన్ పేరును నమోదు చేయండి .
తర్వాత, + ప్రధాన భూభాగంలోని క్లౌడ్ విక్రేతల ఆబ్జెక్ట్ స్టోరేజ్ని ఉపయోగించండి CDN
కింది కంటెంట్ని అమలు చేయండి out/main/htm
.
సింగిల్-పేజీ అప్లికేషన్లకు అనుగుణంగా మార్గాన్ని తిరిగి వ్రాయడానికి మీరు ఎడ్జ్ కంప్యూటింగ్ను ఉపయోగించవచ్చు ఉదాహరణకు, Baidu Smart Cloud CDN
ని ఇలా కాన్ఫిగర్ చేయవచ్చు:
const uri = r.uri, p = uri.lastIndexOf(".");
if (
p < 0 ||
!"|js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest|".includes(
"|" + uri.slice(p + 1) + "|",
)
) {
const ua = r.headersIn["User-Agent"].toLowerCase()
if (/facebookexternalhit|slurp|bot|spider|curl/.test(ua)) {
r.return(
302,
(/baidu|yisou|sogou|360|byte/.test(ua) ? "/zh" : "/en") + r.uri + ".htm",
)
} else {
r.uri = "/index.html"
}
}
r.respHeader(() => {
const t = [], out = r.headersOut;
["Content-MD5", "Age", "Expires", "Last-Modified"].forEach(
i => delete out[i]
)
r.rawHeadersOut.forEach(i => {
const key = i[0].toLowerCase()
if (key.startsWith("x-") || key.startsWith("ohc-")) {
delete out[key]
}
})
out["Cache-Control"] = "max-age=" + 9e5
// అవుట్పుట్ను డీబగ్ చేయడానికి మీరు ప్రతిస్పందన హెడర్ను సెట్ చేయవచ్చు, ఉదాహరణకు అవుట్.XXX = 'MSG';
})
రికార్డ్ MX
మరియు రికార్డ్ CNAME
సహజీవనం చేయలేవు కాబట్టి, మీరు అదే సమయంలో డొమైన్ పేరు ఇమెయిల్లను స్వీకరించాలనుకుంటే, cname_flatten CNAME
స్థాయిని A
చేయడానికి స్క్రిప్ట్తో సహకరించాలి.
అదనంగా, చైనా ప్రధాన భూభాగంలో క్లౌడ్ విక్రేతల విదేశీ ట్రాఫిక్ ఛార్జీలు సాపేక్షంగా ఖరీదైనవి, మీరు ఖర్చులను ఆప్టిమైజ్ చేయాలనుకుంటే, మీరు సాధించడానికి DNS Cloud యొక్క ఉచిత భౌగోళిక రిజల్యూషన్ మరియు Cloudflare for SaaS యొక్క అనుకూల డొమైన్ పేరు (క్రింద చూపిన విధంగా) ఉపయోగించవచ్చు ట్రాఫిక్ మళ్లింపు──ప్రధాన భూభాగంలో ట్రాఫిక్ రూటింగ్ చైనా బైడు క్లౌడ్ CDN
, అంతర్జాతీయ ట్రాఫిక్ cloudflare .
ఈ విస్తరణ ఆప్టిమైజేషన్ సొల్యూషన్లు మరింత క్లిష్టంగా ఉంటాయి మరియు భవిష్యత్తులో ప్రత్యేక అధ్యాయాలలో పరిచయం చేయబడతాయి.
సాధారణ డొమైన్ పేరు దారి మళ్లింపు
మీరు మీ ప్రధాన వెబ్సైట్గా వెబ్సైట్ను రూపొందించడానికి i18n.site
ఉపయోగిస్తే, మీరు సాధారణంగా పాన్-డొమైన్ దారి మళ్లింపును కాన్ఫిగర్ చేయాలి, అంటే *.xxx.com
( www.xxx.com
) నుండి xxx.com
కి యాక్సెస్ను దారి మళ్లించండి.
ఈ అవసరాన్ని అలీబాబా క్లౌడ్ CDN
EdgeScript
( ఇంగ్లీష్ డాక్యుమెంట్ / చైనీస్ డాక్యుమెంట్ ) సహాయంతో సాధించవచ్చు.
CDN క్లౌడ్లో డొమైన్ పేరును జోడించండి మరియు అలీబాబా క్లౌడ్ CDN
లో డొమైన్ పేరు *.xxx.com
నుండి CNAME
వరకు సూచించండి.
ఉదాహరణకు, పై చిత్రంలో *.i18n.site
యొక్క పాన్-డొమైన్ పేరు దారి మళ్లింపు కాన్ఫిగరేషన్ క్రింది విధంగా ఉంది:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
nginxతో అమర్చండి
దయచేసి server
nginx కిందివాటికి సారూప్యమైన కాన్ఫిగరేషన్ను జోడించండి /root/i18n/md/out/main/htm
మీ స్వంత ప్రాజెక్ట్ out/main/htm
కి మార్చండి:
location / {
root /root/i18n/md/out/main/htm;
add_header Cache-Control "max-age=9999999";
if ($uri !~* \.(avif|css|html|ico|js|json|png|svg|txt|webmanifest|xml)$) {
rewrite ^ /index.html last;
}
}
github action
నిరంతర ఏకీకరణ ఆధారంగా
మీ github action
కాన్ఫిగర్ చేయడానికి మీరు క్రింది వాటిని సూచించవచ్చు:
name: i18n.site
on:
workflow_dispatch:
push:
branches:
- main
- dist
jobs:
i18n:
permissions:
repository-projects: write
contents: write
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: https://i18n.site
uses: i18n-site/github-action-i18n.site@main
with:
I18N_SITE_TOKEN: ${{ secrets.I18N_SITE_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
కాన్ఫిగరేషన్లో చూడగలిగినట్లుగా, బ్రాంచ్ main
మరియు బ్రాంచ్ dist
కి నెట్టేటప్పుడు ఈ వర్క్ఫ్లో ప్రేరేపించబడుతుంది.
వర్క్ఫ్లో పత్రాన్ని ప్రచురించడానికి బ్రాంచ్ పేరుకు సంబంధించిన కాన్ఫిగరేషన్ ఫైల్ను ఉపయోగిస్తుంది, .i18n/htm/main.yml
మరియు .i18n/htm/dist.yml
వరుసగా పబ్లిషింగ్ కాన్ఫిగరేషన్గా ఉపయోగించబడుతుంది.
పత్రం విడుదల ప్రక్రియ కోసం మేము క్రింది ఉత్తమ పద్ధతులను సిఫార్సు చేస్తున్నాము:
మార్పులు బ్రాంచ్ main
కి నెట్టబడినప్పుడు, పత్రం నిర్మించబడటానికి ప్రేరేపించబడుతుంది మరియు ప్రివ్యూ స్టేషన్కి అమర్చబడుతుంది (ప్రివ్యూ స్టేషన్ అందుబాటులో ఉంది github page ).
ప్రివ్యూ సైట్లో డాక్యుమెంట్ సరైనదని నిర్ధారించిన తర్వాత, కోడ్ విలీనం చేయబడుతుంది మరియు బ్రాంచ్ dist
కి నెట్టబడుతుంది మరియు అధికారిక బిల్డ్ మరియు డిప్లాయ్మెంట్ ఆన్లైన్లోకి వెళ్తుంది.
వాస్తవానికి, పై ప్రక్రియను అమలు చేయడానికి మరిన్ని కాన్ఫిగరేషన్లను వ్రాయడం అవసరం.
వర్క్ఫ్లో స్క్రిప్టింగ్ కోసం మీరు అసలు ప్రాజెక్ట్ని చూడవచ్చు github.com/fcdoc/doc
కాన్ఫిగరేషన్లోని secrets.I18N_SITE_TOKEN
మరియు secrets.NPM_TOKEN
మీరు కోడ్ బేస్లో రహస్య వేరియబుల్స్ను కాన్ఫిగర్ చేయాలి.
I18N_SITE_TOKEN
పొందండి i18n.site/token
NPM_TOKEN
అనేది కాన్ఫిగరేషన్లోని ప్యాకేజీ npm
యొక్క ప్రచురణ టోకెన్ను npmjs.com మరియు ప్రచురణ అనుమతులతో టోకెన్ను సృష్టించండి (క్రింద చూపిన విధంగా).
డైరెక్టరీ నిర్మాణం
public
వెబ్సైట్ యొక్క స్టాటిక్ ఫైల్లు, favicon.ico
, robots.txt
, మొదలైనవి.
ఇక్కడ ఉన్న ఐకాన్ ఫైల్లను దీనితో రూపొందించవచ్చు realfavicongenerator.net
.i18n
.i18n
డైరెక్టరీ క్రింద i18n.site
యొక్క కాన్ఫిగరేషన్ ఫైల్లు, అనువాద కాష్ మొదలైనవి ఉన్నాయి. వివరాల కోసం తదుపరి అధ్యాయం "కాన్ఫిగరేషన్" చూడండి.
en
మూల భాష డైరెక్టరీ, .i18n/conf.yml
కాన్ఫిగరేషన్ ఫైల్లో fromTo
లో en
కి అనుగుణంగా ఉంటుంది
i18n:
fromTo:
en: zh
దయచేసి అనువాదం కాన్ఫిగరేషన్ని చూడండి i18