Поддержка локализации для консольного приложения C #

Я создал простое консольное приложение для отображения строки «Hello World». Позже я принес файлы ресурсов для поддержки разных языков и поставил переведенную версию «Hello World». Я пытаюсь запустить console.exe в китайской ОС и ожидаю увидеть "Hello World" на китайском языке. К сожалению, здесь отображается английский.

После анализа выяснилось, что добавление .resx файлов создает в проекте отдельную папку с .resource dll для каждого языка (спутниковая сборка). Итак, если я помещаю .exe вместе с другими папками и запускаю, то «Hello World» отображается на китайском языке. Если я удаляю папки (.resource), а затем запускаю только .exe, то снова отображается «Hello World» на английском языке.

Есть ли способ создать .exe со всеми сопоставленными файлами ресурсов. Так что мне не нужно размещать папки вместе с .exe перед запуском .exe.

Кстати, я пытаюсь получить доступ к строкам с помощью Strings.STRING_NAME, где «Strings» - это имя файла ресурсов по умолчанию. Строковые файлы других языков имеют тип Strings.fr.resx, Strings.de.resx.

Пожалуйста, помогите в этом отношении.

Заранее спасибо.


person user3220129    schedule 24.02.2014    source источник
comment
Кажется, у этого есть решения: stackoverflow.com/questions/1453755/   -  person Knerd    schedule 24.02.2014
comment
Мне интересно. Какую проблему это должно решить? Какая польза от объединения всех сборок в один файл?   -  person Gusdor    schedule 24.02.2014
comment
Привет, Гусдор, основная проблема заключается в том, чтобы на удаленном компьютере был развернут единственный .exe, который воспроизводит локализованные сообщения.   -  person user3220129    schedule 24.02.2014
comment
Один из попыток обходного пути - опубликовать консольное приложение, в результате чего будет создан setup.exe с необходимыми переведенными файлами. Запуск setup.exe решил проблему. Но я не уверен, правильный ли это подход. Пожалуйста, помогите мне в этом отношении.   -  person user3220129    schedule 24.02.2014


Ответы (3)



Решение здесь:

https://stackoverflow.com/a/1955060/1028323 (многоязычное развертывание Windows Forms на одной сборке (ILMerge и сателлитные сборки / локализация) - возможно?)

person Only a Curious Mind    schedule 24.02.2014
comment
Спасибо, Лукас. Да, он уже настроен согласно вашему предложению. - person user3220129; 24.02.2014

Я немного смущен тем, что вы делаете, чтобы решить проблему с выбранной в данный момент культурой.

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

     System.Threading.Thread.CurrentThread.CurrentUICulture = new   System.Globalization.CultureInfo("en-US");
     System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
person mindfxxxedCoder    schedule 24.02.2014
comment
Привет, спасибо за предложение. Я постараюсь и дам результат в этом отношении. - person user3220129; 24.02.2014