为什么Django翻译不使用javascript中的基本语言?

时间:2015-10-16 11:38:54

标签: javascript django internationalization

我在Django项目上工作,默认语言是法语。我也想支持英语。

国际化的工作方式正如我在python代码和模板代码中所期望的那样:

  • 当请求的语言是法语(在网址中有/ fr /)时,显示的文本是我的代码中的文本(在我的情况下是法语),即使在locale / en / LC_MESSAGES / django中有翻译.po(已被编译成django.mo)。
  • 当请求的语言是英语时(网址中有/ en /)
    • 如果locale / en / LC_MESSAGES / django.po中有翻译,则显示此翻译
    • 如果没有,则显示我代码中的“默认”文本

所以我似乎不需要为我的基本语言创建和编译消息文件(对吧?)。

在javascript文件中,它不起作用:只要有一个,就会显示locale / en / LC_MESSAGES / django.po中的翻译,即使请求的语言是法语。

阅读this thread后,我运行了命令:

django-admin makemessages -d djangojs -l fr
django-admin compilemessages

但是我仍然得到英文翻译,除非我在locale / fr / LC_MESSAGES / djangojs.po中填写msgstr。

我是否必须为我的基本语言填写msgstr(所以基本上复制/粘贴msgid)我的网站的每个文本?
这似乎很乏味。

2 个答案:

答案 0 :(得分:0)

您尝试使用rosetta了吗?如果您使用rosetta,那么它将使您的翻译更容易。

答案 1 :(得分:0)

我们遇到了完全相同的问题, 解决此问题的一种简单方法是在django-admin makemessages -d djangojs -l fr

之后启动以下命令

msgen PATH_TO_YOUR_DJANGOJS.PO_FILE -o PATH_OF_YOUR_DESIRED_OUTPUT_FILE

msgen将使用原始msgid文本填充空字符串,并且是使用gettext实用程序安装的内部工具。