【问题标题】:Django-countries: How to translate?Django-countries:如何翻译?
【发布时间】:2012-12-23 11:16:38
【问题描述】:

我今天安装了django countries。它工作得非常整洁。

不幸的是,文档有点薄,上面写着:

国家 一个由两个部分元组组成的元组,每个元组都包含一个国家代码和相应的标题良好(且可翻译)的国家名称。

我是否只是按照 django 国际化的常规路径,它会自动选择它并允许我在我的 PO 文件中定义国家/地区?还是需要什么额外的魔法?

我实现的方式是这样的:

from django_countries.countries import COUNTRIES
from django_countries.fields import CountryField

country             = CountryField(_(u'Country'), choices=COUNTRIES,  blank=True)

COUNTRIES 直接来自扩展名,因此我无法在每个国家/地区名称周围放置_(u)。 (from django.utils.translation import ugettext_lazy as _)

【问题讨论】:

    标签: django django-countries


    【解决方案1】:

    对于像我这样的 django 新手:在您网站的 settings.py 中将 'django_countries' 添加到 INSTALLED_APPS 即可。所以 Aamir 的回答是正确的 - 只需查看 documentation 中的“Django 如何发现翻译”部分。

    【讨论】:

      【解决方案2】:

      只需按照 django 翻译 documentation,它会自动将 ugettext_lazy 标记的字符串添加到您的 .po 文件中。然后根据您选择的语言提供消息字符串。

      【讨论】:

      • 谢谢阿米尔。你说marked strings 被放入 PO 文件中。我知道这一点。但是我不能直接标记国家字符串,如示例所示。那么在这种情况下如何进行标记呢?这是问题:)
      • @Kave 如果浏览django-countries 的代码并转到countries.py,您会注意到所有国家/地区名称都已标记为字符串,例如('AF', _(u'Afghanistan')),
      • @AamirAdnan - 如果你有 django_countries==1.0.5 (我有),这是非常不幸的,因为它只翻译国家一次,使用系统dgettext。我试图破解它,只是注意到 1.5 版本没有这个问题(它使用ugettext_lazy)。如果您有一个为用户提供“实时”语言切换的网站,这是必须的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2010-12-22
      • 2017-07-12
      • 2017-09-19
      • 1970-01-01
      相关资源
      最近更新 更多