Не удается локализовать (перевести) пользовательский элемент управления в .NETCF 2.0 - PullRequest
0 голосов
/ 22 сентября 2010

Я перевожу компактную форму окна 2.0 в Visual Studio 2005. Для этого я изменяю язык формы на немецкий (целевой язык) и редактирую / изменяю размеры элементов управления в форме. Это создает файл resources.de.resx, содержащий переведенные строки, как и ожидалось.

Однако в форме есть пользовательский элемент управления, который имеет свойство GroupText, которое также необходимо перевести. Однако конструктор форм отказывается использовать файлы ресурсов для этого свойства. Всякий раз, когда я изменяю свойство в редакторе свойств, оно изменяется для всех языков. Я проверил файлы resx - они не содержат свойства GroupText, и сгенерированный программой Designer код также не использует файл resx для этого свойства.

Есть ли способ включить локализацию на основе Resx и Visual Studio для пользовательских элементов управления?

Edit:

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

Каждое свойство, которое должно входить в файл resx, должно иметь атрибут Localizable, установленный на true. Теперь CF не поддерживает этот атрибут через обычный синтаксис скобок. Вы не можете просто написать [Localizable=true] в исходном файле cs. Вы должны создать отдельный файл с именем DesignTimeAttributes.xmta в проекте и добавить следующее:

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
<Class Name="MyControl">
  <Property Name="MyProperty">
    <Localizable>true</Localizable>
  </Property>
</Class>

После перекомпоновки сборки, содержащей элемент управления, Visual Studio поместит значения свойств в файлы resx.

1 Ответ

0 голосов
/ 22 сентября 2010

Пользовательские элементы управления, на мой взгляд, вполне очевидные причины не локализуются по умолчанию, об этом должен позаботиться автор такого элемента управления.Некоторые пользовательские элементы управления имеют логическое свойство Localizable, которое определяет, записывает ли элемент управления свои сообщения в файл ресурсов, но я предполагаю, что это не тот случай.

Если текст, который вы хотите перевести, доступен через свойство или конструктор, выможете создать свой собственный файл * .resx и назначить этот текст во время создания.Если это не так, я боюсь, что вам не повезло.

...