Frage

Ich habe andere ähnliche Fragen gesehen (wie Dieses hier), überprüfte Microsoft -Dokumentation (wie alle, die aus und beziehen sich auf die Seite Lokalisierung von Sandbox -Lösungen in SharePoint 2010) plus andere Artikel (Johnwpowell und SPbit).

Wie auch immer, ich kann das folgende Problem nicht lösen:

Mit einer SP2010-Sandbox-Lösung in VS2010 mit einem CODE-Webpart haben Wie lokalisiere ich den Titel des Webparts, Beschreibung (in .Webpart -Datei), Gruppe, QuickAddgroup (Elements.xml)?

Vielen Dank an alle

Zusätzliche Bemerkungen:

Ich kann den Titel und die Beschreibung des Feature sowie des WebPart -Inhalts nach Code (z. B. dem Text eines Etiketts) lokalisieren. Mir ist auch über benutzerdefinierte Attribute bekannt, um WebPart -Eigenschaften zu lokalisieren, wenn der Benutzer sie im Browser bearbeitet.

Ich konnte dies in SP2007 über einige Visual Studio Random Magic (BuildAction + CopyTooutput + CustomTool + Bereitstellungsort + Bereitstellungsart + Bearbeitung Manifest ... fragen Sie mich nicht wie :)), aber die meisten dieser Optionen sind nicht Erhältlich in einer Sandbox -Lösung.

Bearbeiten

Nach dem erneuten Lesen von Dokumenten habe ich entdeckt diese Notiz Dies setzt das endgültige Wort zumindest auf die .webpart -Datei:

Zeichenfolgen in der .webpart -Datei einer Sandbox -Lösung können nur lokalisiert werden, wenn lokalisierte Ressourcendateien als Teil einer landwirtschaftlichen Lösung separat in das Dateisystem installiert wurden. In den meisten Situationen, in denen Sie eine Sandbox -Lösung erstellen, haben Sie keine Erlaubnis, landwirtschaftliche Lösungen auf den Zielfarmen zu installieren. In solchen Fällen gibt es keine praktische Möglichkeit, die .webpart -Datei in einer Sandbox -Lösung zu lokalisieren. Dies bedeutet, dass der Name des Web -Teils in der Web -Teil -Galerie in Websites aller Sprachen gleich ist.

Irgendwelche Hinweise darauf, wie das zumindest programmgesteuert werden kann, z. B. das Webpart in einem Feature Event -Empfänger hinzufügen?

War es hilfreich?

Lösung

Ich gehe davon aus, dass Sie keine landwirtschaftliche Lösung installieren können, die Ressourcendateien als Teil eines Hybridansatzes enthält? Wenn Sie können, geht dies um das Problem.

Wenn nicht: (Entschuldigung, wenn Sie dies bereits wissen), wie Sie wahrscheinlich bekannt sind, sehen Ressourcen, auf die in einer .webPart (OR.DWP) -Datei verwiesen wird, ungefähr wie folgt aus: "$ ressourcen: core, webpartTitle;" Wo sich "Core" auf den Namen der Ressourcendatei bezieht und "WebPartTitle" bezieht sich auf den Ressourcenzeichennamen. Diese Ressourcen werden gelöst, wenn die Datei .webPart als Teil einer Funktion bereitgestellt wird, und sie werden durch Betrachtung der Sprache der Root -Site aufgelöst, da hier die Web -Teil -Galerie existiert. Es ist ein einmaliger Treffer, der nur am Standpunkt der Bereitstellung in die Website ist.

In einer Sandbox können Sie nur den Server installierten Ressourcendateien referenzieren und nicht als Teil der Sandbox -Lösung bereitgestellt. Der einzige Weg um diese Weise scheint es also zu sein, Code wie einen Feature -Empfänger zu verwenden. Wenn Sie aktiviert sind, empfehle ich Ihnen vor, in der Webpart -Datei in der Webpart -Galerie (mit SPWeb.getCatalog) einen Handle zu erhalten und dann eine einfache Suche und Ersetzung durchzuführen, indem Sie die Ressourcenreferenz programmatisch beheben Die Feature -Empfängerbaugruppe.

Andere Tipps

Ich baue diesen basierend auf Steve Antwort und anderen Links mit den wichtigsten Schritten. Es könnte hilfreich sein, wenn die nächsten kommen. Bitte korrigieren Sie, wenn Sie falsch sind.

  1. Holen Sie sich die Web -Part -Galerie als Spraist mit GetCatalog(SPListTemplateType.WebPartCatalog)
  2. Suchen Sie das Element in der Liste, die Ihrem Webpart entspricht, z. B. indem Sie angepasst werden SPListItem.Name
  3. Erstellen Sie eine XMLTEXTREADER basierend auf der Webpart -Datei mit XmlReader xmlReader = new XmlTextReader(listItem.File.OpenBinaryStream());
  4. Erstellen Sie ein xmldocument basierend auf dem Leser mit XmlDocument xmlDoc = new XmlDocument(xmlReader)
  5. Erstellen Sie einen Xpathnavigator basierend auf dem Dokument mit XPathNavigator navigator = xmlDoc.CreateNavigator()
  6. Holen Sie sich einen einzelnen Xpathnavigator -Knoten für Web -Teil -Titel mit XPathNavigator titleNode = navigator.SelectSingleNode(titleXPath), wobei TitlexPath "/webparts/webpart/data/properties/Eigenschaft [@name = title] lautet.
  7. Stellen Sie seinen Wert aus lokalisierten Ressourcen + autogenerierte Klasse mit titleNode.SetValue(MyResources.SomeClass.MyWebPartTitle)
  8. Wiederholen Sie 6. und 7. Für die Beschreibung des Web -Teils (xPath lautet "/webparts/webpart/data/Eigenschaften/Eigenschaft [@name = Beschreibung]))
  9. Speichern Sie das xmldocument mit xmlDoc.Save()
  10. All das einlegen FeatureReceiver.FeatureActivated Methode der Funktion mit Ihrem Webpart.

Andere Credits an Cliff, Anders und James.

In diesem Fall ist die einfache Möglichkeit, einen Web -Teil -Titel zu lokalisieren, das Titelfeld des Listenelements geändert:

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top