Joylashtirish Va Onlayn

i18n.site bir sahifali dastur arxitekturasini qabul qiladi va veb-saytga kirish sahifasi va veb-sayt tarkibi mustaqil ravishda joylashtiriladi.

Yuqoridagi tarjimani bajargandan so'ng, md/out/dev katalogi ostida htm va v kataloglar hosil bo'ladi.

Bu erda dev .i18n/htm/dev.yml konfiguratsiya fayli asosida tuzilganligini bildiradi.

dev katalog :

htm katalogi veb-saytga kirish sahifasidir.

v katalogida versiya raqamlari bilan veb-sayt tarkibi mavjud.

Mahalliy oldindan ko'rish versiya raqamiga ahamiyat bermaydi va barcha fayllarni out/dev/v/0.1.0 katalogiga ko'chiradi.

Rasmiy chiqarish uchun o'zgartirilgan fayllar yangi versiya raqamlari katalogiga ko'chiriladi.

Konfiguratsiya Faylini -c Bilan Belgilang

Turli xil konfiguratsiya fayllari out katalogida mos keladigan kataloglarni yaratadi.

Masalan, .i18n/htm/main.yml out/main katalogini yaratadi.

dev.yml va main.yml standart konfiguratsiyalardir.

dev development qisqartmasi bo'lib, ishlab chiqish muhitini ko'rsatadi, mahalliy oldindan ko'rish uchun ishlatiladi va shuningdek, standart konfiguratsiya faylidir. ol online ning qisqartmasi bo'lib, rasmiy nashr uchun foydalaniladi, bu shuningdek, chiqarish uchun -n dan npm gacha bo'lgan buyruq qatori parametrlarini ishlatganda standart konfiguratsiya faylidir.

Boshqa konfiguratsiya fayllarini ham yaratishingiz mumkin, foydalaniladigan konfiguratsiya fayli nomini belgilash uchun buyruq satrida --htm_conf foydalaning:

masalan:

i18n.site --htm_conf dist --save

Bu yerda --save yangilanish reliz versiyasi raqamini bildiradi.

Kontentni npmjs.com saytiga joylashtiring

Kontentni nashr npmjs.com tavsiya etilgan standart yechimdir (qarang : Yuqori darajadagi mavjudlik ).

npm Kirish & Post

nodejs o'rnating, npm login bilan tizimga kiring.

md/.i18n/htm/main.yml tahrirlang va md: YOUR_NPM_PACKAGE bo'lgan qiymatni o'zingizning npm paket nomi npmjs.com o'zgartiring.

Keyin md/.i18n/htm/main.package.json o'zgartiring

Tarjima va nashr qilish uchun md katalogida i18n.site --npm yoki i18n.site -n ishga tushiring.

Agar nashr qilish uchun uzluksiz integratsiya muhitidan foydalansangiz, nodejs oʻrnatishga hojat yoʻq. Atrof-muhitga tizimga kirgan va nashr qilish ruxsatnomalarini ~/.npmrc nusxalash kifoya.

Agar siz main.yml v: paket nomini o'zgartirsangiz, avval .i18n/v/main o'chirib, keyin uni nashr qilishni unutmang .

npm Tomonidan Chop Etilgan Proksi-Server

Agar materik Xitoydagi foydalanuvchilar tarmoq muammolariga duch kelsa va npm ta paketni nashr eta olmasalar, proksi-serverni sozlash uchun https_proxy muhit o'zgaruvchisini o'rnatishlari mumkin.

Sizning proksi-server portingiz 7890 deb faraz qilsangiz, quyidagilarni yozishingiz mumkin:

https_proxy=http://127.0.0.1:7890 i18n.site -n

O'z-O'zidan Joylashtirilgan Kontent

Agar siz kontentni o'z-o'zidan joylashtirishni istasangiz, avval md/.i18n/htm/main.yml tahrirlang va v: //unpkg.com/i18n.site URL prefiksingizga o'zgartiring, masalan, v: //i18n-v.xxx.com .

md katalogini kiriting va ishga tushiring

i18n.site --htm_conf ol --save

yoki qisqartma

i18n.site -c ol -s

Keyin, md/out/main/v katalogidagi tarkibni v: da o'rnatilgan URL prefiks yo'liga sozlang.

Nihoyat, /.v dan 1s gacha bo'lgan yo'lning kesh vaqtini sozlang , aks holda yangi chiqarilgan tarkibga darhol kirish mumkin emas.

Boshqa yo'llar uchun kesh vaqti keraksiz so'rovlarni kamaytirish uchun bir yil yoki undan ko'proq vaqtga o'rnatilishi mumkin.

s3 Uchun Xost Tarkibi

