chroom.i18n

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:

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

Ondersteuning van meerdere talen

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

A manifest.json file and a file with JavaScript. The .json file has

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 strings bevat):

In het manifest.json-bestand,

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 het vertalen 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.

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

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 Japans.
@@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
ID kaart Indonesisch
Het Italiaans
ja Japans
kn Kanada
ko Koreaans
Het Litouws
lv Lets
ml Malayalam
Dhr Marathi
Mevr 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:

  1. 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.
  2. 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 berichtenbestand en . Als dat bestand bestaat en de melding aanwezig is, hoeft het systeem niet verder te zoeken.
  3. 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'.

Vier bestanden: manifest.json en drie messages.json-bestanden (voor es, en en en_GB). De es- en en-bestanden tonen vermeldingen voor berichten met de naam

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 X , 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 snelkoppeling

Een snelkoppeling maken en gebruiken waarmee Google Chrome met een bepaalde landinstelling wordt gestart:

  1. Maak een kopie van de Google Chrome-snelkoppeling die al op uw bureaublad staat.
  2. Hernoem de nieuwe snelkoppeling zodat deze overeenkomt met de nieuwe landinstelling.
  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. 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:

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

Mac OS X

Om de landinstelling op Mac te wijzigen, gebruikt u de systeemvoorkeuren.

  1. Kies Systeemvoorkeuren in het Apple-menu
  2. Kies Internationaal onder het gedeelte Persoonlijk
  3. Kies uw taal en locatie
  4. 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

ChromeOS

De landinstelling op ChromeOS wijzigen:

  1. Kies Instellingen in het systeemvak.
  2. Kies onder 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. Eenmaal toegevoegd, klikt u op het menu-item Meer acties met drie stippen naast uw taal en kiest u ChromeOS weergeven in deze taal .
  5. Klik op de knop Opnieuw opstarten die naast de ingestelde taal verschijnt om ChromeOS opnieuw te starten.

Voorbeelden

U kunt eenvoudige voorbeelden van internationalisering vinden 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 van detectLanguage(inputText) .

Soorten

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 bij CLD

Type

snaar

Methoden

detectLanguage()

BeloofChrome 47+
chrome.i18n.detectLanguage(
  text: string,
  callback?: function,
)

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

Parameters

  • tekst

    snaar

    Gebruikersinvoertekenreeks die moet worden vertaald.

  • Bel terug

    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

      • is betrouwbaar

        Booleaans

        CLD heeft taalbetrouwbaarheid gedetecteerd

      • talen

        voorwerp[]

        reeks gedetecteerde talen

        • taal

          snaar

        • percentage

          nummer

          Het percentage van de gedetecteerde taal

Geeft terug

  • 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()

Belofte
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

  • Bel terug

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (languages: string[])=>void

    • talen

      snaar[]

      Array van taalcode

Geeft terug

  • 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 array substitutions 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 &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. Sluitingssjablonen die met Closure Compiler worden gebruikt, genereren dit automatisch.

Geeft terug

  • 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.

Geeft terug

  • snaar

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