У меня есть требование, чтобы мой пользовательский интерфейс отображался на 5 разных языках, кроме английского.Проблема в интернационализации
Я создал две библиотеки DLL
1) Component.dll 2) Component.resources.dll
Component.resources.dll не содержит ничего, кроме всех строк, которые отображаются в пользовательском интерфейсе и класса
общественного класс PResources { частного статический System.Resources.ResourceManager resourceMgr = новый System.Resources.ResourceManager (TypeOf (PEditResources));
/// <summary>
/// Get NLS String method string method
/// </summary>
/// <param name="identifier"></param>
/// <returns></returns>
public static string GetNLSString(string identifier)
{
return resourceMgr.GetString(identifier, Thread.CurrentThread.CurrentUICulture);
}
/// <summary>
/// Returns the NLS Resource Mgr.
/// </summary>
/// <returns></returns>
public static System.Resources.ResourceManager GetNLSResourceMgr()
{
return resourceMgr;
}
}
В Component.dll для отображения текста метки я использую следующий
Label1.Text = PResources.GetNLSString ("IDS_LABEL1");
На английском языке он отлично работает ... Но когда языковые настройки изменены на французский или любой другой, отображаемая строка остается английским текстом.
Примечание: Строки Component.Resources.dll переведены на все языки.
Когда я отлаживался ... я обнаружил, что функция GetNLSString Thread.Current.UICulture является французской ... но объект resourceMgr все еще указывает на путь dll englis, а также Thread.Current.Culture - это английский!
Есть ли какие-либо решения? я что-то пропустил.
Да, папка есть ... соответствующий языковой ресурс также есть .. но все же он не подходит. – siva
О, я думал/надеялся, что это было легко. :-( – GvS