স্থাপনা এবং অনলাইন
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
সম্পাদনা করুন এবং আপনার নিজের npm
প্যাকেজের নাম হিসাবে md:
YOUR_NPM_PACKAGE
এর মান পরিবর্তন করুন npmjs.com
তারপর 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
সম্পাদনা করুন এবং আপনার URL উপসর্গে v: //unpkg.com/i18n.site
পরিবর্তন করুন, যেমন 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 তে কন্টেন্ট হোস্ট করুন
স্ব-হোস্ট সামগ্রীর জন্য, আপনার নিজের সার্ভার ব্যবহার করার পাশাপাশি, আরেকটি সাধারণ বিকল্প হল 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 ভালো পছন্দ।
যেহেতু ওয়েবসাইটটি একটি একক-পৃষ্ঠা অ্যাপ্লিকেশন আর্কিটেকচার ব্যবহার করে, মনে রাখবেন যে URL পাথগুলি .
থেকে index.html
ধারণ করে না।
ওয়েবসাইট এন্ট্রি পৃষ্ঠাটি শুধুমাত্র একবার স্থাপন করা প্রয়োজন, এবং পরবর্তী বিষয়বস্তু আপডেটের জন্য ওয়েবসাইট এন্ট্রি পৃষ্ঠাটি পুনরায় স্থাপন করার প্রয়োজন নেই।
Github পৃষ্ঠায় স্থাপন করুন
একটি i18n-demo
তৈরি করতে প্রথমে এখানে ক্লিক github ।
তারপর এই সংস্থার অধীনে গুদাম 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
গুদামটি আবদ্ধ করুন।
প্রক্রিয়াটি নীচের চিত্রে দেখানো হয়েছে:
অনুগ্রহ করে 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 ক্লাউডের বিনামূল্যের ভৌগলিক রেজোলিউশন এবং Cloudflare for SaaS এর কাস্টম ডোমেইন নাম (নিচে দেখানো হয়েছে) ব্যবহার করতে পারেন ট্রাফিক ডাইভারশন──মূল ভূখন্ডে ট্রাফিক রাউটিং চীন Baidu ক্লাউড 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
nginx অনুরূপ একটি কনফিগারেশন যোগ করুন আপনার নিজের প্রকল্প out/main/htm
এর পাথে /root/i18n/md/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