我试过follow the guide,但还不够清楚。
我将此添加到我的urls.py
urlpatterns = patterns('',
(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
)
使用以下命令生成lang文件:
django-admin.py makemessages -d djangojs -l fr
root_folder/locale/fr/LC_MESSAGES
现在包含django.po
&amp;我的一个js文件中的djangojs.po
和alert(gettext('this is to be translated'));
已在djangojs.po
中被选中。
我跑了django-admin.py compilemessages
并重新启动了服务器。
将此添加到我的base.html:
<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' 'locale' %}" >< /script >
请注意,我添加了“locale”以避免在动态加载翻译时未传递包名称的异常。
从浏览器访问/jsi18n/locale/
,我得到的是Django翻译功能:
/* gettext library */
var catalog = new Array();
function pluralidx(count) { return (count == 1) ? 0 : 1; }
function gettext(msgid) {
....
为什么'这个要被翻译'没有显示,在哪个基础上它会显示一个特定的语言而不用URL传递它?
答案 0 :(得分:11)
我不知道如何解决你的问题,但我可以告诉你,事情对我有用:
locale
文件夹位于我的tickets
应用内。
urls.py
js_info_dict = {
'domain': 'djangojs',
'packages': ('tickets',),
}
urlpatterns = patterns('',
(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
...
base.html文件
<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
并创建消息文件:
python -m django-admin makemessages -d djangojs -l fr
python -m django-admin compilemessages
希望你能从中汲取一些东西。
答案 1 :(得分:4)
对于具有我特定情况的其他人,当您使用i18n语言网址时,js消息会生成并编译好,但不会在模板或页面中呈现。
这是因为javascript目录应该添加到i18n urls模式中,而不是正常模式。
urlpatterns += patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )
=&GT;
urlpatterns += i18n_patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )