微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/php/137349.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