为啥 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 中的基础语言?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django 的 JQueryUI 自动完成搜索不起作用