O'z serveringizdan foydalanishdan tashqari, kontentni o'z-o'zidan joylashtirish uchun yana bir keng tarqalgan variant S3 CDN foydalanishdir +

S3 serveriga kirish uchun rclone foydalanishingiz mumkin, keyin quyidagi skriptga murojaat qilishingiz va o'zgartirishingiz mumkin va har bir versiya uchun faqat S3 ga o'zgarishlarni ko'chirishingiz mumkin.

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 bilan tugaydigan yo'lning kesh vaqti 1s bo'lishi uchun CDN sozlashni unutmang, aks holda yangi chiqarilgan tarkibga darhol kirish imkoni bo'lmaydi.

Veb-Saytini Nashr Etish

Veb-sayt github page joyda joylashtirilishi mumkin va cloudflare page yaxshi tanlovdir.

Veb-sayt bitta sahifali dastur arxitekturasidan foydalanganligi sababli, . dan index.html gacha bo'lgan URL yo'llarini qayta yozishni unutmang.

Veb-saytga kirish sahifasi faqat bir marta joylashtirilishi kerak va keyingi kontent yangilanishlari uchun veb-saytga kirish sahifasini qayta joylashtirishga hojat yo'q.

github Sahifasida Joylashtirish

Tashkilot yaratish uchun avval github yerni bosing i18n-demo

Keyin ushbu tashkilot ostida i18n-demo.github.io omborini yarating (iltimos, i18n-demo siz yaratgan tashkilot nomi bilan almashtiring):

Oldingi maqoladagi kontentni nashr qilishda out/main/htm hosil bo'ldi. Iltimos, ushbu katalogni kiriting va ishga tushiring :

ln -s index.html 404.html

github page URL yo'lini qayta yozishni qo'llab-quvvatlamasligi sababli, uning o'rniga 404.html ishlatiladi.

Keyin htm katalogida quyidagi buyruqni bajaring ( i18n-demo/i18n-demo.github.io.git o'zingizning ombor manzilingiz bilan almashtirishni unutmang) :

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

Kodni bosgandan so'ng, unga kirishdan oldin github page ni muvaffaqiyatli ishga tushirishni kuting (quyida ko'rsatilgandek).

Demo sahifasi uchun qarang:

https://i18n-demo.github.io

cloudflare Sahifasida Joylashtirish

github page bilan cloudflare page , u yo'lni qayta yozishni ta'minlaydi va materik Xitoy uchun qulayroqdir va undan foydalanish tavsiya etiladi.

cloudflare page ni joylashtirish odatda yuqoridagi github page ni joylashtirishga asoslanadi.

Loyiha yarating va yuqoridagi i18n-demo.github.io omborini bog'lang.

Jarayon quyidagi rasmda ko'rsatilgan:

Tashkilot i18n-demo ruxsat berish uchun Add Account tugmasini bosing.

Agar siz boshqa tashkilotning omborini bog'lagan bo'lsangiz, yangi tashkilot ko'rsatilishidan oldin ikki marta avtorizatsiya qilish uchun Add Account tugmasini ikki marta bosishingiz kerak bo'lishi mumkin.

Keyin, ombor i18n-demo.github.io tanlang, so'ngra Begin setup bosing va keyingi qadamlar uchun standart qiymatlardan foydalaning.

Birinchi marta bog'langandan so'ng, unga kirishdan oldin bir necha daqiqa kutishingiz kerak.

Joylashtirishdan so'ng siz maxsus domen nomini bog'lashingiz mumkin.

Maxsus domen nomini bog'lagandan so'ng, quyida ko'rsatilganidek, bitta sahifali ilovaning yo'lini qayta yozishni sozlash uchun domen nomiga o'ting:

Yuqoridagi rasmdagi qoidalar quyida 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")
)

Bundan tashqari, quyida ko'rsatilganidek, kesh qoidalarini sozlang va kesh muddatini bir oyga o'rnating.

Iltimos, yuqoridagi rasmdagi ikkinchi bosqichda mos keladigan domen nomini bog'lagan domen nomiga o'zgartiring.

Materik Xitoyda Veb-Saytlarni Joylashtirishni Optimallashtirish

Agar materik Xitoyning tarmoq muhitida foydalanish imkoniyatlarini yaxshilashni istasangiz, avval domen nomini ro'yxatdan o'tkazing .

Keyin, materik Xitoyda bulutli sotuvchilarning ob'ekt saqlashidan foydalaning CDN Quyidagi tarkibni joylashtiring out/main/htm +

Bir sahifali ilovalarga moslashish uchun yo'lni qayta yozish uchun chekka hisoblashdan foydalanishingiz mumkin, masalan, Baidu Smart Cloud CDN quyidagicha sozlanishi mumkin:

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
  // Javob sarlavhalari chiqishni disk raskadrovka qilish uchun sozlanishi mumkin, masalan, out.XXX = 'MSG';
})

