我的应用程序只有波兰语字符串,它是应用程序的默认语言。在这里,您可以看到 res/vaules 下的示例复数:
<plurals name="number_of_vouchers">
<item quantity="one">%d kupon</item>
<item quantity="few">%d kupony</item>
<item quantity="many">%d kuponów</item>
<item quantity="other">%d kuponów</item>
</plurals>
Run Code Online (Sandbox Code Playgroud)
这里有测试活动类:
class DevTest : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dev_test)
val stb = StringBuilder()
for (j in 1..30) {
stb.append(resources.getQuantityString(R.plurals.number_of_vouchers, j, j) + "\n")
}
testTV.text = stb.toString()
}
}
Run Code Online (Sandbox Code Playgroud)
这是示例测试在系统设置上的样子,将波兰语语言设置为默认值(按预期工作):

这是示例测试在英语设置为默认值的系统设置上的样子(即使应用程序只有波兰语也不起作用):

您可以看到,对于英语系统语言,它省略了
<item quantity="few">%d kupony</item>
Run Code Online (Sandbox Code Playgroud)
即使应用程序只有一种语言,而且不是英语。
根据 Android 官方文档这里
Few :当语言需要对“小”数字进行特殊处理时(例如捷克语中的 2、3 和 4;或者波兰语中以 2、3 或 4 结尾但不是 12、13 或 14 的数字)。
所以,在Polish. 如果数字以 2,3,4 结尾(但不是 12,13,14),则采用复数形式few。
--- 编辑 --
对于您的应用程序,波兰语是唯一的语言。(在 下res/values)。现在当你的系统语言是波兰语时。这些复数将被视为波兰语。所以它按照我的 ans 显示。现在当你将系统语言更改为英语时。相同的复数将被视为英语。因此 22、23、24 没有变化。这是因为res/values在未定义特定资源类型时,其行为按照系统默认语言进行。
另请查看官方文档Android 如何找到最匹配的资源
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |