如何在 Django 翻译中翻译数字?
How to translate numbers in django translation?
我的脑袋无法点击如何翻译 django translation
中的数字。 string id
无法翻译。我可以像这样打印 2020
:
{% translate '2' %}{% translate '0' %}{% translate '2' %}{% translate '0' %}
很明显,这不是方法。所以,我错过了一些东西。我想要这样的东西:
{% translate "2020"|number %} # May be ?? It should be that easy right?
应该是,从0
翻译成9
。
Django(目前)还没有这个功能,但您可以通过创建自定义模板标签来实现同样的功能。您可以在此处阅读创建标签的完整文档,Custom template tags and filters。
通过这种方式,您可以将Arabic Numerals(或任何形式)翻译成任何形式,您只需要一个mapper dict 和一个使用 mapper dict.
转换事物的函数
我们需要一个以源数字为键、目标数字为值的字典。在这种情况下,我假设您需要从 Arabic numerals to nepali numerals
翻译
因此,我使用 dict
创建了一个 简单 映射器,并使用 translate_nepal_numeral(...)
[ 将接收值转换为其他值=40=]函数。
from django import template
from django.template.defaultfilters import stringfilter
NUMBER_MAP = {
"0": "०",
"1": "१",
"2": "२",
# and so on
}
register = template.Library()
@register.filter()
@stringfilter
def translate_nepal_numeral(value):
try:
return "".join([NUMBER_MAP[char] for char in value])
except KeyError:
return value
然后在您的模板中,
{% load custom_numerals %}
{{ "2010"|translate_nepal_numeral }}
例子
In [3]: translate_nepal_numeral("2020")
Out[3]: '२०२०'
In [4]: translate_nepal_numeral("2120")
Out[4]: '२१२०'
In [5]: translate_nepal_numeral("2120a")
Out[5]: '2120a'
备注
- 如果您要传递 non-numeral,此函数将 return 输入
我的脑袋无法点击如何翻译 django translation
中的数字。 string id
无法翻译。我可以像这样打印 2020
:
{% translate '2' %}{% translate '0' %}{% translate '2' %}{% translate '0' %}
很明显,这不是方法。所以,我错过了一些东西。我想要这样的东西:
{% translate "2020"|number %} # May be ?? It should be that easy right?
应该是,从0
翻译成9
。
Django(目前)还没有这个功能,但您可以通过创建自定义模板标签来实现同样的功能。您可以在此处阅读创建标签的完整文档,Custom template tags and filters。
通过这种方式,您可以将Arabic Numerals(或任何形式)翻译成任何形式,您只需要一个mapper dict 和一个使用 mapper dict.
转换事物的函数我们需要一个以源数字为键、目标数字为值的字典。在这种情况下,我假设您需要从 Arabic numerals to nepali numerals
翻译因此,我使用 dict
创建了一个 简单 映射器,并使用 translate_nepal_numeral(...)
[ 将接收值转换为其他值=40=]函数。
from django import template
from django.template.defaultfilters import stringfilter
NUMBER_MAP = {
"0": "०",
"1": "१",
"2": "२",
# and so on
}
register = template.Library()
@register.filter()
@stringfilter
def translate_nepal_numeral(value):
try:
return "".join([NUMBER_MAP[char] for char in value])
except KeyError:
return value
然后在您的模板中,
{% load custom_numerals %}
{{ "2010"|translate_nepal_numeral }}
例子
In [3]: translate_nepal_numeral("2020")
Out[3]: '२०२०'
In [4]: translate_nepal_numeral("2120")
Out[4]: '२१२०'
In [5]: translate_nepal_numeral("2120a")
Out[5]: '2120a'
备注
- 如果您要传递 non-numeral,此函数将 return 输入