Разные переводы для разных сайтов
Я создаю движок каталога с помощью 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'
],
},
},
]
# …