-EDIT 2- разобрался, проверь мой ответ.Я должен перестать задавать вопросы о StackOverflow, я всегда выясняю это через пару минут:)
У меня есть следующий код (ну, примерно, с обнаружением и всем наверху):
Manager = new ResourceManager("EM250.Localization.Application",
Assembly.GetExecutingAssembly());
// CurrentCulture being fr-CA in this case
return Manager.GetString(Key, CurrentCulture);
Итак, я управляю своими ресурсами локализации, используя собственный класс, который я создал.
Я получил два файла, один из которых называется «Application.resx», а другой - «Application.fr-CA.resx».Оба установлены на «Встроенный ресурс».Когда я компилирую свой код, я получаю папку с именем «fr-CA» с файлом «Library.resources.dll».Что вполне нормально.
У кого-нибудь есть идеи, почему мой код не работает?Я получаю английские строки везде.
Обратите внимание, что это не проект ASP.NET, а настоящий проект WinForms.
-EDIT- Должен, вероятно, опубликовать остальную часть кода это инициализация моегоПриложение:
String LocaleLoad;
if(Configuration.GetString("Language") == null)
{
// Detect which if the computer is set in french.
switch(System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName)
{
case "fr":
LocaleLoad = "fr-CA";
break;
default:
LocaleLoad = "en-CA";
break;
}
}
else
{
LocaleLoad = Configuration.GetString("Language");
}
// Initialize the localization class.
Localization.Initialize(LocaleLoad);
А это мой класс по локализации:
/// <summary>
/// Initialize the culture info with the specific culture.
/// </summary>
/// <param name="Culture">The culture to load.</param>
public static void Initialize(string Culture)
{
CultureInfo NewCulture = new CultureInfo(Culture);
if(!(Localization.CurrentCulture == null || CurrentCulture.TwoLetterISOLanguageName == NewCulture.TwoLetterISOLanguageName))
{
CurrentCulture = NewCulture;
Thread.CurrentThread.CurrentCulture = NewCulture;
Thread.CurrentThread.CurrentUICulture = NewCulture;
OnCultureChanged();
}
Thread.CurrentThread.CurrentCulture = NewCulture;
Thread.CurrentThread.CurrentUICulture = NewCulture;
CurrentCulture = NewCulture;
foreach(Language Lang in ListLanguages)
{
if(Lang.DisplayName == CurrentCulture.NativeName)
{
CurrentLanguageValue = Lang;
}
}
Manager = new ResourceManager("EM250.Localization.Application", Assembly.GetExecutingAssembly());
}
/// <summary>
/// Get a single entry from the ressource file.
/// </summary>
/// <param name="Key">The value to get from the ressource file.</param>
public static string GetString(string Key)
{
return Manager.GetString(Key, CurrentCulture);
}