Я хочу интернационализировать свое приложение asp.net. Как это сделать? Какие именно шаги я должен выполнить?
Как добиться многоязычной поддержки в ASP.NET
Ответы (6)
Просто создайте класс базовой страницы, который будет унаследован от класса Page, поместите этот метод в класс базовой страницы и унаследуйте класс базовой страницы на каждой вашей странице aspx.cs, чтобы добиться глобализации.
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
base.InitializeCulture();
}
установите в этом методе любую культуру, которую вы хотите, например, ar-sa для арабского языка ....
1.) Если вы используете базу данных, вы должны изменить свои таблицы. По крайней мере, с добавлением столбца LCID.
2.) Установите культуру по умолчанию и культуру пользовательского интерфейса в web.config
<system.web>
<globalization culture="cs-CZ" uiCulture="cs-CZ"/>
</system.web>
3.) Затем вы можете установить фактическую культуру потока либо в global.asax, например, в BeginRequest или в базовом классе классов вашей страницы в методе InitializeCulture.
protected override void InitializeCulture()
{
string language = Request["lang"];
if (!string.IsNullOrEmpty(language))
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(language);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
}
else
{
base.InitializeCulture();
}
}
- Для статических текстов вы можете использовать ресурсы. Например. вы создаете Mytexts.resx, где вы пишете тексты для языка по умолчанию (en-us), а затем вы создаете Mytexts.en-UK.resx для английского языка и перезаписываете текст, который отличается от языка по умолчанию. Затем вы можете вставить эти строки на свою страницу:
<asp:Label runat="server" Text='<%$ Resources: Mytests,WelcomeMessage %>' />
Это лишь краткие шаги для начала локализации, но для небольших страниц / приложений этого достаточно.
Вам необходимо изучить темы использования файлов ресурсов в вашем веб-приложении. Если вам нужна поддержка локализации на основе базы данных, вы можете попробовать отличный бесплатный продукт от westwind
Лучше всего для этого подходят темы локализации и глобализации в MSDN.
Дать вам точные инструкции - довольно сложный вопрос, и существует несколько разных подходов.
Подход, который мы использовали в моем последнем проекте (упрощенном), был следующим:
- Настройте домен для каждой страны
- Создайте файл ресурсов для всех жестко запрограммированных строк (меток форм и т. Д.) Для каждой культуры (en-US, de-DE, fr-FR)
- Измените Thread.CurrentCulture в зависимости от домена, с которого осуществляется доступ к сайту - это означает, что все ваши числовые форматы и форматы даты будут правильными и будут использовать правильный локализованный файл ресурсов.
Надеюсь это поможет!
См. здесь официальные документы Microsoft по интернационализации.
Это сложная тема, требующая много работы, чтобы разобраться во всех уровнях вашей системы.
Начните здесь.
Файлы ASP.NET resx, которые позволят вам легко настраивать постоянные строки, но ваша БД также должна будет поддерживать юникод, и вам нужно будет делать разные вещи в зависимости от языков, которые вы хотите поддерживать.
Удачи и задавайте вопросы, когда у вас есть конкретные проблемы.
См. Эту ссылку для создания локализованных файлов ресурсов: http://msdn.microsoft.com/en-us/library/ms247246.aspx
Обычно вы создаете новый файл ресурсов для каждого языка / культуры, которые хотите поддерживать. Затем вы получаете доступ к строкам внутри них по имени на своих страницах разметки и коде файлов.
Кроме того, эти файлы ресурсов должны находиться в определенной папке вашего проекта под названием: App_GlobalResources.
Файлы глобальных ресурсов должны находиться в папке App_GlobalResources. Если вы попытаетесь создать RESX-файл вне этой папки, Visual Web Developer предложит вам создать его в папке.