Джанго: язык по умолчанию i18n - PullRequest
12 голосов
/ 28 апреля 2011

У меня есть сайт, который написан на голландском языке.Теперь я должен предоставить второй язык для этого сайта - французский.

Итак, я окружил весь текст, который нужно перевести, функцией gettext, создал файлы po и скомпилировал их в файлы mo.Я также создал представление, которое устанавливает для сеанса django_language соответствующий код языка.Так что теперь французская версия работает, но я не могу переключиться обратно на голландскую версию.

Так что мне было интересно, нужно ли мне также создавать файл po / mo для голландской версии?Текст, который был вставлен в gettext, уже на голландском.Есть ли способ сказать «использовать текст по умолчанию»?

Это представление, которое я использую для добавления кода языка в мою сессию:

class LanguagePickerView(RedirectView):
    url = '/'

    def get(self,request,*args, **kwargs):
        request.session['django_language'] = self.kwargs.get('language')
        return super(LanguagePickerView, self).get(request, args, kwargs)

В своих шаблонах я использую следующееURL:

<a href='{% url web-language 'nl-nl' %}'>NL</a>
<a href='{% url web-language 'fr' %}'>fr</a>

Ответы [ 3 ]

19 голосов
/ 28 апреля 2011

Строки языка по умолчанию не хранятся в файлах po / mo, они идут непосредственно в коде и шаблонах - кажется, что у вас есть это право.

Вы можете вернуться к нему, установив переменную сеанса django_language обратно на голландский.

Убедитесь, что у вас установлены правильные настройки:

LANGUAGE_CODE = 'nl' #default language

LANGUAGES = (
  ('nl', _('Dutch')),
  ('fr', _('French')),
)

Не забывайте, что вам не нужно писать код для переключения между языкамисамостоятельно.Лучше использовать специальный вид django (цитата из книга django ):

Для удобства Django поставляется с представлением django.views.i18n.set_language, которое устанавливает языковые предпочтения пользователя иперенаправляет обратно на предыдущую страницу.

Активируйте это представление, добавив следующую строку в ваш URLconf:

(r'^i18n/', include('django.conf.urls.i18n')),
3 голосов
/ 28 апреля 2011

этот вопрос и ответы могут быть полезны - установить язык в представлении django

Не забудьте использовать translation.activate(lang_code), это действительно важно.

Вы можете использовать стандартный способ изменения языков с помощью метода post или написать свое собственное промежуточное программное обеспечение и изменить его, например, в URL.

Ура, Игнас

1 голос
/ 28 апреля 2011

Если вы используете {% url web-language 'nl-nl' %}, как это 'nl-nl' находится в вашем args (args[0]), а не в kwargs.Для kwargs вы должны использовать синтаксис, такой как {% url web-language language='nl-nl' %}.Тогда ваш взгляд должен работать.Надеюсь, ваш urlconf соответствует тому, как с ним работает представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...