我有一个ASP.NET MVC 4项目,我已经注册了它的自定义文化,因为我想要一个客户特定的翻译。ASP.NET MVC注册自定义文化和国际化
我使用参数RegisterCulture("en-GB-CustA", "English (Customer A)", "en-GB");
调用以下帮助方法此调用在MvcApplication : HttpApplication
类的Application_Start
事件处理程序中完成。
private static void RegisterCulture(string cultureCode, string cultureName, string baseCultureCode)
{
var ci = new CultureInfo(baseCultureCode);
var ri = new RegionInfo(ci.Name);
var builder = new CultureAndRegionInfoBuilder(cultureCode, CultureAndRegionModifiers.None);
builder.LoadDataFromCultureInfo(ci);
builder.LoadDataFromRegionInfo(ri);
builder.CultureEnglishName = cultureName;
builder.CultureNativeName = cultureName;
try
{
builder.Register();
}
catch (InvalidOperationException)
{
}
}
这个方法很简单,它基本上是基于已有的文化创造出新的文化,并替换它的名字。
现在我的Global.asax只是为了测试的目的,我把MvcApplication
类的代码转换为自定义的当前线程。
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
var ci = new CultureInfo("en-GB-CustA");
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);
}
我还包括两个资源文件。其中一个名称为Test.resx
,默认文本为第二个,Test.en-GB-CustA.resx
。我添加了一个简单的字符串资源,名为Title
,有两个不同的值。
Test.resx => "Hello World!"
Test.en-GB-CustA => "Hello from custom culture!"
我也把我的观点的一个代码,以显示这个标题(我已经添加ViewRes
为s CustomToolNamespace
为简化这两个资源文件)。
@ViewRes.Test.Title
可惜的是,即使我已经设置了自定义的文化descibed我得到detault之前的“Hello world”值的所有时间。我在这里错过了什么?