Visual Studio 2008

Я хочу внести некоторую локализацию в свой сайт ASP.NET MVC.

Кто-то предложил создать файл ресурсов "Strings.resx" как общедоступный строго типизированный ресурс, который отлично работает и позволяет мне писать

<title><%= Strings.MyView_Title %></title>

Затем я приступил к добавлению файла «Strings.da.resx». Этот файл создается рядом с первым и имеет значение по умолчанию «Модификатор доступа: без компиляции», тогда как первый (тот, который без модификатора языка) имеет значение по умолчанию «Interal».

В каталоге bin я вижу, что каталог был создан («da») с файлом resource.dll, однако я не вижу ни одного переведенного текста на моем сайте.

Я проверил в браузере, что единственным предпочтительным языком является датский (da-DK), но я вижу только английские тексты.

Вопросы: 1) Нужно ли что-то включать в web.config? 2) Создаю ли я правильные файлы с правильными типами (т.е. должен ли №2 быть «Без компиляции»)?

4
Soraz 29 Апр 2009 в 16:57

2 ответа

Лучший ответ

В ваших представлениях есть ли у вас директива страницы? Если да, то есть ли у вас UICulture = "Auto" и Culture = "Auto"?

Например...

<%@ Page Language="C#" Inherits="..." 
    culture="auto" uiculture="auto" %>

Это гарантирует, что заголовок Accept-Language, переданный браузером в запросе, будет использоваться для установки культуры потока. Выбор файла ресурсов зависит от UICulture.

Чтобы узнать больше об ASP.NET i18n, эта книга очень хороша ...

http://www.amazon.co.uk/NET-Internationalization-Developers-Guide-Building/dp/0321341384/ref=sr_1_1?ie=UTF8&s=books&qid=1241010151&sr=8-1

Он не охватывает MVC, но охватывает ASP.NET, и поэтому многие вещи остаются актуальными.

6
Martin Peck 29 Апр 2009 в 16:59
На самом деле, оказалось, что я могу установить в разделе файла web.config.
 – 
Soraz
29 Апр 2009 в 17:13
Да, вы тоже можете это сделать. Я стараюсь делать это на уровне страницы, чтобы не было «особой магии», исходящей от конфигурации, которую новые разработчики проекта не ожидают.
 – 
Martin Peck
29 Апр 2009 в 17:19

Сначала вам нужно создать фильтр действий, который переключит культуру потока запроса. ИЛИ Установите для элемента globalization значение UICulture = "Auto "and Culture =" Auto "

Посмотрите этот скринкаст, он на русском языке, но примеры кода понятны.

2
Ofigenn 29 Апр 2009 в 17:11