我在尝试在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在这种方面是否有区别吗?
谢谢。