【问题标题】:Multiple resource files (.resx) for a single language单一语言的多个资源文件 (.resx)
【发布时间】:2018-03-24 01:17:34
【问题描述】:

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

有没有办法为本地化程序添加一个附加层以选择资源文件,例如 LangaugeResource.en-GB.north.resx LangaugeResource.en-GB.south.resx 这样我就可以有两个资源文件,都是英式英语,但更本地化,还是我必须使用本地化以外的其他方法来使用这样的资源文件?

【问题讨论】:

  • 我不这么认为。 en-GB 直接与系统中国际公认的语言键相关联。 en-GB.north 不是。您必须设计自己的本地化系统,因为这是您的需要。
  • 资源文件是否与本地化和语言有着千丝万缕的联系,因为我能找到的所有链接都没有提到一个没有另一个?
  • 我相信他们是。虽然我没有看到任何与此相反的信息,但我可能弄错了。

标签: c# entity-framework-core


【解决方案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

【讨论】:

  • 资源文件是否与本地化和语言有着千丝万缕的联系,因为我能找到的所有链接都没有提到一个没有另一个?
  • 您可以通过准确指定从资源文件手动加载翻译。但这会导致自己实现资源加载类。默认本地化(@Resource. 并选择正确的资源文件与文化联系在一起 - afaik
  • @Dave 如果对您有帮助,请选择我的答案作为解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多