بین‌المللی‌سازی و بومی‌سازی در Django: راهنمای کامل i18n و l10n

این مقاله مفاهیم بین‌المللی‌سازی (i18n) و بومی‌سازی (l10n) در Django را توضیح می‌دهد. موضوعاتی مانند ترجمهٔ متن، فرمت‌بندی تاریخ و اعداد، نام‌های locale، کدهای زبان، فایل‌های پیام (.po) و فایل‌های فرمت بررسی می‌شوند. همچنین نحوهٔ سازگار کردن محتوای وب‌اپلیکیشن با زبان و فرهنگ کاربران توضیح داده شده است.

بین‌المللی‌سازی جنگو، بومی‌سازی جنگوi18n، l10n، locale، کد زبان، فایل پیامترجمه، فایل فرمت

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۲۴ اسفند ۱۴۰۴

مقدمه

در دنیای امروز، بسیاری از وب‌اپلیکیشن‌ها باید برای کاربران کشورهای مختلف قابل استفاده باشند. Django یک سیستم قدرتمند برای بین‌المللی‌سازی (i18n) و بومی‌سازی (l10n) ارائه می‌دهد که امکان ترجمهٔ متن‌ها، فرمت‌بندی تاریخ‌ها و اعداد، و سازگار کردن محتوا با زبان و فرهنگ کاربران را فراهم می‌کند.

Django در زمینهٔ بین‌المللی‌سازی دو کار اصلی انجام می‌دهد:

  • به توسعه‌دهندگان و نویسندگان قالب‌ها اجازه می‌دهد بخش‌هایی از برنامه را برای ترجمه یا فرمت‌بندی علامت‌گذاری کنند.
  • بر اساس ترجیحات کاربر، این بخش‌ها را به زبان و فرمت مناسب نمایش می‌دهد.

مرورگرها معمولاً زبان کاربر را از طریق هدر Accept-Language ارسال می‌کنند. اما تشخیص منطقهٔ زمانی (Time Zone) نیازمند پیکربندی جداگانه است.


تفاوت بین بین‌المللی‌سازی و بومی‌سازی

بین‌المللی‌سازی (Internationalization یا i18n)

آماده‌سازی نرم‌افزار برای پشتیبانی از چند زبان. این مرحله شامل علامت‌گذاری رشته‌ها برای ترجمه و طراحی ساختار مناسب است. این کار معمولاً توسط توسعه‌دهندگان انجام می‌شود.

بومی‌سازی (Localization یا l10n)

نوشتن ترجمه‌ها و تعریف فرمت‌های محلی (تاریخ، زمان، اعداد و …). این کار معمولاً توسط مترجمان انجام می‌شود.

برای مطالعهٔ بیشتر می‌توانید به منابع زیر مراجعه کنید:

  • W3C Web Internationalization FAQ
  • مقالهٔ ویکی‌پدیا دربارهٔ i18n
  • مستندات GNU gettext

نکته: تنظیم USE_I18N کنترل‌کنندهٔ ترجمه است، اما نام آن فقط به i18n اشاره دارد. این یک میراث تاریخی در Django است.


اصطلاحات کلیدی

Locale Name

نام locale مشخص‌کنندهٔ زبان یا ترکیب زبان و کشور است. فرمت‌ها:

  • ll → فقط زبان (مثلاً it، es)
  • ll_CC → زبان + کشور (مثلاً de_AT، pt_BR، sr_Latn)

قوانین:

  • بخش زبان → حروف کوچک
  • بخش کشور → اگر دو حرف باشد بزرگ، اگر بیشتر باشد TitleCase
  • جداکننده → زیرخط (underscore)

Language Code

کدی که مرورگر در هدر Accept-Language ارسال می‌کند. شبیه locale است اما از خط تیره استفاده می‌کند:

  • it
  • de-at
  • pt-br

این کدها نسبت به حروف بزرگ و کوچک حساس نیستند.


Message File (.po)

یک فایل متنی ساده که شامل رشته‌های قابل ترجمه و ترجمهٔ آن‌ها برای یک زبان خاص است. هر زبان فایل .po مخصوص خود را دارد.


Translation String

رشته‌ای در کد یا قالب که قابلیت ترجمه دارد و با ابزارهای Django علامت‌گذاری می‌شود.


