Динамическая локализация WinForms - PullRequest
3 голосов
/ 12 октября 2009

У нас есть приложение winform для интеллектуального клиента на основе CAB (Composite Application Block).

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

Мы поддерживаем около 6 языков, включая восточно-азиатские (китайский / японский), европейские языки (русский, испанский, английский, голландский).

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

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

Рекомендуется ли динамически локализовать текст, не закрывая формы / представления? Или следует перезапустить приложение? Или закройте форму и снова откройте форму

Почему бы не поощрять динамическое изменение языка?

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

К сожалению, не существует хорошего решения для динамического изменения локали.

Гай Смит-Ферье написал книгу об интернационализации .NET (буквально), и вот код для его решения: http://www.dotneti18n.com/Downloads.aspx По моему опыту, он работает не на всех элементах управления, а делает его бесполезным.

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

0 голосов
/ 13 октября 2009

Я бы только проверял язык при запуске и загружал соответствующий файл ресурсов (.resx), чтобы загрузить все строки для вашего приложения. Вы можете сделать это своими силами, или я считаю, что .Net имеет встроенный способ сделать это с помощью файлов ресурсов.

Вы не хотите тратить впустую процессорное наблюдение за динамическим изменением языка. Как часто пользователь будет менять свои языковые настройки на ПК? Если они переключают языки на лету, они могут так же легко перезапустить ваше приложение.

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

...