Skjerament U Online

i18n.site jadotta arkitettura ta 'applikazzjoni ta' paġna waħda , u l-paġna tad-dħul tal-websajt u l-kontenut tal-websajt huma skjerati b'mod indipendenti.

Wara li tmexxi t-traduzzjoni ta' hawn fuq, id-direttorji htm u v se jiġu ġġenerati taħt id-direttorju md/out/dev .

Hawnhekk, dev tfisser li hija mibnija bbażata fuq il-fajl ta 'konfigurazzjoni .i18n/htm/dev.yml .

dev direttorju :

Id-direttorju htm huwa l-paġna tad-dħul tal-websajt.

Id-direttorju v fih kontenut tal-websajt b'numri tal-verżjoni.

Preview lokali ma jimpurtax min-numru tal-verżjoni u se tikkopja l-fajls kollha fid-direttorju out/dev/v/0.1.0 .

Għar-rilaxx uffiċjali, il-fajls mibdula jiġu kkupjati fid-direttorju tan-numru tal-verżjoni l-ġdid.

Speċifika L-Fajl Tal-Konfigurazzjoni -c

Fajls ta' konfigurazzjoni differenti se joħolqu direttorji korrispondenti fid-direttorju out .

Pereżempju, .i18n/htm/main.yml se joħloq id-direttorju out/main .

dev.yml u main.yml huma l-konfigurazzjonijiet default.

dev hija l-abbrevjazzjoni ta ' development , li tindika l-ambjent ta' żvilupp, użat għall-preview lokali, u huwa wkoll il-fajl tal-konfigurazzjoni default. ol hija l-abbrevjazzjoni ta ' online , li tindika l-ambjent onlajn, li jintuża għar-rilaxx uffiċjali Huwa wkoll il-fajl tal-konfigurazzjoni default meta tuża l-parametri tal-linja tal-kmand -n sa npm għar-rilaxx.

Tista 'wkoll toħloq fajls ta' konfigurazzjoni oħra Uża --htm_conf fuq il-linja tal-kmand biex tispeċifika l-isem tal-fajl tal-konfigurazzjoni biex tuża:

per eżempju:

i18n.site --htm_conf dist --save

Hawnhekk --save jirrappreżenta n-numru tal-verżjoni tar-rilaxx tal-aġġornament.

Ippubblika l-kontenut fuq npmjs.com

Il-pubblikazzjoni ta' kontenut għal npmjs.com hija s-soluzzjoni default rakkomandata (ara Disponibbiltà Għolja ta' Front-end ).

npm & Post

Installa nodejs , idħol npm login .

Editja md/.i18n/htm/main.yml u ibdel il-valur ta npmjs.com md: YOUR_NPM_PACKAGE bħala l-isem tal-pakkett npm tiegħek.

Imbagħad immodifika md/.i18n/htm/main.package.json

Mexxi i18n.site --npm jew i18n.site -n fid-direttorju md biex tittraduċi u tippubblika.

Jekk tuża ambjent ta 'integrazzjoni kontinwa biex tippubblika, m'hemmx bżonn li tinstalla nodejs Sempliċement tikkopja l-permessi li illoggjat u tal-pubblikazzjoni ~/.npmrc fl-ambjent.

Jekk timmodifika l-isem tal-pakkett ta ' v: main.yml , jekk jogħġbok kun żgur li tħassar .i18n/v/main l-ewwel u mbagħad tippubblikah.

Proxy Server Ippubblikat Minn npm

Jekk l-utenti fiċ-Ċina kontinentali jiltaqgħu ma 'problemi tan-netwerk u ma jkunux jistgħu jippubblikaw pakketti npm , jistgħu jistabbilixxu l-varjabbli ambjentali https_proxy biex jikkonfiguraw is-server proxy.

Jekk wieħed jassumi li l-port tas-server proxy tiegħek huwa 7890 , tista 'tikteb:

https_proxy=http://127.0.0.1:7890 i18n.site -n

