我有一个要求,我的 UI 应该以英语以外的 5 种不同语言显示。
我创建了两个 DLL
Component.dll
Component.resources.dll
Component.resources.dll
只包含 UI 中显示的所有字符串和一个类
public class PResources
{
private static System.Resources.ResourceManager resourceMgr = new 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路径并且也是Thread.Current.Culture
英语!
有什么解决办法吗?我错过了什么吗?