为啥 Django 翻译不使用 javascript 中的基础语言?

Posted

技术标签:

【中文标题】为啥 Django 翻译不使用 javascript 中的基础语言?【英文标题】: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)? 这看起来很乏味。

【问题讨论】:

【参考方案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,它有助于编写翻译。但它没有回答我的问题,也没有解决问题!

以上是关于为啥 Django 翻译不使用 javascript 中的基础语言?的主要内容,如果未能解决你的问题,请参考以下文章

为啥glm不翻译顶点

Django i18n:如何不翻译管理站点?

使用 Django 的 JQueryUI 自动完成搜索不起作用

为啥握手失败?

为啥 django-rest-framework 不显示 OneToOneField 数据 - django

为啥 Django 不加载我的 CSS?