2013-03-11 5 views
2

У меня есть проект ASP.NET MVC 4, и я зарегистрировал в нем настраиваемую культуру, потому что я хочу иметь специфический для клиента перевод.ASP.NET MVC Регистрация пользовательской культуры и интернационализации

Я вызываю следующий вспомогательный метод с такими параметрами, как RegisterCulture("en-GB-CustA", "English (Customer A)", "en-GB"); Этот вызов выполняется в Application_Start обработчиком событий класса MvcApplication : HttpApplication.

Метод фея простой, он в основном создает новую культуру на основе существующей и заменяет ее имя.

Теперь в моем 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, как с CustomToolNamespace для обоих файлов ресурсов для упрощения).

@ViewRes.Test.Title 

Unfortunatelly, даже если я установить пользовательскую культуру как descibed, прежде чем я получаю detault «Привет мир» значение все время. Что мне здесь не хватает?

ответ

0

Я в конечном итоге переименование код сформировать свою собственную культуру, так что-то вроде en-XX. Я также должен определить как TwoLetterISOLanguageName, так и ThreeLetterISOLanguageName, и он зарегистрирован правильно.

0

Я знаю, это звучит очень просто, и это старая нить, но вы пытались перезагрузить?

Ваш код выглядит хорошо.

У меня была точно такая же проблема: новая пользовательская культура (локаль) создавалась правильно, но не применялась к файлу ресурсов с правильным именем. Перезапуск был единственным, что применило изменения настроек.

Единственное, что нужно проверить, это то, что вы работаете с правами администратора - так как вам это нужно, чтобы создать новую локаль.

Смотрите здесь:

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx

Смежные вопросы