Penyebaran Dan Dalam Talian

i18n.site menggunakan seni bina aplikasi satu halaman , dan halaman masuk laman web serta kandungan tapak web digunakan secara bebas.

Selepas menjalankan terjemahan di atas, direktori htm dan v akan dijana di bawah direktori md/out/dev .

Di sini, dev bermakna ia dibina berdasarkan .i18n/htm/dev.yml fail konfigurasi.

dev direktori :

Direktori htm ialah halaman masuk laman web.

Direktori v mengandungi kandungan laman web dengan nombor versi.

Pratonton tempatan tidak mengambil berat tentang nombor versi dan akan menyalin semua fail ke direktori out/dev/v/0.1.0 .

Untuk keluaran rasmi, fail yang diubah akan disalin ke direktori nombor versi baharu.

Tentukan Fail Konfigurasi Dengan -c

Fail konfigurasi yang berbeza akan mencipta direktori yang sepadan dalam direktori out .

Sebagai contoh, .i18n/htm/main.yml akan mencipta out/main direktori.

dev.yml dan main.yml ialah konfigurasi lalai.

dev ialah singkatan development , menunjukkan persekitaran pembangunan, digunakan untuk pratonton setempat, dan juga merupakan fail konfigurasi lalai. ol ialah singkatan online , menunjukkan persekitaran dalam talian, yang digunakan untuk keluaran rasmi Ia juga merupakan fail konfigurasi lalai apabila menggunakan parameter baris arahan -n hingga npm untuk dikeluarkan.

Anda juga boleh membuat fail konfigurasi lain Gunakan --htm_conf pada baris arahan untuk menentukan nama fail konfigurasi untuk digunakan.

contohnya:

i18n.site --htm_conf dist --save

Di sini --save mewakili nombor versi keluaran kemas kini.

Terbitkan kandungan ke npmjs.com

Menerbitkan kandungan kepada npmjs.com ialah penyelesaian lalai yang disyorkan (lihat Ketersediaan Tinggi Bahagian Depan ).

npm Log Masuk & Siar

Pasang nodejs , log masuk dengan npm login .

Edit md/.i18n/htm/main.yml dan tukar nilai md: YOUR_NPM_PACKAGE sebagai nama pakej npm anda sendiri pada npmjs.com

Kemudian ubah suai md/.i18n/htm/main.package.json

Jalankan i18n.site --npm atau i18n.site -n dalam direktori md untuk menterjemah dan menerbitkan.

Jika anda menggunakan persekitaran penyepaduan berterusan untuk menerbitkan, tidak perlu memasang nodejs Hanya salin kebenaran log masuk dan penerbitan ~/.npmrc ke persekitaran.

Jika anda mengubah suai nama pakej v: dalam main.yml , sila pastikan anda memadam .i18n/v/main dahulu dan kemudian menerbitkannya.

Pelayan Proksi Diterbitkan Oleh npm

Jika pengguna di tanah besar China menghadapi masalah rangkaian dan tidak dapat menerbitkan npm pakej, mereka boleh menetapkan pembolehubah persekitaran https_proxy untuk mengkonfigurasi pelayan proksi.

Dengan mengandaikan bahawa port pelayan proksi anda ialah 7890 , anda boleh menulis:

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

Kandungan Yang Dihoskan Sendiri

Jika anda ingin mengehos sendiri kandungan tersebut, edit md/.i18n/htm/main.yml dahulu dan tukar v: //unpkg.com/i18n.site kepada awalan URL anda, seperti v: //i18n-v.xxx.com .

Masukkan direktori md dan jalankan

i18n.site --htm_conf ol --save

atau singkatan

i18n.site -c ol -s

Kemudian, konfigurasikan kandungan dalam direktori md/out/main/v kepada laluan awalan URL yang ditetapkan dalam v: .

Akhir sekali, konfigurasikan masa cache laluan yang berakhir dengan /.v hingga 1s , jika tidak kandungan yang baru dikeluarkan tidak boleh diakses serta-merta.

Masa cache untuk laluan lain boleh ditetapkan kepada satu tahun atau lebih untuk mengurangkan permintaan yang tidak perlu.

Hos Kandungan Kepada s3

Untuk kandungan hos sendiri, selain menggunakan pelayan anda sendiri, satu lagi pilihan biasa CDN menggunakan S3 +

