تعیناتی اور آن لائن
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
ترمیم کریں۔
ترجمہ اور شائع کرنے کے لیے md
ڈائریکٹری میں i18n.site --npm
یا i18n.site -n
چلائیں۔
اگر آپ شائع کرنے کے لیے مسلسل انضمام کا ماحول استعمال کرتے ہیں، تو nodejs
انسٹال کرنے کی ضرورت نہیں ہے۔ بس لاگ ان اور اشاعت کی اجازت ~/.npmrc
ماحول میں کاپی کریں۔
اگر آپ main.yml
میں v:
کے پیکج کے نام میں ترمیم کرتے ہیں، تو براہ کرم پہلے .i18n/v/main
حذف کرنا یقینی بنائیں اور پھر اسے شائع کریں۔
پراکسی سرور این پی ایم کے ذریعہ شائع کیا گیا ہے۔
اگر مین لینڈ چائنا کے صارفین کو نیٹ ورک کے مسائل کا سامنا کرنا پڑتا ہے اور وہ 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/"
CDN
کنفیگر کرنا یاد رکھیں تاکہ /.v
میں ختم ہونے والے راستے کا کیش ٹائم 1s
ہو، بصورت دیگر نئے جاری کردہ مواد تک فوری طور پر رسائی حاصل نہیں کی جا سکتی۔
ویب سائٹ شائع کریں
ویب سائٹ کو کہیں بھی تعینات کیا جا سکتا ہے github page اور cloudflare page اچھے انتخاب ہیں۔
چونکہ ویب سائٹ ایک صفحے کے ایپلیکیشن آرکیٹیکچر کا استعمال کرتی ہے، اس لیے یاد رکھیں کہ یو آر ایل کے راستے دوبارہ لکھیں جن میں .
سے 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
کلاؤڈ فلیئر صفحہ پر تعینات کریں۔
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
!
آپ 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
میں تعاون کرنے کی ضرورت ہے۔
اس کے علاوہ، کیونکہ مین لینڈ چین میں کلاؤڈ وینڈرز کے بیرون ملک ٹریفک چارجز نسبتاً مہنگے ہیں، اگر آپ لاگت کو بہتر بنانا چاہتے ہیں، تو آپ DNS Cloud کا مفت جغرافیائی ریزولوشن اور Cloudflare for SaaS کا حسب ضرورت ڈومین نام (جیسا کہ نیچے دکھایا گیا ہے) استعمال کر سکتے ہیں۔ ٹریفک ڈائیورژن──مین لینڈ چین میں ٹریفک روٹنگ Baidu Cloud CDN
، بین الاقوامی ٹریفک cloudflare .
یہ تعیناتی کی اصلاح کے حل زیادہ پیچیدہ ہیں اور مستقبل میں الگ الگ ابواب میں متعارف کرائے جائیں گے۔
عام ڈومین نام ری ڈائریکشن
اگر آپ کسی ویب سائٹ کو اپنی مرکزی ویب سائٹ کے طور پر بنانے کے لیے i18n.site
استعمال کرتے ہیں، تو آپ کو عام طور پر پین ڈومین ری ڈائریکشن کو کنفیگر کرنے کی ضرورت ہوتی ہے، یعنی *.xxx.com
(بشمول www.xxx.com
) سے xxx.com
تک رسائی کو ری ڈائریکٹ کرنا ہوتا ہے۔
یہ ضرورت Alibaba Cloud 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