Как добиться многоязычной поддержки в ASP.NET - PullRequest
0 голосов
/ 01 октября 2009

Я хочу интернационализировать свое приложение asp.net. Как это сделать? Каким именно шагам я должен следовать?

Ответы [ 6 ]

4 голосов
/ 01 октября 2009

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();
        }        
    }
  1. Для статических текстов вы можете использовать ресурсы. Например. вы создаете Mytexts.resx, где пишете тексты для языка по умолчанию (en-us), а затем создаете Mytexts.en-UK.resx для английского языка и перезаписываете текст, который отличается от языка по умолчанию. Затем вы можете вставить эти строки на своей странице:
<asp:Label runat="server" Text='<%$ Resources: Mytests,WelcomeMessage %>' />

Это только краткие шаги для начала с локализации, но для небольших страниц / приложений этого достаточно.

1 голос
/ 01 октября 2009

Просто создайте класс базовой страницы, который будет наследоваться от класса Page, поместите этот метод в класс basepage и наследуйте класс basepage на каждой странице 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 голос
/ 01 октября 2009

Это довольно большой вопрос, чтобы дать вам точные шаги, и есть несколько разных подходов.

Подход, использованный нами для моего последнего проекта (упрощенный), был:

  1. Настройка домена для каждой страны
  2. Создать файл ресурсов для всех жестко закодированные строки (метки форм и т. д.) для каждой культуры (en-US, de-DE, FR-FR)
  3. Изменение темы Thread.CurrentCulture в зависимости от домена, на котором находится сайт. доступ к - это означает что все твои числовые форматы, дата форматы будут правильными и использовать правильный файл локализованного ресурса

Надеюсь, это поможет!

См. Здесь документы Microsoft по интернационализации .

1 голос
/ 01 октября 2009

Вы должны изучить темы использования файлов ресурсов в вашем веб-приложении. Если вам нужна поддержка локализации на основе базы данных, вы можете попробовать отличный бесплатный продукт от westwind

Лучшее предложение для этого - темы о локализации и глобализации в MSDN.

0 голосов
/ 01 октября 2009

Это сложная тема и требует много работы, чтобы разобраться во всех слоях вашей системы.

Старт здесь .

ASP.NET resx файлы, которые позволят вам легко настраивать постоянные строки, но ваша БД также должна будет поддерживать юникод, и вам придется делать разные вещи в зависимости от языков, которые вы хотите поддерживать.

Удачи, и задавайте вопросы, когда у вас есть конкретные проблемы.

0 голосов
/ 01 октября 2009

См. Эту ссылку для создания файлов локализованных ресурсов: http://msdn.microsoft.com/en-us/library/ms247246.aspx

По сути, вы создаете новый файл ресурсов для каждого языка / культуры, который вы хотите поддерживать. Затем вы получаете доступ к строкам внутри них по имени на ваших страницах разметки и коде файлов.

Кроме того, эти файлы ресурсов должны находиться в определенной папке в вашем проекте, которая называется: App_GlobalResources

Глобальные файлы ресурсов должны находиться в папке App_GlobalResources. если ты попробуйте создать файл .resx вне эта папка, Visual Web Developer предложит вам создать его в папка.

...