Kontenut Self-Hosted

Jekk trid tospita l-kontenut lilha nnifisha, l-ewwel editja md/.i18n/htm/main.yml u biddel v: //unpkg.com/i18n.site għall-prefiss tal-URL tiegħek, bħal v: //i18n-v.xxx.com .

Daħħal id-direttorju md u run

i18n.site --htm_conf ol --save

jew abbrevjazzjoni

i18n.site -c ol -s

Imbagħad, ikkonfigura l-kontenut fid-direttorju md/out/main/v għall-passaġġ tal-prefiss tal-URL stabbilit v: .

Fl-aħħarnett, ikkonfigura l-ħin tal-cache tal-mogħdija li tispiċċa /.v sa 1s , inkella l-kontenut li għadu kif ħareġ ma jistax jiġi aċċessat immedjatament.

Il-ħin tal-cache għal mogħdijiet oħra jista 'jiġi ssettjat għal sena jew aktar biex jitnaqqsu t-talbiet mhux meħtieġa.

Ospitanti Kontenut Għal s3

Biex tospita l-kontenut CDN stess, minbarra li tuża s-server tiegħek, għażla komuni oħra hija li tuża S3 + .

Tista' tuża rclone biex tidħol fis-server S3 , imbagħad tirreferi u timmodifika l-iskrittura li ġejja, u tikkopja biss il-bidliet inkrementali għal S3 għal kull rilaxx.

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/"

Ftakar li tikkonfigura CDN sabiex il-ħin tal-cache tal-mogħdija li tispiċċa /.v ikun 1s , inkella l-kontenut li għadu kif ħareġ ma jistax jiġi aċċessat immedjatament.

Tippubblika Websajt

Il-websajt tista' tiġi skjerata kullimkien, github page cloudflare page huma għażliet tajbin.

Minħabba li l-websajt tuża arkitettura ta 'applikazzjoni ta' paġna waħda , ftakar li terġa 'tikteb mogħdijiet tal-URL li ma fihomx . sa index.html .

Il-paġna tad-dħul tal-websajt teħtieġ li tiġi skjerata darba biss, u m'hemmx bżonn li terġa' titħaddem il-paġna tad-dħul tal-websajt għal aġġornamenti sussegwenti tal-kontenut.

Użu Fuq Il-Paġna github

L-ewwel ikklikkja github biex toħloq organizzazzjoni L-isem tal-organizzazzjoni li ġej huwa i18n-demo bħala eżempju.

Imbagħad oħloq maħżen i18n-demo.github.io taħt din l-organizzazzjoni (jekk jogħġbok ibdel i18n-demo bl-isem tal-organizzazzjoni li ħloqt):

Meta tippubblika l-kontenut fl-artiklu preċedenti, out/main/htm ġie ġġenerat. Jekk jogħġbok daħħal dan id-direttorju u run :

ln -s index.html 404.html

Minħabba li github page ma jappoġġjax il-kitba mill-ġdid tal-passaġġ tal-URL, minflok jintuża 404.html .

Imbagħad mexxi l-kmand li ġej fid-direttorju htm (ftakar li tissostitwixxi i18n-demo/i18n-demo.github.io.git bl-indirizz tal-maħżen tiegħek) :

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

Wara li timbotta l-kodiċi, stenna li l-iskjerament ta ' github page jaħdem b'suċċess (kif muri hawn taħt) qabel ma tkun tista' taċċessah.

Għal paġna demo jekk jogħġbok ara:

https://i18n-demo.github.io

Uża Fuq Il-Paġna cloudflare

cloudflare page ma ' github page , jipprovdi kitba mill-ġdid tal-passaġġ u huwa aktar faċli għaċ-Ċina kontinentali u huwa aktar aċċessibbli.

L-iskjerament ta' cloudflare page normalment ikun ibbażat fuq l-iskjerament ta' github page hawn fuq.

