Сервер разработки ASP.NET игнорирует культуру браузера

Я пытаюсь реализовать простой пример того, как ASP.NET меняет культуру. Я использую Windows 7, IE 8 и VS 2008. Моя метка выглядит так:

<asp:Label ID="TextBox1" runat="server" meta:resourcekey="Greeting"></asp:Label>

У меня есть два файла в App_LocalResources: Default.aspx.resx и Default.aspx.fr.resx.

В них у меня есть строковое значение «Greeting.Text», а значение установлено на «Привет!» на одной странице, и "Bonjour!" в другом.

В моем браузере в качестве языка по умолчанию выбран fr-FR. Когда я открываю страницу с помощью сервера разработки ASP.NET с помощью F5 или Shift-F5, страница явно распознает мою культуру как en-US, независимо от того, что я установил в диалоговом окне «Языки» для браузера.

При этом браузер настроен правильно, так как Google отображается на французском языке.

Когда я добавляю метку на страницу и устанавливаю для текста метки имя CurrentCulture или CurrentUICulture, я получаю en-US, что явно не то, что я ввел.

Кто-нибудь знает, почему это не работает должным образом?


person David Morton    schedule 20.05.2009    source источник


Ответы (1)


ASP.NET по умолчанию не изменяет язык и региональные параметры автоматически в зависимости от браузера. Добавьте это в свой web.config:

<configuration>
    <system.web>
        <globalization culture="auto"
                       enableBestFitResponseEncoding="false"
                       fileEncoding="utf-8"
                       requestEncoding="utf-8"
                       responseEncoding="utf-8"
                       responseHeaderEncoding="utf-8"
                       uiCulture="auto"/>
    </system.web>
</configuration>

Обратите внимание, что culture="auto" и uiCulture="auto" являются важными элементами того, что вы ищете, хотя остальное, вероятно, также является хорошей идеей. Также обратите внимание, что атрибут enableClientBasedCulture, который вы можете увидеть в документации, в настоящее время не используется ASP.NET.

person Erv Walter    schedule 20.05.2009