我有一个要求,即除了英语之外,我的UI应该以5种不同的语言显示。
我创建了两个DLL
1)Component.dll 2)Component.resources.dll
Component.resources.dll只包含UI和类
中显示的所有字符串公共类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对象仍然指向englis dll路径,而且Thread.Current.Culture也是英文!
这有什么解决方案吗?我错过了什么。
答案 0 :(得分:0)
对于每种文化,您都应该为要支持的每种文化创建一个文件夹(在主程序所在的文件夹中)(id =两个字母的iso代码+可选的两个字母区域)。
在此文件夹中,放置* .resources.dll,仅包含目标文化的字符串/常量。
如果您在同一项目中创建了一个example.resx文件(对于默认区域性)和一个法语的example.fr.resx文件,Visual Studio会自动为您执行此操作。