MX yozuvi va CNAME yozuvi bir vaqtning o'zida mavjud bo'lmasligi sababli, agar siz domen nomini bir vaqtning o'zida olishni istasangiz, cname_flatten bilan CNAME A rekordgacha hamkorlik qilishingiz kerak.

Bundan tashqari, materik Xitoyda bulut sotuvchilarining chet eldagi trafik toʻlovlari nisbatan qimmat boʻlgani uchun, agar siz xarajatlarni optimallashtirishni istasangiz, bunga erishish uchun Huawei DNS ning bepul geografik oʻlchamlari va Cloudflare for SaaS ning maxsus domen nomidan foydalanishingiz mumkin trafikni yo'naltirish──Materik Xitoyda transport marshruti Baidu Cloud CDN , xalqaro trafik ketadi cloudflare .

Ushbu joylashtirishni optimallashtirish yechimlari murakkabroq va kelajakda alohida boblarda taqdim etiladi.

Umumiy Domen Nomini Qayta Yo'naltirish

Agar siz veb-saytni asosiy veb-saytingiz sifatida yaratish uchun i18n.site foydalansangiz, odatda pan-domenni qayta yo'naltirishni sozlashingiz kerak, ya'ni kirishni *.xxx.com (shu jumladan www.xxx.com ) dan xxx.com ga yo'naltirish.

Bu talabga Alibaba Cloud CDN EdgeScript ( inglizcha hujjat / Xitoy hujjati ) yordamida erishish mumkin.

Alibaba CDN ga domen nomini qo'shing va Alibaba Cloud CDN da domen nomini *.xxx.com dan CNAME gacha ko'rsating.

Masalan, yuqoridagi rasmda pan-domen nomini qayta yo'naltirish konfiguratsiyasi *.i18n.site quyidagicha:

rewrite(concat('https://i18n.site',$uri), 'redirect',301)

nginx Bilan Tarqating

Iltimos, ! ning server out/main/htm o'xshash /root/i18n/md/out/main/htm qo'shing nginx

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 Uzluksiz Integratsiyaga Asoslangan

github action ni sozlash uchun quyidagilarga murojaat qilishingiz mumkin:

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 }}

Konfiguratsiyadan ko'rinib turibdiki, bu ish oqimi main va dist tarmoqqa bosilganda ishga tushiriladi.

Ish jarayoni hujjatni nashr qilish uchun filial nomiga mos keladigan konfiguratsiya faylidan foydalanadi, bu erda nashr qilish konfiguratsiyasi sifatida mos ravishda .i18n/htm/main.yml va .i18n/htm/dist.yml ishlatiladi.

Hujjatlarni chiqarish jarayoni uchun quyidagi eng yaxshi amaliyotlarni tavsiya qilamiz:

O'zgartirishlar main filialiga surilganda, hujjat qurish va oldindan ko'rish stantsiyasiga joylashtirish uchun ishga tushiriladi (oldindan ko'rish stantsiyasi mavjud github page ).

Hujjatning oldindan ko'rish saytida to'g'ri ekanligini tasdiqlaganingizdan so'ng, kod birlashtiriladi va dist filialiga suriladi va rasmiy qurish va joylashtirish onlayn rejimga o'tadi.

Albatta, yuqoridagi jarayonni amalga oshirish ko'proq konfiguratsiyalarni yozishni talab qiladi.

Ish jarayoni skripti uchun haqiqiy loyihaga murojaat qilishingiz mumkin github.com/fcdoc/doc

Konfiguratsiyadagi secrets.I18N_SITE_TOKEN va secrets.NPM_TOKEN kodlar bazasida maxfiy o'zgaruvchilarni sozlashni talab qiladi.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN konfiguratsiyadagi npm paketning nashr etish belgisidir npmjs.com nashr qilish ruxsati bilan token yarating (quyida ko'rsatilganidek).

Katalog Tuzilishi

public

Veb-saytning statik fayllari, masalan, favicon.ico , robots.txt , va hokazo.

Bu erda piktogramma fayllari yaratilishi mumkin realfavicongenerator.net

.i18n

.i18n katalogi ostida i18n.site ning konfiguratsiya fayllari, tarjima keshi va boshqalar mavjud. Tafsilotlar uchun keyingi bo'lim "Konfiguratsiya" ga qarang.

en

.i18n/conf.yml konfiguratsiya faylida fromTo tadan en tasiga mos keladigan manba til katalogi

i18n:
  fromTo:
    en: zh

Iltimos, tarjima konfiguratsiyasiga qarang i18