我在我的应用程序中加入了一个类似gettext的本地化系统,但我的翻译功能如下所示:
t($category, $string, [$plural_string, $number, $vprintf_arguments])我的PoEdit关键词:
t:2
t:2,3apparently
$string,它可以让PoEdit同时解析$string和$plural_string --但不是:()
它只看到$string,所以我不能解析复数形式.我怎么才能解决呢?我不想把我的函数转换成不同的参数格式,因为我喜欢这个:
此外,该函数的作用类似于sprintf替换:
如果第三个参数(
的复数形式。
无论如何,PoEdit不应该干涉未引用的论点,对吗?我的意思是,只有当$plural_string看起来像'abc abc'时,它才会将它解析为字符串。
发布于 2011-12-15 01:01:05
gettext一次只处理一个字符串。你可能想要的是ngettext。(查找语法)
在那里,你会输入一个单数的文本,一个复数的文本,还有一个数字。
最聪明的是,许多语言的复数结构与英语完全不同。例如,俄语使用三种不同的形式。一种是指计数以发音“1”结束的地方:1、21、31、41等。第二种形式用于计数,以发音2、3或4结尾。第三种形式用于其余的.
而且,使用ngettext,这是可以做到的。是的,在编辑中,我们必须正确地定义目标语言的复数结构,但是,它只是起作用了。
http://www.gnu.org/s/hello/manual/gettext/Plural-forms.html
发布于 2011-12-15 16:20:13
就像托尔-比约恩·费尔纳回答的那样,这实际上应该是可行的。
如果您告诉poedit语言实际上有复数形式(),并考虑到您的关键字,poedit提供它们进行翻译。
示例
复数形式:nplurals=2; plural=n != 1;
关键词:
t:2t:2,3PHP代码:
<?php
t("cat", "strA");
t("cat", "strB1", "strB2", 2, array());
t("cat", "strC1", "strC2", 3, array());Poedit:

我在你的问题中不明白的是数组之类的问题。我无法解释您在poedit/gettext域中打算做什么,我认为如果您添加一些具体的代码示例,以及它们的结果如何,您的问题将会受益。
https://stackoverflow.com/questions/8407840
复制相似问题