Ynset en Online
i18n.site
nimt in applikaasje-arsjitektuer fan ien side oan, en de webside yngongsside en webside-ynhâld wurde ûnôfhinklik ynset.
Nei it útfieren fan de boppesteande oersetting, wurde mappen htm
en v
generearre ûnder de map md/out/dev
.
Hjir, dev
betsjut dat it is boud basearre op de .i18n/htm/dev.yml
konfiguraasje triem.
dev
folder :
De map htm
is de yngongside fan 'e webside.
De map v
befettet websideynhâld mei ferzjenûmers.
Lokale foarbyld makket neat oer it ferzjenûmer en sil alle bestannen kopiearje nei de out/dev/v/0.1.0
map.
Foar offisjele frijlitting sille feroare bestannen kopiearre wurde nei it nije ferzjenûmermap.
Spesifisearje Konfiguraasjetriem Mei -c
Ferskillende konfiguraasjetriemmen sille oerienkommende mappen meitsje yn 'e out
-map.
Bygelyks, .i18n/htm/main.yml
sil de map out/main
oanmeitsje.
dev.yml
en main.yml
binne de standert konfiguraasjes.
dev
is de ôfkoarting fan development
, wat de ûntwikkelingsomjouwing oanjout, brûkt foar lokale foarbyld, en is ek it standert konfiguraasjetriem.
ol
is de ôfkoarting npm
online
, wat de online omjouwing -n
, dy't brûkt wurdt foar offisjele frijlitting.
Jo kinne ek oare konfiguraasjetriemmen oanmeitsje Brûk --htm_conf
op 'e kommandorigel om de konfiguraasjetriemnamme oan te jaan dy't jo wolle brûke.
bygelyks:
i18n.site --htm_conf dist --save
Hjir stiet --save
foar it ferzjenûmer fan de fernijing útjefte.
Publisearje ynhâld op npmjs.com
It publisearjen fan ynhâld nei npmjs.com
npm Oanmelde & Post
Ynstallearje nodejs
, oanmelde mei npm login
.
Bewurkje md/.i18n/htm/main.yml
npmjs.com feroarje de wearde fan md:
YOUR_NPM_PACKAGE
as jo eigen npm
pakketnamme.
Dan feroarje md/.i18n/htm/main.package.json
Run i18n.site --npm
of i18n.site -n
yn 'e md
map om te oersetten en te publisearjen.
As jo gebrûk meitsje fan in trochgeande yntegraasje omjouwing te publisearjen, der is gjin needsaak om te ynstallearjen nodejs
Krekt kopiearje de oanmelden en publisearjen tastimmingen ~/.npmrc
nei de omjouwing.
As jo de pakketnamme fan v:
yn main.yml
wizigje, wês dan wis dat jo earst .i18n/v/main
wiskje en it dan publisearje.
Proxy-Tsjinner Publisearre Troch npm
As brûkers op it fêstelân fan Sina netwurkproblemen tsjinkomme en npm
pakketten net kinne publisearje, kinne se de omjouwingsfariabele https_proxy
ynstelle om de proxyserver te konfigurearjen.
Oannommen dat jo proxy-tsjinner poarte 7890
is, kinne jo skriuwe:
https_proxy=http://127.0.0.1:7890 i18n.site -n
Self-Hosted Ynhâld
As jo de ynhâld sels hostje wolle, bewurkje earst md/.i18n/htm/main.yml
en feroarje v: //unpkg.com/i18n.site
nei jo URL-foarheaksel, lykas v: //i18n-v.xxx.com
.
Fier de md
map yn en rinne
i18n.site --htm_conf ol --save
of ôfkoarting
i18n.site -c ol -s
Konfigurearje dan de ynhâld yn 'e md/out/main/v
-map nei it URL-prefixpaad ynsteld yn v:
.
As lêste, konfigurearje de cache-tiid fan it paad dat einiget op /.v
nei 1s
, oars kin de nij frijjûn ynhâld net direkt tagonklik wurde.
De cachetiid foar oare paden kin ynsteld wurde op ien jier of mear om ûnnedige oanfragen te ferminderjen.
Host Ynhâld Oan s3
Om ynhâld sels te hostjen, neist it brûken fan jo eigen server, is CDN
oare mienskiplike opsje om S3
+ te brûken.
Jo kinne rclone om oan te melden by de S3
tsjinner, ferwize dan nei en feroarje it folgjende skript, en kopiearje allinich de ynkrementele wizigingen nei S3
foar elke release.
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/"
Unthâld om CDN
te konfigurearjen sadat de cache-tiid fan it paad dat op /.v
einiget 1s
is, oars kin de nij útbrochte ynhâld net direkt tagonklik wurde.
Publisearje Webside
De webside kin oeral ynset wurde github page en cloudflare page binne goede karren.
Om't de webside in applikaasje-arsjitektuer fan ien side brûkt, tink dan om URL-paden te herskriuwen dy't gjin .
oant index.html
befetsje.
De yngongside fan 'e webside hoecht mar ien kear te wurde ynset, en d'r is gjin needsaak om de yngongside fan 'e webside opnij yn te setten foar folgjende ynhâldupdates.
Ynsette Op github Side
Klikje hjir earst om in organisaasje te github De folgjende organisaasjenamme is i18n-demo
as foarbyld.
Meitsje dan pakhús i18n-demo.github.io
ûnder dizze organisaasje (ferfange asjebleaft i18n-demo
mei de organisaasjenamme dy't jo makke hawwe):
By it publisearjen fan de ynhâld yn it foarige artikel is out/main/htm
oanmakke Fier dizze map yn en útfiere :
ln -s index.html 404.html
Om't github page
it werskriuwen fan URL-paden net stipet, wurdt 404.html
ynstee brûkt.
Fier dan it folgjende kommando út yn 'e map htm
(ûnthâld om i18n-demo/i18n-demo.github.io.git
te ferfangen mei jo eigen pakhúsadres) :
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
Nei it triuwen fan 'e koade, wachtsje oant de ynset fan github page
mei súkses rint (lykas hjirûnder werjûn) foardat jo tagong krije.
Sjoch foar demo-side:
https://i18n-demo.github.io
Ynsette Op cloudflare Side
Yn cloudflare page mei github page
, it jout paad herskriuwen en is mear freonlik foar it fêstelân fan Sina en is mear tagonklik It is oan te rieden om te brûken.
De ynset fan cloudflare page
is normaal basearre op de ynset fan github page
hjirboppe.
Meitsje in projekt en bine de i18n-demo.github.io
pakhús hjirboppe.
It proses wurdt werjûn yn 'e figuer hjirûnder:
Klik asjebleaft Add Account
om tagong te jaan oan organisaasje i18n-demo
.
As jo it pakhús fan in oare organisaasje bûn hawwe, moatte jo miskien twa kear op Add Account
klikke om twa kear te autorisearjen foardat de nije organisaasje werjûn wurdt.
Selektearje dan pakhús i18n-demo.github.io
, klik dan op Begin setup
, en brûk de standertwearden foar folgjende stappen.
Nei it binen foar de earste kear, moatte jo in pear minuten wachtsje foardat jo tagong krije kinne.
Nei ynset kinne jo in oanpaste domeinnamme bine.
Nei it binen fan de oanpaste domeinnamme, gean asjebleaft nei de domeinnamme om it paadherskriuwen fan 'e applikaasje fan ien side te konfigurearjen, lykas hjirûnder werjûn:
De regels yn de boppesteande foto binne as folget Ferfange asjebleaft i18n.site
yn de earste rigel hjirûnder mei de domeinnamme dy't jo bûn.
(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")
)
Stel ek de cache-regels yn, lykas hjirûnder werjûn, en set de cache-doer yn op ien moanne.
Feroarje asjebleaft de domeinnamme dy't oerienkomt yn 'e twadde stap yn' e foto hjirboppe nei de domeinnamme dy't jo bûn hawwe.
Optimalisearjen Fan Webside-Ynset Op It Fêstelân Fan Sina
As jo bettere berikberensprestaasjes wolle krije yn 'e netwurkomjouwing fan it fêstelân fan Sina, registrearje dan earst in domeinnamme .
Brûk dan de objektopslach fan wolkferkeapers op it fêstelân fan Sina + Implementearje de folgjende ynhâld CDN
out/main/htm
Jo kinne edge computing brûke om it paad te herskriuwen om oan te passen oan applikaasjes fan ien side Bygelyks, Baidu Smart Cloud CDN
kin sa ynsteld wurde:
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
// Jo kinne de antwurdkop ynstelle om de útfier te debuggen, lykas out.XXX = 'MSG';
})
Om't record MX
en record CNAME
net tegearre bestean kinne, moatte jo as jo domeinnamme-e-mails tagelyk ûntfange wolle, gearwurkje mei cname_flatten skript nei nivo CNAME
yn record A
.
Derneist, om't de oerseeske ferkearskosten fan wolkferkeapers op it fêstelân fan Sina relatyf djoer binne, as jo de kosten wolle optimalisearje, kinne jo de fergese geografyske resolúsje fan Huawei DNS en de oanpaste domeinnamme fan Cloudflare for SaaS (lykas hjirûnder werjûn) brûke ferkear omlieding── Ferkear routing yn fêstelân Sina Baidu Cloud CDN
, ynternasjonaal ferkear giet cloudflare .
Dizze oplossings foar ynsetoptimalisaasje binne komplekser en sille yn 'e takomst yn aparte haadstikken wurde yntrodusearre.
Generic Domeinnamme Trochferwizing
As jo i18n.site
brûke om in webside as jo haadwebside te generearjen, moatte jo meastentiids pan-domein-omlieding konfigurearje, dat is tagong ta *.xxx.com
(ynklusyf www.xxx.com
) nei xxx.com
.
Dizze eask kin berikt wurde mei help fan Alibaba Cloud CDN
EdgeScript
( Ingelsk dokumint / Sineesk dokumint )
Foegje de domeinnamme ta yn Alibaba CDN en wiis de domeinnamme *.xxx.com
nei CNAME
yn Alibaba Cloud CDN
.
Bygelyks, de pan-domeinnamme-omliedingskonfiguraasje fan *.i18n.site
yn 'e ôfbylding hjirboppe is as folget:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
Ynsette Mei nginx
Foegje asjebleaft in konfiguraasje ta lykas de /root/i18n/md/out/main/htm
yn 'e server
paragraaf fan nginx 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;
}
}
Basearre Op github action
Trochgeande Yntegraasje
Jo kinne ferwize nei it folgjende om jo github action
te konfigurearjen:
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 }}
Lykas yn 'e konfiguraasje te sjen is, wurdt dizze workflow aktivearre as jo nei branch main
en branch dist
drukke.
De workflow sil it konfiguraasjebestân brûke dat oerienkomt .i18n/htm/dist.yml
de .i18n/htm/main.yml
om it dokumint te publisearjen.
Wy riede de folgjende bêste praktiken oan foar it proses fan frijlitting fan dokuminten:
As wizigingen nei tûke main
skood wurde, wurdt it dokumint aktivearre om te bouwen en ynset op it foarbyldstasjon (it foarbyldstasjon is beskikber github page ).
Nei it befêstigjen dat it dokumint korrekt is op 'e preview-side, sil de koade wurde gearfoege en nei branch dist
skood, en de offisjele bou en ynset sil online gean.
Fansels fereasket it útfieren fan it boppesteande proses mear konfiguraasjes te skriuwen.
Jo kinne ferwize nei it eigentlike projekt foar workflow scripting github.com/fcdoc/doc
secrets.I18N_SITE_TOKEN
en secrets.NPM_TOKEN
yn 'e konfiguraasje fereaskje dat jo geheime fariabelen yn' e koadebasis konfigurearje.
I18N_SITE_TOKEN
i18n.site/token
NPM_TOKEN
is it publisearjende token fan pakket npm
yn 'e konfiguraasje npmjs.com meitsje in token mei publisearjende tagongsrjochten (lykas hjirûnder werjûn).
Directory Struktuer
public
Statyske bestannen fan 'e webside, lykas favicon.ico
, robots.txt
, ensfh.
De ikoanbestannen hjir kinne wurde oanmakke mei realfavicongenerator.net
.i18n
Under de .i18n
triemtafel binne de konfiguraasje triemmen, oersetting cache, ensfh fan i18n.site
Sjoch it folgjende haadstik "Konfiguraasje" foar details.
en
Boarnetaalmap, oerienkommende mei en
fan fromTo
yn .i18n/conf.yml
konfiguraasjetriem
i18n:
fromTo:
en: zh
Ferwize asjebleaft nei de konfiguraasje fan oersetting i18