Beschrijving
Gebruik de chrome.i18n infrastructuur om internationalisering in uw hele app of extensie te implementeren.
Manifest
Als een extensie een map /_locales heeft, moet het manifest "default_locale" definiëren.
Concepten en gebruik
Je moet alle voor de gebruiker zichtbare tekstfragmenten in een bestand met de naam messages.json plaatsen. Telkens wanneer je een nieuwe taal toevoegt, maak je een bestand messages aan in een map met de naam /_locales/_localeCode_ , waarbij localeCode een code is, bijvoorbeeld en voor Engels.
Hier is de bestandsstructuur voor een geïnternationaliseerde extensie die Engels ( en ), Spaans ( es ) en Koreaans ( ko ) ondersteunt:

Ondersteuning voor meerdere talen
Stel dat u een extensie hebt met de bestanden die in de volgende afbeelding worden weergegeven:

Om deze extensie te internationaliseren, geef je elke voor de gebruiker zichtbare tekenreeks een naam en plaats je deze in een berichtenbestand. Het manifest, de CSS-bestanden en de JavaScript-code van de extensie gebruiken de naam van elke tekenreeks om de gelokaliseerde versie ervan op te halen.
Zo ziet de extensie eruit wanneer deze geïnternationaliseerd is (merk op dat deze nog steeds alleen Engelse tekst bevat):

Enkele opmerkingen over internationalisering:
- Je kunt elke ondersteunde taalinstelling gebruiken. Als je een niet-ondersteunde taalinstelling gebruikt, negeert Google Chrome deze.
In
manifest.jsonen CSS-bestanden kun je naar een tekenreeks met de naam messagename verwijzen, bijvoorbeeld zo:__MSG_messagename__In de JavaScript-code van je extensie of app kun je naar een tekenreeks met de naam messagename verwijzen, bijvoorbeeld zo:
chrome.i18n.getMessage("messagename")Bij elke aanroep van
getMessage()kunt u maximaal 9 tekenreeksen opgeven die in het bericht moeten worden opgenomen. Zie Voorbeelden: getMessage voor meer informatie.Sommige berichten, zoals
@@bidi_diren@@ui_locale, worden door het internationaliseringssysteem geleverd. Zie de sectie 'Voorgedefinieerde berichten' voor een volledige lijst met voorgedefinieerde berichtnamen.In
messages.jsonheeft elke voor de gebruiker zichtbare tekenreeks een naam, een "message"-item en een optioneel "description"-item. De naam is een sleutel zoals "extName" of "search_string" die de tekenreeks identificeert. Het "message" specificeert de waarde van de tekenreeks in deze taal. De optionele "description" biedt hulp aan vertalers, die mogelijk niet kunnen zien hoe de tekenreeks in uw extensie wordt gebruikt. Bijvoorbeeld:{ "search_string": { "message": "hello%20world", "description": "The string we search for. Put %20 between words that go together." }, ... }
Voor meer informatie, zie Formaten: Taalspecifieke berichten .
Zodra een extensie is geïnternationaliseerd, is het vertalen ervan eenvoudig. Je kopieert messages.json , vertaalt het en plaatst de kopie in een nieuwe map onder /_locales . Om bijvoorbeeld Spaans te ondersteunen, plaats je een vertaalde kopie van messages.json in /_locales/es . De volgende afbeelding toont de vorige extensie met een nieuwe Spaanse vertaling.

Voorgedefinieerde berichten
Het internationaliseringssysteem biedt een aantal vooraf gedefinieerde berichten om u te helpen bij het lokaliseren. Deze omvatten @@ui_locale , waarmee u de huidige UI-taal kunt detecteren, en een aantal @@bidi_... berichten waarmee u de tekstrichting kunt detecteren. Deze laatste berichten hebben vergelijkbare namen als constanten in de BIDI (bidirectionele) API van de gadgets .
Het speciale bericht @@extension_id kan worden gebruikt in CSS- en JavaScript-bestanden, ongeacht of de extensie of app gelokaliseerd is. Dit bericht werkt niet in manifestbestanden.
De volgende tabel beschrijft elk vooraf gedefinieerd bericht.
| Berichtnaam | Beschrijving |
|---|---|
@@extension_id | De extensie- of app-ID; u kunt deze tekenreeks gebruiken om URL's te construeren voor bronnen binnen de extensie. Zelfs niet-gelokaliseerde extensies kunnen dit bericht gebruiken. Let op: dit bericht mag niet in een manifestbestand worden gebruikt. |
@@ui_locale | De huidige landinstelling; u kunt deze tekenreeks gebruiken om landinstelling-specifieke URL's te maken. |
@@bidi_dir | De tekstrichting voor de huidige landinstelling, ofwel "ltr" voor talen die van links naar rechts worden gelezen, zoals Engels, of "rtl" voor talen die van rechts naar links worden gelezen, zoals Arabisch. |
@@bidi_reversed_dir | Als @@bidi_dir "ltr" is, dan is dit "rtl"; anders is het "ltr". |
@@bidi_start_edge | Als @@bidi_dir "ltr" is, dan is dit "links"; anders is het "rechts". |
@@bidi_end_edge | Als @@bidi_dir "ltr" is, dan is dit "rechts"; anders is het "links". |
Hier is een voorbeeld van het gebruik van @@extension_id in een CSS-bestand om een URL samen te stellen:
body {
background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
}
Als de extensie-ID abcdefghijklmnopqrstuvwxyzabcdef is, dan wordt de vetgedrukte regel in het vorige codefragment als volgt:
background-image:url('chrome-extension://abcdefghijklmnopqrstuvwxyzabcdef/background.png');
Hier is een voorbeeld van het gebruik van @@bidi_* berichten in een CSS-bestand:
body {
direction: __MSG_@@bidi_dir__;
}
div#header {
margin-bottom: 1.05em;
overflow: hidden;
padding-bottom: 1.5em;
padding-__MSG_@@bidi_start_edge__: 0;
padding-__MSG_@@bidi_end_edge__: 1.5em;
position: relative;
}
Voor talen die van links naar rechts worden geschreven, zoals het Engels, worden de vetgedrukte regels als volgt:
dir: ltr;
padding-left: 0;
padding-right: 1.5em;
Locaties
Je kunt kiezen uit vele landinstellingen, waaronder enkele (zoals en ) die het mogelijk maken dat één vertaling meerdere varianten van een taal ondersteunt (zoals en_GB en en_US ).
Je kunt je extensie lokaliseren naar elke taal die wordt ondersteund door de Chrome Web Store. Als je taal hier niet wordt vermeld, kies dan het dichtstbijzijnde alternatief. Als de standaardtaal van je extensie bijvoorbeeld "de_CH" is, kies dan "de" in de Chrome Web Store.
| Landcode | Taal (regio) |
|---|---|
ar | Arabisch |
am | Amhaars |
bg | Bulgaars |
bn | Bengaals |
ca | Catalaans |
cs | Tsjechisch |
da | Deens |
de | Duits |
el | Grieks |
en | Engels |
en_AU | Engels (Australië) |
en_GB | Engels (Groot-Brittannië) |
en_US | Engels (VS) |
es | Spaans |
es_419 | Spaans (Latijns-Amerika en de Caraïben) |
et | Ests |
fa | Perzisch |
fi | Fins |
fil | Filipijns |
fr | Frans |
gu | Gujarati |
he | Hebreeuws |
hi | Hindi |
hr | Kroatisch |
hu | Hongaars |
id | Indonesisch |
it | Italiaans |
ja | Japanse |
kn | Kannada |
ko | Koreaans |
lt | Litouws |
lv | Lets |
ml | Malayalam |
mr | Marathi |
ms | Maleis |
nl | Nederlands |
no | Noors |
pl | Pools |
pt_BR | Portugees (Brazilië) |
pt_PT | Portugees (Portugal) |
ro | Roemeense |
ru | Russisch |
sk | Slowaaks |
sl | Sloveens |
sr | Servisch |
sv | Zweeds |
sw | Swahili |
ta | Tamil |
te | Telugu |
th | Thais |
tr | Turks |
uk | Oekraïens |
vi | Vietnamees |
zh_CN | Chinees (China) |
zh_TW | Chinees (Taiwan) |
Zoek naar berichten
Je hoeft niet elke tekenreeks voor elke ondersteunde taal te definiëren. Zolang het messages.json bestand van de standaardtaal een waarde bevat voor elke tekenreeks, werkt je extensie of app, ongeacht hoe summier de vertaling is. Zo zoekt het extensiesysteem naar een bericht:
- Doorzoek het berichtenbestand (indien aanwezig) op de door de gebruiker ingestelde taal. Als de taalinstelling van Google Chrome bijvoorbeeld is ingesteld op Brits Engels (
en_GB), zoekt het systeem eerst naar het bericht in/_locales/en_GB/messages.json. Als dat bestand bestaat en het bericht erin staat, hoeft het systeem niet verder te zoeken. - Als de voorkeurstaal van de gebruiker een regio bevat (dat wil zeggen, de taalcode begint met een underscore: _), zoek dan in de taalcode zonder die regio. Als het bestand met berichten
en_GBbijvoorbeeld niet bestaat of het bericht niet bevat, zoekt het systeem in het bestand met berichten in deen. Als dat bestand bestaat en het bericht erin staat, zoekt het systeem niet verder. - Zoek in het berichtenbestand naar de standaardtaal. Als de "default_locale" van de extensie bijvoorbeeld is ingesteld op "es", en noch
/_locales/en_GB/messages.jsonnoch/_locales/en/messages.jsonhet bericht bevat, gebruikt de extensie het bericht uit/_locales/es/messages.json.
In de volgende afbeelding is de boodschap met de naam "colores" te zien in alle drie de talen die de extensie ondersteunt, maar "extName" is slechts in twee van de talen te zien. Waar een gebruiker van Google Chrome in Amerikaans Engels de tekst "Colors" ziet, ziet een gebruiker van Brits Engels "Colours". Zowel gebruikers van Amerikaans als Brits Engels zien de extensienaam "Hello World". Omdat de standaardtaal Spaans is, zien gebruikers van Google Chrome in een andere taal dan Engels de tekst "Colores" en de extensienaam "Hola mundo".

