Решение:
Надо создавать ресурсные файлы Messages.resx – для языка по умолчанию, Messages.it-IT.resx для итальянского и т.д.
1. Глобальные ресурсы(для многих страниц) создаются в папке App_GlobalResources с расширегием resx.
Программно обратиться к ресурсам:
Resource.Messages.Greeting1
Декларативно:
<asp:Label id="lblGreeting2" runat="server" Text='<%$ Resources:Messages, Greeting2 %>' >
2. Локальные – хранятся в папке ~/path/APP_LocalResources/ с именем как у страницы + префикс языка
например для ~/Store/Home.aspx будет ~/Store/App_LocalResources/Home.aspx.it-IT.resx.
Декларативно – поле classkey оставляем пустым:
<asp:Label id="lblGreeting2" runat="server" Text='<%$ Resources:Greeting2 %>' >
Программно:
string greeting = (string)this.GetKocalResourceObject(“greeting2″);
3.ВАЖНО
Сгенерировать локальный файл ресурсов для страницы:
– перейти на design view страницы
– нажать Tools/Generate Local Resource
Он создаст файл ресурсов и вставит в страницу у элементов атрибуты meta/
Локализайются те свойства, ктороые объявлены с атрибутом [Localize(true)].
После этой операции можно из кода убрать все свойства Text, Tooltip
У страницы тоже появляется атрибут meta:
<%@ Page Language=”C#” meta:resourcekey=”PageResource1″ … %>
Для локализации элементов лучше использовать элемент Localize(хотя можно просто Label)
<asp:Localize ID=”locDesc” runat=”server”
meta:resourcekey=”locDescResource1″ Text=”The page provides…” />
4. Установка текущей культуры
а. Для установки можно читать html заголовок в Accept-Language или брать из профиля пользователя
б. установка культуры
– в BasePage(лучшее решение если брать из хранилища)
protected override void InitializeCulture()
{
string culture=Helpers.GetCurrentCulture();
this.Culture = culture;
this.UICulture = culture;
}
или в Page_Init и PageLoad
– в Global.asax(
самый худший способ – автоматическая генерация локальных ресурсов устанавливает в Page культуру в значение auto, что перезапишет значение установленное ранее в Global.asax, так что придется чистить страницы от атрибутов culture и uiculture)
void Application_BeginRequest(Object sender, EventArgs e) { if(Request.UserLanguages.Length>0) { CultureInfo culture = CultureInfo.CrateSpecificCulture(Request.UserLanguages[0]); Thread.CurrentThread.CurrentCulture= culture; Thread.CurrentThread.CurrentUICulture= culture; } }
- в Web.config <configuration> <system.web> <globalization culture="auto" uiCulture="auto"> </system.web> </configuration> - в странице <%@ Page Culture="auto" UICulture="auto" ... %>
https://falconspace.ru/blog/sozdanie-sistemy-upravleniya-zakazami-v-vide-lichnykh-kabinetov-na-sayte - Система управления заказами на предприятии. Разработка автоматизированной системы заказов
Запуск собственного маркетплейса — это захватывающий, но сложный процесс, который требует внимания к деталям и…
https://falconspace.ru/blog/sozdanie-sistemy-upravleniya-zakazami-v-vide-lichnykh-kabinetov-na-sayte - Система управления заказами на предприятии. Разработка автоматизированной системы заказов
https://falconspace.ru/blog/chto-delat-kogda-startap-ne-poshel - Причины неудачи it проекта. Как реанимировать веб-проект?
https://falconspace.ru/blog/kak-zashchitit-sayt--obespechenie-informacionnoy-bezopasnosti-sayta - Как защитить сайт? Обеспечение информационной безопасности сайта
https://falconspace.ru/blog/kak-zashchitit-sayt--obespechenie-informacionnoy-bezopasnosti-sayta - Как защитить сайт? Обеспечение информационной безопасности сайта