Внедряване И Онлайн
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