విస్తరణ మరియు ఆన్లైన్

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