Python 是否支持序号后缀本地化?
例如,如果我有第n个苹果(第一个苹果,第二个苹果,第三个苹果),这将如何翻译成django? 有什么函数可以为给定的n获取后缀吗? 看起来这取决于单词的性别:Python 是否支持序号后缀本地化?,python,django,Python,Django,例如,如果我有第n个苹果(第一个苹果,第二个苹果,第三个苹果),这将如何翻译成django? 有什么函数可以为给定的n获取后缀吗? 看起来这取决于单词的性别: 1re pomme, 2e pomme 1r homme 2e homme 退房。据我所知,这是尊重的 在模板中使用它,如: {% load humanize %} {{ item.count|ordinal }} {{ item.name }} 请记住将“django.contrib.humanize”添加到您的已安装的应用程序中设
1re pomme, 2e pomme
1r homme 2e homme
退房。据我所知,这是尊重的
在模板中使用它,如:
{% load humanize %}
{{ item.count|ordinal }} {{ item.name }}
请记住将“django.contrib.humanize”添加到您的已安装的应用程序中
设置并设置USE\u L10N=True
ordinal
没有考虑后面是哪个词,所以这是一个不完美的解决方案,但至少做了一些本地化。您通常会使用该功能进行此类操作:
ngettext('%(num)dre pomme', '%(num)de pomme', n) % {'num': n}
在本例中,您当然对字符串的本地化不感兴趣,只对多元化感兴趣,因此这与:
'1re pomme' if n == 1 else f'{n}e pomme'
事实上,如果规则比这更复杂(法语我不知道,但英语有4种不同的情况),那么ngettext
就有点麻烦了。您可以创建如下所示的PO文件:
msgid "%(num)dst potato"
msgid_plural "%(num)dth potato"
msgstr[0] "%(num)dre pomme"
msgstr[1] "%(num)de pomme"
msgstr[2] "%(num)d... pomme"
这需要正确设置PO文件的<代码> nululals/COD>选项,并且这里可以考虑任何语法规则。参见第2.4节深潜的复数形式
然而,同样,gettext主要是用于翻译的,这会有点麻烦如果“pomme”本身是一个变量,例如
plaeture_name='pomme';打印(f'{num}{vegeture}')
,然后显然需要首先知道变量的性别,并且需要以某种方式将其作为元数据传输,以便能够进行适当的屈折变化。在这一点上,无论哪种方式,它都变成了大量的定制开发。“取决于单词的性别”-如何解释这一点…?!没有。这是一个不完美的解决方案,回答了OP问题的第一部分。