Примена И Онлајн
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 је препоручено подразумевано решење (погледајте Фронт-енд Хигх Аваилабилити ).
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
пакета, могу да подесе променљиву окружења https_proxy
да конфигуришу прокси сервер.
Под претпоставком да је порт вашег прокси сервера 7890
, можете написати:
https_proxy=http://127.0.0.1:7890 i18n.site -n
Садржај Који Сами Хостује
Ако желите да сами хостујете садржај, прво измените md/.i18n/htm/main.yml
и промените v: //unpkg.com/i18n.site
у свој УРЛ префикс, као што је v: //i18n-v.xxx.com
.
Унесите директоријум md
и покрените
i18n.site --htm_conf ol --save
или скраћеница
i18n.site -c ol -s
Затим конфигуришите садржај у директоријуму md/out/main/v
на путању УРЛ префикса постављену у v:
.
Коначно, конфигуришите време кеширања путање која се завршава са /.v
до 1s
, иначе се не може одмах приступити ново објављеном садржају.
Време кеширања за друге путање може се подесити на годину дана или више да би се смањили непотребни захтеви.
Хостујте Садржај На С3
Да бисте сами хостовали садржај, поред коришћења сопственог сервера, још 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 су добар избор.
Пошто веб локација користи архитектуру апликације на једној страници , не заборавите да поново напишете УРЛ путање које не садрже .
до index.html
.
Страница за улазак на веб локацију треба да се примени само једном и нема потребе да се поново распоређује улазна страница за наредна ажурирања садржаја.
Поставите На Гитхуб Страницу
Прво кликните github да бисте направили организацију . Следећи назив организације је i18n-demo
.
Затим креирајте складиште i18n-demo.github.io
под овом организацијом (замените i18n-demo
именом организације коју сте креирали):
Приликом објављивања садржаја у претходном чланку, генерисано је out/main/htm
Унесите овај директоријум и покрените :
ln -s index.html 404.html
Пошто github page
не подржава преписивање УРЛ путање, уместо тога се користи 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 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
!
Можете да користите ивично рачунарство да бисте преписали путању да бисте се прилагодили апликацијама на једној страници. На пример, Баиду Смарт Цлоуд 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
// Можете подесити заглавље одговора да отклања грешке на излазу, као што је оут.КСКСКС = 'МСГ';
})
Пошто запис MX
и запис CNAME
не могу коегзистирати, ако желите да примате имејлове са именом домена у исто време, морате да сарађујете са cname_flatten CNAME
до нивоа A
.
Поред тога, пошто су накнаде за саобраћај у иностранству код добављача облака у континенталној Кини релативно скупе, ако желите да оптимизујете трошкове, можете да користите бесплатну географску резолуцију компаније DNS и прилагођено име домена Cloudflare for SaaS (као што је приказано у наставку). преусмеравање саобраћаја──Рутирање саобраћаја у континенталној Кини Баиду Цлоуд CDN
, међународни саобраћај иде cloudflare .
Ова решења за оптимизацију примене су сложенија и биће представљена у посебним поглављима у будућности.
Генеричко Преусмеравање Имена Домена
Ако користите i18n.site
да генеришете веб локацију као своју главну веб локацију, обично морате да конфигуришете преусмеравање на све домене, односно преусмерите приступ на *.xxx.com
(укључујући www.xxx.com
) на xxx.com
.
Овај захтев се може постићи уз помоћ Алибаба Цлоуд CDN
EdgeScript
( енглески документ / кинески документ )
Додајте име домена у Алибаба CDN и поставите име домена *.xxx.com
до CNAME
у Алибаба Цлоуд CDN
!
На пример, конфигурација преусмеравања имена пан-домена од *.i18n.site
на слици изнад је следећа:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
Поставите Са Нгинк-Ом
Молимо додајте конфигурацију сличну следећој у 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