Pull to refresh

Шаблон проекта многоязычного WPF приложения

Reading time 2 min
Views 4.8K
Введение

Локализация приложения на WPF — не легкое занятие. Практически любое пособие по локализации WPF изобилует деталями и ручными шагами для реализации локализованного приложения.

Существующие решения

Локализация с помощью утилиты LocBaml, описанная в руководстве по локализации от Microsoft имеет множество преимуществ, однако сложна для поддержки. André van heerwaarde, в своей статье предложил упростить это решение с помощью настроенного шага сборки, он же написал утилиты для слияния переведенных текстовых фрагментов. Однако, в его статье, так же много ручных шагов.

Шаблон проекта Visual Studio

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

В процессе разработки приложения вы добавляете новые XAML файлы, не заботясь о локализации. По завершению внесения изменений выполните сборку проекта.

Настроенный шаг перед сборкой вызовет msbuild /t:updateuid [Имя проекта].csproj. Этот шаг автоматически добавляет x:Uid в каждый элемент, содержащий текстовые элементы.
После чего в процессе сборки будет автоматически запущен LocBaml, который найдет все текстовые элементы в XAML файлах и создаст CSV файл, содержащий текстовые элементы.
Следующий шаг запустит утилиту MergeLocBamlCsv от André van heerwaarde. В результате чего предыдущие переведенные фрагменты будут объединены с новыми. Утилита StripLocBamlCsv вырежет неиспользуемые элементы из CSV файлов.

Единственное, что вам придется сделать вручную, это добавление новых языков и собственно сам перевод.

Добавление нового языка

Для добавления нового языка в проект вам придется:
скопировать локализацию нейтрального языка в новый CSV файл
copy Translation\Translate.csv Translation\Translate.ru-RU.csv
открыть файл проекта в текстовом редакторе и после строчек:
<LocBamlCsv Include="Translation\Translate.de-DE.csv">
 <Culture>de-DE</Culture>
</LocBamlCsv>

добавить новый язык, например
<LocBamlCsv Include="Translation\Translate.ru-RU.csv">
 <Culture>ru-RU</Culture>
</LocBamlCsv>

После этого нужно переоткрыть проект в Visual Studio, если проект уже был открыт, то среда разработки спросит, желаете ли вы переоткрыть проект, для отражения внесенных изменений, ответьте 'Да'.
Если вы не допустили ошибок, то во вновь открытом проекте в папке Translation появится новый файл Translate.ru-RU.csv

Запустите сборку для обновления файлов трансляции, после чего можно открыть новый файл и приступить к переводу.

Загрузка

Ссылки
Tags:
Hubs:
+29
Comments 17
Comments Comments 17

Articles