Локализация форм Windows с использованием * .resx и Common.resx - PullRequest
1 голос
/ 24 ноября 2011

Допустим, есть несколько форм: A.cs, B.cs, C.cs ...

Каждая форма локализована - A.resx, A.NL-nl.resx и т. Д.

Эти формы содержат некоторые специальные ярлыки и некоторые распространенные во всех формах используемые ярлыки.Таким образом, конкретные строки идут в A.resx (A.NL-nl.resx) и общие - скажем, Common.resx (Common.NL-nl.resx)

Есть ли способ форсировать, когда формаинициализируется для использования строк ресурсов из A.resx и из Common.resx, куда идут все общие строки?Конечно, я мог бы в некоторых методах OnLoad устанавливать подписи для элементов макета формы, но тогда встроенные функции локализации могли бы быть потеряны.

Причина, по которой я хотел бы получить такую ​​функциональность, потому что в разныхформы и было бы намного проще управлять / переводить эти * .resx файлы.

Я немного прочел о локализации в C #, но, возможно, я что-то упустил.

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

По своему опыту я могу сказать:

  1. Вам будет лучше создать один файл resx для локализации для всех форм.
  2. Назначить все локализуемые строки вручную (я сделал этов конструкторе).
  3. Храните каждую строку для каждой формы в различном локализуемом свойстве, например Form1_OkButtonText, Form2_OkButtonText.

Последний действительно имеет значение, когда вы переводите свое приложение на разные языки, потому что перевод может действительно зависеть от контекста.На одной из форм кнопка по умолчанию может называться OK, а на другой - Accept.Хотя на английском языке обе кнопки могут называться Ok, на некоторых других языках это будет звучать неловко, и потребуются разные названия.Это может быть проблематично, если вы используете одни и те же строки ресурсов для всех кнопок.

И чтобы смягчить проблемы многократного перевода нескольких одинаковых строк, вам следует использовать какое-то программное обеспечение для переводчика, которое содержит словарь строк и предоставляетВы с уже переведенными.

0 голосов
/ 26 ноября 2011

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

...