跳转到内容

复数的短语

为什么复数被区别对待

IPS社区套件中使用的许多短语都是复数形式。一些例子:

  • 21日回复
  • 3评论
  • 你有10个新通知

在英语中,复数通常用s表示复数,没有s表示单数。在其他语言中,规则可能更复杂,并需要具体的格式,取决于确切的数字。

为了简化这些细微差别,IPS Community Suite对指代复数项的短语使用了一种特殊的语法。语言系统将使用的值传递到短语中,特殊的语法可以使用这个值来确定要显示哪些单词。

语法

复数短语的语法是这样的:

{#[1:回复][?:回复]}

这种语法允许的功能很多,但这是基本用法。它由不同的定义组成,这些定义的应用取决于被替换的短语的数量。让我们一步一步地看一下每一部分。

{…}

复数替换总是需要用花括号括起来,以便套件核心能够识别它。注意,如果短语的其余部分不是复数依赖的,则复数替换可以出现在另一个短语中。例如:

“你有{#[1:新通知][?:新通知]}”

下一个字符通常是磅/哈希符号。当它出现在替换开始时,该符号将替换为传递为复数的实际数字。或者,如果您使用! #然后数量不是包括在内。

{#[1:回复][?:回复】}{!#[1:回复][?:回复]}

就变成:

10回复回复

[x回复):

下一个块是替换选项,可以有几个。这些都是用方括号括起来的,对于您的语言,您可以有任意多的方括号。块的开始x:,其中x为数字,表示当传入短语的数字完全正确时使用此替换x. 如果您的语言要求某些数字使用不同的复数形式,您可以为每个数字重复该块。

这里有三个特殊的符号可以用来表示“x”:

  • *1:匹配所有结束在1,例如1,11,21,251
  • % 1:匹配所有以1开头的数字,例如1、10、12、163
  • ?:匹配其他块不匹配的所有值

冒号后如果此块匹配,则使用的字符串值。

注意,这些块中的值可以使用特殊字符,它与上面一样被传递到短语中的实际值替换。除了在某些情况下,这个短语不需要显示数字,这一点特别有用。例如:

“每{!#[1:年][?:#年]}”

在英语中,“Every 1 year”是奇数,但对于其他值,你会说“Every 3 years”。在这个例子中,我们使用! #在更换开始时,使号码不会自动添加,然后使用在第二个块中,使字符串仅在使用该块时包含数字。


报告指南


×
×
  • 创建新的…
Baidu