.NET等价于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

在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 alang sa inyong mga搜索
  • Adunay mao ang 1 nga trabaho alang sa imong搜索
  • Adunay 2 trabaho alang sa inyong mga搜索
  • 我对.NET开发比较陌生,我一直在研究.NET.resource和.resx的本地化方法,我似乎找不到任何关于如何在.NET框架内实现与上面所述相同级别的本地化灵活性的暗示

    任何关于如何在.NET中实现这一点的指导和建议都是非常受欢迎的


    感谢

    我解决这个问题的方法确实是使用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}