【发布时间】:2013-08-16 09:52:11
【问题描述】:
在 Java 资源包中,我可能有以下资源包定义:
zh_CN - 英式英语
jobs.search.resultstr = There {1,choice,0#are no jobs|1#is one job|1<are {1,number,integer} jobs} for your search
ceb_PH - 宿务
jobs.search.resultstr = Adunay {1,choice,0#mga walay mga|1#mao ang 1 nga|1<{1,number,integer}} trabaho alang sa {1,choice,0#inyong mga|1#imong|1<inyong mga} search
我用来提取资源的代码会根据输入数据做出选择,并正确格式化字符串,从而产生三种不同的输出之一。
伪代码:
myResultStr = resourceBundle.getResource("jobs.search.resultStr", jobs.recordCount)
这将导致输出以下字符串之一,具体取决于所选的语言环境和返回的结果数。
zh_CN
- 没有职位可供您搜索
- 有一份工作供您搜索
- 有 2 个职位可供您搜索
或
ceb_PH
- Adunay mga walay mga trabaho alang sa inyong mga search
- Adunay mao ang 1 nga trabaho alang sa imong 搜索
- Adunay 2 trabaho alang sa inyong mga 搜索
我对 .NET 开发比较陌生,我一直在研究 .NET .resource 和 .resx 本地化方法,但我似乎无法找到任何关于如何实现与上面在 .NET 框架中说明的相同级别的本地化灵活性。
欢迎任何关于我如何在 .NET 中实现这一目标的指导和指示。
谢谢
【问题讨论】:
-
太棒了 :-) 它可以做到Bosnian 吗? (其中 few 表单基于
few → n mod 10 in 2..4 and n mod 100 not in 12..14;) -
没有开箱即用的 AFAIK...我会尝试 CustomFormatter 看看这是否可能是一个解决方案
-
通过一些工作,我想它可以做波斯尼亚语,诀窍是,你不需要传入一个整数,你可以这样做 {1,choice,none#none string|one #singlular string|few#few string|many#many string|other#everything else} 并这样做。它不需要只使用整数。
-
没有开箱即用?真可惜。然后我会看看 String.Format 和 CustomFormatter 接口......
标签: .net localization resources globalization resourcebundle