Տեղակայում ԵՒ Առցանց
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
-ի հապավումն է, որը npm
է -n
առցանց միջավայրը, որն օգտագործվում է պաշտոնական թողարկման համար:
Կարող եք նաև ստեղծել այլ կազմաձևման ֆայլեր Օգտագործեք --htm_conf
հրամանի տողում նշելու համար օգտագործվող կազմաձևման ֆայլը:
օրինակ.
i18n.site --htm_conf dist --save
Այստեղ --save
ներկայացնում է թարմացման թողարկման տարբերակի համարը:
Հրապարակեք բովանդակությունը npmjs.com կայքում
npmjs.com հրապարակումը առաջարկվող լռելյայն լուծումն է (տե՛ս Front-end High Availability ):
Մուտք npm & Փոստ
Տեղադրեք nodejs
, մուտք գործեք npm login
ով:
Խմբագրեք md/.i18n/htm/main.yml
npmjs.com փոխեք md:
YOUR_NPM_PACKAGE
ի արժեքը որպես ձեր սեփական npm
փաթեթի անուն:
Այնուհետև փոփոխեք md/.i18n/htm/main.package.json
Գործարկեք i18n.site --npm
կամ i18n.site -n
md
գրացուցակում թարգմանելու և հրապարակելու համար:
Եթե դուք օգտագործում եք շարունակական ինտեգրման միջավայր հրապարակելու համար, կարիք չկա տեղադրել nodejs
Պարզապես պատճենեք մուտքի և հրապարակման թույլտվությունները ~/.npmrc
միջավայրում:
Եթե դուք փոփոխում եք փաթեթի անվանումը v:
ը main.yml
-ում, խնդրում ենք համոզվեք, որ նախ ջնջեք .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: //unpkg.com/i18n.site
ձեր URL նախածանցով, օրինակ՝ v: //i18n-v.xxx.com
:
Մուտքագրեք md
գրացուցակը և գործարկեք
i18n.site --htm_conf ol --save
կամ հապավում
i18n.site -c ol -s
Այնուհետև կարգավորեք md/out/main/v
գրացուցակի բովանդակությունը v:
-ում սահմանված URL նախածանցի ճանապարհին:
Վերջապես, կարգավորեք /.v
ից 1s
ով ավարտվող ուղու քեշի ժամանակը , հակառակ դեպքում նոր թողարկված բովանդակությունը չի կարող անմիջապես մուտք գործել:
Այլ ուղիների քեշի ժամանակը կարող է սահմանվել մեկ կամ ավելի տարի՝ ավելորդ հարցումները նվազեցնելու համար:
Հյուրընկալել Բովանդակությունը S3-Ում
Ինքնահոսթինգի CDN
, բացի ձեր սեփական սերվերից օգտվելուց, մեկ այլ ընդհանուր տարբերակ է օգտագործել S3
+
Դուք կարող եք օգտագործել rclone ՝ S3
սերվեր մուտք գործելու համար, այնուհետև հղում կատարել և փոփոխել հետևյալ սկրիպտը և պատճենել միայն ավելացող փոփոխությունները 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 լավ ընտրություններ են:
Քանի որ վեբկայքն օգտագործում է մեկ էջի կիրառական ճարտարապետություն, հիշեք, որ վերագրեք URL-ի ուղիները, որոնք չեն պարունակում .
-ից index.html
:
Կայքի մուտքի էջը պետք է տեղադրվի միայն մեկ անգամ, և բովանդակության հետագա թարմացումների համար կայքի մուտքի էջը վերատեղակայելու կարիք չկա:
Տեղադրեք github Էջում
Սկզբում կտտացրեք այստեղ github կազմակերպություն ստեղծելու համար i18n-demo
Այնուհետև ստեղծեք պահեստ i18n-demo.github.io
այս կազմակերպության ներքո (խնդրում ենք փոխարինել i18n-demo
ձեր ստեղծած կազմակերպության անունով).
Նախորդ հոդվածում բովանդակությունը հրապարակելիս ստեղծվել է out/main/htm
, խնդրում ենք մուտքագրել այս գրացուցակը և գործարկել :
ln -s index.html 404.html
Քանի որ github page
չի աջակցում URL-ի ուղու վերագրանցմանը, փոխարենը օգտագործվում է 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 Էջում
cloudflare page github page
հետ, այն ապահովում է ուղու վերաշարադրում և ավելի բարեկամական է մայրցամաքային Չինաստանի համար և խորհուրդ է տրվում օգտագործել:
cloudflare page
-ի տեղակայումը սովորաբար հիմնված է վերը նշված github page
-ի տեղակայման վրա:
Ստեղծեք նախագիծ և կապեք վերևում գտնվող i18n-demo.github.io
պահեստը:
Գործընթացը ներկայացված է ստորև բերված նկարում.
Խնդրում ենք սեղմել Add Account
կազմակերպությանը մուտք գործելու համար i18n-demo
:
Եթե դուք կապել եք այլ կազմակերպության պահեստը, կարող է անհրաժեշտ լինել երկու անգամ սեղմել 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
:
Դուք կարող եք օգտագործել edge computing՝ մեկ էջանոց հավելվածներին հարմարվելու ուղին վերաշարադրելու համար. Օրինակ՝ 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
// Պատասխանների վերնագրերը կարող են սահմանվել վրիպազերծման ելքի համար, օրինակ՝ out.XXX = 'MSG';
})
Քանի որ ձայնագրությունը MX
և CNAME
չեն կարող գոյակցել, եթե դուք ցանկանում եք միաժամանակ ստանալ տիրույթի անուններով նամակներ, դուք պետք է համագործակցեք CNAME
cname_flatten A
սկրիպտի հետ:
Բացի այդ, քանի որ մայրցամաքային Չինաստանում ամպային վաճառողների արտասահմանյան երթևեկության վճարները համեմատաբար թանկ են, եթե ցանկանում եք օպտիմալացնել ծախսերը, կարող եք օգտագործել Huawei DNS ի անվճար աշխարհագրական լուծումը և Cloudflare for SaaS -ի հատուկ տիրույթի անունը (ինչպես ցույց է տրված ստորև): երթևեկության շեղում──Երթևեկության երթուղին մայրցամաքային Չինաստանում Baidu Cloud CDN
, միջազգային երթևեկությունը գնում է cloudflare :
Տեղակայման օպտիմալացման այս լուծումներն ավելի բարդ են և ապագայում կներկայացվեն առանձին գլուխներում:
Ընդհանուր Տիրույթի Անվան Վերահղում
Եթե դուք օգտագործում եք i18n.site
վեբկայք ստեղծելու համար որպես ձեր հիմնական կայք, սովորաբար անհրաժեշտ է կարգավորել համատիրույթի վերահղումը, այսինքն՝ վերահղել մուտքը դեպի *.xxx.com
(ներառյալ www.xxx.com
) դեպի xxx.com
:
Այս պահանջին կարելի է հասնել Alibaba Cloud CDN
EdgeScript
-ի օգնությամբ ( անգլերեն փաստաթուղթ / չինական փաստաթուղթ )
Ավելացրեք տիրույթի անունը Alibaba CDN ում և նշեք տիրույթի անունը *.xxx.com
ից CNAME
Alibaba Cloud CDN
-ում:
Օրինակ, համատիրույթի անվան վերահղման *.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/dist.yml
մասնաճյուղի անվանը համապատասխանող կազմաձևման ֆայլը, որպեսզի հրապարակի .i18n/htm/main.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
Աղբյուրի լեզվի գրացուցակ, որը համապատասխանում է en
fromTo
-ից .i18n/conf.yml
կազմաձևման ֆայլին
i18n:
fromTo:
en: zh
Խնդրում ենք ծանոթանալ թարգմանության կազմաձևին i18