лучшая практика, чтобы сделать многоязычное приложение в c # / winforms?

<p>я пытался сделать приложения, подходящие для нескольких языков в c #, так как мне нужно работать над небольшим проектом, где это имеет место. я нашел в основном два способа сделать это:</p><p>установите для свойства localizable формы значение true, установите свойство language, заполните все метки и все такое, и все готово. главный недостаток, который я вижу в этом: как сделать другие вещи, которые не являются частью формы, готовыми для нескольких языков (например, всплывающие окна, файлы журналов или окна и т.д.).</p><p>создайте файл ресурсов, например, "lang.en-us.resx" и по одному для каждого языка, например "lang.nl-nl.resx", и заполните его строками. кажется, ide автоматически генерирует для меня класс, поэтому в коде я могу просто использовать lang.sometext. самый большой недостаток, который я вижу в этом: для каждой формы мне нужно самому установить все метки и другие заголовки в коде (и не похоже, что привязка данных работает с этими ресурсами).</p><p>я уверен, однако, что есть и другие способы сделать это.</p><p>итак, какова лучшая практика? что проще всего для небольших приложений (несколько форм, подключение к базе данных и т.д.) и что лучше всего подходит для больших приложений?</p>

<p>я всегда использовал файлы ресурсов для многоязычных приложений.<br> в интернете много статей, объясняющих, как их использовать.<br> <br> я использовал два разных способа:</p><ul> <li>файл ресурса для каждой формы</li> <li>глобальный файл ресурсов</li> </ul><p>файл/форму ресурса проще реализовать, вам нужно только ввести значения в файле ресурса, но я считаю, что этот подход сложнее поддерживать, поскольку метки разбросаны по всему приложению.</p><p>глобальный файл ресурсов позволяет вам централизовать все метки (изображения и т.д.) в одном файле (для каждого языка), но это означает ручную настройку меток в загрузке формы. этот файл также можно использовать для сообщений об ошибках и т.д.</p><p>вопрос вкуса ...</p><p>и последнее: я пишу программы на английском и французском, я использую "en" и "fr", а не "en-us" и "fr-fr". не усложняйте вещи, у разных фальшивок английского (американского, английского, австралийского и т.д.) мало различий, чтобы использовать только один (то же самое относится и к французскому).</p>

<p>недавно я написал программу с поддержкой как немецкого, так и английского языков. я был удивлен, узнав, что если я просто назвал свои английские ресурсы languageresources.resx и мои немецкие ресурсы languageresources.de.resx, он автоматически выбрал правильный язык. resxfilecodegenerator позаботился обо всем этом для меня.</p><p>обратите внимание, что поля в этих двух файлах были одинаковыми, и любые еще не введенные немецкие поля будут отображаться в приложении как английские, так как наиболее неспецифичным языком файлов является файл по умолчанию. при поиске строки она переходит от наиболее конкретной (например, .de-de.resx) к наименее конкретной (например, .resx).</p><p>чтобы получить ваши строки, используйте вызовы resourcemanager.getstring или resourcemanager.getobject. приложение должно предоставить вам resourcemanager бесплатно.</p>

<p>в интересах других, кто может столкнуться с этим (через 1+ лет после последнего поста), я являюсь автором профессионального продукта локализации, который делает весь процесс перевода чрезвычайно простым. это надстройка visual studio, которая извлекает все строки ".resx" из любого произвольного решения и загружает их в один файл, который можно перевести с помощью бесплатного автономного приложения (переводчики могут загрузить его с моего сайта). затем эта же надстройка импортирует переведенные строки обратно в ваше решение. чрезвычайно прост в использовании благодаря множеству встроенных средств защиты, множеству наворотов и онлайн-справке (вам это не понадобится). смотрите <a href="http://www.hexadigm.com">http://www.hexadigm.com</a> </p>