Frage

Ich versuche, den im Suchfeld meiner SharePoint-Website angezeigten Text anzupassen.Die Standardeinstellung ist „Diese Site durchsuchen…“.

Ich habe eine Reihe von Artikeln gefunden, in denen erklärt wird, wie das geht (durch Überschreiben der Delegatensteuerung mit einer niedrigeren Sequenznummer), und es funktioniert gut.

Mein XML sieht so aus:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Control
        Id="SmallSearchInputBox"
        Sequence="10"
        ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.Office.Server.Search, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
        <Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
        <Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
        <Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
        <Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
        <Property Name="DropDownMode">ShowDD</Property>
        <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
        <Property Name="ScopeDisplayGroupName"></Property>
        <Property Name="FrameType">None</Property>
        <Property Name="QueryPromptString">DO A SEARCH!</Property>
    </Control>
</Elements>

Dies funktioniert einwandfrei, das Suchfeld zeigt "eine Suche durchführen!" wie erwartet.Ich möchte jedoch, dass diese Zeichenfolge lokalisiert wird.Wenn ich es tue

<Property Name="QueryPromptString">$Resources:MyResourceFile,CustomText;</Property>

Das Suchfeld zeigt $Resources:MyResourceFile,CustomeText;im wahrsten Sinne des Wortes, anstatt es zu bewerten.

Wie füge ich dort lokalisierte Zeichenfolgen ein?

Danke!

War es hilfreich?

Lösung

Die Linie <Property Name="QueryPromptString">$Resources:MyResourceFile,ResourceKey</Property> Funktioniert bei mir gut.Ich denke, dass Sie Ihre Ressourcendatei überprüfen sollten.Diese Datei sollte den ResourceKey enthalten, den Sie in dieser Eigenschaft verwenden möchten.

Wenn Sie die richtige Ressourcendatei und den richtigen Schlüssel verwenden, hängt der Text der Suchsteuerung von der Sprache der Website ab.Wenn Sie diesen Text dynamisch ändern möchten, wie Sie im Bild unten sehen, sollten Sie einige komplexere Schritte ausführen.

enter image description here

Schritte:

  1. Erstellen Sie Ihre benutzerdefinierte Klasse und erben Sie sie von SearchBoxEx
  2. Erstellen Sie eine neue QueryPromptString-Eigenschaft
  3. Definieren Sie eine sichere Steuerung
  4. Erstellen Sie eine Delegiertenkontrolle

Code für Schritte:

public class SearchBox : SearchBoxEx
{
    [Browsable(false)]
    public new string QueryPromptString
    {
        get
        {
            return base.QueryPromptString;
        }
        set
        {
            string fullKey = string.Format("$Resources:{0}", value);
            base.QueryPromptString = SPUtility.GetLocalizedString(fullKey, null, (uint)Thread.CurrentThread.CurrentUICulture.LCID);
        }
    }
}

<Control Id="SmallSearchInputBox"
           Sequence="10"
           ControlClass="LocalizedSearch.SearchBox"
           ControlAssembly="LocalizedSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71df3f77c17b7c69">
        <Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
        <Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
        <Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
        <Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
        <Property Name="DropDownMode">ShowDD</Property>
        <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
        <Property Name="ScopeDisplayGroupName"></Property>
        <Property Name="FrameType">None</Property>
        <Property Name="QueryPromptString">filename,key</Property>
  </Control>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top