【问题标题】:How does the ResourceManager handle culture Fallback for custom cultures?ResourceManager 如何处理自定义文化的文化回退?
【发布时间】:2015-10-16 16:54:19
【问题描述】:

我创建了一种名为 es-CO-ZF 的自定义文化。这种文化基于es-CO

var cultureInfo = new CultureInfo("es");
var regionInfo = new RegionInfo("CO");

var infoBuilder = new CultureAndRegionInfoBuilder(
    "es-CO-ZF", CultureAndRegionModifiers.None);

infoBuilder.LoadDataFromCultureInfo(cultureInfo);
infoBuilder.LoadDataFromRegionInfo(regionInfo);
infoBuilder.Register();

以下是 CultureInfo 对象的控制台打印输出:

Name: . . . . . . . . . . . . . es-CO-zf
EnglishName:. . . . . . . . . . Spanish
NativeName: . . . . . . . . . . español
TwoLetterISOLanguageName: . . . es
ThreeLetterISOLanguageName: . . spa
ThreeLetterWindowsLanguageName: ESP

为了测试文化回退,我创建了以下 RESX 文件:

App.resx (en-US, default culture)
  String1 > English
App.es.resx
  String1 > español
App.es-CO.resx
  String2 > Colombia
App.es-CO-ZF.resx
  String2 > Colombia Custom

并获得本地化字符串如下:

CultureInfo culture = CultureInfo.CreateSpecificCulture("en-CO-ZF");
var string1 = App.ResourceManager.GetString("String1", culture);
var string2 = App.ResourceManager.GetString("String2", culture);

当使用内置文化es-CO我得到以下结果:

String1: español
String2: Colombia

因此,当使用自定义文化时,我期望得到以下结果:

String1: español
String2: Colombia Custom

但我得到了:

String1: English
String2: Colombia Custom

所以我看到的是资源管理器似乎不知道或弄清楚自定义文化的基本语言是西班牙语,即使根据 CultureInfo 对象及其语言属性,基本语言是西班牙语。

我做错了吗?

我应该怎么做才能使 ResourceManager 回退到 es 以适应我的自定义文化?

【问题讨论】:

    标签: .net localization resx


    【解决方案1】:

    创建自定义文化时,将CultureAndRegionInfoBuilder 对象的Parent 属性设置为您希望在自定义文化的本地化不可用时回退到的任何文化。

    var cultureInfo = new CultureInfo("es");
    var regionInfo = new RegionInfo("CO");
    
    var infoBuilder = new CultureAndRegionInfoBuilder(
        "es-CO-ZF", CultureAndRegionModifiers.None);
    
    infoBuilder.LoadDataFromCultureInfo(cultureInfo);
    infoBuilder.LoadDataFromRegionInfo(regionInfo);
    
    //set the parent for culture fallback
    infoBuilder.Parent = new CultureInfo("es-CO");
    
    infoBuilder.Register();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多