.NET等价于Java资源包中的选项?
在Java资源包中,我可能有以下资源包定义: 英国英语.NET等价于Java资源包中的选项?,.net,localization,resources,globalization,resourcebundle,.net,Localization,Resources,Globalization,Resourcebundle,在Java资源包中,我可能有以下资源包定义: 英国英语 jobs.search.resultstr = There {1,choice,0#are no jobs|1#is one job|1<are {1,number,integer} jobs} for your search 这将导致根据所选区域设置和返回的结果数输出以下字符串之一 英国 没有可供您搜索的工作 有一份工作要找 有2份工作需要你搜索 或 行政首长协调会 Adunay mga walay mga trabaho ala
jobs.search.resultstr = There {1,choice,0#are no jobs|1#is one job|1<are {1,number,integer} jobs} for your search
这将导致根据所选区域设置和返回的结果数输出以下字符串之一
英国
感谢我解决这个问题的方法确实是使用CustomFormatter来实现一个等价的ChoiceFormat,定制ResourceBundle对象使用它来代理对.NET resx文件的访问。通过使用ChoiceFormat实现一个涵盖我需要的所有语言(以及将来更多语言)的Multilater对象层次结构,我可以准确地定位字符串 代码看起来有点像这样
String.Format(new ChoiceFormatProvider(Session["CultureInfo"]), rb.GetString("resxkey", Session["CultureInfo"]), new object[] { 5 });
GetString返回的字符串由resx文件本地化,但随后由自定义格式化程序处理,它们如下所示
{0:choice,0#zero str|1#one str|1<more than one}
这两个功能加上一组自定义的Multilater对象,可以实现非常复杂的本地化功能。Wonder:-)可以吗?(其中少数形式基于<代码>少数→ n mod 10在2..4中,n mod 100不是在12..14中;)有一个非开箱即用的AFAIK…我会试着看看这是否是一个解决方案,需要一些工作,我想它可以解决波斯尼亚问题,诀窍是,你不需要传递整数,你可以这样做{1,choice,none#none string | one#singlular string | now#now string | many#many string | other#everythis}这样做。它不需要只处理整数。没有现成的吗?那太可惜了。我会看看string.Format和CustomFormatter接口。。。
String.Format(new ChoiceFormatProvider(Session["CultureInfo"]), rb.GetString("resxkey", Session["CultureInfo"]), new object[] { 5 });
{0:choice,0#zero str|1#one str|1<more than one}
{0:plural,zero#zero str|one#singular str|two#dual str|few#few str|many#many str|other#other plural str}