برای ایجاد یک سایت چند زبانه جنگو با استفاده از Django Translation، لازم به ذکر است مراحب انجام راحت تر از چیزی است که فکر کنید برای انجام مراحل زیر را دنبال کنید:

1. تنظیمات پروژه

ابتدا باید تنظیمات مربوط به زبان‌ها و مکان‌ها (Locale) را در پروژه جنگو خود اضافه کنید.

در فایل settings.py:

LANGUAGE_CODE = 'en-us'  # زبان پیش‌فرض
USE_I18N = True  # فعال‌سازی سیستم بین‌المللی‌سازی
USE_L10N = True
USE_TZ = True
LANGUAGES = [
    ('en', 'English'),
    ('fa', 'Farsi'),
    # زبان‌های دیگر را اضافه کنید
]
LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'locale'),  # مسیر ذخیره فایل‌های ترجمه
]

2. علامت‌گذاری رشته‌های قابل ترجمه

برای اینکه رشته‌های متنی شما قابل ترجمه باشند، باید از توابع ترجمه جنگو استفاده کنید. برای مثال:

در فایل‌های views.py یا models.py:

from django.utils.translation import gettext as _

def my_view(request):
    output = _("Welcome to my site.")
    return HttpResponse(output)

در فایل‌های template:

{% load i18n %}
<p>{% trans "Welcome to my site" %}</p>

3. تولید فایل‌ (po)

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

django-admin makemessages -l fa

این دستور یک فایل django.po در مسیر locale/fa/LC_MESSAGES/ ایجاد می‌کند که شامل کلیه رشته‌های قابل ترجمه است.

4. ترجمه فایل‌های po

فایل django.po را باز کرده و ترجمه‌ها را به صورت زیر اضافه کنید:

msgid "Welcome to my site."
msgstr "به سایت من خوش آمدید."

آموزش جنگو رایگان

5. کامپایل فایل‌های ترجمه

پس از تکمیل ترجمه‌ها، فایل‌های .po را کامپایل کنید تا فایل‌های .mo تولید شوند:

django-admin compilemessages

6. آدرس انتخاب زبان

لینک‌های تغییر زبان را در سایت خود قرار دهید تا کاربران بتوانند زبان مورد نظر خود را انتخاب کنند. شما می‌توانید از میدلویر LocaleMiddleware برای انتخاب زبان استفاده کنید. همچنین می‌توانید یک URL خاص برای تغییر زبان تعریف کنید:

در فایل urls.py:

from django.conf.urls.i18n import i18n_patterns

urlpatterns = [
    # مسیرهای عمومی
]

urlpatterns += i18n_patterns(
    path('my-view/', my_view, name='my_view'),
    # مسیرهای بومی سازی شده
)

7. تغییر زبان

برای تغییر زبان کاربران، می‌توانید از فرم‌های تعبیه‌شده مانند زیر استفاده کنید:

<form action="{% url 'set_language' %}" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}">
    <select name="language">
        {% get_current_language as LANGUAGE_CODE %}
        {% get_available_languages as LANGUAGES %}
        {% for lang in LANGUAGES %}
        <option value="{{ lang. }}" {% if lang. == LANGUAGE_CODE %}selected{% endif %}>
            {{ lang.1 }}
        </option>
        {% endfor %}
    </select>
    <input type="submit" value="Change">
</form>

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