如何将字符串添加到仅属于一种语言的ASP.NET全局资源?

时间:2012-06-13 19:39:11

标签: asp.net localization

我有一个针对不同语言的全局资源文件:

Resource.resx
Resource.de-DE.resx
Resource.ro-RO.resx

在大多数情况下,Resource.resx中的所有字符串都有其他语言的本地化版本。

但是,我有一些字符串应该只存在于Resource.de-DE.resx但不存在Resource.resx。当我尝试在我的代码中使用它们时:

GetGlobalResourceObject("Resource", "Personal Identification Number")

我收到错误消息无法解析资源项'个人识别码'。当我以德语查看页面时,字符串仍然可以正确本地化,因为它存在于Resource.de-DE.resx中,但因为它不在Resource.resx中,我在Visual Studio中出现此错误,我想摆脱错误。

如何解决此问题,以便我不会收到此错误消息?我应该将特定于本地的字符串移动到另一个资源文件吗?

2 个答案:

答案 0 :(得分:0)

我刚刚复制了你的场景,它运行正常。只需创建另一个包含本地特定字符串的资源文件。希望这会有所帮助:)

答案 1 :(得分:0)

整个资源回退方法确实假设所有字符串都存在于基本语言中。

我想你有这种情况,因为你实现了一些仅适用于德语的功能,你不想在基础语言中添加不必要的资源,因为这会增加不需要它的语言的本地化工作。 / p>

一种解决方案是创建单独的本地资源文件。要么只将这一个翻译成德语(而不是其他语言),要么将其作为基础资源(没有de-DE语言代码,但仍然包含德语字符串)。

另一种解决方案(如果您无法创建本地资源文件且由于某种原因只能使用全局资源)将这些额外条目添加到您的基本全局资源(Resource.resx)并明确表示你不希望这些翻译。例如,将它们全部设为空白字符串,并使用“注释”字段来解释这些字符串仅用于德语。不是很好。