Урнаштыру Һәм Онлайн

i18n.site бер битле кушымта архитектурасын кабул итә, һәм вебсайтка керү бите һәм вебсайт эчтәлеге мөстәкыйль урнаштырылган.

Aboveгарыдагы тәрҗемәне эшләгәннән соң, htm һәм v каталоглары md/out/dev каталог астында барлыкка киләчәк.

Монда, dev ул .i18n/htm/dev.yml конфигурация файлына нигезләнеп төзелгән дигән сүз.

dev каталог :

htm каталог - сайтка керү бите.

v каталогта версия номерлары булган вебсайт эчтәлеге бар.

Localирле алдан карау версия номеры турында уйламый һәм барлык файлларны out/dev/v/0.1.0 каталогка күчерәчәк.

Рәсми чыгару өчен үзгәртелгән файллар яңа версия номер каталогына күчереләчәк.

-c Белән Конфигурация Файлын Күрсәтегез

Төрле конфигурация файллары out каталогта тиешле каталоглар ясыйлар.

Мәсәлән, .i18n/htm/main.yml out/main каталог булдырачак.

dev.yml һәм main.yml - килешенгән конфигурацияләр.

dev - development кыскартуы, үсеш мохитен күрсәтә, җирле алдан карау өчен кулланыла, һәм шулай ук килешү конфигурациясе файлы. ol npm рәсми кыскарту өчен кулланыла торган онлайн мохитне -n online кыскартуы.

Сез шулай ук башка конфигурация файлларын булдыра аласыз, куллану өчен конфигурация файлының исемен күрсәтү өчен боерык сызыгында --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 үзгәртегез һәм md: YOUR_NPM_PACKAGE npmjs.com үзегезнең npm пакет исеме итеп үзгәртегез.

Аннары md/.i18n/htm/main.package.json үзгәртегез

Тәрҗемә итү һәм бастыру өчен md каталогында i18n.site --npm яки i18n.site -n эшләгез.

Әгәр дә сез бастыру өчен өзлексез интеграция мохитен куллансагыз, nodejs урнаштырырга кирәк түгел. Кергән һәм рөхсәтне ~/.npmrc тирәлеккә күчерегез.

Әгәр дә сез пакетның исемен main.yml v: үзгәртсәгез, зинһар, башта .i18n/v/main бетерегез , аннары бастырыгыз.

Прокси Сервер npm Тарафыннан Бастырылган

Әгәр Кытай материкларында кулланучылар челтәр проблемаларына юлыксалар һәм npm пакет бастыра алмасалар, прокси серверын конфигурацияләү өчен әйләнә https_proxy тирә үзгәрүчене куя алалар.

Сезнең прокси сервер порты 7890 дип уйлап, сез яза аласыз:

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

Selfз-Үзеңне Урнаштырган Эчтәлек

Әгәр дә сез эчтәлекне урнаштырырга телисез икән, башта 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 Өчен Эчтәлек

Selfз-үзеңне кабул итү өчен, үз серверыңны кулланудан тыш, тагын бер уртак вариант CDN S3 куллану +

Сез S3 серверга керү өчен rclone аласыз, аннары түбәндәге сценарийга мөрәҗәгать итегез һәм үзгәртегез, һәм һәр чыгарылыш өчен 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/"

/.v белән тәмамланган юлның кэш вакыты 1s булсын өчен CDN конфигурациясен онытмагыз, югыйсә яңа чыккан эчтәлеккә шунда ук кереп булмый.

Сайтны Бастыру

Вебсайтны теләсә кайда урнаштырырга мөмкин github page һәм cloudflare page яхшы сайлау!

Вебсайт бер битле кушымта архитектурасын кулланганга, . - index.html булмаган URL юлларын яңадан язарга онытмагыз.

Вебсайтка керү бите бер тапкыр гына урнаштырылырга тиеш, һәм алдагы эчтәлекне яңарту өчен вебсайтка керү битен яңадан кулланырга кирәкми.

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

Болыт Утлары Битендә Урнаштырыгыз

github page белән чагыштырганда cloudflare page ул юлны яңадан язуны тәэмин итә һәм Кытай материкларына дусрак һәм куллану мөмкинлеге бар.

cloudflare page урнаштыру гадәттә өстә github page урнаштыруга нигезләнә.

Проект төзегез һәм өстә i18n-demo.github.io складны бәйләгез.

Процесс түбәндәге рәсемдә күрсәтелгән:

Зинһар, i18n-demo оешмасына рөхсәт бирү өчен Add Account басыгыз.

Әгәр сез бүтән оешманың складын бәйләгән булсагыз, яңа оешма күрсәтелгәнче ике тапкыр рөхсәт итәр өчен Add Account ике тапкыр басыгыз.

Аннары, i18n-demo.github.io складны сайлагыз, аннары Begin setup төймәсенә басыгыз, һәм алдагы адымнар өчен килешенгән кыйммәтләрне кулланыгыз.

Беренче тапкыр бәйләгәннән соң, аңа керер алдыннан берничә минут көтәргә кирәк.

Урнаштырганнан соң, сез махсус домен исемен бәйли аласыз.

Гадәттәге домен исемен бәйләгәннән соң, зинһар, домен исеменә керегез, бер битле кушымтаны юлны яңадан язу өчен, аста күрсәтелгәнчә:

Aboveгарыдагы рәсемдәге кагыйдәләр түбәндәгечә, зинһар, астагы беренче юлдагы 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
  // Headавап башлыкларын чыгару өчен көйләргә мөмкин, мәсәлән, out.XXX = 'MSG';
})

MX язуы һәм CNAME язма бергә яши алмый, бер үк вакытта домен исеме электрон почталарын алырга теләсәгез, скрипт белән A CNAME дәрәҗәгә кадәр скрипт белән хезмәттәшлек итәргә кирәк cname_flatten

Моннан тыш, Кытайның материкларында болыт сатучыларның чит илдәге трафик түләүләре чагыштырмача кыйммәт, чөнки чыгымнарны оптимальләштерергә теләсәгез, Huawei DNS бушлай географик резолюциясе һәм Cloudflare for SaaS махсус домен исемен куллана аласыз трафикны юнәлтү - Кытай материкларында трафик маршрут Baidu Cloud CDN , халыкара трафик cloudflare бара.

Бу урнаштыру оптимизация чишелешләре катлаулырак һәм киләчәктә аерым бүлекләрдә кертеләчәк.

Генераль Домен Исемен Юнәлтү

Вебсайтны төп вебсайт итеп ясау өчен i18n.site куллансагыз, гадәттә пан-доменга юнәлтүне конфигурацияләргә кирәк, ягъни керү мөмкинлеген *.xxx.com (шул исәптән www.xxx.com ) белән xxx.com юнәлтү.

Бу таләп Алибаба Cloud CDN EdgeScript ярдәмендә ирешелә ала ( Инглиз документы / Кытай документы )

Алибаба CDN домен исемен өстәгез һәм *.xxx.com исемен Алибаба Болыт CDN CNAME .

Мәсәлән, югарыдагы рәсемдә *.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/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

.i18n/conf.yml конфигурация файлындагы fromTo en туры килгән чыганак тел каталогы

i18n:
  fromTo:
    en: zh

Зинһар, тәрҗемә конфигурациясенә мөрәҗәгать итегез i18