4
的officual Django的文檔建議寫在settings.pyDjango的翻譯:如何翻譯語言
ugettext = lambda s: s
LANGUAGES = (
('de', ugettext('German')),
('en', ugettext('English')),
)
採用這種結構下,django-admin.py makemessages仍然會發現並標記這些字符串翻譯,但翻譯不會在運行時發生 - 因此您必須記住在運行時使用LANGUAGES的任何代碼中將真實ugettext()中的語言包裝在一起。
但是,我不明白在哪裏用真正的翻譯標籤包裝代碼?
例如我的模板代碼是
<form id="locale_switcher" method="POST" action="{% url localeurl_change_locale %}">
<label><b>{% trans "Language" %}:</b></label>
<select name="locale" onchange="$('#locale_switcher').submit()">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}" {% ifequal lang.0 LANGUAGE_CODE %}selected="selected"{% endifequal %}>
{{ lang.1 }}</option>
{% endfor %}
</select>
<noscript>
<input type="submit" value="Set" />
</noscript>
</form>
解決方案這裏建議:Using settings.LANGUAGES with properly translated names using gettext()
顯示空的選擇框,沒有任何文字上的任何laguage
對我來說它不會運行$ python manage.py runserver 錯誤:在包含'manage.py'的目錄中找不到'settings.py' 。看起來你已經定製了一些東西。 您必須運行django-admin.py,將您的設置模塊傳遞給它。 (如果文件settings.py確實存在,它會導致一個ImportError ) – 2011-05-20 08:47:15
我覺得這行django.utils.translation導入ugettext導致錯誤,因爲它在文檔 – 2011-05-20 08:54:08
中解釋剛剛添加了{%get_available_languages作爲語言%} 我prev代碼,它的工作原理: - \ – 2011-05-20 09:08:14