Imuṣiṣẹ Ati Online

i18n.site gba faaji ohun elo oju-iwe kan ṣoṣo , ati oju-iwe iwọle oju opo wẹẹbu ati akoonu oju opo wẹẹbu ni a gbe lọ ni ominira.

Lẹhin ṣiṣe itumọ ti o wa loke, awọn ilana htm ati v yoo jẹ ipilẹṣẹ labẹ ilana md/out/dev .

Nibi, dev tumọ si pe o da lori faili iṣeto ni .i18n/htm/dev.yml .

dev liana :

Ilana htm jẹ oju-iwe iwọle oju opo wẹẹbu.

Ilana v ni akoonu oju opo wẹẹbu pẹlu awọn nọmba ẹya.

Awotẹlẹ agbegbe ko bikita nipa nọmba ẹya ati pe yoo daakọ gbogbo awọn faili si itọsọna out/dev/v/0.1.0 .

Fun itusilẹ osise, awọn faili ti o yipada yoo jẹ daakọ si itọsọna nọmba ẹya tuntun.

Pato Faili Iṣeto Ni Pẹlu -c

Awọn faili iṣeto ni oriṣiriṣi yoo ṣẹda awọn ilana ti o baamu ni ilana out .

Fun apẹẹrẹ, .i18n/htm/main.yml yoo ṣẹda itọsọna out/main naa.

dev.yml ati main.yml jẹ awọn atunto aiyipada.

dev jẹ abbreviation ti development , afihan agbegbe idagbasoke, ti a lo fun awotẹlẹ agbegbe, ati pe o tun jẹ faili iṣeto ni aiyipada. ol jẹ abbreviation ti online , ti o nfihan ayika ori ayelujara, eyiti o jẹ lilo fun idasilẹ osise O tun jẹ faili iṣeto ni aiyipada nigba lilo awọn ipilẹ laini aṣẹ -n si npm lati tu silẹ.

O tun le ṣẹda awọn faili atunto miiran Lo --htm_conf lori laini aṣẹ lati pato orukọ faili iṣeto ni lati lo:

fun apere:

i18n.site --htm_conf dist --save

Nibi --save duro fun nọmba ikede imudojuiwọn.

Ṣe atẹjade akoonu si npmjs.com

Titẹjade akoonu si npmjs.com ni ojutu aiyipada ti a ṣeduro (wo Wiwa Giga Iwaju-opin ).

npm & Ifiweranṣẹ

Fi nodejs sori ẹrọ, wọle pẹlu npm login .

Ṣatunkọ md/.i18n/htm/main.yml ki o yipada iye ti md: YOUR_NPM_PACKAGE gẹgẹbi orukọ package npm ti ara rẹ yoo npmjs.com .

Lẹhinna yipada md/.i18n/htm/main.package.json

Ṣiṣe i18n.site --npm tabi i18n.site -n ninu ilana md lati tumọ ati ṣe atẹjade.

Ti o ba lo agbegbe iṣọpọ lemọlemọ lati gbejade, ko si iwulo lati fi sii nodejs Kan daakọ wọle ati awọn igbanilaaye titẹjade ~/.npmrc si agbegbe naa.

Ti o ba yipada orukọ package ti v: ni main.yml , jọwọ rii daju pe o paarẹ .i18n/v/main ni akọkọ ati lẹhinna gbejade.

Olupin Aṣoju Ti a Tẹjade Nipasẹ npm

Ti awọn olumulo ni Ilu China ba pade awọn iṣoro nẹtiwọọki ati pe wọn ko le ṣe atẹjade awọn akopọ npm , wọn le ṣeto oniyipada ayika https_proxy lati tunto olupin aṣoju.

A ro pe ibudo olupin aṣoju rẹ jẹ 7890 , o le kọ:

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

Akoonu Ti Ara Ẹni Ti Gbalejo

Ti o ba fẹ lati gbalejo akoonu funrararẹ, ṣatunkọ akọkọ md/.i18n/htm/main.yml ki o yi v: //unpkg.com/i18n.site pada si asọtẹlẹ URL rẹ, bii v: //i18n-v.xxx.com .

Tẹ md liana ki o si ṣiṣẹ

i18n.site --htm_conf ol --save

tabi abbreviation

i18n.site -c ol -s

Lẹhinna, tunto akoonu ti o wa ninu itọsọna md/out/main/v si ọna itọsi URL ti a ṣeto ni v: .

Nikẹhin, tunto akoko kaṣe ti ọna ti o pari ni /.v si 1s , bibẹẹkọ akoonu tuntun ti a tu silẹ ko le wọle si lẹsẹkẹsẹ.

Akoko kaṣe fun awọn ọna miiran le ṣeto si ọdun kan tabi diẹ sii lati dinku awọn ibeere ti ko wulo.

Gbalejo Akoonu Si s3

Si akoonu ti ara ẹni, ni afikun si lilo olupin tirẹ, aṣayan miiran ti CDN wọpọ ni lati lo S3 + .

O le lo rclone lati buwolu wọle si olupin S3 , lẹhinna tọka si ati ṣe atunṣe iwe afọwọkọ atẹle, ati daakọ awọn ayipada afikun si S3 nikan fun idasilẹ kọọkan.

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

Ranti lati tunto CDN ki akoko kaṣe ti ọna ti o pari ni /.v jẹ 1s , bibẹẹkọ akoonu tuntun ti a tu silẹ ko le wọle si lẹsẹkẹsẹ.

Jade Aaye Ayelujara

Oju opo wẹẹbu le wa ni ransogun nibikibi github page ati cloudflare page jẹ awọn yiyan ti o dara.

Nitoripe oju opo wẹẹbu nlo faaji ohun elo oju-iwe kan , ranti lati tun awọn ọna URL kọ ti ko ni . si index.html ninu.

Oju-iwe titẹsi oju opo wẹẹbu nilo lati ran lọ lẹẹkan, ati pe ko si iwulo lati tun ṣe oju-iwe titẹsi oju opo wẹẹbu fun awọn imudojuiwọn akoonu atẹle.

Ran Lọ Si Oju-Iwe github

Kọkọ tẹ github lati ṣẹda ajọ kan i18n-demo

Lẹhinna ṣẹda ile-ipamọ i18n-demo.github.io labẹ ajo yii (jọwọ rọpo i18n-demo pẹlu orukọ agbari ti o ṣẹda):

Nigbati o ba ṣe atẹjade akoonu inu nkan ti tẹlẹ, out/main/htm ti jẹ ipilẹṣẹ :

ln -s index.html 404.html

Nitoripe github page ko ṣe atilẹyin ọna atunṣe URL, 404.html lo dipo.

Lẹhinna ṣiṣe aṣẹ atẹle ni itọsọna htm (ranti lati rọpo i18n-demo/i18n-demo.github.io.git pẹlu adirẹsi ile-itaja tirẹ) :

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

Lẹhin titari koodu naa, duro fun imuṣiṣẹ ti github page lati ṣiṣẹ ni aṣeyọri (bii o han ni isalẹ) ṣaaju ki o to wọle si.

Fun oju-iwe demo jọwọ wo:

https://i18n-demo.github.io

Ran Lọ Si Oju-Iwe cloudflare

cloudflare page a ṣe afiwe pẹlu github page , o pese ọna atunṣe ati pe o jẹ ọrẹ diẹ sii si Ilu China ati pe o wa ni iraye si diẹ sii.

Gbigbe ti cloudflare page nigbagbogbo da lori imuṣiṣẹ ti github page loke.

Ṣẹda iṣẹ akanṣe kan ki o di ile-itaja i18n-demo.github.io loke.

Ilana naa han ni aworan ni isalẹ:

Jọwọ tẹ Add Account lati fun ni iwọle si agbari i18n-demo .

Ti o ba ti dè ile-itaja ti ile-iṣẹ miiran, o le nilo lati tẹ Add Account lẹẹmeji lati fun laṣẹ lẹẹmeji ṣaaju iṣafihan tuntun naa.

Nigbamii, yan ile-iṣẹ i18n-demo.github.io , lẹhinna tẹ Begin setup , ki o lo awọn iye aiyipada fun awọn igbesẹ ti o tẹle.

Lẹhin ti dipọ fun igba akọkọ, o nilo lati duro fun iṣẹju diẹ ṣaaju ki o to wọle si.

Lẹhin imuṣiṣẹ, o le di orukọ ìkápá aṣa kan.

Lẹhin sisọ orukọ ìkápá aṣa, jọwọ lọ si orukọ ìkápá lati tunto ọna atunkọ ohun elo oju-iwe ẹyọkan, bi a ṣe han ni isalẹ:

Awọn ofin ti o wa ninu aworan ti o wa loke jẹ atẹle. Jọwọ rọpo i18n.site ni laini akọkọ ni isalẹ pẹlu orukọ ìkápá ti o dè.

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

Ni afikun, jọwọ tunto awọn ofin kaṣe, bi o ṣe han ni isalẹ, ki o ṣeto iye akoko kaṣe si oṣu kan.

Jọwọ yi orukọ ìkápá ti o baamu ni igbesẹ keji ni aworan loke si orukọ ìkápá ti o dè.

Ti O Dara Ju Imuṣiṣẹ Oju Opo Wẹẹbu Ni Oluile China

Ti o ba fẹ lati gba iṣẹ iraye si to dara julọ ni agbegbe nẹtiwọọki ti oluile China, jọwọ forukọsilẹ orukọ ìkápá kan ni akọkọ.

Lẹhinna, lo ibi ipamọ ohun ti awọn olutaja awọsanma ni oluile + CDN Mu akoonu out/main/htm wọnyi ṣiṣẹ.

