Django支持Javascript文件中的翻译

Hou*_*man 5 javascript django internationalization

我阅读并按照这里的说明进行操作,但似乎无法在po文件中看到javascript中的字符串.

structure of my project is: 
cb/    
   cb_app    
   cb    
   static_files    
   templates
Run Code Online (Sandbox Code Playgroud)

首先我将这些复制到我的url.py中:

js_info_dict = {
    'packages': ('cb_app',),
}

urlpatterns = patterns('',
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
)
Run Code Online (Sandbox Code Playgroud)

然后我将这个脚本添加到我的html中:

<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
Run Code Online (Sandbox Code Playgroud)

我希望获得翻译的实际脚本就是这样简单:

$(document).ready(function () { 
    $('#id_sales_item').chosen({no_results_text: gettext('No results match')}); 
});
Run Code Online (Sandbox Code Playgroud)

...并在相同的HTML中使用.

那还有什么我需要做的吗?

我所做的一切,然后是从运行下面两行cb/cb,并从cb/cb_app.

django-admin.py makemessages -l en_GB
Run Code Online (Sandbox Code Playgroud)

但仍处于要么没有"没有结果匹配"的迹象cb/cb/locale也没有cb/cb_app/locale

有小费吗?

Hou*_*man 4

我终于找到问题所在了。

该文档建议从 Django 项目创建一次消息,从 Django 应用程序创建一次消息。这样你最终会得到两个locale目录。无论如何,在这两种情况下,JavaScript 翻译都不会被获取。这真是一团糟。

我发现的最干净的解决方案是转到settings.py并插入此行(另请参阅上面的项目层次结构):

LOCALE_PATHS = ( '/home/kave/projects/cb/locale',)
Run Code Online (Sandbox Code Playgroud)

然后在project-root-directory中创建一个名为的目录locale(参见上面的路径)

不要忘记将条目应用到url.pyhtml中(见上文)。

最后,现在本地的都统一到一个地方了,转到project-root-directory:/home/kave/projects/cb并运行这两个命令:

django-admin.py makemessages -l en_GB
django-admin.py makemessages -d djangojs -l en_GB
Run Code Online (Sandbox Code Playgroud)

第一个命令从项目和应用程序子文件夹中获取翻译文本。第二个将 javascript 翻译成第二个 po 文件。

就是这样。