ASP.NET国际化 - 全局/共享资源密钥覆盖

时间:2011-01-27 14:59:33

标签: c# asp.net localization internationalization

我正在使用ASP.NET资源国际化。

我有以下结构

 /App_LocalResources
     Default.aspx.resx

 /App_GlobalResources
     Commmon.resx

现在,我希望ASP.Net资源能够覆盖本地资源文件中的共享全局密钥。

例如,如果在我的 Default.aspx 页面中,我有以下内容:

<asp:Literal Text="<%$ Resources:FirstName %>" runat="server" />

我的全局资源文件和本地都有 FirstName ,我希望本地密钥覆盖共享,但如果在本地资源中找不到,则仍然会覆盖到全局。

我发现的问题是能够使用全局资源需要您提供全局资源文件名。

<asp:Literal Text="<%$ Resources:Common,FirstName %>" runat="server" />

...由于显式的全局文件名声明

,它阻止您能够拥有本地覆盖

我希望有一种方法可以指定一个通用密钥,并让它首先搜索本地资源,如果没有找到,则搜索全局资源,而不需要指定显式的全局文件名。

这是否可行,是否有办法从ASP.Net资源获得此类功能?

1 个答案:

答案 0 :(得分:1)

这不是资源在.NET AFAIK中工作的方式 - 我相信你最好的办法是封装资源访问是一种getter方法,它可以尝试匹配给定密钥的本地资源,然后再回退到全球的。虽然不是很漂亮。

当然,总是可以选择创建和使用自己的ResourceManager,但是从经验来看,很多比你想象的更痛苦。