Главная » C#, Компоненты » Локализация

0

Следующий шаг Microsoft в развитии модели сериализации в код состоял в реализации возможности локализации приложений. Посмотрите, как сериа- лизуется текст кнопки:

this.buttonl = new System.Windows.Forms.Button(); this.buttonl.Name = "buttonl"; this.buttonl.Text = "Execute";

При необходимости локализировать приложение (например, сменить название Execute на Запустить) придется где-то хранить новые названия всех локализируемых элементов, загружать такие названия и присваивать их. Редактор Visual Studio позволяет сделать это автоматически, без единой строчки кода.

Выставив свойство Locaiizabie главной формы в значение true, мы сообщаем сериализатору о необходимости сохранять значения всех названий не в код, а в ресурсный файл. В результате код будет выглядеть следующим образом:

private void InitializeComponent() {

ComponentResourceManager resources =

new ComponentResourceManager(typeof(Forml)); this.buttonl = new System.Windows.Forms.Button(); this.SuspendLayout();

//

// buttonl

//

resources.ApplyResources(this.buttonl, "buttonl");

this.buttonl.Name = "buttonl";

this.buttonl.UseVisualStyleBackColor = true;

//

// Forml

//

resources.ApplyResources(this, "$this");

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.Controls.Add(this.buttonl);

this.Name = "Forml";

this.UseWaitCursor = true;

this.Load +- new System.EventHandler(this.Forml Load); this.ResumeLayout(false);

}

Ресурсный файл формы будет содержать всю информацию, доступную для локализации (рис. 10.4). Для того чтобы ресурсный файл был доступен для изменения в режиме выполнения, нужно изменить его свойства: значение свойства Build Action сменить с Embedded Resource на Content, а значение свойства Copy to Output Directory сменить с Do not сору на Copy always (рис. 10.5). Теперь ресурсный файл будет храниться отдельно (не будет вкомпилирован в выполняемый модуль) и будет скопирован в выходной каталог.

Хочу обратить внимание, что при разработке компонента нужно стараться таким образом реализовывать свойства компонента, чтобы сделать возможным его дальнейшую локализацию. Будет не очень хорошо, если часть видимых пользователю названий будет доступна для локализации, а часть останется внутри кода компонента. Старайтесь максимально облегчить жизнь своему коллеге-программисту.

Рис. 10.4. Ресурсный файл хранит информацию, доступную для локализации

 

Рис. 10.5. Свойства ресурсного файла

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии