Объедините LocBaml и Ресурсы в единую спутниковую сборку
-
07-07-2019 - |
Вопрос
Насколько я понимаю, рекомендуемый подход к локализации в WPF заключается в использовании инструмента LocBaml для извлечения локализуемых элементов, например, в. CSV-файл, перевести элементы на нужный язык и восстановить новую сборку спутника из этого CSV-файла. Однако из моих экспериментов это, кажется, вступает в конфликт с генерацией спутниковых сборок из файлов resources.resx, поскольку ни одна из них не объединяет ресурсы в один файл ресурсов, а просто переопределяет любую существующую спутниковую сборку.
Есть ли рекомендуемый подход (или, что еще лучше, существующий инструмент) для выполнения " слияния " вывода из LocBaml / generate и вывода запуска resgen для файла resources.resx (который по умолчанию выполняется VS при сборке). Кто-нибудь там занимается такими же проблемами?
Решение
Вы должны вручную выполнить генерацию .resources из LocBaml, а затем объединить ресурсы Resx и BAML с помощью компоновщика Assembly. Р>
Процесс выглядит примерно так:
LocBaml.exe /generate ..\obj\WpfLocalization.g.en-US.resources
/trans:Res\de.csv /out:de /culture:de
REM Combine resource files w/ Assembly Linker
al /template:WpfLocalization.exe
/embed:de\WpfLocalization.g.de.resources
/embed:..\..\obj\WpfLocalization.Properties.Resources.de.resources
/culture:de /out:de\WpfLocalization.resources.dll
(все в одной строке в командном файле). Р>
Вы можете поместить вышеперечисленное в пакетный файл, настроенный для вашего проекта. Помните, что LocBaml должен находиться в той же папке, что и ваши выходные файлы. Вы можете добавить это как задачу посткомпоновки.
Другие советы
Я предпочитаю использовать проект Расширение локализации WPF , который вы можете найти в codeplex , чтобы локализовать мой проект WPF.
Он позволяет использовать тот же подход, что и WinForms, и намного проще в использовании, чем LocBaml.
Немного погуглил и нашел эту страницу, описывающую несколько способов использования LocBaml, в которой приведено очень подробное описание того, как объединить сгенерированные ресурсы resources.resx и locbaml в один файл (используя al.exe). Р>
Локализация WPF с использованием LocBaml р>
На странице описаны три способа использования LocBaml, и я искал последний шаг в подходе 3. Кстати, много полезного в этой статье