【发布时间】:2010-03-05 23:02:45
【问题描述】:
我有一个从数据库加载页面的自定义站点地图提供程序。
页面(pageid、fk_pageid(父)、标题、url、show_in_menu)
我想对页面的title 进行全球化/本地化。最好的方法是什么?
【问题讨论】:
标签: .net localization globalization sitemapprovider sqlsitemapprovider
我有一个从数据库加载页面的自定义站点地图提供程序。
页面(pageid、fk_pageid(父)、标题、url、show_in_menu)
我想对页面的title 进行全球化/本地化。最好的方法是什么?
【问题讨论】:
标签: .net localization globalization sitemapprovider sqlsitemapprovider
当您创建 SiteMapNode 对象时,请使用允许您指定隐式/显式资源键的构造函数。我建议使用显式资源键。
http://msdn.microsoft.com/en-us/library/ms150104.aspx
“要以编程方式指定本地化资源,请将implicitResourceKey 的值设置为唯一名称,该名称将用于标识节点的本地化资源,或者将explicitResourceKeys 设置为名称/值对的NameValueCollection 集合,其中名称是节点属性要本地化的或自定义属性和值包含节点属性或自定义属性的本地化值。然后可以在适当的 .resx 文件中设置本地化值。有关如何本地化标题、描述和任何自定义属性的详细信息SiteMapNode 对象,请参阅如何:本地化站点地图数据。有关显式资源键集合的语法要求,请参阅 NameValueCollection。"
通常要本地化静态站点地图,您会使用如下资源表达式:"$Resources:<ClassName>,<KeyName>,<DefaultValue>"。
相反,将<ClassName>、<KeyName> 和<DefaultValue> 值按照它们在表达式中出现的顺序添加到explicitResourceKey NameValueCollection,所有这些都使用相同的键添加。
因此,如果您的表达式是 "$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node",请改为执行以下操作:
explicitResourceKeys.Add("Title", "SiteMapResourceFileOrClass")
explicitResourceKeys.Add("Title", "RootNode.Title")
explicitResourceKeys.Add("Title", "My Root Node")
您可以对描述执行相同的操作。
【讨论】: