2010-09-08 4 views
1

У меня есть требование, чтобы мой пользовательский интерфейс отображался на 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 - это английский!

Есть ли какие-либо решения? я что-то пропустил.

ответ

0

Для каждой культуры вы должны создать папку (в папке, где находится основная программа) для каждой культуры, которую вы хотите поддержать (id = двухбуквенный код iso + необязательная двухбуквенная область).

В этой папке вы помещаете * .resources.dll только с строками/константами для целевой культуры.

Visual Studio делает это автоматически для вас, если вы создаете файл example.resx (для культуры по умолчанию) и файл example.fr.resx для французского языка внутри того же проекта.

+0

Да, папка есть ... соответствующий языковой ресурс также есть .. но все же он не подходит. – siva

+0

О, я думал/надеялся, что это было легко. :-( – GvS