Stel de landinstellingen van uw browser in.
Om vertalingen te testen, kunt u de landinstellingen van uw browser aanpassen. In dit gedeelte wordt uitgelegd hoe u de landinstellingen kunt wijzigen in Windows , macOS , Linux en ChromeOS .
Windows
Je kunt de taalinstelling wijzigen met behulp van een taalspecifieke sneltoets of via de gebruikersinterface van Google Chrome. Eenmaal ingesteld, is de sneltoetsmethode sneller en kun je hiermee meerdere talen tegelijk gebruiken.
Gebruik een taalspecifieke sneltoets.
Om een snelkoppeling te maken en te gebruiken waarmee Google Chrome met een specifieke taalinstelling wordt gestart:
- Maak een kopie van de Google Chrome-snelkoppeling die al op je bureaublad staat.
- Hernoem de nieuwe snelkoppeling zodat deze overeenkomt met de nieuwe landinstellingen.
Wijzig de eigenschappen van de snelkoppeling zodat het veld 'Doel' de vlaggen
--langen--user-data-dirbevat. Het doel zou er ongeveer zo uit moeten zien:path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dirStart Google Chrome door dubbel te klikken op de snelkoppeling.
Om bijvoorbeeld een snelkoppeling te maken die Google Chrome in het Spaans ( es ) start, kunt u een snelkoppeling maken met de naam chrome-es met het volgende doel:
path_to_chrome.exe --lang=es --user-data-dir=c:\chrome-profile-es
Je kunt zoveel snelkoppelingen maken als je wilt, waardoor het testen in meerdere talen heel eenvoudig wordt. Bijvoorbeeld:
path_to_chrome.exe --lang=en --user-data-dir=c:\chrome-profile-en
path_to_chrome.exe --lang=en_GB --user-data-dir=c:\chrome-profile-en_GB
path_to_chrome.exe --lang=ko --user-data-dir=c:\chrome-profile-ko
Gebruik de gebruikersinterface
Zo wijzig je de landinstellingen via de gebruikersinterface van Google Chrome voor Windows:
- App-pictogram > Opties
- Selecteer het tabblad 'Onder de motorkap'.
- Scroll naar de webinhoud
- Klik op Lettertype- en taalinstellingen wijzigen.
- Selecteer het tabblad Talen.
- Gebruik het keuzemenu om de taal van Google Chrome in te stellen.
- Chrome opnieuw opstarten
Mac OS
Om de landinstellingen op een Mac te wijzigen, ga je naar de systeemvoorkeuren.
- Kies in het Apple-menu ' Systeemvoorkeuren' .
- Kies onder het gedeelte 'Persoonlijk' voor 'Internationaal' .
- Kies uw taal en locatie.
- Chrome opnieuw opstarten
Linux
Om de landinstellingen op Linux te wijzigen, sluit je eerst Google Chrome af. Stel vervolgens in één regel de omgevingsvariabele LANGUAGE in en start Google Chrome opnieuw. Bijvoorbeeld:
LANGUAGE=es ./chrome
ChromeOS
Om de landinstellingen in ChromeOS te wijzigen:
- Kies in het systeemvak ' Instellingen' .
- Selecteer in het gedeelte 'Talen en invoer' de optie 'Taal' in het vervolgkeuzemenu.
- Als uw taal niet in de lijst staat, klik dan op 'Talen toevoegen' en voeg deze toe.
- Nadat je de taal hebt toegevoegd, klik je op het menu-item met de drie puntjes (Meer acties) naast je taal en kies je 'ChromeOS in deze taal weergeven' .
- Klik op de knop 'Opnieuw opstarten ' naast de taalinstelling om ChromeOS opnieuw op te starten.
Voorbeelden
Voorbeelden van internationalisering vindt u in de map examples/api/i18n . Voor een volledig voorbeeld, zie examples/extensions/news . Voor andere voorbeelden en hulp bij het bekijken van de broncode, zie Samples .
getMessage()
De volgende code haalt een gelokaliseerd bericht uit de browser en geeft dit weer als een tekenreeks. Twee plaatsaanduidingen in het bericht worden vervangen door de tekenreeksen "string1" en "string2".
function getMessage() {
var message = chrome.i18n.getMessage("click_here", ["string1", "string2"]);
document.getElementById("languageSpan").innerHTML = message;
}
Zo lever je een enkele string aan en gebruik je die:
// In JavaScript code
status.innerText = chrome.i18n.getMessage("error", errorDetails);
"error": {
"message": "Error: $details$",
"description": "Generic error template. Expects error parameter to be passed in.",
"placeholders": {
"details": {
"content": "$1",
"example": "Failed to fetch RSS feed."
}
}
}
Voor meer informatie over plaatsaanduidingen, zie de pagina Taalspecifieke berichten . Voor details over het aanroepen van getMessage() , zie de API-referentie .
getAcceptLanguages()
De volgende code haalt de geaccepteerde talen op uit de browser en geeft deze weer als een tekenreeks, waarbij elke geaccepteerde taal wordt gescheiden door een komma.
function getAcceptLanguages() {
chrome.i18n.getAcceptLanguages(function(languageList) {
var languages = languageList.join(",");
document.getElementById("languageSpan").innerHTML = languages;
})
}
Voor meer informatie over het aanroepen van getAcceptLanguages() , zie de API-referentie .
detectLanguage()
De volgende code detecteert maximaal 3 talen in de gegeven tekenreeks en geeft het resultaat weer als tekenreeksen, gescheiden door nieuwe regels.
function detectLanguage(inputText) {
chrome.i18n.detectLanguage(inputText, function(result) {
var outputLang = "Detected Language: ";
var outputPercent = "Language Percentage: ";
for(i = 0; i < result.languages.length; i++) {
outputLang += result.languages[i].language + " ";
outputPercent +=result.languages[i].percentage + " ";
}
document.getElementById("languageSpan").innerHTML = outputLang + "\n" + outputPercent + "\nReliable: " + result.isReliable;
});
}
Voor meer informatie over het aanroepen van detectLanguage(inputText) , zie de API-referentie .
Soorten
LanguageCode
Een ISO-taalcode zoals en of fr . Voor een volledige lijst van talen die door deze methode worden ondersteund, zie kLanguageInfoTable . Voor een onbekende taal wordt und geretourneerd, wat betekent dat [percentage] van de tekst onbekend is voor CLD.
Type
snaar
Methoden
detectLanguage()
chrome.i18n.detectLanguage(
text: string,
): Promise<object>
Detecteert de taal van de aangeleverde tekst met behulp van CLD.
Parameters
- tekst
snaar
De gebruiker voert een tekenreeks in die vertaald moet worden.
Retourneert
Promise<object>
Chrome 99+
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(): Promise<LanguageCode[]>
Hiermee worden de geaccepteerde talen van de browser opgehaald. Dit is iets anders dan de landinstellingen die door de browser worden gebruikt; om de landinstellingen te verkrijgen, gebruikt u i18n.getUILanguage .
Retourneert
Promise< LanguageCode []>
Chrome 99+
getMessage()
chrome.i18n.getMessage(
messageName: string,
substitutions?: any,
options?: object,
): string
Haalt de gelokaliseerde tekenreeks op voor het opgegeven bericht. Als het bericht ontbreekt, retourneert deze methode een lege tekenreeks (''). Als de opmaak van de getMessage() aanroep onjuist is — bijvoorbeeld als messageName geen tekenreeks is of als de substitutie- array meer dan 9 elementen bevat — retourneert deze methode undefined .
Parameters
- berichtnaam
snaar
De naam van het bericht, zoals gespecificeerd in het bestand
messages.json. - vervangingen
eventuele optionele
Maximaal 9 vervangende tekenreeksen, indien het bericht dit vereist.
- opties
object optioneel
Chrome 79+- ontsnappingsLt
boolean optioneel
Ontsnap aan
<in vertaling naar<. Dit geldt alleen voor het bericht zelf, niet voor de plaatsaanduidingen. Ontwikkelaars kunnen dit gebruiken als de vertaling in een HTML-context wordt gebruikt. Closure Templates die met Closure Compiler worden gebruikt, genereren dit automatisch.
Retourneert
snaar
Bericht aangepast aan de huidige taalinstellingen.
getUILanguage()
chrome.i18n.getUILanguage(): string
Hiermee wordt de UI-taal van de browser opgehaald. Dit is anders dan i18n.getAcceptLanguages , waarmee de voorkeurstalen van de gebruiker worden geretourneerd.
Retourneert
snaar
De taalcode van de browserinterface, zoals en-US of fr-FR.