如何读取全局资源文件

8 浏览
0 Comments

如何读取全局资源文件

我有一个基于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("阿拉伯语-" + s);

我尝试了这个方法,但无论如何都不起作用。

对于更新答案:

enter image description here

0
0 Comments

文章标题:如何读取全局资源文件

尝试更改当前文化环境而不是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"));

"Resources.Strings"对我不可访问,请描述一下CurrencySymbol是什么?

"CurrencySymbol"只是一个变量,用来存储值。我正在更新答案。

但是Resources.Strings对我仍然不可访问。我添加了一个屏幕截图,请在问题面板中查看。

"Resources.Strings"是要从中获取数据的资源文件的名称。它将类似于Strings.en-GB.resxApp_GlobalResources文件夹中。

你能请澄清一件事吗,如果我有两个全局资源文件,一个用于英语,一个用于阿拉伯语,那么?

创建一个名为Strings.resx的默认文件,对于特定的语言,创建对应的语言代码文件。例如对于英国,它将是Strings.en-GB.resx。从此链接中检查语言代码 - msdn.microsoft.com/en-us/library/ms533052(v=vs.85).aspx

详细信息请参阅此链接 - msdn.microsoft.com/en-us/library/vstudio/…

你知道吗,如果我添加资源文件Strings.resx,它会显示为"Resources.Strings",但如果我将其重命名为"Strings.en-GB.resx",那么它对"Resources.Strings"不可访问。

必须有一个没有任何语言代码的文件。"Strings.resx"将是所有语言的默认文件。然后为每种语言添加一个新的资源文件,带有相应的语言代码。例如"Strings.en-GB.resx"。

让我们在聊天中继续讨论

0
0 Comments

访问修饰符默认为internal。您是否使用了PublicResXFileCodeGenerator?

当您在Visual Studio中打开RESX文件时,可以将访问修饰符设置为public。在窗体顶部有一个下拉框,可以更改访问修饰符。

然后,您将能够访问:

var resxManager = new ResourceManager(typeof(Resource));
var currentString = resxManager.GetString("Practitioner", CultureInfo.GetCultureInfo("en-US"));

这里可能会有一个相关问题:Visual Studio - Resx文件默认为'internal'改为'public'

文章如下:

默认情况下,资源文件的访问修饰符是internal。如果您使用了PublicResXFileCodeGenerator,可能会遇到无法读取全局资源文件的问题。在Visual Studio中打开RESX文件时,您可以将访问修饰符设置为public。在窗体顶部有一个下拉框,可以更改访问修饰符。

设置访问修饰符为public后,您就可以按照以下方式访问全局资源文件:

var resxManager = new ResourceManager(typeof(Resource));
var currentString = resxManager.GetString("Practitioner", CultureInfo.GetCultureInfo("en-US"));

上述代码中,ResourceManager是一个用于管理和访问资源文件的类。通过指定资源文件的类型,您可以创建一个资源管理器的实例。然后,使用GetString方法可以获取指定资源的值。在上述代码中,我们获取了名为"Practitioner"的资源,并使用en-US文化信息获取其值。

如果您遇到类似的问题,还可以参考以下相关问题:Visual Studio - Resx文件默认为'internal'改为'public'

0