ምውፋርን ብኢንተርነትን

i18n.site ናይ ሓደ ገጽ መተግበሪ ስነ ህንጻ ይቕበል፣ እቲ መእተዊ ገጽን ትሕዝቶ መርበብ ሓበሬታን ድማ ብናጻ ይዝርጋሕ።

እዚ ኣብ ላዕሊ ዘሎ ትርጉም ድሕሪ ምዝዋርና፡ ኣብ ትሕቲ md/out/dev ማህደር htmv ን ማህደር ክፍጠሩ እዮም።

ኣብዚ dev ማለት ኣብቲ .i18n/htm/dev.yml ናይ ውቅር ፋይል ተመርኲሱ ዝተሃንጸ ማለት እዩ።

dev ማህደር :

እቲ htm ማህደር መእተዊ ገጽ መርበብ ሓበሬታ እዩ።

እቲ v ማህደር ትሕዝቶ መርበብ ሓበሬታ ምስ ቁጽሪ ስሪት ዝሓዘ እዩ።

ሎካል ቅድመ-ምርኢት ብዛዕባ ቁጽሪ ስሪት ኣይግድሶን እዩ ንኹሎም ፋይላት ድማ ናብ out/dev/v/0.1.0 ማህደር ክቕድሖም እዩ።

ንወግዓዊ ምዝርጋሕ፡ ዝተቐየሩ ፋይላት ናብቲ ሓድሽ ቁጽሪ ስሪት ማህደር ክቕደሑ እዮም።

ናይ ውቅር ፋይል ብ -c ግለጽ

ዝተፈላለዩ ናይ ውቅር ፋይላት ኣብቲ out ማህደር ተዛመድቲ ማህደር ክፈጥሩ እዮም።

ንኣብነት .i18n/htm/main.yml out/main ዝብል ማህደር ክፈጥር እዩ።

dev.ymlmain.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 ኣዐርዩ።

ንምትርጓምን ንምሕታምን ኣብቲ 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: ዝተቐመጠ ናይ URL ቅድመ-ጥብቆ መንገዲ ኣወሃህቦ።

ኣብ መወዳእታ ፡ ናይቲ ብ /.v ክሳብ 1s ዝውዳእ መንገዲ ናይ መኽዘን ግዜ ኣወሃህቦ ፣ እንተዘይኮይኑ እቲ ሓድሽ ዝተዘርግሐ ትሕዝቶ ብቕጽበት ክረኽቦ ኣይክእልን።

ንኻልኦት መንገድታት ዝኸውን ናይ መኽዘን ግዜ ናብ ሓደ ዓመት ወይ ልዕሊኡ ክቕየር ይኽእል እዩ ዘየድሊ ሕቶታት ንምንካይ።

ትሕዝቶ ናብ s3 ኣአንግድ

ትሕዝቶ ባዕልኻ ንምእንጋድ፡ ብዘይካ ናይ ገዛእ ርእስኻ ሰርቨር ምጥቃም፡ ካልእ CDN ኣማራጺ S3 +

ናብ S3 S3 ንምእታው rclone

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 ጽቡቓት ምርጫታት እዮም።

እቲ መርበብ ሓበሬታ ናይ ሓደ ገጽ መተግበሪ ስነ ህንጻ ስለ ዝጥቀም . ክሳብ index.html ዘይሓዙ መንገድታት URL ዳግማይ ምጽሓፍ ኣይትረስዕ።

እቲ ናይ ዌብሳይት መእተዊ ገጽ ሓንሳብ ጥራይ እዩ ክዝርጋሕ ዘለዎ፣ ንቐጻሊ ትሕዝቶ ምዕባለታት ድማ ነቲ ናይ ዌብሳይት መእተዊ ገጽ ዳግማይ ምዝርጋሕ ኣየድልን።

ኣብ ገጽ github ምዝርጋሕ

መጀመርታ ኣብዚ ጠውቑ ትካል 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 መኽዘን ምእሳር።

እቲ መስርሕ ኣብዚ ኣብ ታሕቲ ዘሎ ስእሊ ተገሊጹ ኣሎ፤

