Я пытаюсь использовать спутниковые сборки для локализации в приложении WinForms. Структура каталогов выглядит следующим образом:Локализация со спутниковыми сборками
- бин
- Program.exe
- де
- Program.resources.dll
В программе. exe, этот код выполняется в Main
метод:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
Application.Run(new Form());
Я проверил выход FUSLOGVW.exe:
*** Assembly Binder Log Entry (5/30/2012 @ 5:19:37 PM) *** The operation failed. Bind result: hr = 0x80070002. The system cannot find the file specified. Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Running under executable D:\tmp\bin\Program.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = paulius_l LOG: DisplayName = Program.resources, Version=1.0.0.0, Culture=de, PublicKeyToken=... (Fully-specified) LOG: Appbase = file:///D:/tmp/bin/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = Program.exe Calling assembly : Program, Version=1.0.0.0, Culture=neutral, PublicKeyToken=.... === LOG: Start binding of native image Program.resources, Version=1.0.0.0, Culture=de, PublicKeyToken=.... WRN: No matching native image found. LOG: IL assembly loaded from D:\tmp\bin\de\Program.resources.dll.
Это выглядит хорошо, однако строки просто не локализованы - по умолчанию строки из program.exe все еще используются.
Чтобы получить строки, я использую класс Visual Studio Res
из Res.resx
.
Что мне здесь не хватает?
Редактировать: добавлен полный вывод FUSLOGVW, для тех, кто его понимает лучше, чем я.
Вы пытались настроить UICulture в Form-Constructor? – Jobo
Да, у меня есть, перед вызовом InitializeComponent(). Эффект тот же. То есть никакого эффекта. –
Вы проверили (возможно, с рефлектором), что в вашей спутниковой сборке есть разные струнные ресурсы? – MerickOWA