Многоязычное приложение для Windows с использованием C # .NET

2

Я работаю над приложением на С#, я хочу сделать его многоязычным. У меня есть два варианта для этого, создавая отдельный файл ресурсов для всех файлов классов, второй создавая один общий файл ресурсов для всего приложения.

Я не уверен, какой вариант лучше, так что может кто-нибудь посоветует мне об этом? Если есть другой способ достижения многоязычной функциональности, а также, пожалуйста, дайте мне знать.

Приветствия:)

Теги:
internationalization

6 ответов

1
Лучший ответ

По моему опыту, проще всего использовать все ваши локализованные ресурсы в одном месте. Часто приложение имеет строки, которые используются в нескольких местах. Если у вас есть все ваши ресурсы в одном месте, вам нужно будет только один раз перевести повторяющуюся строку.

1

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

Мы используем Visual Localize на работе. Не то чтобы вы могли экспортировать свой текстовый ресурс и reimport после перевода, вы также можете изменить размер или изменить диалоги, чтобы они соответствовали новым размерам текста. Например. немецкий язык в полтора раза дольше, чем тот же текст на английском языке.

1

Мы обернули gettext и использовали это. Положительными являются то, что можно просто добавить новый перевод, и все работает. Человек может менять язык "на лету". И это легко для переводчиков, потому что можно просто отправить им простой текстовый файл, который они могут редактировать.

Мы еще не выпустили или не выпустили его в проект, но мы можем сделать это, если люди посчитают это интересным.

1

Я бы создал один файл ресурсов в каждой сборке (при необходимости).

Вы можете позволить VS создать класс для файла ресурсов, что позволяет безопасно получать доступ к ресурсам во время компиляции. (Вы получаете свойство для каждой строки.) Я думаю, что вы делаете это с помощью Build Action. Сгенерированный класс является внутренним. Таким образом, ресурсы доступны только внутри сборки, что имеет смысл.

1

Я использовал "Multi-Language Add-In" от Softwarebuero Jollans (http://jollans.com/tiki/tiki-index.php). Это коммерческий продукт, который достаточно хорошо поддерживается. Вы можете экспортировать строки из своего приложения в Visual Studio в электронную таблицу Excel для перевода, а затем повторно импортировать электронную таблицу в свое приложение. Затем языки будут автоматически скомпилированы во встроенные ресурсы.

1

Я предпочитаю использовать встроенную функцию локализации, включенную в IDE. Это может быть сложно, но он выполняет свою работу. Он генерирует отдельную DLL для каждого языка.

В случаях, когда у меня есть строки, отличные от UI, у меня есть один XML файл, содержащий все языки с языковыми строками, привязанными к уникальным идентификаторам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню