ማሰማራት እና በመስመር ላይ

i18n.site ባለ አንድ ገጽ አፕሊኬሽን አርክቴክቸርን ተቀብሏል፣ እና የድረ-ገጹ መግቢያ ገጽ እና የድር ጣቢያ ይዘቶች በተናጥል ተዘርግተዋል።

ከላይ ያለውን ትርጉም ካስኬዱ በኋላ፣ ማውጫ htm እና vmd/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 ነባሪ ውቅሮች ናቸው።

devdevelopment ምህጻረ ቃል ነው, የልማት አካባቢን የሚያመለክት, ለአካባቢያዊ ቅድመ-እይታ ጥቅም ላይ ይውላል, እና እንዲሁም ነባሪ የውቅር ፋይል ነው. 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 እሴቱን ይቀይሩት npmjs.com የራስዎ npm ጥቅል ስም።

ከዚያ md/.i18n/htm/main.package.json አሻሽል።

ለመተርጎም እና ለማተም md ማውጫ ውስጥ i18n.site --npm ወይም i18n.site -n ያሂዱ።

ለማተም ያልተቋረጠ የውህደት አካባቢን ከተጠቀሙ፣ 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 ማውጫ ውስጥ ያለውን ይዘት በ v: ውስጥ ወደተቀመጠው የዩአርኤል ቅድመ ቅጥያ መንገድ ያዋቅሩት።

በመጨረሻም የመንገዱን መሸጎጫ ጊዜ በ /.v ወደ 1s ያዋቅሩ , አለበለዚያ አዲስ የተለቀቀውን ይዘት ወዲያውኑ ማግኘት አይቻልም.

አላስፈላጊ ጥያቄዎችን ለመቀነስ የሌሎች ዱካዎች መሸጎጫ ጊዜ ለአንድ አመት ወይም ከዚያ በላይ ሊቀናጅ ይችላል።

ይዘትን ወደ s3 ያስተናግዱ

ይዘትን በራስ ለማስተናገድ የእራስዎን አገልጋይ ከመጠቀም በተጨማሪ ሌላ የተለመደ አማራጭ S3 + መጠቀም ነው CDN

ወደ 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 ያላሉትን የዩአርኤል መንገዶች እንደገና መፃፍዎን ያስታውሱ።

የድረ-ገጹ መግቢያ ገጽ አንድ ጊዜ ብቻ መሰማራት አለበት፣ እና ለቀጣይ የይዘት ዝመናዎች የድህረ ገጹ መግቢያ ገጹን እንደገና መዘርጋት አያስፈልግም።

በgithub ገጽ ላይ አሰማራ

ድርጅት ለመፍጠር መጀመሪያ github ጠቅ ያድርጉ የሚከተለው የድርጅት ስም i18n-demo ነው።

ከዚያ በዚህ ድርጅት ስር መጋዘን i18n-demo.github.io ይፍጠሩ (እባክዎ i18n-demo በፈጠሩት የድርጅት ስም ይተኩ)

በቀደመው መጣጥፍ ውስጥ ያለውን ይዘት ሲያትሙ out/main/htm ተፈጥሯል እባኮትን ይህንን ማውጫ ያስገቡ እና ያሂዱ :

ln -s index.html 404.html

ምክንያቱም github page የዩአርኤል ዱካ እንደገና መፃፍን ስለማይደግፍ 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 ገጽ ላይ አሰማራ

github page ጋር ሲነጻጸር cloudflare page እንደገና ለመጻፍ መንገድ ያቀርባል እና ለዋና ቻይና የበለጠ ወዳጃዊ ነው እና ለመጠቀም ይመከራል.

cloudflare page መዘርጋት ብዙውን ጊዜ ከላይ ባለው github page ላይ የተመሰረተ ነው.

ፕሮጀክት ይፍጠሩ እና ከላይ ያለውን i18n-demo.github.io መጋዘን ያስሩ።

ሂደቱ ከዚህ በታች ባለው ስእል ውስጥ ይታያል.

ለድርጅት i18n-demo መዳረሻ ለመስጠት እባክዎ Add Account ጠቅ ያድርጉ።

የሌላ ድርጅት መጋዘን ካሰሩ፣ አዲሱ ድርጅት ከመታየቱ በፊት ሁለት ጊዜ ፍቃድ ለመስጠት 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
  // የምላሽ ራስጌዎች እንደ out.XXX = 'MSG';
})

መዝገብ MX እና መዝገብ CNAME አብረው ሊኖሩ ስለማይችሉ፣ በተመሳሳይ ጊዜ የጎራ ስም ኢሜይሎችን መቀበል ከፈለጉ፣ ከ cname_flatten ስክሪፕት እስከ ደረጃ CNAME ወደ መዝገብ A መተባበር ያስፈልግዎታል።

በተጨማሪም፣ በሜይን ላንድ ቻይና ያሉ የደመና አቅራቢዎች የውጭ ትራፊክ ክፍያ በአንጻራዊነት ውድ ስለሆነ፣ ወጪዎችን ለማመቻቸት ከፈለጉ፣ ለማግኘት የ Huawei Cloud DNS 's free ጂኦግራፊያዊ ጥራት እና የ Cloudflare for SaaS ብጁ ዶሜይን (ከታች እንደሚታየው) መጠቀም ይችላሉ። የትራፊክ መዘዋወር──በዋና ምድር ቻይና ባይዱ ክላውድ CDN ፣ አለምአቀፍ ትራፊክ ይሄዳል cloudflare .

እነዚህ የማሰማራት ማሻሻያ መፍትሄዎች ይበልጥ የተወሳሰቡ እና ወደፊት በተለያዩ ምዕራፎች ውስጥ ይተዋወቃሉ።

አጠቃላይ የጎራ ስም ማዘዋወር

ድር ጣቢያን እንደ ዋና ድር ጣቢያዎ ለማመንጨት i18n.site ከተጠቀሙ አብዛኛውን ጊዜ የፓን-ጎራ ማዘዋወርን ማለትም ወደ *.xxx.com ( www.xxx.com ጨምሮ) ወደ xxx.com መዳረሻን ማዞር ያስፈልግዎታል።

ይህንን መስፈርት በአሊባባ ክላውድ CDN EdgeScript ( የእንግሊዘኛ ሰነድ / የቻይንኛ ሰነድ ) እርዳታ ማግኘት ይቻላል.

CDN ክላውድ ውስጥ ያለውን የጎራ ስም ጨምር እና በ Alibaba Cloud CDN ውስጥ *.xxx.com እስከ CNAME የጎራ ስም ጠቁም።

ለምሳሌ ከላይ በምስሉ ላይ ያለው የፓን-ጎራ *.i18n.site ማዘዋወር ውቅረት እንደሚከተለው ነው።

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

በ nginx አሰማራ

እባኮትን በ server አንቀጽ ላይ /root/i18n/md/out/main/htm 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/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.icorobots.txt ፣ ወዘተ ያሉ የድረ-ገጹ የማይንቀሳቀሱ ፋይሎች።

እዚህ ያሉት የአዶ ፋይሎች በ realfavicongenerator.net

.i18n

.i18n ማውጫ ስር የ i18n.site የውቅረት ፋይሎች፣ የትርጉም መሸጎጫ እና ሌሎችም አሉ። ለዝርዝሮች ቀጣዩን ምዕራፍ "ውቅረት" ይመልከቱ።

en

የምንጭ ቋንቋ ማውጫ፣ enfromTo.i18n/conf.yml የውቅር ፋይል ጋር የሚዛመድ

i18n:
  fromTo:
    en: zh

እባክዎ የትርጉም ውቅርን ይመልከቱ i18