Каков наилучший способ локализовать приложение WPF без LocBAML? - PullRequest
19 голосов
/ 18 сентября 2008

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

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

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

Ответы [ 4 ]

10 голосов
/ 02 июля 2009

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

8 голосов
/ 18 сентября 2008

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

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

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

0 голосов
/ 02 февраля 2011

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

0 голосов
/ 02 июля 2009

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

WPF Application Framework (WAF) => См. Пример локализации

...