بڵاوکردنەوە و ئۆنلاین
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
+
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/"
لەبیرت بێت CDN
ڕێکبخەیت بەجۆرێک کە کاتی کاشی ڕێڕەوەکە کە بە /.v
کۆتایی دێت 1s
بێت، ئەگەرنا ناتوانرێت دەستبەجێ دەست بە ناوەڕۆکی تازە بڵاوکراوە بگات.
ماڵپەڕی بڵاوکردنەوە
ماڵپەڕەکە دەتوانرێت لە هەر شوێنێک جێگیر بکرێت github page و cloudflare page هەڵبژاردەی باشن.
لەبەر ئەوەی ماڵپەڕەکە بیناسازی بەرنامەی تاکە لاپەڕەیی بەکاردەهێنێت، لەبیرت بێت ڕێڕەوی URL بنووسیتەوە کە .
بۆ index.html
لەخۆناگرێت.
لاپەڕەی چوونە ژوورەوەی ماڵپەڕەکە تەنها پێویستی بە یەکجارە و پێویست ناکات لاپەڕەی چوونەژوورەوەی ماڵپەڕەکە دووبارە بڵاوبکرێتەوە بۆ نوێکردنەوەی ناوەڕۆکی دواتر.
لە لاپەڕەی 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 بڵاوکردنەوە
cloudflare page بە بەراورد لەگەڵ github page
, دووبارە نووسینەوەی ڕێگاکە دابین دەکات و زیاتر دۆستانەیە بۆ چین و زیاتر دەستڕاگەیشتنە.
بڵاوکردنەوەی cloudflare page
بەزۆری لەسەر بنەمای جێگیرکردنی github page
لە سەرەوەیە.
پرۆژەیەک دروست بکە و کۆگای i18n-demo.github.io
سەرەوە بەستەوە.
پرۆسەکە لەم وێنەیەی خوارەوەدا نیشان دراوە:
تکایە کلیک لە Add Account
بکە بۆ ئەوەی دەستت بگات بە ڕێکخراوی i18n-demo
.
ئەگەر کۆگای ڕێکخراوێکی ترت بەستووە، لەوانەیە پێویستت بە دوو جار کلیک لە Add Account
بکەیت بۆ ئەوەی دوو جار ڕێگەپێدان بدەیت پێش ئەوەی ڕێکخراوە نوێیەکە پیشان بدرێت.
دواتر warehouse 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
ناتوانن پێکەوە بژین، ئەگەر بتەوێت لە یەک کاتدا ئیمەیڵی ناوی دۆمەین A
، پێویستە هاوکاری لەگەڵ CNAME
cname_flatten
جگە لەوەش، لەبەر ئەوەی پارەی هاتوچۆی دەرەوەی وڵاتی فرۆشیارانی هەور لە چین تاڕادەیەک گرانە، ئەگەر بتەوێت تێچوونەکان باشتر بکەیت، دەتوانیت DNS جوگرافیای بێبەرامبەری Huawei Cloud و ناوی دۆمەینی تایبەت بە Cloudflare for SaaS 's بەکاربهێنیت (وەک لە خوارەوە نیشان دراوە) بۆ بەدەستهێنانی ترافیک لادان──ڕێڕەوی هاتوچۆ لە چین بایدو هەوری CDN
, هاتوچۆی نێودەوڵەتی دەچێتە cloudflare .
ئەم چارەسەرانەی باشکردنی بڵاوکردنەوە ئاڵۆزترن و لە داهاتوودا لە بەشە جیاوازەکاندا دەناسرێنەوە.
ئاڕاستەکردنەوەی ناوی دۆمەینی گشتی
ئەگەر i18n.site
بەکاربهێنیت بۆ دروستکردنی ماڵپەڕێک وەک ماڵپەڕی سەرەکیت، بەزۆری پێویستە ئاڕاستەکردنەوەی پان دۆمەین ڕێکبخەیت، واتە دەستڕاگەیشتنەکە ئاڕاستە بکەیتەوە بۆ *.xxx.com
(لەوانەش www.xxx.com
) بۆ xxx.com
.
ئەم مەرجە دەتوانرێت بە یارمەتی عەلی بابا کلاود CDN
EdgeScript
( بەڵگەنامەی ئینگلیزی / بەڵگەنامەی چینی ) بەدەست بهێنرێت .
ناوی دۆمەینەکە لە هەوری CDN زیاد بکە و ناوی دۆمەینەکە *.xxx.com
بۆ CNAME
لە هەوری عەلیبابا CDN
ئاماژە بکە !
بۆ نموونە ڕێکخستنی ئاڕاستەکردنەوەی ناوی پان دۆمەین کە *.i18n.site
لە وێنەی سەرەوەدا بەم شێوەیەی خوارەوەیە:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
لەگەڵ nginx بڵاوکردنەوە
تکایە ڕێکخستنێکی هاوشێوەی ئەمانەی خوارەوە زیاد بکە لە بڕگەی server
ی nginx تکایە /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
بەڕێوەبەرایەتی زمانی سەرچاوە، کە هاوتایە لەگەڵ en
لە fromTo
لە .i18n/conf.yml
پەڕگەی ڕێکخستن
i18n:
fromTo:
en: zh
تکایە ئاماژە بە ڕێکخستنی وەرگێڕانەکە بکە i18