Я читаю одну книгу в WPF, которая предоставляет метод для создания приложения для целей локализации. Что он предложил, и то же самое я сделал:
1) отредактируйте файл проекта .csproj и добавьте элемент en-US для создания локализованной сборки, содержащей локализованный встроенный baml en-US. Когда я компилировал проект, он создал подпапку en-US, содержащую en - США локализовали встроенный baml. Я взял его резервную копию.
2) Я сделал то же самое для fr-FR и создал для него резервную копию.
3) Затем я поместил обе созданные подпапки в папку приложения с именами en-US и fr-FR.
Книга предполагает, что если я изменю настройку культуры на fr-FR (через региональные настройки панели управления), будет использоваться локализованная сборка fr-FR.
Но я обнаружил, что независимо от культуры, она использует ан-американскую. Я знаю это, потому что я изменил культуру на fr-FR и удалил папку fr-FR, но все же приложение. работает, и когда один из США удаляется, он генерирует исключение.
Может кто-нибудь уточнить, где я делаю / неправильно понимаю?
Вот слова книги:
Подготовка заявки на локализацию
Следующим шагом является включение поддержки локализации для вашего проекта. Это займет всего один
изменить - вам нужно добавить следующий элемент в файл .csproj для вашего проекта в любом месте
в первом элементе:
EN-US
Это говорит компилятору, что культура по умолчанию для вашего приложения - английский (США).
Вы можете выбрать что-нибудь еще, если это уместно). Как только вы сделаете это изменение, процесс сборки изменится. В следующий раз, когда вы скомпилируете свое приложение, вы получите подпапку с именем en-US. Внутри этой папки находится спутниковая сборка с тем же именем, что и ваше приложение, и расширением .resources.dll (например, LocalizableApplication.resources.dll).
Эта сборка содержит все скомпилированные ресурсы BAML для вашего приложения, которые ранее были сохранены в вашей основной сборке приложения.
Теперь при запуске этого приложения общеязыковая среда выполнения (CLR) автоматически
ищет спутниковые сборки в нужном каталоге на основе региональных настроек компьютера и загружает правильный локализованный ресурс. Например, если вы работаете в культуре fr-FR, CLR будет искать подкаталог fr-FR и использовать находящиеся там сателлитные сборки.
Это означает, что если вы хотите добавить поддержку большего количества культур в локализованное приложение, вам просто нужно добавить дополнительные подпапки и вспомогательные сборки, не нарушая исходный исполняемый файл приложения.
Когда CLR начинает поиск спутниковой сборки, она следует нескольким простым правилам:
старшинство:
1. Во-первых, он проверяет наиболее конкретный каталог, который доступен. Это означает, что он ищет спутниковую сборку, ориентированную на текущий язык и регион (например, fr-FR).
2. Если он не может найти этот каталог, он ищет спутниковую сборку, ориентированную на текущий язык (например, fr).
3. Если он не может найти этот каталог, возникает исключение IOException.