我阅读并按照here中的说明操作,但似乎无法在po文件中看到javascript中的字符串。
structure of my project is:
cb/
cb_app
cb
static_files
templates
首先我将这些复制到我的url.py:
js_info_dict = {
'packages': ('cb_app',),
}
urlpatterns = patterns('',
(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
)
然后我将这个脚本添加到我的html:
<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
我希望获得翻译的实际脚本就是这样简单:
$(document).ready(function () {
$('#id_sales_item').chosen({no_results_text: gettext('No results match')});
});
...并在同一个html中使用。
那么还有什么我需要做的吗?
我所做的就是从cb/cb
和cb/cb_app
开始运行以下一行。
django-admin.py makemessages -l en_GB
但cb/cb/locale
或cb/cb_app/locale
任何提示?
答案 0 :(得分:4)
我终于找到了问题。
文档建议从Django项目创建一次消息,然后从Django app创建一次消息。这样你就得到了两个locale
目录。而且无论如何都不会提到javascript翻译。这太乱了。
我找到的最干净的解决方案是转到settings.py
并插入此行(另请参阅上面的项目层次结构):
LOCALE_PATHS = ( '/home/kave/projects/cb/locale',)
然后在project-root-directory中创建一个名为locale
的目录(参见上面的路径)
不要忘记将条目应用到url.py
和html
中(见上文)。
最后,现在将本地统一到一个地方,转到project-root-directory:/home/kave/projects/cb
并运行这两个命令:
django-admin.py makemessages -l en_GB
django-admin.py makemessages -d djangojs -l en_GB
第一个命令从项目和app子文件夹中获取翻译文本。 第二个将javascript翻译成第二个po文件。
多数民众赞成。