php - PoEdit 关键字 - 复数形式

标签 php localization gettext poedit xgettext

我在我的应用程序中加入了一个类似于 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

关于php - PoEdit 关键字 - 复数形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407840/

相关文章:

java - 当我尝试使用 Volley 将图像从 Android 上传到 PHP 服务器时出现错误(JSONException)

php - 当 XML SOAP 响应中存在单个元素时,JSON 对象而不是数组

Xamarin.Forms:UWP 应用的本地化

regex - 如何匹配 perl 正则表达式 (regexp) 中的重音和波浪号字符?

c++ - xgettext - 提取可翻译字符串并更新 .pot

php - Gettext 有时工作

Twig 模板中的 Symfony 'trans' 域

java - 省略 for 循环中的第一个参数

php - 不知道如何将图像差异添加到 HTML 表的 php/sql 填充中

c# - 如何检测一个字符是否属于从右到左的语言?