【问题标题】:Problems with multilanguage application in translating models翻译模型中的多语言应用问题
【发布时间】:2010-07-16 08:13:59
【问题描述】:

我正在编写一个应用程序,它将用于多种语言:'en'、'de'、'fr'、'es' 和 'pl'。我为每个需要翻译的字符串提供了翻译字符串,我准备了翻译文件并编译了它们。

然后,我设置了 LANGUAGES 变量并在 settings.py 中添加了 LocaleMiddleware。

问题是,当我进入页面时,例如 /admin/,作为字符串提供的字符串被正确翻译(我在 Accept-Language 中使用 'pl'),但模型和表单中的字符串(如标签和 verbose_names ) 以 LANGUAGE_CODE 语言显示(当我更改语言代码时,模型被翻译)。

谁有想法,怎么了?

【问题讨论】:

标签: django internationalization


【解决方案1】:

你试过了吗

from django.utils.translation import ugettext as _

verbose_names = _("Eggs")

【讨论】:

  • 没有。这可能正是问题所在。 ugettext() 在调用时立即将字符串翻译成当时定义的语言。对于模型和表单,这仅在初始化时发生一次。在这种情况下,应该使用 ugettext_lazy() 代替,它创建一个在请求值时执行翻译的对象。另见docs.djangoproject.com/en/1.2/topics/i18n/internationalization/…
【解决方案2】:

我一直在使用 ugettext 而不是 ugettext_lazy。记得将后者用于 django 的字符串!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-08
    • 2022-12-13
    • 2018-06-25
    • 2011-06-16
    • 2015-04-03
    • 1970-01-01
    • 2014-10-05
    • 2018-02-25
    相关资源
    最近更新 更多