chroom.i18n

Beschrijving

Gebruik de chrome.i18n infrastructuur om internationalisatie in uw hele app of extensie te implementeren.

Manifest

Als een extensie een map /_locales heeft, moet het manifest "default_locale" definiëren.

Begrippen en gebruik

Je moet alle voor de gebruiker zichtbare strings in een bestand met de naam messages.json plaatsen. Elke keer dat je een nieuwe locale toevoegt, voeg je een berichtenbestand toe in een map met de naam /_locales/_localeCode_ , waarbij localeCode een code is, zoals en voor Engels.

Dit is de bestandshiërarchie voor een geïnternationaliseerde extensie die Engels ( en ), Spaans ( es ) en Koreaans ( ko ) ondersteunt:

In de extensiemap: manifest.json, *.html, *.js, /_locales. In de map /_locales: en, es en ko, elk met een bestand messages.json.

Ondersteuning voor meerdere talen

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

Een manifest.json-bestand en een bestand met JavaScript. Het .json-bestand heeft 'Hallo Wereld'. Het JavaScript-bestand heeft de titel 'Hallo Wereld'.

Om deze extensie te internationaliseren, geeft u elke voor de gebruiker zichtbare string 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 string om de gelokaliseerde versie te verkrijgen.

Dit is hoe de extensie eruitziet wanneer deze geïnternationaliseerd is (let op: deze bevat nog steeds alleen Engelse strings):

In het bestand manifest.json is 'Hello World' gewijzigd in '__MSG_extName__' en een nieuw item 'default_locale' heeft de waarde 'en'. In het JavaScript-bestand is 'Hello World' gewijzigd in chrome.i18n.getMessage('extName'). Een nieuw bestand met de naam /_locales/en/messages.json definieert 'extName'.

Enkele opmerkingen over internationalisering:

  • U kunt elke ondersteunde landinstelling gebruiken. Als u een niet-ondersteunde landinstelling gebruikt, negeert Google Chrome deze.
  • Verwijs in manifest.json en CSS-bestanden naar een tekenreeks met de naam messagename op de volgende manier:

    __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")
    
  • In elke aanroep van getMessage() kunt u maximaal 9 strings opgeven die in het bericht moeten worden opgenomen. Zie Voorbeelden: getMessage voor details.

  • Sommige berichten, zoals @@bidi_dir en @@ui_locale , worden aangeleverd door het internationalisatiesysteem. Zie de sectie Vooraf gedefinieerde berichten voor een volledige lijst met vooraf gedefinieerde berichtnamen.

  • In messages.json heeft elke voor de gebruiker zichtbare string een naam, een item 'bericht' en een optioneel item 'beschrijving'. De naam is een sleutel zoals 'extName' of 'zoek_string' die de string identificeert. 'Bericht' specificeert de waarde van de string in deze locale. De optionele 'beschrijving' biedt hulp aan vertalers, die mogelijk niet kunnen zien hoe de string 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.

Zodra een extensie is geïnternationaliseerd, is het eenvoudig om deze te vertalen. Kopieer messages.json , vertaal het en plaats de kopie in een nieuwe map onder /_locales . Om bijvoorbeeld Spaans te ondersteunen, plaatst u een vertaalde kopie van messages.json onder /_locales/es . De volgende afbeelding toont de vorige extensie met een nieuwe Spaanse vertaling.

Dit ziet er hetzelfde uit als de vorige afbeelding, maar met een nieuw bestand in /_locales/es/messages.json dat een Spaanse vertaling van de berichten bevat.

Vooraf gedefinieerde berichten

Het internationalisatiesysteem biedt een aantal vooraf gedefinieerde berichten om u te helpen bij het lokaliseren. Deze omvatten @@ui_locale , waarmee u de huidige landinstelling van de gebruikersinterface kunt detecteren, en een paar @@bidi_... berichten waarmee u de tekstrichting kunt bepalen. 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 de CSS- en JavaScript-bestanden, ongeacht of de extensie of app gelokaliseerd is. Dit bericht werkt niet in manifestbestanden.

In de onderstaande tabel wordt elk vooraf gedefinieerd bericht beschreven.

Berichtnaam 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.
Let op: U kunt dit bericht niet in een manifestbestand gebruiken.
@@ui_locale De huidige landinstelling. U kunt deze tekenreeks gebruiken om landspecifieke URL's te maken.
@@bidi_dir De tekstrichting voor de huidige landinstelling: 'ltr' voor talen die van links naar rechts worden geschreven, zoals Engels, of 'rtl' voor talen die van rechts naar links worden geschreven, 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 "left", anders is het "right".
@@bidi_end_edge Als @@bidi_dir "ltr" is, dan is dit "right", anders is het "left".

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 het Engels, worden de vetgedrukte lijnen:

  dir: ltr;
  padding-left: 0;
  padding-right: 1.5em;

