首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PoEdit关键词-复数

PoEdit关键词-复数
EN

Stack Overflow用户
提问于 2011-12-06 22:31:33
回答 2查看 3.9K关注 0票数 8

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

代码语言:javascript
复制
 t($category, $string, [$plural_string, $number, $vprintf_arguments])

我的PoEdit关键词:

代码语言:javascript
复制
t:2
t:2,3

apparently

  • t:2,3:
  • t:2告诉PoEdit解析$string,它可以让PoEdit同时解析$string$plural_string --但不是:(

)

它只看到$string,所以我不能解析复数形式.我怎么才能解决呢?我不想把我的函数转换成不同的参数格式,因为我喜欢这个:

此外,该函数的作用类似于sprintf替换:

如果第三个参数(

  • ,$plural_string )是一个数组,那么如果第三个参数是字符串并且提供了$number,则函数将把数组中的值作为参数考虑到vsprintf
  • ,函数将把$vprintf_arguments看作vsprintf的参数(如果提供的话),以及$plural_string作为$string

的复数形式。

无论如何,PoEdit不应该干涉未引用的论点,对吗?我的意思是,只有当$plural_string看起来像'abc abc'时,它才会将它解析为字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 7
EN

Stack Overflow用户

发布于 2011-12-15 16:20:13

就像托尔-比约恩·费尔纳回答的那样,这实际上应该是可行的。

如果您告诉poedit语言实际上有复数形式(),并考虑到您的关键字,poedit提供它们进行翻译。

示例

复数形式:nplurals=2; plural=n != 1;

关键词:

  • t:2
  • t:2,3

PHP代码:

代码语言:javascript
复制
<?php

t("cat", "strA");

t("cat", "strB1", "strB2", 2, array());

t("cat", "strC1", "strC2", 3, array());

Poedit:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8407840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档