2011-01-27 59 views
1

我正在使用ASP.NET资源国际化。ASP.NET国际化 - 全局/共享资源键覆盖

我有以下结构

/App_LocalResources 
    Default.aspx.resx 

/App_GlobalResources 
    Commmon.resx 

现在我所期待的与ASP.Net资源是我的本地资源文件中共享全局键的功能覆盖。

举例来说,如果在我的的Default.aspx页,我有以下几点:

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

而且我有在我的两个全球性资源文件和地方,我希望当地键可以覆盖共享,但如果在本地资源中找不到,则仍然会遍历全局。

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

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

...它阻止你能够因为有明确的全球名声明的本地覆盖

我希望会有指定一个通用密钥的方式,并将其第一搜索本地资源,如果没有找到,则搜索全局资源,而无需指定明确的全局文件名。

这是可能的,有没有办法从ASP.Net资源获得这种类型的功能?

回答

1

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

当然总是会有创建和使用自己的ResourceManager的选项,但是从经验来看,多了比您想象的要痛苦得多。