Базовая локализация (нейтральный язык) - PullRequest
0 голосов
/ 27 августа 2018

У меня есть приложение WinForms в .Net4, где у меня проблемы с реализацией нескольких языков.

Отказ от ответственности: я искал и нашел много вопросов о глобализации / локализации, но подавляющее большинство пытается сделать что-то необычное или нестандартное. У меня проблемы с основными вещами из коробки. Я прочитал документацию, но у меня все еще есть проблемы.

У меня есть приложение WinForms, язык по умолчанию - английский. Мне нужно отобразить это на французском на французском ПК, это может быть либо fr-FR или fr-CA, поэтому я, когда я установил форму на localizable:=True, я изменил язык на "французский" и обновил метки, кнопки, и другие элементы управления формой. Эта часть, я Думаю Я сделал правильно.

Формируйте окна сообщений, я помещаю все свои строки в файл ресурсов (нажимая на мой проект, затем вкладку ресурсов). Я заменил строки в коде ссылками на my.ressource.{ressourcename}

Затем я добавил новый Resources.fr.resx в папку myproject и перевел все содержащиеся в ней строки.

Я попытался проверить это, добавив следующую строку в конструктор new () моей формы запуска.

Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr")

Я тоже пробовал:

Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-CA")

Приложение по-прежнему загружается на английском языке, даже элементы управления формой, для которых установлен нейтральный язык "французский".

В итоге, есть 4 вопроса:

  1. Правильно ли я поступаю?
  2. Правильно ли я создал файл французских ресурсов?
  3. Должен ли файл Resources.fr.resx находиться в папке My Project (рядом со значением по умолчанию Resources.resx, или он должен находиться в корневом каталоге? Или, в качестве альтернативы, я должен использовать новый файл, такой как MessageResources.resx и MessageResources.fr.resx и поместить их обоих в корень?
  4. Как заставить все приложение использовать французский вместо языка по умолчанию?

1 Ответ

0 голосов
/ 03 сентября 2018

Спасибо за вашу помощь. Оказывается, все мои настройки локализации были правильными. Проблема заключалась в том, что я использовал MSBuild.ILMerge.Task (пакет NuGet) для объединения моих сборок в один EXE-файл. Похоже, что это влияет на локализованные ресурсы.

Отключение этого слияния решило проблему. Я начну новый вопрос, более конкретный о том, как справиться с этим конкретным сценарием.

...