我正在尝试在我的应用程序中使用本地化 . 我有我的ui资源文件,在我的解决方案中名为“ui.resx”和“ui.de.resx” . 但是,我的实现中的某些内容是不正确的,我很难过 .
ResourceManager res_man;
CultureInfo culture;
string exception;
private void myForm_Load(object sender, EventArgs e)
{
culture = CultureInfo.CreateSpecificCulture("de");
res_man = new ResourceManager("MyApp.ui.resx", typeof(myForm).Assembly);
doTheThing();
}
private void doTheThing()
{
try
{
BTN_save.text = ui.SAVE;
//Do code here
}
catch(Exception e)
{
exception = e.toString();
}
}
当我运行程序时,它出错并且异常读取:
“异常:System.Resources.MissingManifestResourceException:找不到适合指定文化或中性文化的任何资源 . 确保”ui.resx.resources“在编译时正确嵌入或链接到程序集”myProgram“中,或者全部所需的卫星组件是可装载的并且是完全签名的 . “
1 回答
您应该使用类的全名(带命名空间)作为第一个参数:
要知道应该使用什么名称,请在
ui.resx
节点下打开ui.cs
并查看类的名称空间和类名,并使用它们,如上所示 .注意你不应该传递
"MyApp.ui.resx"
,而是传递"MyApp.ui"
然后,您可以简单地使用管理器获取特定文化的资源,如下所示:
Note:
您应该注意的另一件事是,有更简单的方法来阅读文化特定的资源 . 你可以简单地设置:
设置文化后,无论您在何处使用
MyApp.Ui.Key
,都将使用特定于该文化的Key
的值 .