Internationaliserar gränssnittssträngar
- Ämnen:
- Developing
Skapat för:
- Developer
Med Java- och Javascript-API:er kan du internationalisera strängar i följande typer av resurser:
- Java-källfiler.
- JSP-skript.
- Javascript i klientbibliotek eller i sidkällan.
- Egenskapsvärden för JCR-nod som används i dialogrutor och komponentkonfigurationsegenskaper.
En översikt över internationalisering och lokalisering finns på Internationalisering av komponenter.
Internationalisering av strängar i Java- och JSP-kod
The com.day.cq.i18n
Med Java-paketet kan du visa lokaliserade strängar i användargränssnittet. The I18n
klassen innehåller get
som hämtar lokaliserade strängar från AEM. Den enda obligatoriska parametern i get
är stränglitteralen på engelska. Engelska är standardspråk för användargränssnittet. I följande exempel lokaliseras ordet Search
:
i18n.get("Search");
Att identifiera strängen på det engelska språket skiljer sig från vanliga internationaliseringsramverk där ett ID identifierar en sträng och används för att referera till strängen vid körning. Att använda den engelska stränglitteralen ger följande fördelar:
- Kod är lätt att förstå.
- Strängen i standardspråket är alltid tillgänglig.
Bestämma användarens språk
Det finns två sätt att avgöra vilket språk användaren föredrar:
- För autentiserade användare anger du språket i inställningarna för användarkontot.
- Språkinställningen för den begärda sidan.
Användarkontots language-egenskap är den metod som rekommenderas eftersom den är mer tillförlitlig. Användaren måste dock vara inloggad för att kunna använda den här metoden.
Skapa Java-objektet I18n
I18n-klassen innehåller två konstruktorer. Hur du avgör vilket språk användaren föredrar avgör vilken konstruktor som ska användas.
Om du vill visa strängen på det språk som anges i användarkontot använder du följande konstruktor (efter import com.day.cq.i18n.I18n)
:
I18n i18n = new I18n(slingRequest);
Konstruktorn använder SlingHTTPRequest
för att hämta användarens språkinställning.
Om du vill använda sidans språkområde för att fastställa språket måste du först hämta ResourceBundle för den begärda sidans språk:
Locale pageLang = currentPage.getLanguage(false);
ResourceBundle resourceBundle = slingRequest.getResourceBundle(pageLang);
I18n i18n = new I18n(resourceBundle);
Internationalisering av en sträng
Använd get
metoden I18n
objekt för att internationalisera en sträng. Den enda obligatoriska parametern i get
-metoden är strängen som ska internationaliseras. Strängen motsvarar en sträng i en Translator-ordlista. get-metoden söker upp strängen i ordlistan och returnerar översättningen för det aktuella språket.
Det första argumentet i get
Metoden måste följa följande regler:
- Värdet måste vara en stränglitteral. En variabel av typen
String
är inte acceptabelt. - Stränglitteralen måste vara uttryck på en enda rad.
- Strängen är skiftlägeskänslig.
i18n.get("Enter a search keyword");
Använda översättningstips
Ange översättningstips av den internationaliserade strängen för att skilja mellan dubblettsträngar i ordlistan. Använd den andra valfria parametern för get
metod för att tillhandahålla översättningstips. Översättningstipset måste exakt matcha kommentaregenskapen för objektet i ordlistan.
Ordlistan innehåller till exempel strängen Request
två gånger: en gång som ett verb och en gång som ett substantiv. I följande kod inkluderas översättningstipset som ett argument i get
metod:
i18n.get("Request","A noun, as in a request for a web page");
Inkludera variabler i lokaliserade meningar
Inkludera variabler i den lokaliserade strängen för att skapa sammanhangsbaserad betydelse i en mening. När du har loggat in i ett webbprogram visas till exempel meddelandet "Welcome back Administrator" på startsidan. Du har två meddelanden i din inkorg." Sidkontexten bestämmer användarnamnet och antalet meddelanden.
I ordlistan, representeras variablerna i strängar som index inom hakparenteser. Ange värdena för variablerna som argument för get
-metod. Argumenten placeras efter översättningstipset och indexen motsvarar argumentens ordning:
i18n.get("Welcome back {0}. You have {1} messages.", "user name, number of messages", user.getDisplayName(), numItems);
Den internationaliserade strängen och översättningstipset måste exakt matcha strängen och kommentaren i ordlistan. Du kan utelämna lokaliseringstipset genom att ange en null
som det andra argumentet.
Använda metoden Statisk hämtning
The I18N
klassen definierar en statisk get
-metod som är användbar när du behöver lokalisera ett litet antal strängar. Förutom parametrarna för ett objekts get
-metoden kräver den statiska metoden SlingHttpRequest
eller ResourceBundle
som du använder, beroende på hur du avgör vilket språk som användaren föredrar:
-
Använd användarens språkinställning: Ange SlingHttpRequest som den första parametern.
I18n.get(slingHttpRequest, "Welcome back {}. You have {} messages.", "user name, number of messages", user.getDisplayName(), numItems);
-
Använd sidspråket: Ange ResourceBundle som den första parametern.
I18n.get(resourceBundle,"Welcome back {}. You have {} messages.", "user name, number of messages", user.getDisplayName(), numItems);
Internationalisering av strängar i JavaScript-kod
Med Javascript-API:t kan du lokalisera strängar på klienten. Som med Java och JSP Javascript-API:t gör att du kan identifiera strängar för att lokalisera, tillhandahålla lokaliseringstips och ta med variabler i de lokaliserade strängarna.
The granite.utils
biblioteksmapp för klient innehåller Javascript-API:t. Om du vill använda API:t inkluderar du den här klientbiblioteksmappen på sidan. Lokaliseringsfunktionerna använder Granite.I18n
namnutrymme.
Innan du presenterar lokaliserade strängar måste du ange språkområdet med Granite.I18n.setLocale
funktion. Funktionen kräver språkkoden för språkområdet som ett argument:
Granite.I18n.setLocale("fr");
Om du vill presentera en lokaliserad sträng använder du Granite.I18n.get
funktion:
Granite.I18n.get("string to localize");
I följande exempel internationaliseras strängen "Welcome back":
Granite.I18n.setLocale("fr");
Granite.I18n.get("string to localize", [variables], "localization hint");
Funktionsparametrarna skiljer sig från Java I18n.get-metoden:
- Den första parametern är stränglitteralen som ska lokaliseras.
- Den andra parametern är en array med värden som ska matas in i stränglitteralen.
- Den tredje parametern är lokaliseringstipset.
I följande exempel används Javascript för att lokalisera administratören för välkomstsidan. Du har två meddelanden i din inkorg." mening:
Granite.I18n.setLocale("fr");
Granite.I18n.get("Welcome back {0}. You have {1} new messages in your inbox.", [username, numMsg], "user name, number of messages");
Internationalisering av strängar från JCR-noder
Gränssnittssträngar baseras ofta på egenskaper för JCR-noder. Till exempel jcr:title
egenskapen för en sida används vanligtvis som innehållet i h1
-element i sidkoden. The I18n
klassen innehåller getVar
metod för lokalisering av strängarna.
Följande exempel på JSP-skript hämtar jcr:title
från databasen och visar den lokaliserade strängen på sidan:
<% title = properties.get("jcr:title", String.class);%>
<h1><%=i18n.getVar(title) %></h1>
Ange översättningstips för JCR-noder
Liknar översättningstips i Java APIkan du ange översättningstips för att skilja på duplicerade strängar i ordlistan. Ange översättningstipset som en egenskap för noden som innehåller den internationaliserade egenskapen. Namnet på tipsegenskapen består av namnet på den internationaliserade egenskapen med namnet _commentI18n
suffix:
${prop}_commentI18n
Till exempel en cq:page
noden innehåller egenskapen jcr:title som lokaliseras. Tipset anges som värdet för egenskapen jcr:title_commentI18n.
Testa täckningen för internationalisering
Testa om du har internationaliserat alla strängar i användargränssnittet. Om du vill se vilka strängar som täcks anger du användarspråket till zz_ZZ och öppnar användargränssnittet i webbläsaren. De internationaliserade strängarna visas med en stub-översättning i följande format:
USR_*Default-String*_尠
I följande bild visas stub-förflyttningen för AEM hemsida:
Konfigurera språkegenskapen för inställningsnoden för användarkontot för att ställa in språket för användaren.
Noden preferences för en användare har en sökväg som den här:
/home/users/<letter>/<hash>/preferences
Experience Manager
- Utveckla användarhandboken - översikt
- Introduktion för utvecklare
- Komma igång med utveckling i AEM Sites – WKND-självstudiekurs
- AEM kärnbegrepp
- Struktur för det AEM användargränssnittet med pekskärm
- Koncepten i det AEM användargränssnittet med pekskärm
- AEM - riktlinjer och bästa praxis
- Använda bibliotek på klientsidan
- Developing and Page Diff
- Begränsningar för redigerare
- CSRF Protection Framework
- Datamodellering - David Nueschelers modell
- Bidrar till AEM
- Dokumentskydd
- Referensmaterial
- Skapa en webbplats med alla funktioner (Classic UI)
- Designer och Designer (Classic UI)
- Plattform
- Fusklapp för Sling
- Använda Sling-adaptrar
- Taggbibliotek
- Mallar
- Använda Sling Resource Merger i AEM
- Övertäckningar
- Namnkonventioner
- Skapa en ny GRE-fältkomponent
- Query Builder
- Taggar
- Anpassa sidor som visas av felhanteraren
- Anpassade nodtyper
- Lägga till teckensnitt för grafikåtergivning
- Ansluta till SQL-databaser
- Extern URL
- Skapa och använda jobb för avlastning
- Konfigurerar cookie-användning
- Så här programmässigt kommer du åt AEM JCR
- Integrera tjänster med JMX-konsolen
- Developing the Bulk Editor
- Utveckla rapporter
- eCommerce
- Komponenter
- Kärnkomponenter
- Formatsystem
- Komponenter - översikt
- AEM - Grunderna
- Utveckla AEM
- Utveckla AEM - kodexempel
- JSON-exporterare för innehållstjänster
- Aktivera JSON-export för en komponent
- Bildredigeraren
- Dekoration-tagg
- Använda Dölj villkor
- Konfigurera flera redigerare på plats
- Utvecklarläge
- Testa användargränssnittet
- Komponenter för innehållsfragment
- Hämta sidinformation i JSON-format
- Internationalisering
- Klassiska gränssnittskomponenter
- Headless Experience Management
- Headless och Hybrid with AEM
- Aktivera JSON-export för en komponent
- Enkelsidiga program
- SPA introduktion och genomgång
- SPA WKND - självstudiekurs
- Getting Started with SPA in AEM - React
- Komma igång med SPA i AEM - Angular
- Implementera en React Component for SPA
- SPA djupdykning
- SPA
- Utveckla SPA för AEM
- SPA Blueprint
- SPA
- Dynamisk mappning av modell till komponent för SPA
- SPA
- SPA och Adobe Experience Platform Launch Integration
- SPA- och serveråtergivning
- SPA referensmaterial
- HTTP-API
- Innehållsfragment
- Experience Fragments
- Utvecklingsverktyg
- Utvecklingsverktyg
- AEM Modernization Tools
- Dialogruteredigeraren
- Verktyget Dialogkonvertering
- Utveckla med CRXDE Lite
- Hantera paket med Maven
- Utveckla AEM projekt med Eclipse
- Skapa AEM projekt med Apache Maven
- Utveckla AEM projekt med IntelliJ IDEA
- Så här använder du VLT-verktyget
- Så här använder du proxyserververktyget
- AEM Brackets Extension
- AEM Developer Tools for Eclipse
- AEM
- Personanpassning
- Utöka AEM
- Anpassa sidredigering
- Anpassa konsolerna
- Anpassa vyer av Sidegenskaper
- Konfigurera din sida för gruppredigering av sidegenskaper
- Anpassa och utöka Content Fragments
- Utöka arbetsflöden
- Utöka Multi Site Manager
- Spårning och analys
- Cloud Services
- Skapa anpassade tillägg
- Forms
- Integrera tjänster med JMX-konsolen
- Developing the Bulk Editor
- Utöka Classic UI
- Testning
- Bästa praxis
- Mobil webb