Ҷойгиркунӣ Ва Онлайн

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 Воридшавӣ & Post

nodejs насб кунед, бо npm login ворид шавед.

md/.i18n/htm/main.yml npmjs.com таҳрир кунед ва арзиши md: YOUR_NPM_PACKAGE ҳамчун номи бастаи npm и худ иваз кунед.

Сипас md/.i18n/htm/main.package.json тағир диҳед

Барои тарҷума ва нашр кардан дар феҳристи md i18n.site --npm ё i18n.site -n ро иҷро кунед.

Агар шумо барои интишор муҳити пайвастаи пайвастаро истифода баред, насб кардани 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 ба роҳи префикси URL, ки дар v: муқаррар шудааст, танзим кунед.

Ниҳоят, вақти кэши роҳеро, ки бо /.v то 1s тамом мешавад, танзим кунед , вагарна ба мундариҷаи тозанашршуда фавран дастрас шудан мумкин нест.

Барои кам кардани дархостҳои нолозим вақти кэш барои дигар роҳҳо метавонад як сол ё бештар аз он муқаррар карда шавад.

Мазмуни Мизбон Ба s3

Барои худидоракунии мундариҷа, ба ғайр аз истифодаи сервери худ, як варианти дигари маъмул ин аст, ки S3 CDN +

Шумо метавонед 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 Ҷойгир Кунед

i18n-demo сохтани созмон github ин ҷо клик кунед .

Сипас дар зери ин созмон анбори 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 !

Шумо метавонед роёниши канориро барои аз нав сабт кардани роҳ барои мутобиқ шудан ба барномаҳои яксаҳифа истифода баред, масалан, 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_flatten то сатҳи CNAME ба сабти 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 Ҷойгир Кунед

Лутфан конфигуратсияи /root/i18n/md/out/main/htm дар out/main/htm server nginx

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

Феҳристи забони манбаъ, ки ба en аз fromTo дар .i18n/conf.yml файли конфигуратсия мувофиқ аст

i18n:
  fromTo:
    en: zh

Лутфан ба конфигуратсияи тарҷума муроҷиат кунед i18