Разгортванне І Онлайн
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
у якасці ўласнага імя пакета npm
npmjs.com любое незанятае імя пакета.
Затым змяніце 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
Вы можаце выкарыстоўваць краявыя вылічэнні, каб перапісаць шлях для адаптацыі да аднастаронкавых прыкладанняў. Напрыклад, 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