无法解析资源项

时间:2016-07-12 15:11:04

标签: .net vb.net resharper resx localizable.strings

我有一个VB.NET项目,我有一个表单(frmRun),我使用不同语言的几个资源文件(即English.resx,Portuguese.resx等)在我的代码中,我已经包含了System的命名空间.Resources并定义了一个资源管理器如下:

Private rm As ResourceManager

在启动时或当用户从菜单中选择语言时,我设置了资源管理器:

 rm = New ResourceManager("MyRootNamespace." & currentItem.Text, System.Reflection.Assembly.GetExecutingAssembly())

其中currentItem.Text是“English.resx”等。由于rm是在类级别定义的,我现在可以轻松地选择我想要为所选语言显示的字符串:

btnStartStop.Text = rm.GetString("btnStartStop_Start")

此资源字符串“btnStartStop_Start”在English.resx(英文)和Portuguese.resx(葡萄牙语)中定义。

我正在使用JetBrains Resharper,问题是IDE在垂直滚动条中显示错误,因为我使用rm.GetString表示无法解析它们。如果我点击IDE左栏中的灯泡,它会告诉我可以通过将此添加到资源项来解决此问题。当我这样做时,它将它添加到表单resx文件中。在这种情况下,此字符串进入“frmRun.resx”,错误消失。但是我没有使用frmRun.resx,我特意告诉它使用不同的resx文件(English.resx等)。有趣的是,尽管这些在我的IDE的垂直scollbar中显示为错误,但它们不是编译错误该应用程序编译/运行正常。

除了告诉它隐藏/不通过检查显示这些资源之外,我怎么能忽略在表单resx文件中查找这些资源?

2 个答案:

答案 0 :(得分:1)

你可以采取其他措施使错误消失。转到Reshareper选项,然后转到Code Inspection - > Inspection Severity根据您使用的语言,您可以在此处找到Potential Code Quality Issues,您可以设置Cannot resolve resourceCannot resolve resource item的严重性,如果您不想搜索自己也可以搜索resharper选项并在Resource中键入,这将提供您正在寻找的内容。

我们使用自己的ResourceManager实现,我们遇到了同样的问题,我们将它们设置为Hint / Suggestion,因此它们可见但不像错误。

enter image description here

答案 1 :(得分:0)

您的资源文件应该是相同的名称,但带有语言后缀。

例如

德语

WinFormStrings.de-DE.resx

法语

WinFormStrings.fr-FR.resx

默认设置将使用WinFormStrings.resx文件。

然后调用.GetString将根据当前的线程文化

选择正确的文件

可以在此处找到解释此问题的演练:Walkthrough: Localizing Windows Forms