Տեղակայում ԵՒ Առցանց

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