2013-04-02 3 views
11

У меня есть некоторые странные проблемы с модулем интернационализации django. Большинство строк переводится так, как должно быть, а некоторые другие - нет. Позвольте мне показать вам и пример:Некоторые строки не переведены в модуль django i18n

<li>{% trans "Upload Score" %}</li> 
<li>{% trans "Profile" %}</li> 
<li>{% trans "Invite friends" %}</li> 
<li>{% trans "Settings" %}</li> 

У меня есть список из 4 элементов для меню. Я бегу команду Джанго makemessages перевести сайт на французском и я получаю все, как и ожидалось:

#: templates/main.html:190 templates/main.html.py:195 
#, fuzzy 
msgid "Upload Score" 
msgstr "Publier" 

#: templates/main.html:191 templates/main.html.py:196 
msgid "Profile" 
msgstr "Profil" 

#: templates/main.html:192 templates/main.html.py:197 
#, fuzzy 
msgid "Invite Friends" 
msgstr "inviter vos amis" 

#: templates/main.html:193 templates/main.html.py:198 
msgid "Settings" 
msgstr "Préférences" 

Но когда я скомпилировать его, будет Джанго-администратора compilemessages, только «Профиль» и «Настройки» переводятся. Вы знаете, откуда это взялось? Может ли это быть связано с использованием белых пространств? Есть ли режим отладки в модуле i18n?

Спасибо вам за помощь! :)

EDIT: Мы находимся на django 1.4.

+0

каким образом ваши языковые настройки проекта Джанго выглядит? ('LANGUAGE_CODE',' USE_I18N'). Как выглядят настройки вашего системного языка? «Профиль» и «Настройки» - это общая строка, которая может быть найдена в переводах, принадлежащих самому джанго. Я думаю, ваши переводы не используются вообще, из-за несоответствия языковых настроек или чего-то подобного. – yedpodtrzitko

ответ

7

Вам необходимо удалить нечеткие линии.

Fuzzy, вероятно, означает, что исходная строка была изменена. Gettext не хочет потерять ваши переводы, поэтому он изменит его, но пометит его нечетким.

Рекомендую вам rosetta. Он создаст вам админ, как интерфейс, где вы можете переводить строки и управлять нечеткими.

Приветствия

2

Я был точно такой же симптом, я просто забыл добавить LOCALE_PATHS настройки и Django использует некоторые строки перевода по умолчанию для некоторых из моих строк, и не доходя мои собственные разработанные MESSAgES файлы.

Добавление этого параметра решить эту проблему:

LOCALE_PATHS = (
    PROJECT_DIR.child('locale'), # assuming PROJECT_DIR is set to project root (using unipath) 
) 
+0

Не должно быть LOCALE_PATH (без S) –

+1

Я связался с документами, где очень ясно, что это 'LOCALE_PATHS'. –