דיפּלוימאַנט און אָנליין

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

ארויסגעבן אינהאַלט צו npmjs.com

npm & פּאָסטן

ינסטאַלירן nodejs , קלאָץ אין מיט npm login .

רעדאַגירן md/.i18n/htm/main.yml און טוישן די ווערט פון md: YOUR_NPM_PACKAGE ווי דיין אייגן npm פּעקל נאָמען וועט npmjs.com .

דערנאָך מאָדיפיצירן md/.i18n/htm/main.package.json

לויפן i18n.site --npm אָדער i18n.site -n אין די md וועגווייַזער צו איבערזעצן און אַרויסגעבן.

אויב איר נוצן אַ קעסיידערדיק ינטאַגריישאַן סוויווע צו אַרויסגעבן, עס איז ניט דאַרפֿן צו ינסטאַלירן nodejs נאָר נאָכמאַכן די לאָגד-אין און ארויסגעבן פּערמישאַנז ~/.npmrc צו די סוויווע.

אויב איר מאָדיפיצירן די פּעקל נאָמען פון v: אין main.yml , ביטע זיין זיכער צו ויסמעקן .i18n/v/main ערשטער און דאַן אַרויסגעבן עס.

פּראָקסי סערווער ארויס דורך npm

אויב יוזערז אין יאַבאָשע טשיינאַ טרעפן נעץ פּראָבלעמס און קענען נישט אַרויסגעבן 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 צו דיין URL פּרעפיקס, אַזאַ ווי v: //i18n-v.xxx.com .

אַרייַן די md וועגווייַזער און לויפן

i18n.site --htm_conf ol --save

אָדער אַבריווייישאַן

i18n.site -c ol -s

דערנאָך, קאַנפיגיער די אינהאַלט אין די md/out/main/v וועגווייַזער צו די URL פּרעפיקס דרך שטעלן אין v: .

צום סוף, קאַנפיגיער די קאַש צייט פון דעם דרך וואָס ענדיקט זיך מיט /.v צו 1s , אַנדערש איר קענען נישט אַקסעס די נייַע אינהאַלט גלייך.

די קאַש צייט פֿאַר אנדערע פּאַטס קענען זיין שטעלן צו איין יאָר אָדער מער צו רעדוצירן ומנייטיק ריקוועס.

האָסט אינהאַלט צו s3

צו זיך-באַלעבאָס אינהאַלט, אין אַדישאַן צו 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 זענען גוט ברירות.

ווייַל די וועבזייטל ניצט אַ איין-בלאַט אַפּלאַקיישאַן אַרקאַטעקטשער, געדענקען צו רירייט URL פּאַטס וואָס טאָן ניט אַנטהאַלטן . צו index.html .

דער וועבזייטל פּאָזיציע בלאַט דאַרף בלויז זיין דיפּלויד אַמאָל, און עס איז ניט דאַרפֿן צו רעדפּלוי די וועבזייטל פּאָזיציע בלאַט פֿאַר סאַבסאַקוואַנט אינהאַלט דערהייַנטיקונגען.

צעוויקלען אויף גיטהוב בלאַט

ערשטער גיט github צו שאַפֿן אַן אָרגאַניזאַציע i18n-demo

דערנאָך שאַפֿן ווערכאַוס 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

צעוויקלען אויף די קלאָודפלאַרע בלאַט

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 !

איר קענען נוצן ברעג קאַמפּיוטינג צו רירייט דעם דרך צו אַדאַפּט צו איין-בלאַט אַפּלאַקיישאַנז, למשל, 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
  // ענטפער כעדערז קענען זיין באַשטימט צו דיבאַג רעזולטאַט, אַזאַ ווי אָוט.קסקסקס = 'מסג';
})

ווייַל רעקאָרד MX און רעקאָרד CNAME קענען נישט קאָויגזיסטירן, אויב איר ווילן צו באַקומען פעלד נאָמען ימיילז אין דער זעלביקער צייט, איר דאַרפֿן צו קאָואַפּערייט מיט די cname_flatten צו מדרגה CNAME אין רעקאָרד A !

אין אַדישאַן, ווייַל די מעייווער - לייאַם פאַרקער טשאַרדזשיז פון וואָלקן ווענדאָרס אין יאַבאָשע טשיינאַ זענען לעפיערעך טייַער, אויב איר ווילן צו אַפּטאַמייז קאָס, איר קענען נוצן DNS פריי דזשיאַגראַפיקאַל האַכלאָטע פון Huawei Cloud און Cloudflare for SaaS ס מנהג פעלד נאָמען (ווי געוויזן אונטן) צו דערגרייכן פאַרקער דייווערזשאַן── פאַרקער רוטינג אין יאַבאָשע טשיינאַ באַידו קלאָוד CDN , אינטערנאַציאָנאַלע פאַרקער גייט cloudflare .

די דיפּלוימאַנט אַפּטאַמאַזיישאַן סאַלושאַנז זענען מער קאָמפּליצירט און וועט זיין באַקענענ אין באַזונדער טשאַפּטערז אין דער צוקונפֿט.

גענעריק פעלד נאָמען רידערעקשאַן

אויב איר נוצן i18n.site צו דזשענערייט אַ וועבזייטל ווי דיין הויפּט וועבזייטל, איר יוזשאַוואַלי דאַרפֿן צו קאַנפיגיער רידערעקשאַן פון פּאַן פעלד, דאָס איז, רידערעקט אַקסעס צו *.xxx.com (אַרייַנגערעכנט www.xxx.com ) צו xxx.com .

די פאָדערונג קענען זיין אַטשיווד מיט די הילף פון Alibaba Cloud CDN EdgeScript ( ענגליש דאָקומענט / כינעזיש דאָקומענט )

לייג די פעלד נאָמען אין Alibaba CDN און פונט די פעלד נאָמען *.xxx.com צו CNAME אין Alibaba Cloud CDN !

פֿאַר בייַשפּיל, די רידערעקשאַן קאַנפיגיעריישאַן פון די פּאַן פעלד נאָמען פון *.i18n.site אין די בילד אויבן איז ווי גייט:

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

ניצן nginx

ביטע לייג out/main/htm קאַנפיגיעריישאַן ענלעך צו די פאלגענדע אין די server /root/i18n/md/out/main/htm פון 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 קעסיידערדיק ינטאַגריישאַן

איר קענט אָפּשיקן צו די פאלגענדע צו קאַנפיגיער דיין 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/dist.yml אַרויסגעבן דעם .i18n/htm/main.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 שאַפֿן אַ טאָקען מיט ארויסגעבן פּערמישאַנז (ווי געוויזן אונטן).

Directory סטרוקטור

public

סטאַטיק טעקעס פון דעם וועבזייטל, אַזאַ ווי favicon.ico , robots.txt , עטק.

די בילדל טעקעס דאָ קענען זיין דזשענערייטאַד מיט realfavicongenerator.net

.i18n

אונטער די .i18n וועגווייַזער זענען די קאַנפיגיעריישאַן טעקעס, איבערזעצונג קאַש, עטק פון i18n.site זען די ווייַטער קאַפּיטל "קאָנפיגוראַטיאָן" פֿאַר פרטים.

en

מקור שפּראַך וועגווייַזער, קאָראַספּאַנדינג צו en פון fromTo אין .i18n/conf.yml קאַנפיגיעריישאַן טעקע

i18n:
  fromTo:
    en: zh

ביטע אָפּשיקן צו די קאַנפיגיעריישאַן פון איבערזעצונג i18