【问题标题】:Why Django translation does not use the base language in javascript?为什么 Django 翻译不使用 javascript 中的基础语言?
【发布时间】:2016-01-15 03:40:45
【问题描述】:

我在一个默认语言是法语的 Django 项目中工作。我也想支持英文。

国际化在 python 代码和模板代码中按我的预期工作:

  • 当请求的语言是法语时(url 中有 /fr/),显示的文本是我的代码中的文本(在我的例子中是法语),即使在 locale/en/LC_MESSAGES/django 中有翻译.po(已编译成 django.mo)。
  • 当请求的语言是英语时(url中有/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)?
这看起来很乏味。

【问题讨论】:

    标签: javascript django internationalization


    【解决方案1】:

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

    msgen PATH_TO_YOUR_DJANGOJS.PO_FILE -o PATH_OF_YOUR_DESIRED_OUTPUT_FILE

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

    兄弟。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用rosetta?如果您使用 Rosetta,那么它将使您的翻译更容易。

      【讨论】:

      • 谢谢,我现在正在使用rosetta,它有助于编写翻译。但它没有回答我的问题,也没有解决问题!
      猜你喜欢
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      相关资源
      最近更新 更多