我需要在我的項目中實現國際化,所以我想使用i18n靜態內容,而我使用應用程序django模型翻譯的模型。我支持以下語言:I18n似乎並沒有工作,而modeltranslation沒有(一點)
EN-US(默認) NL-NL 去德 FR-FR ES-ES
,而我的荷蘭語,Django不改變語言爲荷蘭語。我確實有一個英文窗口,但鉻被設置成荷蘭語來測試國際化。這不是唯一的問題,只有模型在默認語言更改時自動轉換。當我將默認語言設置爲荷蘭語時,所有模型都會顯示荷蘭語翻譯,但靜態內容保持英語。
注:我沒有使用compilemessages並重新啓動服務器
Settings.py
USE_I18N = True
LANGUAGE_CODE = 'en-us'
gettext = lambda s: s
LANGUAGES = (
('en-us', gettext('English')),
('nl-nl', gettext('Dutch')),
('fr-fr', gettext('French')),
('de-de', gettext('German')),
('es-es', gettext('Spain')),
)
LOCALE_PATHS = ('/vagrant/locale',)
/vagrant/locale/en-us/LC_MESSAGES/django.po(縮短文件顯示錯誤)
# 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 protected]>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-17 23:14+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <[email protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Language: en-us\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: PyDiving/settings.py:170
msgid "English"
msgstr ""
#: PyDiving/settings.py:171
msgid "Dutch"
msgstr ""
#: PyDiving/settings.py:172
msgid "French"
msgstr ""
#: PyDiving/settings.py:173
msgid "German"
msgstr ""
#: PyDiving/settings.py:174
msgid "Spain"
msgstr ""
#: company/templates/company/company_detail.html:22
msgid "City"
msgstr ""
/vagrant/locale/nl-nl/LC_MESSAGES/django.po(僅示出了差異,以縮短交)
"Language: nl-nl\n"
#: company/templates/company/company_detail.html:28
msgid "Postal Code"
msgstr "Postcode"
#: company/templates/company/company_detail.html:34
msgid "City"
msgstr "Stad"
模板公司/模板/公司/ company_detail.html
{% load i18n %}
{{ company.text }} # this is the model translation, this will change when i change the default language
{% trans "City" %} # this always says "City"
成果時默認語言爲en-us
EnglishCity
其中 '英語是模型的內容'
默認語言nl-nl
NederlandsCity
你使用的是'django.middleware.locale.LocaleMiddleware'嗎?你可以在模板中輸出'request.LANGUAGE_CODE'來確保設置正確的語言嗎? –
出於某種原因,當我添加LocaleMiddleware(我沒有使用,因爲我讀它是用於設置語言而不是識別),它會更改模型以顯示西班牙語(es-es)。它'成功'識別一種語言,因爲我可以更改默認代碼,但request.LANGUAGE_CODE仍然表示它是es-es,這是不正確的。我在荷蘭ip/chrome和英文窗口進入荷蘭。但是,語言文件保持英文。我檢查了西班牙文語言文件,它與英文/荷蘭文相同。 – LHolleman
通常情況下,你應該在任何情況下都需要'LocaleMiddleware' ......你可以在Chrome的Web Inspector中檢查你的瀏覽器發送了什麼「Accept-Language」(在Network標籤中...選擇你的文檔並查看請求頭文件) –