.NET Локализованная карта сайта из базы данных?

У меня есть пользовательский sitemapprovider, который загружает страницы из базы данных.

Pages (pageid, fk_pageid (parent), title, url, show_in_menu)

Я хотел бы глобализировать / локализовать title страницы. Какой самый лучший метод?

1 ответ

Решение

При создании объектов SiteMapNode используйте конструктор, который позволяет указывать неявные / явные ключи ресурсов. Я бы порекомендовал идти с явными ключами ресурса.

http://msdn.microsoft.com/en-us/library/ms150104.aspx

"Чтобы программно указать ресурсы для локализации, либо задайте для значения implicitResourceKey уникальное имя, которое будет использоваться для идентификации локализованных ресурсов для узла, либо установите для visibleResourceKeys коллекцию пар" имя / значение "NameValueCollection, где name - это свойство узла или пользовательский атрибут. to localize и value содержит значения локализации для свойства узла или пользовательского атрибута. Локализованные значения можно затем установить в соответствующих файлах.resx. Для получения дополнительной информации о том, как локализовать Title, Description и любые пользовательские свойства объекта SiteMapNode, см. Практическое руководство. Локализация данных карты сайта. Требования к синтаксису коллекции clearResourceKeys см. в разделе NameValueCollection. "

Обычно для локализации статической карты сайта вы используете выражение ресурса, подобное следующему: "$Resources:<ClassName>,<KeyName>,<DefaultValue>",

Вместо этого добавьте <ClassName>, <KeyName>, а также <DefaultValue> Значения в поле visibleResourceKey NameValueCollection в порядке их появления в выражении, все добавляются с использованием одного и того же ключа.

Так что если бы ваше выражение было бы "$Resources:SiteMapResourceFileOrClass,RootNode.Title,My Root Node"вместо этого сделайте следующее:

explicitResourceKeys.Add("Title", "SiteMapResourceFileOrClass")
explicitResourceKeys.Add("Title", "RootNode.Title")
explicitResourceKeys.Add("Title", "My Root Node")

Вы можете сделать то же самое для описания.

Другие вопросы по тегам