我有一个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文件中查找这些资源?
答案 0 :(得分:1)
你可以采取其他措施使错误消失。转到Reshareper选项,然后转到Code Inspection
- > Inspection Severity
根据您使用的语言,您可以在此处找到Potential Code Quality Issues
,您可以设置Cannot resolve resource
或Cannot resolve resource item
的严重性,如果您不想搜索自己也可以搜索resharper选项并在Resource
中键入,这将提供您正在寻找的内容。
我们使用自己的ResourceManager实现,我们遇到了同样的问题,我们将它们设置为Hint / Suggestion,因此它们可见但不像错误。
答案 1 :(得分:0)
您的资源文件应该是相同的名称,但带有语言后缀。
例如
德语 WinFormStrings.de-DE.resx
WinFormStrings.fr-FR.resx
默认设置将使用WinFormStrings.resx
文件。
然后调用.GetString
将根据当前的线程文化
可以在此处找到解释此问题的演练:Walkthrough: Localizing Windows Forms