Oħloq proġett u torbot il-maħżen i18n-demo.github.io hawn fuq.

Il-proċess jidher fil-figura hawn taħt:

Jekk jogħġbok ikklikkja Add Account biex tagħti aċċess għall-organizzazzjoni i18n-demo .

Jekk rbit il-maħżen ta' organizzazzjoni oħra, jista' jkollok bżonn tikklikkja Add Account darbtejn biex tawtorizza darbtejn qabel ma tintwera l-organizzazzjoni l-ġdida.

Sussegwentement, agħżel maħżen i18n-demo.github.io , imbagħad ikklikkja Begin setup , u uża l-valuri awtomatiċi għall-passi sussegwenti.

Wara li torbot għall-ewwel darba, trid tistenna ftit minuti qabel ma tkun tista' taċċessah.

Wara l-iskjerament, tista' torbot isem tad-dominju tad-dwana.

Wara li torbot l-isem tad-dominju tad-dwana, jekk jogħġbok mur fl-isem tad-dominju biex tikkonfigura l-kitba mill-ġdid tal-passaġġ tal-applikazzjoni ta 'paġna waħda, kif muri hawn taħt:

Ir-regoli fl-istampa ta' hawn fuq huma kif ġej Jekk jogħġbok ibdel i18n.site fl-ewwel linja hawn taħt bl-isem tad-dominju li torbot.

(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")
)

Barra minn hekk, jekk jogħġbok ikkonfigura r-regoli tal-cache, kif muri hawn taħt, u ssettja t-tul tal-cache għal xahar.

Jekk jogħġbok ibdel l-isem tad-dominju li jaqbel fit-tieni pass fl-istampa ta' hawn fuq għall-isem tad-dominju li torbot.

L-Ottimizzazzjoni Tal-Iskjerament Tal-Websajt Fiċ-Ċina Kontinentali

Jekk trid tikseb prestazzjoni aħjar ta 'aċċessibbiltà fl-ambjent tan-netwerk taċ-Ċina kontinentali, jekk jogħġbok irreġistra isem ta' dominju l-ewwel.

Imbagħad, uża l-ħażna tal-oġġetti tal out/main/htm bejjiegħa tas-sħab fiċ-Ċina kontinentali + Użu l-kontenut li ġej CDN .

Tista 'tuża edge computing biex tikteb mill-ġdid il-mogħdija biex tadatta għal applikazzjonijiet ta' paġna waħda Per eżempju, Baidu Smart Cloud CDN jista 'jiġi kkonfigurat hekk:

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
  // L-intestaturi tar-rispons jistgħu jiġu ssettjati biex jiddebugjaw l-output, bħal out.XXX = 'MSG';
})

Minħabba li r-rekord MX u r-rekord CNAME ma jistgħux jeżistu flimkien, jekk trid tirċievi emails bl-isem tad-dominju fl-istess ħin, trid tikkoopera mal cname_flatten iskript għal-livell CNAME fir-rekord A .

Barra minn hekk, minħabba li t-tariffi tat-traffiku barranin tal-bejjiegħa tas-sħab fiċ-Ċina kontinentali huma relattivament għaljin, jekk trid tottimizza l-ispejjeż, tista 'tuża DNS -riżoluzzjoni ġeografika ħielsa ta' Huawei Cloud u l-isem tad-dominju tad-dwana Cloudflare for SaaS (kif muri hawn taħt) biex tikseb! devjazzjoni tat-traffiku──Rotot tat-traffiku fiċ-Ċina kontinentali Baidu Cloud CDN , it-traffiku internazzjonali jmur cloudflare .

Dawn is-soluzzjonijiet għall-ottimizzazzjoni tal-iskjerament huma aktar kumplessi u se jiġu introdotti f'kapitoli separati fil-futur.

Ridirezzjoni Ġenerika Ta' L-Isem Tad-Dominju

