PoEdit关键字 - 复数

Ale*_*lex 8 php localization gettext poedit xgettext

我在我的应用程序中加入了类似gettext的本地化系统,但我的翻译功能如下所示:

 t($category, $string, [$plural_string, $number, $vprintf_arguments])
Run Code Online (Sandbox Code Playgroud)

我的PoEdit关键字:

t:2
t:2,3
Run Code Online (Sandbox Code Playgroud)
  • 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'

小智 6

gettext一次只处理一个字符串.你可能会追求的是ngettext.(查找语法)

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

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

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

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