Приложение C #: локализация dll отсутствует после сборки установщика - PullRequest
1 голос
/ 11 августа 2011

Я работаю над этим приложением формы, где я использую локализацию в проекте C #, где различные текстовые записи хранятся в файлах ресурсов (GlobalLanguages.resx и GlobalLanguages.fr.resx).Они установлены для встраивания.

Все отлично работает при запуске приложения в режиме отладки / выпуска в VS 2008, и также работает, когда я запускаю exe из выходной папки вне VS 2008. Но когда я собираю проект установщика Visual Studio, чтобымой установщик и установить его на моем компьютере, локализация не работает.Даже если в папке установки есть файл .dll, содержащий значения .fr.resx.

Проект установщика настроен на включение вывода локализации основного проекта.И вывод текущего языкового стандарта установленного приложения в файлы журнала дает правильное значение, но тексты отображаются на языке по умолчанию.

Мы используем IlMerge для объединения нескольких файлов DLL в исполняемом файле, нотак как .dll для ресурса можно найти, я думаю, что это не должно быть проблемой.Я действительно все перепробовал, но сейчас я не в курсе ...

Надеюсь, вы, ребята, можете помочь.

Спасибо

1 Ответ

0 голосов
/ 12 августа 2011

Попробуйте это только для диагностики: (очевидно, вам нужно изменить имена классов / пространства имен).

 Type t = typeof(SomeClassInLanguageAssembly);
 Assembly languageAssembly = t.Assembly;
 Console.WriteLine("Current UI culture: "+Thread.CurrentThread.CurrentUICulture);
 Console.WriteLine("Resources in assembly:");
 languageAssembly.GetManifestResourceNames().ForEach(Console.WriteLine);
 ResourceManager r = new ResourceManager("Language.Assembly.Namespace.ResourceName", languageAssembly);
 Console.WriteLine("'YES' -> " + r.GetString("YES"));

Если я запускаю, он выводит, например:

Текущая культура интерфейса: fr

Ресурсы в сборке:

Company.Application.Language.Resources.resources

'ДА' -> Oui

...