Разные переводы для разных сайтов

Я создаю движок каталога с помощью Django. Он будет использоваться на различных доменах, таких как houses.com, games.com и т.д.

В заголовке есть кнопка 'Add Item', которая перенаправляет на страницу создания элемента. Она обернута тегом {% trans %}. Но я хочу, чтобы перевод этой кнопки был "Добавить свой дом" на сайте houses.com и "Добавить свою игру" на сайте games.com.

Какова наилучшая практика для этого?

Я ожидал найти решение для этого.

Вы добавляете контекстный маркер [Django-doc]. Действительно, мы можем, например, иметь:

{% translate "Add item" context site_name %}

и в файле перевода (.po):

msgctxt "houses.com"
msgid "Add item"
msgstr "Add house"

msgctxt "games.com"
msgid "Add item"
msgstr "Add game"

Now the only problem is how to onject a site_name variable in all templates? We can do this with a context processor [Django-doc]. We can define such context processor like:

# some_app/context_processors.py

from django.conf import settings


def with_site_name(request):
    return {'site_name': getattr(settings, 'SITE_NAME', None)}

тогда мы настраиваем контекстный процессор и добавляем SITE_NAME в settings.py:

# settings.py

# …

SITE_NAME = 'games.com'

# …

TEMPLATES = [
    {
        # …
        'OPTIONS': {
            'context_processors': [
                'some_app.context_processors.with_site_name'
            ],
        },
    },
]

# …
Вернуться на верх