Сделайте многоязычный пользовательский контроль - PullRequest
5 голосов
/ 18 октября 2011

Я разрабатываю пользовательский элемент управления, и теперь (в конце работы) я сталкиваюсь с проблемой создания его на нескольких языках. Я думаю, что мог бы поступить так:

  1. Для части пользовательского интерфейса я мог бы установить Localizable = true на управление и позволить VS генерировать все "записи", которые мне нужны для языка по умолчанию.
  2. Затем мне нужно вручную добавить все строки, которые я использую для динамических меню, сообщений и т. Д.
  3. Наконец, мне нужно создать файл всех ресурсов для нужных мне языков

Итак, используя код из MSDN

Assembly myAssembly = this.GetType().Assembly;
ResourceManager mgr = new ResourceManager("namespace.resource", myAssembly);
mgr.GetString(...) 

мою работу можно было (легко) выполнить.
Но у меня есть вопрос:

  1. Когда мой элемент управления (сгенерированная DLL) используется от конечного пользователя, могу ли я испытать некоторые затруднения при использовании new ResourceManager(...) из-за изменений основного пространства имен в целевом приложении?
    Подумайте, я не знаю, какое пространство имен будет использовать конечный пользователь.
  2. Когда я создаю языковые ресурсы, VS генерирует спутниковые сборки: есть ли способ, которым я могу "интегрировать" эти файлы в мою целевую DLL?
    Я хотел бы развернуть только один файл, если это возможно ...
  3. Есть ли лучший способ выполнить мою задачу?
  4. Есть ли что-то, что мне действительно нужно заботиться, когда я разрабатываю многоязыковой элемент управления?

Спасибо всем


ОБНОВЛЕНИЕ: (спасибо @ lak-b за некоторые предложения)

Я отвечаю на вопрос после некоторого исследования:

  1. Это правда, я могу жестко кодировать пространство имен, и оно не будет изменено , когда конечный пользователь установит мой контроль в своей форме
  2. Что ж, похоже, нелегкого пути.
    В любом случае этот пост предоставляет замечательный урок и отличное решение !!
  3. ... нет, на этот вопрос я все еще жду, когда кто-нибудь скажет мне лучший / более простой способ
  4. Некоторая критическая точка была указана в lak-b.
    Есть ли что-то еще, о чем я должен беспокоиться?

Еще раз спасибо

1 Ответ

2 голосов
/ 18 октября 2011

Взгляните Как создать многоязычное приложение на C # / WinForms?

  1. Вы можете «жестко закодировать» имя сборки здесь.
  2. Попробуйте это http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx
    1. Тебе просто нужно обдумать это и попробовать в действии! :) Короче - много чего надо заботиться
      • DateTime
      • Валюта
      • Первый день недели
      • Справа налево или слева направо и т. д.
...