Locaties

U kunt kiezen uit veel locales, waaronder enkele (zoals en ) waarmee één vertaling meerdere variaties van een taal kan ondersteunen (zoals en_GB en en_US ).

U kunt uw extensie lokaliseren naar elke taal die door de Chrome Web Store wordt ondersteund. Als uw taal hier niet wordt vermeld, kies dan het dichtstbijzijnde alternatief. Als de standaardtaal van uw extensie bijvoorbeeld "de_CH" is, kiest u "de" in de Chrome Web Store.

Lokale code 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 Caribisch gebied)
et Estisch
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)

Zoeken naar berichten

U hoeft niet elke tekenreeks voor elke ondersteunde landinstelling te definiëren. Zolang het bestand messages.json van de standaardlandinstelling een waarde voor elke tekenreeks bevat, wordt uw extensie of app uitgevoerd, ongeacht hoe beperkt de vertaling is. Zo zoekt het extensiesysteem naar een bericht:

  1. Zoek in het berichtenbestand (indien aanwezig) naar de voorkeurstaal van de gebruiker. Wanneer de taal 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 zich daarin bevindt, hoeft het systeem niet verder te zoeken.
  2. Als de voorkeurslandinstelling van de gebruiker een regio heeft (dat wil zeggen, de landinstelling heeft een onderstrepingsteken: _), doorzoek dan de landinstelling zonder die regio. Als het bestand en_GB messages' bijvoorbeeld niet bestaat of het bericht niet bevat, zoekt het systeem in het bestand en messages'. Als dat bestand wel bestaat en het bericht erin staat, zoekt het systeem niet verder.
  3. Zoek in het berichtenbestand naar de standaardlandinstelling. Als de "default_locale" van de extensie bijvoorbeeld is ingesteld op "es", en noch /_locales/en_GB/messages.json noch /_locales/en/messages.json het bericht bevat, gebruikt de extensie het bericht uit /_locales/es/messages.json .

In de volgende afbeelding is het bericht met de naam "colores" beschikbaar in alle drie de talen die de extensie ondersteunt, maar "extName" is slechts in twee van de talen beschikbaar. Waar een gebruiker van Google Chrome in Amerikaans Engels het label "Colors" ziet, ziet een gebruiker van Brits Engels "Colours". Zowel gebruikers van Amerikaans Engels als Brits Engels zien de extensienaam "Hello World". Omdat de standaardtaal Spaans is, zien gebruikers van Google Chrome in een andere taal dan Engels het label "Colores" en de extensienaam "Hola mundo".

Vier bestanden: manifest.json en drie berichten.json-bestanden (voor es, en en en_GB). De bestanden es en en tonen berichten met de naam 'extName' en 'colores'; het bestand en_GB heeft slechts één bericht (voor 'colores').

Stel de landinstellingen van uw browser in

Om vertalingen te testen, kunt u de landinstellingen van uw browser instellen. In deze sectie leest u hoe u de landinstellingen instelt in Windows , Mac OS , Linux en ChromeOS .

Ramen

Je kunt de landinstelling wijzigen met een landspecifieke snelkoppeling of via de gebruikersinterface van Google Chrome. De snelkoppeling is sneller, zodra je deze hebt ingesteld, en je kunt er meerdere talen tegelijk mee gebruiken.

Gebruik een landspecifieke snelkoppeling

Om een snelkoppeling te maken en te gebruiken waarmee Google Chrome met een specifieke landinstelling wordt gestart:

  1. Maak een kopie van de Google Chrome-snelkoppeling die al op uw bureaublad staat.
  2. Geef de nieuwe snelkoppeling een nieuwe naam, zodat deze overeenkomt met de nieuwe landinstellingen.
  3. 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
    
  4. Dubbelklik op de snelkoppeling om Google Chrome te starten.

Om bijvoorbeeld een snelkoppeling te maken waarmee Google Chrome in het Spaans ( es ) wordt geopend, 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

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

Hier leest u hoe u de landinstellingen kunt wijzigen via de gebruikersinterface van Google Chrome voor Windows:

  1. App-pictogram > Opties
  2. Kies het tabblad 'Onder de motorkap'
  3. Scroll naar webinhoud
  4. Klik op Lettertype- en taalinstellingen wijzigen
  5. Kies het tabblad Talen
  6. Gebruik de vervolgkeuzelijst om de taal van Google Chrome in te stellen
  7. Chrome opnieuw opstarten

