我一直following this page让我的网站支持多种文化。
代码全部编译并运行,但它似乎忽略了我的文化特定的resx文件。
现在测试非常肤浅,我只有2个资源文件;
Resources.resx
和Resources.au.resx
我的模板正在调用@Resources.PageFooter
,这是两个文件中定义的唯一字符串。
如果我浏览到http://mysite/index并检查页脚,则它包含我的默认值。如果我将我的网址更改为http://mysite/au/index,那么它仍会显示默认值。但是,检查CurrentThread.CurrentUICulture和CurrentThread.CurrentCulture时,两者现在都设置为au,但它仍然在使用Resources.resx而不是Resources.au.resx
我的资源文件位于单独的文件夹资源中,如文章所示。
所以我被卡住了。
经过一番调查后,我发现如果我创建另一个resx文件(意大利语),那就行了。
所以看起来被忽略的文件是“变体”,如美式英语,澳大利亚英语等。
答案 0 :(得分:1)
首先,请将public static LocalDateTime parse(String dateFromJson) {
try {
return LocalDateTime.parse(dateFromJson);
} catch (DateTimeParseException e) {
// ignore, try next format
}
try {
return LocalDateTime.parse(dateFromJson, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
} catch (DateTimeParseException e) {
// ignore, try next format
}
return LocalDate.parse(dateFromJson).atStartOfDay();
}
更改为au
,因为这是澳大利亚英语的正确colture代码。
在en-AU
文件中,设置如下所示的Global.asax
方法:
Application_BeginRequest
您需要我上面提到的void Application_BeginRequest(Object sender, EventArgs e)
{
string langCode = "en"; //default
if (somecondition)
langCode = "en-AU";
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(langCode);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(langCode);
}
来检查用户来自哪里 - 通过标头,Cookie,URI或您想要的任何其他方式。