Локализовать элементы управления формы из одного файла в библиотеке классов - PullRequest
0 голосов
/ 31 мая 2018

Я работаю над приложением WinForms на C #.С учетом идеи переноса приложения в ASP.NET в будущем решения имеют 2 проекта:

  1. Проект библиотеки классов с классом доступа к данным и папкой «Модель» с файлом на класс /модель.
  2. Проект приложения Windows Forms со всеми формами, пользовательскими элементами управления и их логикой.

Введенный в локализацию, я прочитал эту статью Microsoft.Согласно их первому шагу « Рекомендации по локализации », рекомендуется переместить все локализуемые ресурсы в отдельные библиотеки только для ресурсов.

Поскольку у меня уже есть проект библиотеки классов (проект 1) в своем решении я добавил новую папку «Локализация» и создал два файла ресурсов «Strings.resx» и «Strings.en.resx».(Язык по умолчанию - нидерландский.)

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

Я нашел этот пост, где все было сделано программно, но я не уверенесли это единственный / лучший подход.И как мне уведомить ResourceManager о файлах ресурсов в другом проекте (в том же решении).И вам все еще нужно установить для свойства Localizable формы значение True, если по умолчанию не используются файлы ресурсов для формы?

Любая помощь, чтобы отправить меня в нужном направлении, приветствуется!

1 Ответ

0 голосов
/ 31 мая 2018

Вы можете работать с этими файлами ресурсов как обычные классы.Вам просто нужно сделать ваши ресурсы доступными за пределами библиотеки классов, сделав их общедоступными.Для этого вы можете использовать любую из следующих опций:

  • Вы можете дважды щелкнуть файл ресурса и открыть его в режиме конструктора и на его панели инструментов установить раскрывающийся список Access Modifier.до Public.

  • Вы можете щелкнуть правой кнопкой мыши файл ресурсов и щелкнуть свойства, а затем в окне свойств установить Custom Tool в PublicResXFileCodeGenerator.

Затем класс ресурсов будет сгенерирован как открытый класс в вашей сборке.

Затем, чтобы получить доступ к этим ресурсам, вы можете добавить сборку в качестве ссылки на приложение Windows и использовать их, как и любые другие.классы, что-то вроде:

saveButton.Text = MyResourceAssembly.Resources.StringResources.Save;

Примечание:

  • Обычно локализация приложения Windows Forms отличается от приложения ASP.NET.В формах Windows вы полагаетесь на Localizable и Language свойства формы, такие как , описанные здесь .

  • Если по какой-либо причине вы хотели использовать эти файлы ресурсов, вы можете взглянуть на этот пример extender resource, который позволяет вам задавать текст элементов управления, используя ресурсфайлы во время разработки.

  • Если существует вероятность наличия языка RTL на ваших поддерживаемых языках, вы можете использовать форму RTL или вместо нее Панель RTL .

  • Рекомендуется украсить классы модели атрибутами аннотаций данных и попытаться использовать эти атрибуты также в Windows Forms.Например, вы можете реализовать IDataErrorInfo для своих моделей и использовать атрибуты проверки аннотации данных в Windows Forms, а также ASP.NET MVC.

...