Jekk tuża i18n.site biex tiġġenera websajt bħala l-websajt prinċipali tiegħek, normalment ikollok bżonn tikkonfigura direzzjoni mill-ġdid pan-domain, jiġifieri, aċċess mill-ġdid għal *.xxx.com (inkluż www.xxx.com ) għal xxx.com .

Dan ir-rekwiżit jista 'jinkiseb bl-għajnuna ta' Alibaba Cloud CDN EdgeScript ( dokument bl-Ingliż / Dokument Ċiniż )

Żid l-isem tad-dominju f'Alibaba CDN u poġġi l-isem tad-dominju *.xxx.com sa CNAME f'Alibaba Cloud CDN .

Pereżempju, il-konfigurazzjoni tar-ridirezzjoni tal-isem pan-dominju ta ' *.i18n.site fl-istampa ta' hawn fuq hija kif ġej:

rewrite(concat('https://i18n.site',$uri), 'redirect',301)

Użu B'nginx

Jekk jogħġbok żid konfigurazzjoni simili għal dan li ġej fil-paragrafu server ta nginx Jekk jogħġbok ibdel /root/i18n/md/out/main/htm għall-mogħdija tal-proġett tiegħek stess 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;
  }
}

Ibbażat Fuq github action Integrazzjoni Kontinwa

Tista' tirreferi għal dan li ġej biex tikkonfigura github action tiegħek:

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 }}

Kif jidher fil-konfigurazzjoni, dan il-fluss tax-xogħol jiġi attivat meta timbotta lejn il-fergħa main u l-fergħa dist .

Il-fluss tax-xogħol se juża l-fajl tal-konfigurazzjoni li jikkorrispondi għall-isem tal-fergħa biex jippubblika d-dokument Hawnhekk, .i18n/htm/main.yml u .i18n/htm/dist.yml se jintużaw bħala l-konfigurazzjoni tal-pubblikazzjoni rispettivament.

Nirrakkomandaw l-aħjar prattiki li ġejjin għall-proċess tar-rilaxx tad-dokumenti:

Meta l-bidliet jiġu mbuttati lejn il-fergħa main , id-dokument jiġi attivat biex jinbena u jiġi skjerat fl-istazzjon tal-preview (l-istazzjon tal-preview huwa disponibbli github page ).

Wara li tikkonferma li d-dokument huwa korrett fuq is-sit tal-preview, il-kodiċi se jiġi magħqud u mbuttat lejn il-fergħa dist , u l-bini uffiċjali u l-iskjerament se jmorru onlajn.

Naturalment, l-implimentazzjoni tal-proċess ta 'hawn fuq teħtieġ il-kitba ta' aktar konfigurazzjonijiet.

Tista' tirreferi għall-proġett attwali għall-iskript tal-fluss tax-xogħol github.com/fcdoc/doc

secrets.I18N_SITE_TOKEN u secrets.NPM_TOKEN fil-konfigurazzjoni jeħtieġu li inti tikkonfigura varjabbli sigrieti fil-bażi tal-kodiċi.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN huwa t-token tal-pubblikazzjoni tal-pakkett npm fil-konfigurazzjoni npmjs.com oħloq token bil-permessi tal-pubblikazzjoni (kif muri hawn taħt).

Struttura Tad-Direttorju

public

Fajls statiċi tal-websajt, bħal favicon.ico , robots.txt , eċċ.

Il-fajls tal-ikona hawn jistgħu jiġu ġġenerati b' realfavicongenerator.net

.i18n

Taħt id-direttorju .i18n hemm il-fajls tal-konfigurazzjoni, il-cache tat-traduzzjoni, eċċ. ta ' i18n.site Ara l-kapitolu li jmiss "Konfigurazzjoni" għad-dettalji.

en

Direttorju tal-lingwa tas-sors, li jikkorrispondi għal fajl ta' konfigurazzjoni en minn fromTo .i18n/conf.yml

i18n:
  fromTo:
    en: zh

Jekk jogħġbok irreferi għall-konfigurazzjoni tat-traduzzjoni i18