Table of Contents
توسعه برنامه های وب چند زبانه دیگر اختیاری در چشم انداز دیجیتال جهانی امروز نیست. کاربران انتظار دارند با محتوا در زبان بومی خود ارتباط برقرار کنند و ارائه این تجربه به طور مستقیم بر تعامل، تبدیل و توسعه بازار تاثیر می گذارد. الگوی مدل-View-کنترلر (MVC) ، همراه با تکنیک های محلی سازی ، یک معماری اثبات شده برای ساخت مقیاس پذیر، برنامه های چند زبانه را از طریق بهترین روش های پروژه و پیاده سازی های عملی خود فراهم می کند.
الگوی MVC: یک تناسب طبیعی برای محلی سازی
معماری MVC یک برنامه را به سه جزء متصل تقسیم می کند: مدل، View و کنترل کننده.این جدایی از نگرانی ها به ویژه در هنگام اضافه کردن پشتیبانی چند زبانه ارزشمند است، زیرا هر جزء می تواند برای بین المللی سازی (i18n) و محلی سازی (l10n) بدون تاثیر بر دیگران گسترش یابد.
- مدل: مدیریت داده ها و منطق کسب و کار برای برنامه های چند زبانه، مدل باید ذخیره و یا بازیابی محتوای خاص زبان، چه از یک پایگاه داده، API، و یا فایل های منابع.
- View: لایه ارائه را اداره می کند.نظرها از رشته های محلی، تاریخ / قالب بندی عددی و طرح های آگاه جهت (RTL / LTR) برای نمایش صحیح محتوا در هر زبان استفاده می کنند.
- کنترل کننده: پردازش ورودی کاربر، تشخیص محلی، و انتخاب منابع مناسب و یا داده قبل از عبور از آنها به نظر.
این جدایی تمیز به این معنی است که شما می توانید یک زبان جدید را با ایجاد فایل های منبع جدید یا ورودی ها اضافه کنید، قالب های دید را تنظیم کنید تا به آن منابع اشاره کنید و اطمینان حاصل کنید که کنترل کننده ها محلی صحیح را انتخاب می کنند – همه بدون بازنویسی منطق کسب و کار یا پایگاه داده.
تکنیک های کلیدی Localization
فایل های منبع برای String Storage
فایل های منابع (JSON، YAML، XML یا .resx) رشته های خاص زبان را از کد خارج نگه می دارند.به عنوان مثال، Laravel از فایل های (FLT:0) استفاده می کند؛ ASP.NET Core از فایل های FLT:1 استفاده می کند و بسیاری از چارچوب های جاوا اسکریپت از فایل های ترجمه JSON استفاده می کنند.
- [FLT2] برای انگلیسی
- [FLT3] برای فرانسوی
استفاده از فایل های منبع باعث می شود مترجمان بدون لمس منطق درخواست کار کنند و کد پایه را تمیز نگه می دارد.
تشخیص و مذاکرات محلی
درخواست شما باید به طور خودکار زبان مورد علاقه کاربر را شناسایی کند.استراتژی های مشترک شامل:
- سربرگ زبان را قبول کنید [FLT 1] برای دریافت لیست اولویت کاربر.
- پروفایل کاربر تنظیم: با استفاده از محلی انتخاب شده در یک جلسه یا پایگاه داده پس از ورود کاربر.
- [در این باره] [و] پیشوند یا زیر دامنه [[[۱]] [۱۰] [۱] [۱۰] [۳] [۳] [۳] [۱] [۳] [۳] [۵] یا .
- Cookie یا ذخیره سازی محلی: با تاکید بر انتخاب زبان کاربر در طول جلسات.
کنترل کننده باید یک الگوریتم مذاکره را پیاده سازی کند – به عنوان مثال، اولویت دقیق کاربر را امتحان کنید، سپس به یک زبان پیش فرض برگردید.فعالیت بین المللی سازی W3C (W3C i18n راهنمایی های دقیقی را در مورد مذاکره محتوا ارائه می دهد.
ساختار بندی، جنسیت و فرمت
محلی سازی فراتر از جایگزینی رشته ساده است.زبان های مختلف قوانین پیچیده ای دارند (به عنوان مثال، "1 مورد" در مقابل "2 آیتم" به زبان انگلیسی، اما اشکال متعدد در لهستانی یا عربی") بسیاری از چارچوب ها قوانین کثرت سازی داخلی را ارائه می دهند: Laravels (FLT:7، Symfony's ، و ICU، به طور مشابه در شماره فرمت ایالات متحده، شماره 10.
استراتژی های ترجمه محتوا Content Translation
برای محتوای پویا ذخیره شده در یک پایگاه داده (به عنوان مثال، توصیف محصول، پست های وبلاگ)، شما چندین گزینه دارید:
- [[۱] [۱۰] [[۱۰]] [۱] [۱]] [۱]] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱]] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۳] [۲] [۲] [۳] [۳] [۳] [۳] [۳] [۲] [۲] [۲] [۳] [۳] [۱] [۱] [۲] [۱] [۱] [۳]] [۲] [۲] [۱]]] [۱]]]]]] [۱] [۱] [۳] [۳] [۱] [۳] [۱] [۱] [۳] [۱] [۱] [۱] [۲] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۱] [۳] [۱] [۱] [۱] [۳] [۳] [۱] [۲] [۱] [
- جداول ترجمه تقسیم: [FLT13] جدول با یک رابطه چندمورفیک با هر نهاد قابل ترجمه، این انعطاف پذیر تر و به دنبال پایگاه داده عادی سازی بهترین شیوه است.
- ستون های JSON: یک شی JSON را با کلید زبان ذخیره کنید، سریع برای نمونه، اما می تواند دشوار باشد برای جستجو و نگهداری.
رویکردی را انتخاب کنید که با تعداد زبان ها و اندازه محتوا مطابقت داشته باشد.
ادغام MVC با Localization: یک راهنمای گام به گام
فرض کنیم شما در حال ساخت یک برنامه وب چند زبانه در یک چارچوب معمول PHP یا C# MVC هستید. مراحل زیر نشان می دهد که چگونه بومی سازی را به جریان MVC ارسال کنید.
طراحی مدل برای داده های چند زبانه
به عنوان مثال، به عنوان مثال، یک مدل ممکن است یک رابطه یک به چند با مدل داشته باشد که [FLT16] را ذخیره می کند، و در ORM مانند Eloquent Laravel، شما می توانید از یک ویژگی یا بسته اختصاصی برای بارگذاری فایل های ثابت استفاده کنید.
۲- کنترل کننده را برای تشخیص محلی شکل دهید
در کنترل کننده پایه (یا واسطه)، اجرای تشخیص محلی، محلی فعلی برنامه را بر اساس اولویت کاربر تنظیم کنید.
protected function setLocale(Request $request)
{
$locale = $request->segment(1); // from URL
if (in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
session(['locale' => $locale]);
}
}
در ASP.NET Core، می توانید واسطه را برای رسیدگی به مذاکره خودکار اضافه کنید.کنترل کننده سپس از برای بازگشت ترجمه های صحیح استفاده می کند.
۳- توسعه دیدگاه ها با استفاده از توابع محلی سازی
به جای سیم های رمزگذاری سخت در نظر گرفتن، از کمک های محلی سازی استفاده کنید.در Laravel Blade، از (FLT:22) استفاده می کنید؛ در ASP.NET Razor، برای محتوای پویا، نمونه مدل ترجمه شده را به میدان های مشاهده و نمایش به طور مستقیم بر اساس محلی فعلی، اطمینان حاصل کنید که تاریخ و تعداد از فرمت سازی (F:24 یا LT 25.
به عنوان مثال، یک صفحه ورود ساده در Laravel Blade:
<h2>{{ __('auth.login_title') }}</h2>
<form>
<label>{{ __('auth.email') }}</label>
<input type="email" name="email">
<label>{{ __('auth.password') }}</label>
<input type="password" name="password">
<button type="submit">{{ __('auth.login_button') }}</button>
</form>
۴- قابلیت تغییر زبان
یک انتخاب کننده زبان قابل مشاهده (اغلب یک قطره در ناوبری یا پابر) را ارائه دهید، زمانی که کاربر یک زبان را انتخاب می کند، کنترل کننده یا به روز رسانی جاوا اسکریپت محلی فعلی و انتخاب کاربر را در همان مسیر نگه می دارد.
بهترین روش ها و ملاحظات
مدیریت محتوا مداوم
ترجمه ها را همگام سازی کنید.استفاده از کنترل نسخه برای فایل های منبع و در نظر گرفتن استفاده از یک سیستم مدیریت ترجمه (به عنوان مثال، Lokalise، Crowdin) برای تیم های بزرگتر.از تکرار کلید ترجمه اجتناب کنید؛ در صورت امکان از آنها استفاده کنید.
تجربه کاربری برای سایت های چند زبانه
- انتخاب کننده زبان: از یک دکمه روشن، قابل مشاهده یا آیکون پرچم (با متن alt برای دسترسی به آن) استفاده کنید.
- به یاد داشته باشید که انتخاب: زبان کاربر را از طریق جلسه، کوکی یا پایگاه داده پر کنید.
- تنظیمات مرورگر را مشاهده کنید: در اولین بازدید، به طور خودکار از زبان ترجیحی مرورگر در صورت امکان استفاده کنید.
- SEO با hreflang: [FLT:] [FLT 27] [در HTML خود برای گفتن موتورهای جستجو در مورد نسخه های زبان جایگزین هر صفحه.
بهینه سازی عملکرد
- ترجمه های درد: فایل های منبع بار به حافظه و ذخیره آنها (به عنوان مثال، با استفاده از Laravel
- ترجمه بار مدیر: هنگامی که در جستجوی مدل های قابل انطباق، استفاده از بارگیری مشتاق برای جلوگیری از مشکل جستجوی N+1.
- محاسبه محدوده تشخیص محلی: ذخیره محلی حل شده در یک ظرف خدمات یا جلسه، بنابراین آن را در سراسر جهان بدون تکرار منطق تشخیص در دسترس است.
دسترسی و Inclusivity
محتوای محلی باید در دسترس باشد.اطمینان حاصل کنید که ویژگی های زبان ( و به درستی بر روی تگ تنظیم شده اند.استفاده از برچسب های مناسب ARIA در زبان های متعدد آزمون با خوانندگان صفحه نمایش در هر زبان پشتیبانی شده است.
ابزار و چارچوب های پشتیبانی از توسعه چند زبانه MVC
اکثر فریم های MVC مدرن دارای بسته های محلی سازی قوی ساخته شده یا پشتیبانی شده توسط جامعه هستند:
- [PHP] شامل کمک کنندگان محلی، قوانین کثرت، و پشتیبانی از فایل های منبع JSON و PHP است.
- [C#] [FLT1] [FLT: 34] و :35] رابط کاربری، با فایل های منابع و محلی سازی هوشمند ASP] راهنمای محلی سازی جامع است.
- Ruby در Rails (Ruby): از فایل های YAML و I18n API با قوانین و فرمت گسترده کثرت و اعداد استفاده می کند.
- [Python]: پشتیبانی از متن و ترجمه رشته با برچسب [FLT36] قالب Django بین المللی سازی پوشش همه چیز.
- Symfony (PHP): از اجزای ترجمه با XLIFF، YAML و پشتیبانی فرمت PHP استفاده می کند.
برای چارچوب های MVC front-end مانند React با Redux، کتابخانه هایی مانند (بر اساس فرمت پیام ICU) به خوبی با ساختار backend MVC ادغام می شوند.
نتیجه گیری
ساخت برنامه های وب چند زبانه با استفاده از الگوی MVC یک رویکرد ثابت و قابل نگهداری است.با استفاده از جدایی نگرانی های ذاتی به MVC، توسعه دهندگان می توانند بدون بازسازی کل فایل های کد پایه، تشخیص محلی و طراحی دقیق پایگاه داده، ابزار اصلی را معرفی کنند، در حالی که چارچوب ها زیرساخت های پشتیبانی را ارائه می دهند.