Anda boleh menggunakan rclone untuk log masuk ke pelayan S3 , kemudian rujuk dan ubah suai skrip berikut, dan hanya salin perubahan tambahan kepada S3 untuk setiap keluaran.

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/"

Ingat untuk mengkonfigurasi CDN supaya masa cache laluan yang berakhir dengan /.v ialah 1s , jika tidak kandungan yang baru dikeluarkan tidak boleh diakses dengan segera.

Menerbitkan Laman Web

Tapak web boleh digunakan di mana-mana sahaja github page dan cloudflare page adalah pilihan yang baik.

Oleh kerana tapak web menggunakan seni bina aplikasi satu halaman , ingat untuk menulis semula laluan URL yang tidak mengandungi . hingga index.html .

Halaman kemasukan tapak web hanya perlu digunakan sekali, dan tidak perlu menggunakan semula halaman kemasukan tapak web untuk kemas kini kandungan seterusnya.

Sebarkan Pada Halaman github

Mula-mula klik di sini github untuk mencipta organisasi Nama organisasi berikut ialah i18n-demo sebagai contoh.

Kemudian buat gudang i18n-demo.github.io di bawah organisasi ini (sila gantikan i18n-demo dengan nama organisasi yang anda buat):

Apabila menerbitkan kandungan dalam artikel sebelumnya, out/main/htm telah dihasilkan Sila masukkan direktori ini dan jalankan :

ln -s index.html 404.html

Oleh kerana github page tidak menyokong penulisan semula laluan URL, 404.html digunakan sebaliknya.

Kemudian jalankan arahan berikut dalam direktori htm (ingat untuk menggantikan i18n-demo/i18n-demo.github.io.git dengan alamat gudang anda sendiri) :

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

Selepas menolak kod, tunggu penggunaan github page berjalan dengan jayanya (seperti yang ditunjukkan di bawah) sebelum anda boleh mengaksesnya.

Untuk halaman demo sila lihat:

https://i18n-demo.github.io

Sebarkan Pada Halaman cloudflare

cloudflare page Berbanding dengan github page , ia menyediakan penulisan semula laluan dan lebih mesra ke tanah besar China dan lebih mudah diakses.

Penggunaan cloudflare page biasanya berdasarkan penggunaan github page di atas.

Buat projek dan ikat i18n-demo.github.io gudang di atas.

Prosesnya ditunjukkan dalam rajah di bawah:

Sila klik Add Account untuk memberikan akses kepada organisasi i18n-demo .

Jika anda telah mengikat gudang organisasi lain, anda mungkin perlu mengklik Add Account dua kali untuk memberi kebenaran dua kali sebelum organisasi baharu akan dipaparkan.

Seterusnya, pilih gudang i18n-demo.github.io , kemudian klik Begin setup , dan gunakan nilai lalai untuk langkah seterusnya.

Selepas mengikat buat kali pertama, anda perlu menunggu beberapa minit sebelum anda boleh mengaksesnya.

Selepas penggunaan, anda boleh mengikat nama domain tersuai.

Selepas mengikat nama domain tersuai, sila pergi ke nama domain untuk mengkonfigurasi laluan penulisan semula aplikasi satu halaman, seperti yang ditunjukkan di bawah:

Peraturan dalam gambar di atas adalah seperti berikut. Sila gantikan i18n.site pada baris pertama di bawah dengan nama domain yang anda ikat.

(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")
)

Selain itu, sila konfigurasikan peraturan cache, seperti yang ditunjukkan di bawah, dan tetapkan tempoh cache kepada satu bulan.

Sila tukar padanan nama domain dalam langkah kedua dalam gambar di atas kepada nama domain yang anda ikat.

Mengoptimumkan Penggunaan Tapak Web Di Tanah Besar China

Jika anda ingin mendapatkan prestasi kebolehaksesan yang lebih baik dalam persekitaran rangkaian tanah besar China, sila daftarkan nama domain dahulu.

Kemudian, gunakan storan objek vendor awan di tanah besar + CDN Gunakan kandungan berikut out/main/htm .

Anda boleh menggunakan pengkomputeran tepi untuk menulis semula laluan untuk menyesuaikan diri dengan aplikasi satu halaman Contohnya, Baidu Smart Cloud CDN boleh dikonfigurasikan seperti ini:

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
  // Pengepala respons boleh ditetapkan untuk nyahpepijat output, seperti keluar.XXX = 'MSG';
})

