2012-04-02 1 views
0

Я строю норвежский веб-сайт, который также получит некоторых иностранных гостей. Поскольку большинство скандинавов могут читать норвежские, это будет язык по умолчанию. (I.e., * .resx на норвежском языке.) Только для наших финских и английских посетителей я создаю отдельные ресурсы (* .fi.resx и * .en.resx).Интернационализация ASP.NET возвращается на английский язык вместо языкового файла по умолчанию

Однако, к моему большому шок, все посетители, кроме финского, видят текст на английском языке! Я сам тестировал это, и я могу воспроизвести проблему в различных веб-браузерах (Internet Explorer, Firefox, Chrome, Opera), пробовать различные языковые предпочтения и следить за тем, чтобы английский был не один из них.

Почему файл ресурса fall-back (* .resx) никогда не загружается? Согласно документации (http://msdn.microsoft.com/en-us/library/ms227427.aspx), файл fall-back должен быть загружен, если языковой файл не доступен для указанного языка.

+1

Если вы сделать некоторые отладки и проверить значение 'Thread.CurrentThread.CurrentUICulture' в вашем Page_Load (или в контроллере, если используется MVC), что вы видите? Похоже, что ASP.NET выбрала английскую культуру, поэтому вы не получаете резерв ресурсов с тех пор, как присутствуют английские ресурсы. – Clafou

+0

@Peter: Какую технологию вы используете точно? Простой Asp.Net или Asp.Net MVC? Какая версия (например, .NET Framework)? Я подозреваю неправильные настройки или отсутствие назначения uiCulture (в простой Asp.Net попробуйте 'uiCulture =" auto: no "'). –

+0

Я использую простой ASP.NET (с файлами ресурсов в App_LocalResources), версия 4.0. Проверка CurrentCulture и CurrentUICulture возвращает ожидаемые культуры (например, при использовании «nb-no» в браузере он возвращает «nb-NO» и «nb» в качестве культур, при использовании «en» он возвращает «en-US» и «en»,). Однако при использовании неясных языков (например, Afar [aa]) это становится более интересным: на сервере разработки VS он возвращает «nb-NO» и «no», в IIS 7.5 он возвращает «nb-NO» для CurrentCulture и «en- US "(!) Для CurrentUICulture. Тем не менее, во всех случаях используется файл ресурсов .en.resx. – Peter

ответ

0

У вас есть эти настройки в web.config?

<system.web> 
    <globalization enableclientbasedculture="true" uiculture="auto" culture="auto"> 
    </globalization> 
</system.web> 
+0

Извините за очень поздний ответ. Да, у меня есть эти значения в моем web.config (примечание: страница [Страница элемента глобализации] (http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx) в MSDN говорит, что «этот атрибут не в настоящее время. ") – Peter

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