Как локализовать название веб -части, описание, группа, Quickadd Group в решении песочницы

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/18309

Вопрос

Я видел другие подобные вопросы (например Вот этот), проверенная документация Microsoft (например, все, что связаны с страницей и связаны с страницей Локализация решений из песочницы в SharePoint 2010), плюс другие статьи (Johnwpowell а также Spbits).

В любом случае, я не могу решить следующую проблему:

Имея решение для песочницы SP2010 в VS2010 с веб-частями только для кода, Как локализовать название веб -части, описание (в. Whebpart file), Группа, Quickaddgroup (elements.xml)?

Спасибо всем

Дополнительные примечания:

Я могу локализовать заголовок и описание функций, а также контент веб -частей по коду (например, текст некоторой метки). Я также знаю о пользовательских атрибутах, чтобы локализовать свойства веб -части, когда пользователь редактирует их в браузере.

Я смог сделать это в SP2007, через некоторую визуальную студию случайную магию (Buildaction + CopyTOUTPUT + CustomTool + место развертывания + тип развертывания + редактирование манифест ... не спрашивайте меня, как :)), но большинство из этих вариантов не являются Доступно в решении песочницы.

Редактировать

После перечитывания документов я заметил эта записка которое ставит последнее слово, по крайней мере, в файл .Webpart:

Строки в файле .webpart решения для песочницы могут быть локализованы только в том случае, если локализованные файлы ресурсов были отдельно установлены в файловую систему как часть решения фермы. В большинстве ситуаций, в которых вы создаете решение из песочницы, это связано с тем, что у вас нет разрешения на установку сельскохозяйственных решений на целевых фермах. В таких случаях нет практического способа локализации файла .webpart в решении из песочницы. Это означает, что название веб -части в галерее веб -деталей одинаково на сайтах всех языков.

Любой намек на то, как сделать это, по крайней мере, программно, например, добавив веб -часть в галерею в приемнике событий?

Это было полезно?

Решение

Я предполагаю, что вы не можете установить решающее решение, которое включает в себя файлы ресурсов как часть гибридного подхода? Если вы можете, то это действительно обойдет проблему.

Если нет: (Извините, если вы уже знаете это), как вы, вероятно, знаете, ресурсы, упомянутые в файле .webpart (OR.Rwp), выглядят примерно так: «$ Ресурсы: Core, WebPartTitle;» Где «ядро» относится к имени файла ресурса, а «WebPartTitle» относится к имени строки ресурса. Эти ресурсы разрешаются, когда файл .webpart развернут как часть функции, и они решаются путем рассмотрения языка корневого сайта, потому что именно здесь существует галерея веб -деталей. Это один раз в точку обеспечения на сайте.

В песочнице вы можете ссылаться только на установленные файлы ресурсов, а не ресурсы, развернутые как часть решения песочницы. Таким образом, единственный способ обойти это, по -видимому, заключается в использовании кода, как приемник функций. В активированной функции я бы посоветовал вам справиться с файлом веб -частей в галерее веб -деталей (с использованием spweb.getcatalog), а затем выполните простой поиск и заменить, разрешив ссылку на ресурс программно, ища строку ресурса, которая хранится в Функция приемника в сборе.

Другие советы

Я строю этот, основанный на ответе Стива и других ссылках, с необходимыми основными шагами. Это может быть полезно для следующих. Пожалуйста, поправьте, если не так.

  1. Получить галерею веб -деталей в качестве шпателя с GetCatalog(SPListTemplateType.WebPartCatalog)
  2. Найдите элемент в списке, соответствующем вашей веб -части, например, сопоставив на SPListItem.Name
  3. Создайте XmltexTreader на основе файла веб -деталей с XmlReader xmlReader = new XmlTextReader(listItem.File.OpenBinaryStream());
  4. Создайте XMLDOCUMENT на основе читателя с XmlDocument xmlDoc = new XmlDocument(xmlReader)
  5. Создайте Xpathnavigator на основе документа с XPathNavigator navigator = xmlDoc.CreateNavigator()
  6. Получите один узел Xpathnavigator для заголовка веб -части с XPathNavigator titleNode = navigator.SelectSingleNode(titleXPath), где titlexpath "//webparts/webpart/data/properties/property [@name = title]
  7. Установить свою ценность, взятые из локализованных ресурсов + автогенерированный класс с titleNode.SetValue(MyResources.SomeClass.MyWebPartTitle)
  8. Повторите 6. и 7. Для описания веб -части (xpath - это "/webparts/webpart/data/properties/property [@name = description])
  9. Сохраните Xmldocument с xmlDoc.Save()
  10. Поместить все это в FeatureReceiver.FeatureActivated Метод функции, содержащей вашу веб -часть.

Другие кредиты Утес, Андерс а также Джеймс.

В этом случае простым способом локализации заголовка веб -части является изменение поля заголовка элемента списка:

SPList catalog = web.GetCatalog(SPListTemplateType.WebPartCatalog);

SPQuery query = new SPQuery();
query.Query = string.Format( @"<Where><Eq><FieldRef Name='LinkFilename'/><Value Type='Computed'>{0}</Value></Eq></Where>", webPartName);

SPListItem webPartItem = catalog.GetItems(query).Cast<SPListItem>().FirstOrDefault();
webPartItem[SPBuiltInFieldId.Title] = WebPartsResources.Title;
webPartItem.Update();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top