வரிசைப்படுத்தல் மற்றும் ஆன்லைன்

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 npmjs.com , md: இன் மதிப்பை YOUR_NPM_PACKAGE உங்கள் சொந்த npm தொகுப்புப் பெயராக மாற்றவும்.

பின்னர் md/.i18n/htm/main.package.json மாற்றவும்

மொழிபெயர்த்து வெளியிட, md கோப்பகத்தில் i18n.site --npm அல்லது i18n.site -n இயக்கவும்.

நீங்கள் வெளியிடுவதற்கு தொடர்ச்சியான ஒருங்கிணைப்பு சூழலைப் பயன்படுத்தினால், nodejs நிறுவ வேண்டிய அவசியமில்லை. உள்நுழைந்த மற்றும் வெளியீட்டு அனுமதிகள் ~/.npmrc சூழலுக்கு நகலெடுக்கவும்.

main.yml இல் v: இன் தொகுப்பின் பெயரை நீங்கள் மாற்றினால், முதலில் .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: //i18n-v.xxx.com போன்ற உங்கள் URL முன்னொட்டுக்கு v: //unpkg.com/i18n.site மாற்றவும்.

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

/.v இல் முடிவடையும் பாதையின் தற்காலிக சேமிப்பு நேரம் 1s ஆக CDN உள்ளமைக்க நினைவில் கொள்ளுங்கள், இல்லையெனில் புதிதாக வெளியிடப்பட்ட உள்ளடக்கத்தை உடனடியாக அணுக முடியாது.

இணையதளத்தை வெளியிடுங்கள்

வலைத்தளம் எங்கும் பயன்படுத்தப்படலாம் github page மேலும் cloudflare page நல்ல தேர்வுகள்.

இணையதளம் ஒரு பக்க பயன்பாட்டு கட்டமைப்பைப் பயன்படுத்துவதால், . முதல் index.html வரை இல்லாத URL பாதைகளை மீண்டும் எழுத நினைவில் கொள்ளுங்கள்.

இணையதள நுழைவுப் பக்கம் ஒருமுறை மட்டுமே பயன்படுத்தப்பட வேண்டும், மேலும் அடுத்தடுத்த உள்ளடக்க புதுப்பிப்புகளுக்கு இணையதள நுழைவுப் பக்கத்தை மீண்டும் பயன்படுத்த வேண்டிய அவசியமில்லை.

கிதுப் பக்கத்தில் வரிசைப்படுத்து

ஒரு நிறுவனத்தை உருவாக்க முதலில் github கிளிக் செய்யவும் i18n-demo

இந்த அமைப்பின் கீழ் கிடங்கு i18n-demo.github.io உருவாக்கவும் (தயவுசெய்து i18n-demo நீங்கள் உருவாக்கிய நிறுவனத்தின் பெயருடன் மாற்றவும்):

முந்தைய கட்டுரையில் உள்ள உள்ளடக்கத்தை வெளியிடும் போது, out/main/htm ஆனது இந்த கோப்பகத்தை உள்ளிட்டு இயக்கவும் :

ln -s index.html 404.html

URL பாதையை மீண்டும் எழுதுவதை 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 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 .

ஒற்றை-பக்க பயன்பாடுகளுக்கு ஏற்ப பாதையை மாற்றியமைக்க நீங்கள் எட்ஜ் கம்ப்யூட்டிங்கைப் பயன்படுத்தலாம் எடுத்துக்காட்டாக, 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
  // அவுட்.XXX = 'MSG' போன்ற பிழைத்திருத்த வெளியீட்டிற்கு பதில் தலைப்புகளை அமைக்கலாம்;
})

ரெக்கார்ட் MX மற்றும் ரெக்கார்ட் CNAME ஆகியவை இணைந்து செயல்பட முடியாது என்பதால், நீங்கள் ஒரே நேரத்தில் டொமைன் பெயர் மின்னஞ்சல்களைப் பெற விரும்பினால், cname_flatten ஸ்கிரிப்ட் CNAME க்கு ஒத்துழைக்க வேண்டும் A

கூடுதலாக, சீனாவில் உள்ள கிளவுட் விற்பனையாளர்களின் வெளிநாட்டு போக்குவரத்து கட்டணங்கள் ஒப்பீட்டளவில் விலை உயர்ந்தவை என்பதால், நீங்கள் செலவுகளை மேம்படுத்த விரும்பினால், நீங்கள் DNS Cloud இன் இலவச புவியியல் தீர்மானம் மற்றும் Cloudflare for SaaS இன் தனிப்பயன் டொமைன் பெயரை (கீழே காட்டப்பட்டுள்ளது) பயன்படுத்தலாம் போக்குவரத்து திசைதிருப்பல்──சீனா பைடு கிளவுட் 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 உடன் வரிசைப்படுத்தவும்

nginx server /root/i18n/md/out/main/htm 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/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.ico , robots.txt , போன்ற வலைத்தளத்தின் நிலையான கோப்புகள்.

ஐகான் கோப்புகளை உருவாக்க முடியும் realfavicongenerator.net

.i18n

.i18n கோப்பகத்தின் கீழ் i18n.site இன் உள்ளமைவு கோப்புகள், மொழிபெயர்ப்பு தற்காலிக சேமிப்பு போன்றவை உள்ளன. விவரங்களுக்கு அடுத்த அத்தியாயமான "உள்ளமைவு" ஐப் பார்க்கவும்.

en

மூல மொழி கோப்பகம், .i18n/conf.yml உள்ளமைவு கோப்பில் fromTo இல் en உடன் தொடர்புடையது

i18n:
  fromTo:
    en: zh

மொழிபெயர்ப்பின் உள்ளமைவைப் பார்க்கவும் i18