ንውድብ 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 .

ንሓደ ገጽ ዘለዎም መተግበሪታት ንምትዕጽጻፍ ነቲ መንገዲ ዳግማይ ንምጽሓፍ edge computing ክትጥቀም ትኽእል ኢኻ ንኣብነት 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

ብተወሳኺ፡ ኣብ መሬት ቻይና ንዝርከቡ ሸየጥቲ ደበና ዝኽፈል ክፍሊት ትራፊክ ብተዛማዲ Cloudflare for SaaS ስለዝኾነ፡ ወጻኢታት ከተመሓይሽ እንተደሊኻ፡ ንኽትዕወት ናይ Huawei Cloud DNS traffic diversion──ትራፊክ መስመር ኣብ መሬት ቻይና Baidu Cloud CDN , ዓለምለኻዊ ትራፊክ ይኸይድ cloudflare .

እዞም ናይ ምዝርጋሕ ምምሕያሽ መፍትሒታት ዝያዳ ዝተሓላለኹ ኮይኖም ኣብ መጻኢ ኣብ ዝተፈላለየ ምዕራፋት ክተኣታተዉ እዮም።

ሓፈሻዊ ኣንፈት ስም ዓውዲ

ንሓደ ዌብሳይት ከም ቀንዲ ዌብሳይትካ ንምፍጣር i18n.site እንተተጠቒምካ፡ መብዛሕትኡ ግዜ ፓን-ዶመይን ሪዳይረክሽን ክትውቅሮ ኣለካ፡ ማለት ንመእተዊ ናብ *.xxx.com ( www.xxx.com ሓዊሱ) ናብ xxx.com ምቕያር የድልየካ።

እዚ ጠለብ ብሓገዝ ዓሊባባ ክላውድ CDN EdgeScript ( ትግርኛ ሰነድ / ቻይናዊ ሰነድ ) ክዕወት ይከኣል ።

ኣብ ዓሊባባ CDN ስም ዶሜይን ወሲኽና ኣብ ዓሊባባ ክላውድ CDN *.xxx.com ክሳብ CNAME ዝብል ስም ዶሜይን ኣመልክት !

ንኣብነት ኣብዚ ኣብ ላዕሊ ዘሎ ስእሊ ናይ *.i18n.site ናይ ፓን-ዶመይን ስም ዳግመ-ኣንፈት ውቅር ከምዚ ዝስዕብ ይመስል፤

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

ምስ nginx ምውፋር

በጃኹም ኣብ server ሕጡበ- /root/i18n/md/out/main/htm ናይ nginx 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;
  }
}

ኣብ 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_TOKENsecrets.NPM_TOKEN ን ኣብቲ ውቅር ኣብቲ ኮድ ቤዝ ምስጢራዊ ተለዋዋጢ ክትውቅር ይጠልቡ።

I18N_SITE_TOKEN ረኸብ i18n.site/token

NPM_TOKEN ኣብቲ ውቅር ናይ ፓኬጅ npm ናይ ምሕታም ምልክት ኮይኑ ናይ ምሕታም ፍቓድ ዘለዎ ምልክት ፍጠር (ከምቲ ኣብ ታሕቲ ዘሎ) npmjs.com

ኣቃውማ ማህደር

public

ስታትቲክ ፋይላት ናይቲ መርበብ ሓበሬታ፡ ከም favicon.ico , robots.txt , ወዘተ።

ኣብዚ ዘለዉ ናይ ምልክት ፋይላት ብ realfavicongenerator.net

.i18n

ኣብ ትሕቲ .i18n ማህደር ናይ i18n.site ናይ ውቅር ፋይላት፣ ናይ ትርጉም መኽዘን ወዘተ ኣለዉ።ንዝርዝር ኣብ ዝቕጽል ምዕራፍ "ውቅር" ርአ።

en

ምንጪ ቋንቋ ማህደር፣ ምስ en ካብ fromTo ካብ .i18n/conf.yml ናይ ውቅር ፋይል ዝሰማማዕ

i18n:
  fromTo:
    en: zh

በጃኹም ኣብ ውቅር ትርጉም ተወከሱ i18