Урнаштыру Һәм Онлайн
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