Подтвердить что ты не робот

Каков наилучший способ локализации приложения WPF, без LocBAML?

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

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

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

Ответ 1

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

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

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

Ответ 2

Вы должны посмотреть на статью и код, доступные здесь. В нем описываются различные способы локализации приложений WPF с использованием LocBaml, пользовательских расширений разметки или прикрепленных свойств. IMHO лучшим решением является использование расширений разметки и ресурсов Resx. Для этого код содержит инфраструктуру локализации.

Ответ 3

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

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

Ответ 4

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