Как лучше всего локализовать приложение WPF без LocBAML?

StackOverflow https://stackoverflow.com/questions/87184

Вопрос

Кажется, не существует хорошего способа локализовать приложение WPF.Кажется, MSDN думает, что засорение моего XAML x:Uidответом является создание CSV-файлов, а затем создание новых сборок (с использованием их примера кода!).Хуже того, этот процесс не касается локализации изображений, двоичных объектов (скажем, PDF-файлов) или строк, встроенных в код.

Итак, как можно локализовать приложение, которое:

  1. Содержит несколько сборок
  2. Содержит изображения и другие двоичные объекты (например:PDF-документы), которые необходимо локализовать
  3. Имеет строковые данные, которых нет в XAML (например: MessageBox.Show("Hello World");)
Это было полезно?

Решение

Я здесь не эксперт, но «засорять» ваш xaml x:Uids не хуже, чем «засорять» ваш код Windows Forms всей ерундой с таблицами строк, которую вам приходится делать для их локализации.

Насколько я понимаю, приложения WPF по -прежнему поддерживают «все ресурсы Framework CLR, включая струнные таблицы, изображения и т. Д.». Это означает, что вы можете иметь локализованные ресурсы.

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

Другие советы

Вам следует взглянуть на статью и доступный код. здесь.В нем описываются различные способы локализации приложений WPF с использованием LocBaml, пользовательских расширений разметки или прикрепленных свойств.ИМХО, лучшее решение — использовать расширения разметки и ресурсы Resx.Код содержит структуру локализации для этого.

Вы можете использовать старые файлы «ResX», которые поддерживают все упомянутые вами сценарии.Как это можно сделать в приложении WPF, объясняется здесь:

Платформа приложений WPF (WAF) => См. пример локализации

попробуйте утилиты Gnu GetText и вспомогательные приложения.Оно делает генерировать С# классы, основанные на ResourceManager и ResourceSets, и, конечно же, вы можете повторно использовать переводы для других частей вашего приложения - например, веб-страниц, собственного кода или iphone и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top