我正在将网站翻译成多种语言。
当我尝试翻译某些类的标签时,我遇到了一些问题,因为这些标签类在视图和模型/表单中使用(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')),
)