Как локализовать приложение WPF с файлами RESX в подкаталогах - PullRequest
1 голос
/ 09 марта 2019

У моей команды есть несколько проектов WPF, написанных с использованием XAML.Недавно мы добавили большое количество локальных файлов RESX для каждого проекта.Чтобы сохранить порядок, меня попросили сохранить эти файлы в [Project]> Localization> [locale]

Теперь, когда мы запускаем приложение в локали не из США, строки извлекаются изсоответствующий файл RESX.Мы попытались обновить пространства имен в свойствах файлов RESX, а также установить для них значение Public, чтобы в результате был создан получившийся конструктор.Единственный способ заставить все работать - переместить файлы локали RESX непосредственно в каталог свойств проекта.

Есть ли возможность обновить XAML для поиска файлов локали RESX в подкаталоге?

РЕДАКТИРОВАТЬ XAML Codebase и Solution Explorer

Я приложил изображение проблемы для пояснения.

Некоторые изменения кода, которые мы попробовали:
1) Мы попытались установить пространство имен для xmlns: res = "clr-namespace: [PROJECT] .CoreUI. Локализация "
2) Попытка установить пространство имен на xmlns: res = "clr-namespace: [PROJECT]. CoreUI"
3) Мы также попытались изменить пространство имен пользовательского инструмента в файле RESX, чтобы оно соответствовало текущему пространству имен My.Properties кака также CoreUI.Properties

Мы также подтвердили, что для Модификаторов доступа для Resources.resx и Resources.ru.resx (например) задано значение Public и оба действия Build Actionsпоказать "Встроенный ресурс"

1 Ответ

1 голос
/ 12 марта 2019

Спасибо за помощь!

Мой коллега действительно наткнулся на еще один пост здесь, который мы как-то пропустили во время бесчисленных поисков:

Поместить переведенные файлы resx в другую папку в Visual Studio?

Короче говоря, мы думали о поиске проекта в подкаталогах для файлов RESX. На самом деле нам нужен файл RESX для поиска уже созданного дизайнера в цепочке.

<ItemGroup>
<EmbeddedResource Include="Localization\ar\Resources.ar.resx" >
<ManifestResourceName>$(TargetName).Properties.%(Filename)</ManifestResourceName>
</EmbeddedResource>

Ввод ManifestResourceName, по-видимому, сообщает файлу RESX, что у нас уже есть конструктор, а не новый.

Еще раз спасибо за помощь всем!

...