O le lo iširo eti lati tun ọna naa kọ lati ṣe deede si awọn ohun elo oju-iwe kan Fun apẹẹrẹ, Baidu Smart Cloud CDN le tunto bii eyi:

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
  // Awọn akọle idahun le ṣee ṣeto si iṣẹjade yokokoro, bii out.XXX = 'MSG';
})

Nitori igbasilẹ MX ati igbasilẹ CNAME ko le gbepọ, ti o ba fẹ lati gba awọn apamọ orukọ ašẹ ni akoko kanna, o nilo lati ṣe ifowosowopo pẹlu iwe cname_flatten si ipele CNAME sinu igbasilẹ A .

Ni afikun, nitori awọn idiyele ijabọ okeokun ti awọn olutaja awọsanma ni oluile China jẹ gbowolori diẹ, ti o ba fẹ mu awọn idiyele pọ si, o le lo DNS agbegbe ọfẹ ti Huawei Cloud ati orukọ aṣa aṣa Cloudflare for SaaS (gẹgẹbi a ṣe han ni isalẹ) lati ṣaṣeyọri ipa ọna opopona──Ipa ọna opopona ni oluile China Baidu Cloud CDN , ijabọ agbaye n lọ cloudflare .

Awọn solusan iṣapeye imuṣiṣẹ wọnyi jẹ idiju diẹ sii ati pe yoo ṣafihan ni awọn ipin lọtọ ni ọjọ iwaju.

Generic Ašẹ Orukọ Redirection

Ti o ba lo i18n.site lati ṣe ina oju opo wẹẹbu kan gẹgẹbi oju opo wẹẹbu akọkọ rẹ, o nilo nigbagbogbo lati tunto atunto-ašẹ pan-ašẹ, iyẹn ni, àtúnjúwe iwọle si *.xxx.com (pẹlu www.xxx.com ) si xxx.com .

Ibeere yii le ṣe aṣeyọri pẹlu iranlọwọ ti Alibaba Cloud CDN EdgeScript ( iwe Gẹẹsi / iwe Kannada )

Ṣafikun orukọ *.xxx.com CDN CNAME awọsanma CDN

Fun apẹẹrẹ, iṣeto atunto orukọ pan-ašẹ ti *.i18n.site ninu aworan loke jẹ atẹle yii:

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

Mu Ṣiṣẹ Pẹlu nginx

Jọwọ ṣafikun iṣeto ti o jọra si atẹle naa ni paragira server ti nginx Jọwọ yi /root/i18n/md/out/main/htm pada si ọna ti iṣẹ akanṣe tirẹ 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;
  }
}

Da Lori github action Lemọlemọfún Integration

O le tọka si atẹle naa lati tunto github action rẹ:

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

Gẹgẹbi a ti le rii ninu iṣeto ni, ṣiṣiṣẹsẹhin iṣẹ yii nfa nigbati titari si ẹka main ati ẹka dist .

Sisan-iṣẹ yoo lo faili iṣeto ti o baamu si orukọ ẹka lati gbejade iwe-ipamọ Nibi, .i18n/htm/main.yml ati .i18n/htm/dist.yml yoo ṣee lo bi iṣeto ti atẹjade ni atele.

A ṣeduro awọn iṣe ti o dara julọ atẹle fun ilana itusilẹ iwe:

Nigbati awọn ayipada ba wa ni titari si ẹka main , iwe naa yoo fa lati kọ ati gbe lọ si ibudo awotẹlẹ (ibudo awotẹlẹ wa github page ).

Lẹhin ti ifẹsẹmulẹ pe iwe-ipamọ naa jẹ deede lori aaye awotẹlẹ, koodu naa yoo dapọ ati titari si ẹka dist , ati kọ ati imuṣiṣẹ osise yoo lọ lori ayelujara.

Nitoribẹẹ, imuse ilana ti o wa loke nilo kikọ awọn atunto diẹ sii.

O le tọka si iṣẹ akanṣe github.com/fcdoc/doc fun iwe afọwọkọ iṣẹ.

secrets.I18N_SITE_TOKEN ati secrets.NPM_TOKEN ni iṣeto ni o nilo ki o tunto awọn oniyipada asiri ni ipilẹ koodu.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN jẹ ami atẹjade ti package npm ninu iṣeto ni ibẹwo npmjs.com

Ilana Itọnisọna

public

Awọn faili aimi ti oju opo wẹẹbu, bii favicon.ico , robots.txt , ati bẹbẹ lọ.

Awọn faili aami nibi le ṣe ipilẹṣẹ pẹlu realfavicongenerator.net

.i18n

Labẹ awọn .i18n liana ni o wa iṣeto ni awọn faili, translation kaṣe, ati be be lo ti i18n.site Wo nigbamii ti ipin "Ito ni" fun awọn alaye.

en

Itọsọna ede orisun, bamu si en ti fromTo ni .i18n/conf.yml faili iṣeto ni

i18n:
  fromTo:
    en: zh

Jọwọ tọkasi iṣeto ti itumọ i18