挪威语言本地化在 AWS (linux) 和 net core 2.1 中不起作用
norwegian laguage localization not working in AWS (linux) with net core 2.1
我在尝试 运行 我在 Amazon 网络服务上的测试时遇到了一些问题。
首先,请提及测试在我的本地计算机中通过,就像在 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在这方面有什么区别吗?
谢谢。
Linux 更喜欢挪威语的“nn”语言代码,而不是“no”代码
我在尝试 运行 我在 Amazon 网络服务上的测试时遇到了一些问题。
首先,请提及测试在我的本地计算机中通过,就像在 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在这方面有什么区别吗?
谢谢。
Linux 更喜欢挪威语的“nn”语言代码,而不是“no”代码