首页 > 解决方案 > 挪威语本地化在带有 net core 2.1 的 AWS (linux) 中不起作用

问题描述

我在尝试在 Amazon Web 服务上运行我的测试时遇到了一些问题。

首先,提到测试在我的本地机器上通过了,就像在 Teamcity(windows)中一样,但是一旦我将它构建到 Amazon Codebuild(Linux)就没有。

此外,只有挪威语的测试失败,我尝试添加西班牙语 ( "es")、英语和法语,它们都可以正常工作。

我有我Resources的文件夹,里面有文件*.es.resx, *.resx, *.en.resx,*.no.resx等等。

为了获得本地化,我创建了一个辅助方法

public class TestLanguageBase<T>
{
    protected StringLocalizer<T> GetLocalizer()
    {
        IOptions<LocalizationOptions> options = Options.Create(new LocalizationOptions());
        ResourceManagerStringLocalizerFactory factory = new ResourceManagerStringLocalizerFactory(options, NullLoggerFactory.Instance);
        return new StringLocalizer<T>(factory);
    }
}

然后在扩展的测试中TestLanguageBase我执行下一个

[Fact]
public void Test_NorwegianLanguage()
{
    CultureInfo NorweiganCulture = new CultureInfo("no");
    using (new CultureScope(NorweiganCulture))
    {
        var localizer = GetLocalizer();
        var result = localizer["LanguageChecker"];
        Assert.Equal("NorwegianLanguage", result);
    }
}

编辑:我尝试过nb并且似乎正在工作。但为什么是原因呢?我需要.resx为同一种语言创建两个不同的文件吗?

西班牙语测试没有问题。

[Fact]
public void Test_Spanish()
{
    CultureInfo spanishCulture = new CultureInfo("es");
    using (new CultureScope(spanishCulture))
    {
        var localizer = GetLocalizer();
        var result = localizer["LanguageChecker"];
        Assert.Equal("SpanishLanguage", result);
    }
}

有谁知道Windows和Linux在这种方面有什么区别吗?

谢谢。

标签: c#amazon-web-servicesasp.net-corelocalizationasp.net-core-2.1

解决方案


Linux 更喜欢挪威语的“nn”语言代码,而不是“no”代码


推荐阅读