Mac OS

Om de landinstellingen op een Mac te wijzigen, gebruikt u de systeemvoorkeuren.

  1. Kies Systeemvoorkeuren in het Apple-menu
  2. Kies onder het gedeelte Persoonlijk voor Internationaal
  3. Kies uw taal en locatie
  4. Chrome opnieuw opstarten

Linux

Om de landinstelling op Linux te wijzigen, sluit u eerst Google Chrome af. Stel vervolgens in één regel de omgevingsvariabele LANGUAGE in en start Google Chrome. Bijvoorbeeld:

LANGUAGE=es ./chrome

Chrome OS

Om de landinstellingen op ChromeOS te wijzigen:

  1. Kies Instellingen in het systeemvak.
  2. Selecteer in het gedeelte Talen en invoer de vervolgkeuzelijst Taal .
  3. Als uw taal niet in de lijst staat, klikt u op Talen toevoegen en voegt u deze toe.
  4. Nadat u de taal hebt toegevoegd, klikt u op het menu-item Meer acties met drie puntjes naast uw taal en kiest u ChromeOS in deze taal weergeven .
  5. Klik op de knop Opnieuw opstarten die naast de ingestelde taal wordt weergegeven om ChromeOS opnieuw op te starten.

Voorbeelden

Voorbeelden van internationalisatie vindt u in de map examples/api/i18n . Zie examples/extensions/news voor een volledig voorbeeld. Zie Samples voor andere voorbeelden en hulp bij het bekijken van de broncode.

getMessage()

De volgende code haalt een gelokaliseerd bericht op van de browser en geeft het weer als een string. Het vervangt twee tijdelijke aanduidingen in het bericht door de strings "string1" en "string2".

function getMessage() {
  var message = chrome.i18n.getMessage("click_here", ["string1", "string2"]);
  document.getElementById("languageSpan").innerHTML = message;
}

Dit is hoe je een enkele string zou opgeven en gebruiken:

  // 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 Landspecifieke berichten voor meer informatie over tijdelijke aanduidingen. Zie de API-referentie voor meer informatie over het aanroepen van getMessage() .

getAcceptLanguages()

De volgende code haalt de geaccepteerde talen op uit de browser en geeft ze weer als een tekenreeks door elke geaccepteerde taal 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 getAcceptLanguages() .

detectLanguage()

De volgende code detecteert maximaal 3 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 van detectLanguage(inputText) .

Typen

LanguageCode

Chroom 47+

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 voor CLD.

Type

snaar

Methoden

detectLanguage()

Chroom 47+
chrome.i18n.detectLanguage(
  text: string,
)
: Promise<object>

Detecteert de taal van de verstrekte tekst met behulp van CLD.

Parameters

  • tekst

    snaar

    Te vertalen gebruikersinvoerreeks.

Retourneren

  • Belofte<object>

    Chroom 99+

getAcceptLanguages()

chrome.i18n.getAcceptLanguages(): Promise<LanguageCode[]>

Haalt de geaccepteerde talen van de browser op. Dit verschilt van de landinstellingen die de browser gebruikt. Gebruik i18n.getUILanguage om de landinstellingen op te halen.

Retourneren

getMessage()

chrome.i18n.getMessage(
  messageName: string,
  substitutions?: any,
  options?: object,
)
: string

Haalt de gelokaliseerde string op voor het opgegeven bericht. Als het bericht ontbreekt, retourneert deze methode een lege string (''). Als de opmaak van de getMessage() aanroep onjuist is — bijvoorbeeld, messageName is geen string of de substitutie- 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

    elke optionele

    Maximaal 9 vervangingsstrings, indien het bericht deze vereist.

  • opties

    object optioneel

    Chroom 79+
    • ontsnappingLt

      boolean optioneel

      Escape < in vertaling naar &lt; . 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. Closure-sjablonen die met Closure Compiler worden gebruikt, genereren dit automatisch.

Retourneren

  • snaar

    Bericht gelokaliseerd voor huidige landinstelling.

getUILanguage()

chrome.i18n.getUILanguage(): string

Haalt de gebruikersinterfacetaal van de browser op. Dit verschilt van i18n.getAcceptLanguages , dat de voorkeurstaal van de gebruiker retourneert.

Retourneren

  • snaar

    De taalcode van de gebruikersinterface van de browser, bijvoorbeeld en-US of fr-FR.