النشر وعلى الانترنت
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
+
يمكنك استخدام rclone لتسجيل الدخول إلى الخادم S3
، ثم الرجوع إلى البرنامج النصي التالي وتعديله، ونسخ التغييرات المتزايدة إلى 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 . اسم المنظمة التالي هو 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
بالمقارنة مع github page
cloudflare page فإنه يوفر إعادة كتابة المسار وهو أكثر ملاءمة لبر الصين الرئيسي ويوصى باستخدامه.
يعتمد نشر cloudflare page
عادةً على نشر github page
أعلاه.
قم بإنشاء مشروع وربط المستودع i18n-demo.github.io
أعلاه.
تظهر العملية في الشكل أدناه:
الرجاء النقر فوق Add Account
لمنح حق الوصول إلى المؤسسة i18n-demo
.
إذا قمت بربط مستودع مؤسسة أخرى، فقد تحتاج إلى النقر فوق 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
.
بالإضافة إلى ذلك، نظرًا لأن رسوم حركة المرور الخارجية لموردي الخدمات السحابية في البر الرئيسي للصين باهظة الثمن نسبيًا، إذا كنت ترغب في تحسين التكاليف، فيمكنك استخدام DNS الجغرافية المجانية لـ Huawei Cloud واسم النطاق المخصص Cloudflare for SaaS (كما هو موضح أدناه) لتحقيق ذلك تحويل حركة المرور──توجيه حركة المرور في البر الرئيسي للصين Baidu Cloud CDN
، حركة المرور الدولية تذهب cloudflare .
تعد حلول تحسين النشر هذه أكثر تعقيدًا وسيتم تقديمها في فصول منفصلة في المستقبل.
إعادة توجيه اسم المجال العام
إذا كنت تستخدم i18n.site
لإنشاء موقع ويب باعتباره موقع الويب الرئيسي الخاص بك، فستحتاج عادةً إلى تكوين إعادة توجيه النطاق الشامل، أي إعادة توجيه الوصول إلى *.xxx.com
(بما في ذلك www.xxx.com
) إلى xxx.com
.
يمكن تحقيق هذا المطلب بمساعدة Alibaba Cloud CDN
EdgeScript
( مستند باللغة الإنجليزية / مستند صيني )
أضف اسم المجال في Alibaba Cloud CDN وأشر إلى اسم المجال *.xxx.com
إلى CNAME
في Alibaba Cloud 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