2017-04-04 166 views
0

我一直在following this page使我的网站支持多种文化。为什么我的不同语言的resx文件被忽略

代码全部编译并运行,但它似乎忽略了我的文化特定的resx文件。

现在测试是非常肤浅的,我只有2个资源文件; Resources.resxResources.au.resx

我的模板正在调用@Resources.PageFooter这是在这两个文件中定义的唯一字符串。

如果我浏览到http://mysite/index并检查页面页脚,它包含我的默认值。如果我将我的网址更改为http://mysite/au/index,那么它仍会显示默认值。然而,检查CurrentThread.CurrentUICulture和CurrentThread.CurrentCulture显示现在都设置为au,但它仍在继续使用Resources.resx而不是Resources.au.resx

我的资源文件位于单独的文件夹中资源文章建议。

所以我卡住了。

经过一番调查后,我发现如果我创建另一个resx文件(对于意大利语),那么这是有效的。

所以它看起来像被忽略的文件是'变化',如美国英语,澳大利亚英语等。

+0

请分享您的代码 –

+0

代码与文章中的代码非常相似。不过,我刚刚更新了我的问题:-) – Matt

+0

澳大利亚英语不是'en-AU'而不是'au'吗? –

回答

1

首先,请将au更改为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); 
} 

你需要我上面提到的somecondition以检查用户是来自 - 通过头,饼干,URI或其他任何方式你想。

+0

如果你看看我跟着的文章,我正在做你所有的建议(以为我使用过滤器和激活器,而不是BeginRequest。) – Matt