好吧,我一直在爲這個瘋狂尋找我認爲簡單的問題。django翻譯模板{%trans「something」%}
我使用Django 1.4
的問題是,Django會不會在我的模板轉換一個簡單的{%的反式「工作」%}。
這是我做了什麼:
Settings.py:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.request",
)
LOCALE_PATHS = (
'/home/m00p/PycharmProjects/astrid/locale'
)
這是我的地圖結構:
/
myproject/
apps/
locale/
template/
於是我拼命地跑
django- admin.py makemessages -l nl -i settings.py
,並沒有成功地在區域設置文件夾中創建NL/LC_MESSAGES/django.po,然後我編輯翻譯它在django.po發現
#: templates/base.html:22
msgid "work"
msgstr "ddddddddddddd"
我然後運行編譯命令
django-admin.py compilemessages
,它也成功地創造了正確的折django.mo文件呃
我說這也是在的myproject/urls.py
urlpatterns = patterns('',
url(r'^i18n/', include('django.conf.urls.i18n')),
)
urlpatterns += i18n_patterns('',
url(r'^$', 'front.views.home', name='home'),
)
我在base.html文件文件添加到了可以改變語言
<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="/" />
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
所以,當我去到網址我得到127.0.0.1:8000/en/在url中,這是正確的,因爲englisch是默認語言,當我然後將其更改爲NL的形式,它重定向到127.0.0.1:8000/nl/但我翻譯的文本沒有改變。我也確定該語言是NL,因爲當我顯示{{LANGUAGE_CODE}}時,它表示NL。
有人知道它爲什麼不改變?
感謝m00p
問題解決了
期間,當我添加的東西我忘了,它的工作過程中,我重新啓動我的部署服務器,但我沒有清除緩存我瀏覽器它仍在使用舊頁面,所以當我在Chrome中清除瀏覽器數據並重新訪問該頁面並更改了正確翻譯的語言時。無論如何感謝您的建議!
我也使用這種多語言的概念,我做了你所做的,但在我的django.po文件中,它不包含我可以編輯的模板文件行,例如因爲你的.po文件包含'#:templates/base.html:22 msgstr「work」'....但是它包含了site-packages/django中的所有文件**(i.ie,管理員部分)我不想編輯這些管理文件,但我編輯,以查看天氣翻譯是否工作,但它不適用於此管理部分太............... ....所以我的主要問題是如何顯示我的模板數據,我可以編輯 – Inforian
我已經在我的模板中指定了'{%load i18n%} {%trans「Hello」%}' 以便.po文件選取它我可以在.po文件中添加翻譯的數據............但它仍然不會在.po文件中選擇這些模板..... ??? – Inforian