Oleh kerana rekod MX dan rekod CNAME tidak boleh wujud bersama, jika anda ingin menerima e-mel nama domain pada masa yang sama, anda perlu bekerjasama dengan cname_flatten ke tahap CNAME ke rekod A .

Selain itu, kerana caj trafik luar negara bagi vendor awan di tanah besar China agak mahal, jika anda ingin mengoptimumkan kos, anda boleh menggunakan resolusi geografi percuma DNS Cloud dan nama domain tersuai Cloudflare for SaaS (seperti yang ditunjukkan di bawah) untuk mencapainya lencongan trafik──Penghalaan lalu lintas di tanah besar China Baidu Cloud CDN , trafik antarabangsa berjalan cloudflare .

Penyelesaian pengoptimuman penggunaan ini adalah lebih kompleks dan akan diperkenalkan dalam bab berasingan pada masa hadapan.

Ubah Hala Nama Domain Generik

Jika anda menggunakan i18n.site untuk menjana tapak web sebagai tapak web utama anda, anda biasanya perlu mengkonfigurasi pengalihan pan-domain, iaitu, mengubah hala akses kepada *.xxx.com (termasuk www.xxx.com ) kepada xxx.com .

Keperluan ini boleh dicapai dengan bantuan Alibaba Cloud CDN EdgeScript ( Dokumen Bahasa Inggeris / Dokumen Cina )

Tambahkan nama domain dalam Alibaba Cloud CDN dan arahkan nama domain *.xxx.com hingga CNAME dalam Alibaba Cloud CDN .

Sebagai contoh, konfigurasi ubah hala nama pan-domain *.i18n.site dalam gambar di atas adalah seperti berikut:

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

Sebarkan Dengan nginx

Sila tambahkan konfigurasi yang serupa dengan yang berikut dalam perenggan server nginx Sila tukar /root/i18n/md/out/main/htm kepada laluan projek anda sendiri 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;
  }
}

Berdasarkan github action Penyepaduan Berterusan

Anda boleh merujuk perkara berikut untuk mengkonfigurasi github action anda :

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

Seperti yang dapat dilihat dalam konfigurasi, aliran kerja ini dicetuskan apabila menolak ke cawangan main dan cawangan dist .

Aliran kerja akan menggunakan fail konfigurasi yang sepadan dengan nama cawangan untuk menerbitkan dokumen Di sini, .i18n/htm/main.yml dan .i18n/htm/dist.yml akan digunakan sebagai konfigurasi penerbitan.

Kami mengesyorkan amalan terbaik berikut untuk proses pengeluaran dokumen:

Apabila perubahan ditolak ke cawangan main , dokumen dicetuskan untuk dibina dan digunakan ke stesen pratonton (stesen pratonton tersedia github page ).

Selepas mengesahkan bahawa dokumen itu betul pada tapak pratonton, kod itu akan digabungkan dan ditolak ke cawangan dist , dan binaan dan penggunaan rasmi akan masuk dalam talian.

Sudah tentu, melaksanakan proses di atas memerlukan penulisan lebih banyak konfigurasi.

Anda boleh merujuk kepada projek sebenar github.com/fcdoc/doc untuk skrip aliran kerja.

secrets.I18N_SITE_TOKEN dan secrets.NPM_TOKEN dalam konfigurasi memerlukan anda mengkonfigurasi pembolehubah rahsia dalam pangkalan kod.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN ialah token penerbitan pakej npm dalam konfigurasi Lawati npmjs.com dan buat token dengan kebenaran penerbitan (seperti yang ditunjukkan di bawah).

Struktur Direktori

public

Fail statik tapak web, seperti favicon.ico , robots.txt , dsb.

Fail ikon di sini boleh dijana dengan realfavicongenerator.net

.i18n

Di bawah direktori .i18n ialah fail konfigurasi, cache terjemahan, dsb. i18n.site Lihat bab seterusnya "Konfigurasi" untuk mendapatkan butiran.

en

Direktori bahasa sumber, sepadan dengan en daripada fromTo dalam .i18n/conf.yml fail konfigurasi

i18n:
  fromTo:
    en: zh

Sila rujuk konfigurasi terjemahan i18