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
U moet alle voor de gebruiker zichtbare tekenreeksen in een bestand met de naam messages.json
plaatsen. Elke keer dat u een nieuwe landinstelling toevoegt, voegt u een berichtenbestand toe onder een map met de naam /_locales/_localeCode_
, waarbij localeCode een code is zoals en
voor Engels.
Hier is de bestandshiërarchie voor een geïnternationaliseerde extensie die Engels ( en
), Spaans ( es
) en Koreaans ( ko
) ondersteunt:
Ondersteuning van meerdere talen
Stel dat u een extensie heeft met de bestanden die in de volgende afbeelding worden weergegeven:
Om deze extensie te internationaliseren, geeft u elke voor de gebruiker zichtbare tekenreeks een naam en plaatst u 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 als deze geïnternationaliseerd is (merk op dat deze nog steeds alleen Engelse tekenreeksen heeft):
Enkele opmerkingen over internationalisering:
- U kunt elk van de ondersteunde landinstellingen gebruiken. Als u een niet-ondersteunde landinstelling gebruikt, negeert Google Chrome deze.
In
manifest.json
en CSS-bestanden verwijst u als volgt naar een tekenreeks met de naam messagename :__MSG_messagename__
Verwijs in de JavaScript-code van uw extensie of app naar een tekenreeks met de naam messagename, zoals deze:
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 details.Sommige berichten, zoals
@@bidi_dir
en@@ui_locale
, worden geleverd door het internationaliseringssysteem. Zie de sectie Vooraf gedefinieerde berichten voor een volledige lijst met vooraf gedefinieerde berichtnamen.In
messages.json
heeft 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 string identificeert. Het "bericht" specificeert de waarde van de tekenreeks in deze landinstelling. De optionele "beschrijving" 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." }, ... }
Zie Formaten: Landspecifieke berichten voor meer informatie.
Als een extensie eenmaal is geïnternationaliseerd, is de vertaling ervan eenvoudig. U kopieert messages.json
, vertaalt het en plaatst de kopie in een nieuwe map onder /_locates
. Om bijvoorbeeld Spaans te ondersteunen, plaatst u gewoon een vertaalde kopie van messages.json
onder /_locates/es
. De volgende afbeelding toont de vorige uitbreiding met een nieuwe Spaanse vertaling.
Vooraf gedefinieerde berichten
Het internationaliseringssysteem biedt een aantal vooraf gedefinieerde berichten om u te helpen lokaliseren. Deze omvatten @@ui_locale
, zodat u de huidige landinstelling van de gebruikersinterface kunt detecteren, en een paar @@bidi_...
berichten waarmee u de tekstrichting kunt detecteren. Deze laatste berichten hebben namen die lijken op constanten in de BIDI-API (bidirectioneel) van de gadgets .
Het speciale bericht @@extension_id
kan worden gebruikt in de CSS- en JavaScript-bestanden, ongeacht of de extensie of app gelokaliseerd is of niet. Dit bericht werkt niet in manifestbestanden.
In de volgende tabel wordt elk vooraf gedefinieerd bericht beschreven.
Naam van bericht | Beschrijving |
---|---|
@@extension_id | De extensie of app-ID; u kunt deze tekenreeks gebruiken om URL's te maken voor bronnen binnen de extensie. Zelfs niet-gelokaliseerde extensies kunnen dit bericht gebruiken. Opmerking: u kunt dit bericht niet gebruiken in een manifestbestand. |
@@ui_locale | De huidige locatie; u kunt deze tekenreeks gebruiken om landspecifieke URL's samen te stellen. |
@@bidi_dir | De tekstrichting voor de huidige landinstelling, 'ltr' voor talen van links naar rechts, zoals Engels, of 'rtl' voor talen van rechts naar links, zoals Arabisch. |
@@bidi_reversed_dir | Als de @@bidi_dir "ltr" is, dan is dit "rtl"; anders is het "ltr". |
@@bidi_start_edge | Als de @@bidi_dir "ltr" is, dan is dit "left"; anders is het "goed". |
@@bidi_end_edge | Als de @@bidi_dir "ltr" is, dan is dit "goed"; anders is het "links". |
Hier is een voorbeeld van het gebruik van @@extension_id
in een CSS-bestand om een URL te construeren:
body {
background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
}
Als de extensie-ID abcdefghijklmnopqrstuvwxyzabcdef is, wordt de vetgedrukte regel in het vorige codefragment:
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 Engels, worden de vetgedrukte lijnen:
dir: ltr;
padding-left: 0;
padding-right: 1.5em;
Landinstellingen
U kunt kiezen uit vele landinstellingen, waaronder enkele (zoals en
) waarbij een enkele vertaling meerdere varianten van een taal ondersteunt (zoals en_GB
en en_US
).
U kunt uw extensie lokaliseren naar elke landinstelling die wordt ondersteund door de Chrome Web Store. Als uw landinstelling hier niet wordt vermeld, kiest u het dichtstbijzijnde alternatief. Als de standaardlandinstelling van uw extensie bijvoorbeeld "de_CH"
is, kiest u "de"
in de Chrome Web Store.
Landcode | Taal (regio) |
---|---|
ar | Arabisch |
ben | Amhaars |
bg | Bulgaars |
miljard | Bengaals |
ca | Catalaans |
cs | Tsjechisch |
da | Deens |
de | Duits |
el | Grieks |
nl | Engels |
nl_AU | Engels (Australië) |
nl_GB | Engels (Groot-Brittannië) |
nl_US | Engels (VS) |
es | Spaans |
es_419 | Spaans (Latijns-Amerika en het Caribisch gebied) |
enz | Ests |
fa | Perzisch |
fi | Fins |
fil | Filipijns |
fr | Frans |
gu | Gujarati |
Hij | Hebreeuws |
Hoi | Hindi |
uur | Kroatisch |
he | Hongaars |
Identiteitskaart | Indonesisch |
Het | Italiaans |
ja | Japanse |
kn | Kanada |
ko | Koreaans |
Het | Litouws |
lv | Lets |
ml | Malayalam |
dhr | Marathi |
mevrouw | Maleis |
nl | Nederlands |
Nee | Noors |
pl | Pools |
pt_BR | Portugees (Brazilië) |
pt_PT | Portugees (Portugal) |
ro | Roemeense |
Ru | Russisch |
sk | Slowaaks |
sl | Sloveens |
sr | Servisch |
sv | Zweeds |
zw | Swahili |
ta | Tamil |
te | Telugu |
e | Thais |
tr | Turks |
VK | Oekraïens |
vi | Vietnamees |
zh_CN | Chinees (China) |
zh_TW | Chinees (Taiwan) |
Zoeken naar berichten
U hoeft niet elke tekenreeks voor elke ondersteunde landinstelling te definiëren. Zolang het messages.json
-bestand van de standaardlandinstelling een waarde heeft voor elke tekenreeks, wordt uw extensie of app uitgevoerd, ongeacht hoe schaars een vertaling is. Zo zoekt het extensiesysteem naar een bericht:
- Zoek in het berichtenbestand (indien aanwezig) naar de voorkeurslandinstelling van de gebruiker. Wanneer de landinstelling van Google Chrome bijvoorbeeld is ingesteld op Brits Engels (
en_GB
), zoekt het systeem eerst naar het bericht in/_locates/en_GB/messages.json
. Als dat bestand bestaat en de melding aanwezig is, hoeft het systeem niet verder te zoeken. - Als de voorkeurslandinstelling van de gebruiker een regio heeft (dat wil zeggen: de landinstelling heeft een onderstrepingsteken: _), zoek dan in de landinstelling zonder die regio. Als het berichtenbestand
en_GB
bijvoorbeeld niet bestaat of het bericht niet bevat, zoekt het systeem in het berichtenbestanden
. Als dat bestand bestaat en de melding aanwezig is, hoeft het systeem niet verder te zoeken. - Zoek in het berichtenbestand naar de standaardlandinstelling. Als de "default_locale" van de extensie bijvoorbeeld is ingesteld op "es" en noch
/_locates/en_GB/messages.json
noch/_locates/en/messages.json
het bericht bevat, gebruikt de extensie het bericht van/_locates/es/messages.json
.
In de volgende afbeelding bevindt het bericht met de naam 'colores' zich in alle drie de landinstellingen die de extensie ondersteunt, maar 'extName' bevindt zich in slechts twee van de landinstellingen. Waar een gebruiker die Google Chrome in Amerikaans Engels gebruikt het label 'Kleuren' ziet, ziet een gebruiker van Brits Engels 'Kleuren'. Zowel Amerikaans-Engelse als Brits-Engelse gebruikers zien de extensienaam "Hello World". Omdat de standaardtaal Spaans is, zien gebruikers die Google Chrome in een niet-Engelse taal gebruiken het label 'Colores' en de extensienaam 'Hola mundo'.
Stel de landinstelling van uw browser in
Om vertalingen te testen, wilt u wellicht de landinstelling van uw browser instellen. In dit gedeelte leest u hoe u de landinstelling in Windows , Mac OS , Linux en ChromeOS instelt.
Ramen
U kunt de landinstelling wijzigen met een landspecifieke snelkoppeling of via de gebruikersinterface van Google Chrome. De sneltoetsbenadering is sneller, als u deze eenmaal hebt ingesteld, en u kunt meerdere talen tegelijk gebruiken.
Gebruik een landspecifieke sneltoets
Een snelkoppeling maken en gebruiken waarmee Google Chrome met een bepaalde landinstelling wordt gestart:
- Maak een kopie van de Google Chrome-snelkoppeling die al op uw bureaublad staat.
- Hernoem de nieuwe snelkoppeling zodat deze overeenkomt met de nieuwe landinstelling.
Wijzig de eigenschappen van de snelkoppeling zodat het veld Doel de vlaggen
--lang
en--user-data-dir
specificeert. Het doel zou er ongeveer zo uit moeten zien:path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
Start Google Chrome door te dubbelklikken op de snelkoppeling.
Als u bijvoorbeeld een snelkoppeling wilt maken waarmee Google Chrome in het Spaans ( es
) wordt gestart, kunt u een snelkoppeling met de naam chrome-es
maken met het volgende doel:
path_to_chrome.exe --lang=es --user-data-dir=c:\chrome-profile-es
U kunt zoveel snelkoppelingen maken als u wilt, waardoor u eenvoudig in meerdere talen kunt testen. 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
U kunt als volgt de landinstelling wijzigen met behulp van de gebruikersinterface van Google Chrome voor Windows:
- App-pictogram > Opties
- Kies het tabblad Onder de motorkap
- Scroll naar Webinhoud
- Klik op Lettertype- en taalinstellingen wijzigen
- Kies het tabblad Talen
- Gebruik het vervolgkeuzemenu om de Google Chrome-taal in te stellen
- Start Chrome opnieuw
Mac-besturingssysteem
Om de landinstelling op Mac te wijzigen, gebruikt u de systeemvoorkeuren.
- Kies Systeemvoorkeuren in het Apple-menu
- Kies Internationaal onder het gedeelte Persoonlijk
- Kies uw taal en locatie
- Start Chrome opnieuw
Linux
Om de landinstelling op Linux te wijzigen, sluit u eerst Google Chrome af. Stel vervolgens alles op één regel de omgevingsvariabele LANGUAGE in en start Google Chrome. Bijvoorbeeld:
LANGUAGE=es ./chrome
Chrome OS
De landinstelling op ChromeOS wijzigen:
- Kies Instellingen in het systeemvak.
- Kies onder het gedeelte Talen en invoer de vervolgkeuzelijst Taal .
- Als uw taal niet in de lijst staat, klikt u op Talen toevoegen en voegt u deze toe.
- Eenmaal toegevoegd, klikt u op het menu-item Meer acties met drie stippen naast uw taal en kiest u ChromeOS weergeven in deze taal .
- Klik op de knop Opnieuw opstarten die naast de ingestelde taal verschijnt om ChromeOS opnieuw te starten.
Voorbeelden
Voorbeelden van internationalisering vindt u in de directory example/api/i18n . Voor een compleet voorbeeld, zie voorbeelden/extensies/nieuws . Zie Voorbeelden voor andere voorbeelden en voor hulp bij het bekijken van de broncode.
ontvang bericht()
De volgende code haalt een gelokaliseerd bericht op van de browser en geeft dit weer als een tekenreeks. Het vervangt twee tijdelijke aanduidingen in het bericht door de tekenreeksen "string1" en "string2".
function getMessage() {
var message = chrome.i18n.getMessage("click_here", ["string1", "string2"]);
document.getElementById("languageSpan").innerHTML = message;
}
Zo levert en gebruikt u één enkele string:
// 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."
}
}
}
Zie de pagina Lokaalspecifieke berichten voor meer informatie over tijdelijke aanduidingen. Zie de API-referentie voor meer informatie over het aanroepen van getMessage()
.
getAcceptLanguages()
De volgende code haalt acceptatietalen op van de browser en geeft deze weer als een tekenreeks door elke acceptatietaal te scheiden met ','.
function getAcceptLanguages() {
chrome.i18n.getAcceptLanguages(function(languageList) {
var languages = languageList.join(",");
document.getElementById("languageSpan").innerHTML = languages;
})
}
Zie de API-referentie voor meer informatie over het aanroepen van getAcceptLanguages()
.
detectTaal()
De volgende code detecteert maximaal drie talen uit de opgegeven 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;
});
}
Zie de API-referentie voor meer informatie over het aanroepen detectLanguage(inputText)
.
Soorten
LanguageCode
Een ISO-taalcode zoals en
of fr
. Zie kLanguageInfoTable voor een volledige lijst met talen die door deze methode worden ondersteund. Voor een onbekende taal wordt und
geretourneerd, wat betekent dat [percentage] van de tekst onbekend is bij CLD
Type
snaar
Methoden
detectLanguage()
chrome.i18n.detectLanguage(
text: string,
callback?: function,
)
Detecteert de taal van de aangeboden tekst met behulp van CLD.
Parameters
- tekst
snaar
Tekenreeks voor gebruikersinvoer die moet worden vertaald.
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(result: object) => void
- resultaat
voorwerp
LanguageDetectionResult-object dat de gedetecteerde taalbetrouwbaarheid en een reeks DetectedLanguage bevat
- isBetrouwbaar
Booleaans
CLD heeft taalbetrouwbaarheid gedetecteerd
- talen
voorwerp[]
reeks gedetecteerde talen
- taal
snaar
- percentage
nummer
Het percentage van de gedetecteerde taal
Retouren
Beloof<object>
Chroom 99+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
)
Haalt de acceptatietalen van de browser op. Dit verschilt van de landinstelling die door de browser wordt gebruikt; Gebruik i18n.getUILanguage
om de landinstelling op te halen.
Parameters
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(languages: string[]) => void
- talen
snaar[]
Array van taalcode
Retouren
Belofte< Taalcode []>
Chroom 99+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
getMessage()
chrome.i18n.getMessage(
messageName: string,
substitutions?: any,
options?: object,
)
Haalt de gelokaliseerde tekenreeks voor het opgegeven bericht op. Als het bericht ontbreekt, retourneert deze methode een lege tekenreeks (''). Als het formaat van de getMessage()
-aanroep verkeerd is (bijvoorbeeld messageName is geen string of de substitutions- array heeft meer dan 9 elementen), retourneert deze methode undefined
.
Parameters
- berichtNaam
snaar
De naam van het bericht, zoals opgegeven in het bestand
messages.json
. - vervangingen
eventueel optioneel
Maximaal 9 vervangingsreeksen, als het bericht deze vereist.
- opties
object optioneel
Chroom 79+- ontsnappenLt
Booleaans optioneel
Ontsnappen
<
in vertaling naar<
. Dit geldt alleen voor het bericht zelf, niet voor de tijdelijke aanduidingen. Ontwikkelaars willen dit mogelijk gebruiken als de vertaling in een HTML-context wordt gebruikt. Sluitingssjablonen die met Closure Compiler worden gebruikt, genereren dit automatisch.
Retouren
snaar
Bericht gelokaliseerd voor de huidige landinstelling.
getUILanguage()
chrome.i18n.getUILanguage()
Haalt de browser-UI-taal van de browser op. Dit is anders dan i18n.getAcceptLanguages
, dat de voorkeurstalen van de gebruiker retourneert.
Retouren
snaar
De taalcode van de gebruikersinterface van de browser, zoals en-US of fr-FR.