Найти - Пользователи
Полная версия: Двуязычный сайт
Начало » Django » Двуязычный сайт
1 2 3
dnstuff
Спасибо! завтра попробую разобраться. сегодня уже сил нет
buddha
Эт норма. Пожалуйста.
dnstuff
Начал разбираться.
Пока меня интересует только перевод из шаблонов, в .py переводить нечего.
В settings.py
LANGUAGE_CODE = 'ru-RU'
LANGUAGES = (
   ('ru', 'Russian'),
   ('en', 'English'),
)
USE_I18N = True
В начало каждого шаблона добавил {% load i18n %}
gettext установил
папку locale создал
по команде python manage.py makemessages -a насколько я понял в папке locale должен был создаться файл .po с заготовкой для перевода.
Но у меня по команде python manage.py makemessages -a ничего не происходит. Ни ошибок, ни файла.
Что не так делаю?
Спасибо!

buddha
Команда python manage.py makemessages -a служит для обновления переводОВ, т.е если у тебя на много разных языков есть файлы .po, при этом в папке locale должна существовать подпапка хотя бы для одного языка.
Запусти python manage.py makemessages -l ru.
Либо создай папку locale/ru и запусти python manage.py makemessages -a.



dnstuff
buddha
Команда python manage.py makemessages -a служит для обновления переводОВ, т.е если у тебя на много разных языков есть файлы .po, при этом в папке locale должна существовать подпапка хотя бы для одного языка.Запусти python manage.py makemessages -l ru.Либо создай папку locale/ru и запусти python manage.py makemessages -a.
Сделал python manage.py makemessages -l ru, появились только папки. Т.е. файл .po самому создавать вручную надо?
buddha
Думаю, ты невнимательно читаешь документацию. Я тебя отвлекаю…
Наверняка ты не вставлял в шаблонах тэг {% translate ‘SomeText’ %}ю Это и есть метка, про которую я до этого писал.
вот, короткий пример:
обычный вариант
<a href='/home'> Home page </a>
Вот вариант с механизмом интернационализации
<a href='/home'> {% trans 'Home page' %} </a>

Не торопись сразу сделать всё хорошо и правильно. Посиди поломай руки, голову
dnstuff
Пробую вставить переключатель:
<form action="/i18n/setlang/" method="post">{% csrf_token %}
      <input name="next" type="hidden" value="/" />
      <select name="language">
        {% for lang in LANGUAGES %}
          <option value="{{ lang.0 }}">{{ lang.1 }}</option>
        {% endfor %}
      </select>
      <input type="submit" value="Go" />
    </form>
Список языков пустой.
В settings.py
LANGUAGES = (
   ('ru', 'Russian'),
   ('en', 'English'),
)
dnstuff
Разобрался. Надо было заюзать RequestContext.
Правда, переключатель не работает, но выбор языка появился После переключения страница обновляется, переключатель падает опять в исходное положение, контент не меняется.

А не, вру. Название месяца в дате меняется на английское(timestamp=models.DateTimeField(db_index=True)). Видимо, с .po накосячил где-то.
dnstuff
Нифига не переключается.
Пока делаю только для шаблонов. В каждый шаблон вставил {% load i18n %}
На пробу выделил в шаблоне две строки для перевода:
<li class="mmenu"><a href="/home">{% trans 'Главная' %}</a></li>
  <li class="mmenu"><a href="/about">{% trans 'О компании' %}</a></li>
Дальше python manage.py makemessages -l en и python manage.py makemessages -a
Папки локали и .ро сформировались.
Исходный .ро
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-12 04:19-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: templates/main.html:50
msgid "Главная"
msgstr ""

#: templates/main.html:51
msgid "О компании"
msgstr ""
Вставляю перевод:
#: templates/main.html:50
msgid "Главная"
msgstr "Home"

#: templates/main.html:51
msgid "О компании"
msgstr "About"
Далее python manage.py compilemessages
Получился файл .mo
Но контент не переключается. Хотя механизм работает, т.к. меняются названия месяцев в дате.
Что опять не так делаю?
Dr.Livsi
смотрите в сторону django-modeltranslation
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB