Внедряване И Онлайн

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 Вход & Публикувай

Инсталирайте nodejs , влезте с npm login .

Редактирайте md/.i18n/htm/main.yml и променете стойността от md: YOUR_NPM_PACKAGE npmjs.com собствено име на пакет 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 към префикса на URL пътя, зададен в v: .

И накрая, конфигурирайте времето на кеша на пътя, завършващ на /.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_flatten до ниво CNAME в запис A .

Освен това, тъй като таксите за задграничен трафик на облачните доставчици в континентален Китай са сравнително скъпи, ако искате да оптимизирате разходите, можете да използвате DNS географска разделителна способност на Huawei Cloud и персонализираното име на домейн Cloudflare for SaaS (както е показано по-долу), за да постигнете това отклоняване на трафика──Маршрутизиране на трафика в континентален Китай Baidu Cloud CDN , международният трафик върви cloudflare .

Тези решения за оптимизиране на внедряването са по-сложни и ще бъдат представени в отделни глави в бъдеще.

Генерично Пренасочване На Име На Домейн

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

Това изискване може да бъде постигнато с помощта на Alibaba Cloud CDN EdgeScript ( английски документ / китайски документ )

Добавете името на домейна в CDN Cloud и насочете името на домейна *.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/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