.NETは、データベースからサイトマップをローカライズ?
-
24-09-2019 - |
質問
私は、データベースからロードするページのカスタムsitemapproviderを持っています。
のページの(pageidに、fk_pageid(親)、タイトル、URL、show_in_menu)
私は、ページのtitle
をローカライズ/国際化したいと思います。最善の方法は何ですか?
解決
あなたのSiteMapNodeオブジェクトを作成するとき、あなたは暗黙的/明示的なリソースキーを指定することができますコンストラクタを使用します。私は明示的なリソースキーと一緒に行くお勧めします。
http://msdn.microsoft.com/en-us/library/ ms150104.aspxする
"プログラム名は、ノードプロパティである名前/値のペアのNameValueCollectionのコレクションにノードまたは集合explicitResourceKeysためのローカライズされたリソースを識別するために使用される一意の名前にimplicitResourceKeyの値を設定するのいずれか、ローカライズするためのリソースを指定しますまたはカスタム属性は、ローカライズ、値がノードのプロパティまたはカスタム属性のローカライゼーション値が含まれています。ローカライズされた値は、適切なの.resxファイルに設定することができます。タイトル、説明、およびAのいずれかのカスタムプロパティをローカライズする方法の詳細については、 SiteMapNodeオブジェクト、どのように参照してください。。ローカライズサイトマップデータexplicitResourceKeys収集の構文要件については、NameValueCollectionのを参照してください "
通常、静的なサイトマップをローカライズするには、次のようなリソース表現使用します。"$Resources:<ClassName>,<KeyName>,<DefaultValue>"
を
その代わり、それらはすべて同じ鍵を使用して追加、式の中で現れる順にexplicitResourceKey NameValueCollectionのに<ClassName>
、<KeyName>
、および<DefaultValue>
値を追加します。
あなたの表現が"$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node"
されているだろうもしそうなら、代わりに次の操作を行います:
explicitResourceKeys.Add("Title", "SiteMapResourceFileOrClass")
explicitResourceKeys.Add("Title", "RootNode.Title")
explicitResourceKeys.Add("Title", "My Root Node")
あなたは説明のために同じことを行うことができます。