Format File

یک ماژول پایتون که فرمت‌های محلی برای موارد زیر را تعریف می‌کند:

  • تاریخ
  • زمان
  • اعداد
  • واحدهای پولی

جمع‌بندی

سیستم بین‌المللی‌سازی و بومی‌سازی Django به شما کمک می‌کند اپلیکیشن‌هایی بسازید که برای کاربران سراسر جهان قابل استفاده باشند. با شناخت مفاهیمی مانند locale، کد زبان، فایل‌های پیام و رشته‌های ترجمه، می‌توانید برنامه‌هایی چندزبانه و سازگار با فرهنگ‌های مختلف ایجاد کنید.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

فریم‌ورک Tasks در Django: راهنمای کامل اجرای کارهای پس‌زمینه در Django 6.0

Django 6.0 فریم‌ورک Tasks را معرفی کرده است؛ سیستمی داخلی برای تعریف و صف‌بندی کارهای پس‌زمینه خارج از چرخهٔ request–response. این مقاله نحوهٔ کار Tasks، پیکربندی backendها، تعریف و enqueue کردن Taskها، استفاده از context، و ادغام با سیستم‌های Worker خارجی را توضیح می‌دهد.

ادامه

پشتیبانی Asynchronous در Django: راهنمای کامل Async Views، ORM، Middleware، عملکرد و ایمنی

این مقاله پشتیبانی Django از برنامه‌نویسی غیرهم‌زمان (async) را توضیح می‌دهد. موضوعاتی مانند async views، اجرای Django تحت ASGI، رفتار middleware، قابلیت‌های ORM غیرهم‌زمان، sync_to_async، مدیریت قطع اتصال، نکات عملکردی، و مکانیزم‌های ایمنی Django برای جلوگیری از استفادهٔ ناامن async بررسی می‌شوند.

ادامه

System Check Framework در Django: راهنمای کامل نوشتن، ثبت، اجرا و تست چک‌های سیستمی

System Check Framework در Django مجموعه‌ای از بررسی‌های استاتیک برای تشخیص مشکلات رایج در پروژه است. این مقاله نحوهٔ اجرای چک‌ها، نوشتن چک‌های سفارشی، مدیریت پیام‌ها، برچسب‌گذاری چک‌ها، افزودن چک به مدل‌ها و فیلدها، و نوشتن تست‌های واحد و یکپارچه برای چک‌ها را توضیح می‌دهد.

ادامه

سیگنال‌ها در Django: راهنمای کامل استفاده، اتصال، ارسال و مدیریت Signalها

این مقاله سیستم سیگنال‌های Django را توضیح می‌دهد؛ مکانیزمی برای اطلاع‌رسانی رویدادها بین بخش‌های مختلف برنامه بدون ایجاد وابستگی مستقیم. موضوعاتی مانند نحوهٔ اتصال receiverها، استفاده از decorator، مدیریت senderهای خاص، محل مناسب قرارگیری کد سیگنال‌ها، هشدارهای مهم، و بهترین شیوه‌ها بررسی می‌شوند.

ادامه

آشنایی کامل با Django Settings: پیکربندی، مدیریت محیط، و بهترین شیوه‌ها

این مقاله یک راهنمای جامع دربارهٔ سیستم تنظیمات در Django ارائه می‌دهد. موضوعاتی مانند ساختار فایل تنظیمات، نحوهٔ تعیین DJANGO_SETTINGS_MODULE، استفاده از settings در کد، امنیت، پیکربندی دستی با configure()، استفادهٔ مستقل از Django با django.setup() و ایجاد تنظیمات سفارشی بررسی می‌شوند.

ادامه

سریال‌سازی و دسریال‌سازی در Django: راهنمای کامل کار با Serialization Framework

این مقاله سیستم سریال‌سازی Django را توضیح می‌دهد؛ از نحوهٔ تبدیل مدل‌ها به JSON، XML، YAML و JSONL گرفته تا دسریال‌سازی داده‌ها، سریال‌سازی فیلدهای انتخابی، کار با مدل‌های ارث‌بری، مدیریت روابط، و نکات مهم هنگام ذخیرهٔ داده‌های دسریال‌شده.

ادامه