单个语言的多个资源文件(.resx)

时间:2018-03-23 17:03:18

标签: c# entity-framework-core

我现在正在使用Localizer从资源文件中获取标签,按钮等的值。这一切都很好地使用文化来选择应该使用哪个语言资源文件LangaugeResource.en-GB.resx正确使用英国英语和LangaugeResource.cy.resx用于威尔士语翻译。

有没有办法在本地化服务器中添加额外的图层,以便选择资源文件 LangaugeResource.en-GB.north.resx LangaugeResource.en-GB.south.resx 所以我可以有两个资源文件,既可以用于英式英语,也可以用于本地化,或者我必须使用除本地化之外的某些方法来使用这样的资源文件?

1 个答案:

答案 0 :(得分:1)

我能想到的唯一方法就是根据另一种文化创造自己的文化。 为此,您可以使用CultureAndRegionBuilderClass(基于默认的en-GB创建自定义)。之后,应使用样本Resrouce.en-SB.resx。

MSDN示例:

public class Example
{
   public static void Main()
   {
      // Create a custom culture for ru-US.
      CultureAndRegionInfoBuilder car1 = new CultureAndRegionInfoBuilder("ru-US", 
                                             CultureAndRegionModifiers.None);
      car1.LoadDataFromCultureInfo(CultureInfo.CreateSpecificCulture("ru-RU"));
      car1.LoadDataFromRegionInfo(new RegionInfo("en-US"));

      car1.CultureEnglishName = "Russian (United States)";
      car1.CultureNativeName = "русский (США)";
      car1.CurrencyNativeName = "Доллар (США)";
      car1.RegionNativeName = "США";

      // Register the culture.
      try {
         car1.Register();
      }    
      catch (InvalidOperationException) {
         // Swallow the exception: the culture already is registered.
      }

      // Use the custom culture.
      CultureInfo ci = CultureInfo.CreateSpecificCulture("ru-US");
      Thread.CurrentThread.CurrentCulture = ci;
      Console.WriteLine("Current Culture: {0}", 
                        Thread.CurrentThread.CurrentCulture.Name);
      Console.WriteLine("Writing System: {0}", 
                        Thread.CurrentThread.CurrentCulture.TextInfo);
   }
}
// The example displays the following output:
//     Current Culture: ru-US
//     Writing System: TextInfo - ru-US