php – PoEdit关键字 – 复数

我在我的应用程序中加入了类似gettext的本地化系统,但我的翻译功能如下所示:
t($category,$string,[$plural_string,$number,$vprintf_arguments])

我的PoEdit关键字:

t:2
t:2,3

> t:2告诉PoEdit解析$string,它显然有效
> t:2,3应该告诉PoEdit解析$string和$plural_string – 但它不是:(

它只看到$string,所以我没有得到解析的复数形式……我该如何解决?我不想将我的函数切换到不同的参数格式,因为我喜欢这个:(

功能也像sprintf替换:

>如果第三个参数($plural_string)是一个数组,那么该函数会将数组中的值视为vsprintf的参数
>如果第三个参数是一个字符串并且提供了$number,则该函数将$vprintf_arguments视为vsprintf的参数(如果提供的话),并将$plural_string视为$string的复数形式

无论如何,PoEdit不应该干扰非引用的论点,对吧?我的意思是它只会将$plural_string解析为字符串,如果它看起来像’abc abc’

gettext一次只处理一个字符串.
您可能想要的是ngettext. (查找语法)

在那里,你会输入一个单数的文本,另一个用于复数,但也包括数字.

关于这一点的聪明之处在于,许多语言的复数结构与英语完全不同.
例如,俄语使用三种不同的形式.
一个是计数以明显的“一”结束的地方:
1,21,31,41等
第二种形式是计数,以明显的2,3或4结尾.
第三种形式是其余的……

并且,使用ngettext,可以完成.
是的,在poedit中,人们必须正确地定义目标语言的复数结构,但是,它只是起作用.

http://www.gnu.org/s/hello/manual/gettext/Plural-forms.html

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...