我在c#中有一个基于窗口的应用程序。我在哪里显示一些基于所选语言的消息框。它与表单级资源一起工作正常,但如果我想访问全局资源文件(项目级别)该怎么办。
ResourceManager res_man = new ResourceManager("Resources",typeof(Form2).Assembly);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ar-SA");
string s = res_man.GetString("String1");
MessageBox.Show("Arabic-" + s);
我试过这个,但任何不行的方法
更新的ans
答案 0 :(得分:1)
尝试改变当前文化而不是UI文化 -
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ar-SA");
我正在使用以下代码从特定文化的全局资源中获取特定值 -
ResourceManager myManager = new ResourceManager(typeof(Resources.Strings));
String currencySymbol = myManager.GetString("Currency", CultureInfo.GetCultureInfo("en-GB"));
答案 1 :(得分:1)
默认情况下,访问修饰符是内部的。你使用过PublicResXFileCodeGenerator吗?
在Visual Studio中打开RESX文件时,可以将Access Modifier设置为public。可以在表单顶部找到一个下拉框,用于更改访问修饰符。
之后您将可以访问:
var resxManager = new ResourceManager(typeof(Resource));
var currentString = resxManager.GetString("Practitioner", CultureInfo.GetCultureInfo("en-US"));
以下是相关问题:Visual Studio - Resx File default 'internal' to 'public'