Django i18n - 用作ugettext和ugettext_lazy的相同字符串

时间:2017-08-07 13:27:15

标签: django internationalization django-i18n

我正在将网站翻译成多种语言。

当我尝试翻译某些类的标签时,我遇到了一些问题,因为这些标签类在视图和模型/表单中使用(Django说ugettext和ugettext_lazy之间的区别就是这样)

问题是:我不想两次写每个标签类函数,并用ugettext&翻译标签。 ugettext_lazy分别。这可以用更好的方式完成吗?

我主要担心的是,如果两个地方存在相同的字符串,将来会有两倍的维护,字符串只能存在一个地方吗?

香草标签类的例子:

class CurrencyChoice(object):
    GBP = 10
    USD = 20
    EUR = 30

    def labels():
        return (
        CurrencyChoice.GBP, u'Great Britain Pound'
        CurrencyChoice.USD, u'USA Dollar'
        CurrencyChoice.EUR, u'Euro'
        )

我想避免的i18n解决方案示例:

from django.utils.translation import ugettext_lazy, ugettext

class CurrencyChoice(object):
    GBP = 10
    USD = 20
    EUR = 30

    def labels():
        return (
        (CurrencyChoice.GBP, ugettext(u'Great Britain Pound')),
        (CurrencyChoice.USD, ugettext(u'USA Dollar')),
        (CurrencyChoice.EUR, ugettext(u'Euro')),
        )

    def labels_lazy():
        return (
        (CurrencyChoice.GBP, ugettext_lazy(u'Great Britain Pound')),
        (CurrencyChoice.USD, ugettext_lazy(u'USA Dollar')),
        (CurrencyChoice.EUR, ugettext_lazy(u'Euro')),
        )

0 个答案:

没有答案