chrome.i18n

Opis

Użyj infrastruktury chrome.i18n, aby wdrożyć internacjonalizację całej aplikacji lub rozszerzenia.

Plik manifestu

Jeśli rozszerzenie ma katalog /_locales, w pliku manifestu musi być wskazana wartość "default_locale".

Pojęcia i wykorzystanie

Wszystkie ciągi znaków widoczne dla użytkowników musisz umieścić w pliku o nazwie messages.json. Za każdym razem dodajesz nowe ustawienia regionalne, dodajesz plik wiadomości w katalogu o nazwie /_locales/_localeCode_, gdzie localeCode to kod, np. en w przypadku języka angielskiego.

Oto hierarchia plików umiędzynarodowionego rozszerzenia, które obsługuje język angielski (en), hiszpański (es) i koreański (ko):

W katalogu rozszerzeń znajdują się: manifest.json, *.html, *.js, /_locates. W katalogu /_locates znajdują się katalogi en, es i ko, z których każdy zawiera plik messages.json.

Obsługa wielu języków

Załóżmy, że masz rozszerzenie z plikami przedstawionymi na tym rysunku:

Plik manifest.json i plik w języku JavaScript. Plik .json zawiera

Aby przetłumaczyć to rozszerzenie, musisz nadać mu nazwę każdy ciąg widoczny dla użytkowników i umieścić go w wiadomościach. . Plik manifestu rozszerzenia, pliki CSS i kod JavaScript używają nazwy każdego ciągu znaków, aby uzyskać jego wersji zlokalizowanej.

Tak będzie wyglądać rozszerzenie po umiędzynarodowieniu (zwróć uwagę, że nadal zawiera ono angielskie):

<img "__msg_extname__",="" "default_locale"="" "pl".="" "extname"."="" "Cześć="" _locates=&quot;&quot; a=&quot;&quot; alt="W pliku manifest.json " and=&quot;&quot; był="" changed=&quot;&quot; chrome.i18n.getmessage("extname").="" defines=&quot;&quot; en=&quot;&quot; file=&quot;&quot; file,=&quot;&quot; has=&quot;&quot; hello=&quot;&quot; in=&quot;&quot; item=&quot;&quot; javascript=&quot;&quot; messages.json=&quot;&quot; named=&quot;&quot; nowy="" src=&quot;/static/docs/extensions/mv2/reference/i18n/images/i18n-after-1.gif&quot; the=&quot;&quot; to=&quot;&quot; wartość="" świecie"="" />

Uwagi na temat umiędzynarodawiania:

  • Możesz używać dowolnego z obsługiwanych języków. Jeśli używasz nieobsługiwanego języka, Google Chrome ignoruje go.
  • W pliku manifest.json i pliku CSS odwołaj się do ciągu o nazwie messagename w następujący sposób:

    __MSG_messagename__
    
  • W kodzie JavaScript rozszerzenia lub aplikacji znajdź ciąg o nazwie messagename w ten sposób:

    chrome.i18n.getMessage("messagename")
    
  • W każdym wywołaniu funkcji getMessage() możesz podać do 9 ciągów, które zostaną umieszczone w wiadomości. Zobacz Przykłady: getMessage w przypadku szczegółowych informacji.

  • Niektóre wiadomości, na przykład @@bidi_dir i @@ui_locale, są dostarczane w ramach internacjonalizacji systemu. Pełną listę wstępnie zdefiniowanych nazw wiadomości znajdziesz w sekcji Wstępnie zdefiniowane komunikaty.

  • W messages.json każdy ciąg widoczny dla użytkowników ma nazwę – „wiadomość” oraz opcjonalnie &quot;description&quot; elementu. Nazwa to klucz, np. „extName” lub „search_string” identyfikującego ciągu znaków. Komunikat określa wartość ciągu znaków w tym języku. Opcjonalny „description” umożliwia tłumaczom, którzy mogą nie być w stanie zobaczyć, jak dany ciąg znaków jest używany w . Na przykład:

    {
      "search_string": {
        "message": "hello%20world",
        "description": "The string we search for. Put %20 between words that go together."
      },
      ...
    }
    

Więcej informacji znajdziesz w artykule Formaty wiadomości związanych z różnymi językami.

Po umiędzynarodowieniu rozszerzenia tłumaczenie jest proste. Kopiujesz: messages.json, przetłumaczyć i umieścić kopię w nowym katalogu pod adresem /_locates. Na przykład, aby obsługiwać Hiszpański, tylko umieść przetłumaczoną kopię tekstu messages.json pod tytułem /_locates/es. Następujący rysunek pokazuje poprzednie rozszerzenie z nowym tłumaczeniem na język hiszpański.

Wygląda to tak samo jak poprzedni rysunek, ale w nowym pliku /_locates/es/messages.json znajduje się tłumaczenie wiadomości na język hiszpański.

Wstępnie zdefiniowane komunikaty

System internacjonalizacji udostępnia kilka wstępnie zdefiniowanych komunikatów, które pomogą Ci zlokalizować treści. Te uwzględnij @@ui_locale (dzięki czemu możesz wykryć bieżący język interfejsu użytkownika) oraz kilka komunikatów @@bidi_..., które pozwalają określić kierunek tekstu. Te ostatnie wiadomości mają podobne nazwy do stałych w elemencie gadżetów BIDI (dwukierunkowy) API.

Specjalnego komunikatu @@extension_id można używać w plikach CSS i JavaScript niezależnie od tego, czy rozszerzenie lub aplikacja są zlokalizowane. Ten komunikat nie działa w plikach manifestu.

Tabela poniżej zawiera opis wszystkich wstępnie zdefiniowanych komunikatów.

Nazwa wiadomościOpis
@@extension_idrozszerzenie lub identyfikator aplikacji; możesz używać tego ciągu do tworzenia adresów URL zasobów wewnątrz rozszerzenia. Tej wiadomości mogą używać nawet niezlokalizowane rozszerzenia.
Uwaga: tej wiadomości nie można użyć w pliku manifestu.
@@ui_localeObecny język, możesz używać tego ciągu do tworzenia adresów URL dla określonych języków.
@@bidi_dirKierunek tekstu w bieżącym języku, „ltr” dla języków pisanych od lewej do prawej, takich jak angielski czy „rtl”. dla języków pisanych od prawej do lewej, np. arabskiego.
@@bidi_reversed_dirJeśli @@bidi_dir to „ltr”, jest to „rtl”; W przeciwnym razie ma wartość „ltr”.
@@bidi_start_edgeJeśli @@bidi_dir ma wartość „ltr”, jest to „left”; w przeciwnym razie jest uznawana za „prawidłową”.
@@bidi_end_edgeJeśli @@bidi_dir to „ltr”, to ma wartość „right”; W przeciwnym razie jest to wartość „lewa”.

Oto przykład użycia właściwości @@extension_id w pliku CSS do utworzenia adresu URL:

body {
  background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
}

Jeśli identyfikator rozszerzenia to abcdefghijklmnopqrstuvwxyzabcdef, to w poprzednim kodzie należy użyć pogrubionego wiersza. fragment kodu zmieni się w:

  background-image:url('chrome-extension://abcdefghijklmnopqrstuvwxyzabcdef/background.png');

Oto przykład użycia wiadomości @@bidi_* w pliku CSS:

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;
}

W językach zapisywanych od lewej do prawej, na przykład w języku angielskim, pogrubione linie wyglądają tak:

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

Języki

Masz do wyboru wiele regionów, w tym te (np. en), które pozwalają na pojedyncze tłumaczenie z uwzględnieniem wielu odmian danego języka (np. en_GB czy en_US).

Możesz zlokalizować rozszerzenie w dowolnym języku obsługiwanym w Chrome Web Store. Jeśli Twojego języka nie ma na liście, wybierz najbliższą alternatywę. Jeśli na przykład domyślne język rozszerzenia to "de_CH", wybierz "de" w Chrome Web Store.

Kod języka Język (region)
ar arabski
am amharski
bg bułgarski
bn bengalski
urząd certyfikacji kataloński
cs czeski
da duński
de niemiecki
el grecki
en angielski
en_AU angielski (Australia)
en_GB angielski (Wielka Brytania)
pl_PL angielski (Stany Zjednoczone)
es hiszpański
es_419 hiszpański (Ameryka Łacińska i Karaiby)
et estoński
fa perski
fi fiński
fil filipiński
fr francuski
gu gudżarati
on hebrajski
hi hindi
h chorwacki
hu węgierski
id indonezyjski
it włoski
ja japoński
kn kannada
ko koreański
lt litewski
lv łotewski
ml malajalam
mr marathi
ms malajski
nl niderlandzki
nie norweski
pl polski
pt_BR portugalski (Brazylia)
pt_PT portugalski (Portugalia)
ro rumuński
ru rosyjski
sk słowacki
sl słoweński
sr serbski
sv szwedzki
sw suahili
ta tamilski
te telugu
th tajski
tr turecki
uk ukraiński
vi wietnamski
zh_CN chiński (Chiny)
zh_TW chiński (Tajwan)

Wyszukiwanie wiadomości

Nie musisz definiować każdego ciągu dla każdego obsługiwanego języka. Jeśli język domyślny messages.json zawiera wartość każdego ciągu. Rozszerzenie lub aplikacja będzie działać niezależnie od tego, jest rozproszone. Oto jak system rozszerzeń wyszukuje wiadomość:

  1. Wyszukaj plik z wiadomościami (jeśli jest dostępny) pod kątem preferowanego języka użytkownika. Jeśli na przykład Google Język Chrome jest ustawiony na angielski (brytyjski) (en_GB). System najpierw szuka wiadomości w /_locates/en_GB/messages.json Jeśli plik istnieje i komunikat jest widoczny, system sprawdza, Już nie musisz.
  2. Jeśli preferowany język użytkownika określa region (czyli ma podkreślenie: _), wyszukaj w lokalizacji bez tego regionu. Jeśli na przykład plik z wiadomościami en_GB nie istnieje lub nie będzie zawierać tej wiadomości, system sprawdzi plik z wiadomościami en. Jeśli plik istnieje, system nie szuka już jej.
  3. Wyszukaj język domyślny w pliku wiadomości. Na przykład, jeśli rozszerzenie „default_locale” jest ustawiona na „es”, a nie /_locates/en_GB/messages.json ani /_locates/en/messages.json zawiera wiadomość, a rozszerzenie używa wiadomości z adresu /_locates/es/messages.json

Na ilustracji poniżej komunikat o nazwie „colores” we wszystkich 3 językach, w których rozszerzenie obsługuje, ale „extName” działa tylko w dwóch regionach. Zawsze, gdy użytkownik korzysta z Google Chrome w Stanach Zjednoczonych Angielski widzi etykietę „Kolory”, a użytkownik posługujący się brytyjskim angielskim widzi „Kolory”. angielski (USA) i Użytkownicy Wielkiej Brytanii widzą rozszerzenie „Hello World”. Domyślnym językiem jest hiszpański, użytkownicy korzystający z przeglądarki Google Chrome w językach innych niż angielski zobaczą etykietę „Kolory”. oraz rozszerzenie pod tytułem „Hola mundo”.

Cztery pliki: manifest.json i 3 pliki messages.json (dla plików es, en i en_GB).  Pliki es i en zawierają wpisy dla wiadomości o nazwach

Ustaw język przeglądarki

Aby przetestować tłumaczenia, warto ustawić język przeglądarki. W tej sekcji znajdziesz wskazówki, jak ustawienia regionalne w systemach Windows, Mac OS X, Linux i ChromeOS.

Windows

Możesz zmienić język przy użyciu skrótu lub interfejsu użytkownika Google Chrome. jest szybsza, jeśli go skonfigurujesz i możesz używać kilku języków jednocześnie.

Użyj skrótu specyficznego dla języka

Aby utworzyć skrót, który będzie uruchamiać Google Chrome w określonym języku, i go używać:

  1. Utwórz kopię skrótu do Google Chrome, który jest już na pulpicie.
  2. Zmień nazwę nowego skrótu, aby pasował do nowego języka.
  3. Zmień właściwości skrótu, tak aby pole Cel określało --lang oraz --user-data-dir. Wartość docelowa powinna wyglądać mniej więcej tak:

    path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
    
  4. Uruchom Google Chrome, klikając dwukrotnie skrót.

Na przykład, aby utworzyć skrót do uruchamiania Google Chrome w języku hiszpańskim (es), możesz utworzyć skrót skrót o nazwie chrome-es z następującą wartością docelową:

path_to_chrome.exe --lang=es --user-data-dir=c:\chrome-profile-es

Możesz utworzyć dowolną liczbę skrótów, co ułatwi testowanie w wielu językach. Przykład:

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
Korzystanie z interfejsu

Poniżej opisano, jak zmienić ustawienia regionalne za pomocą interfejsu użytkownika przeglądarki Google Chrome dla systemu Windows:

  1. Ikona aplikacji > Opcje
  2. Wybierz kartę Dla zaawansowanych.
  3. Przewiń w dół do sekcji Treść internetowa.
  4. Kliknij Zmień ustawienia czcionki i języka.
  5. Wybierz kartę Języki.
  6. Wybierz z menu język Google Chrome.
  7. Uruchom ponownie Chrome

Mac OS X

Aby zmienić język na Macu, użyj preferencji systemowych.

  1. Z menu Apple wybierz Preferencje systemowe.
  2. W sekcji Osobiste wybierz Międzynarodowe.
  3. Wybierz język i lokalizację
  4. Uruchom ponownie Chrome

Linux

Aby zmienić ustawienia regionalne w systemie Linux, najpierw zamknij Google Chrome. Następnie w jednym wierszu ustaw język LANGUAGE. i uruchomić przeglądarkę Google Chrome. Na przykład:

LANGUAGE=es ./chrome

ChromeOS

Aby zmienić język w ChromeOS:

  1. W obszarze powiadomień wybierz Ustawienia.
  2. W sekcji Języki i metody wprowadzania kliknij menu Język.
  3. Jeśli Twojego języka nie ma na liście, kliknij Dodaj języki i dodaj go.
  4. Po dodaniu języka kliknij opcję menu Więcej działań z 3 kropkami obok języka i wybierz Wyświetlaj ChromeOS w tym języku.
  5. Kliknij przycisk Uruchom ponownie obok ustawionego języka, aby ponownie uruchomić ChromeOS.

Przykłady

Proste przykłady internacjonalizacji znajdziesz w katalogu examples/api/i18n. Dla pełny przykład: examples/extensions/news. Inne przykłady oraz pomoc w wyświetlaniu kodu źródłowego znajdziesz w sekcji Przykłady.

getMessage()

Poniższy kod pobiera zlokalizowaną wiadomość z przeglądarki i wyświetla ją w postaci ciągu znaków. it zastępuje dwie zmienne w wiadomości ciągami „ciąg1” i „ciąg2”.

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

Aby podać i użyć pojedynczego ciągu znaków:

  // 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."
    }
  }
}

Więcej informacji o symbolach zastępczych znajdziesz na stronie Wiadomości o określonych regionach. Więcej informacji: wywołującego getMessage() znajdziesz w dokumentacji interfejsu API.

getAcceptLanguages()

Poniższy kod pobiera z przeglądarki języki akceptowane i wyświetla je jako ciąg znaków przez rozdzielając je znakiem „,”.

function getAcceptLanguages() {
  chrome.i18n.getAcceptLanguages(function(languageList) {
    var languages = languageList.join(",");
    document.getElementById("languageSpan").innerHTML = languages;
  })
}

Szczegółowe informacje o wywoływaniu funkcji getAcceptLanguages() znajdziesz w dokumentacji interfejsu API.

detectLanguage()

Ten kod wykrywa do 3 języków na podstawie danego ciągu i wyświetla wynik jako ciągi tekstowe rozdzielone znakami nowego wiersza.

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;
  });
}

Więcej informacji o wywoływaniu funkcji detectLanguage(inputText) znajdziesz w dokumentacji interfejsu API.

Typy

LanguageCode

Chrome w wersji 47 lub nowszej .

Kod języka ISO, np. en lub fr. Pełną listę języków obsługiwanych przez tę metodę znajdziesz na stronie kLanguageInfoTable. W przypadku nieznanego języka zostanie zwrócona wartość und, co oznacza, że [percentage] tekstu jest nieznanych w CLD.

Typ

ciąg znaków

Metody

detectLanguage()

Obietnica Chrome w wersji 47 lub nowszej
chrome.i18n.detectLanguage(
  text: string,
  callback?: function,
)

Określa język podanego tekstu za pomocą CLD.

Parametry

  • tekst

    ciąg znaków

    Dane wejściowe użytkownika do przetłumaczenia.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (result: object) => void

    • wynik

      Obiekt

      Obiekt LanguageDetectionResult zawiera wykrytą niezawodność języka i tablicę DetectedLanguage

      • isReliable

        wartość logiczna

        Zgodność języka wykryta przez CLD

      • języki

        object[]

        tablica wykrytychLanguage

        • language

          ciąg znaków

        • procent

          liczba

          Odsetek wykrytego języka

Zwroty

  • Promise&lt;object&gt;

    Chrome w wersji 99 lub nowszej .

    Obietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

getAcceptLanguages()

Obietnica .
chrome.i18n.getAcceptLanguages(
  callback?: function,
)

Pobiera języki przeglądarki. Jest inny niż język używany w przeglądarce. aby uzyskać język, użyj i18n.getUILanguage.

Parametry

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (languages: string[]) => void

    • języki

      ciąg znaków[]

      Tablica kodu języka

Zwroty

  • Promise&lt;LanguageCode[]&gt;

    Chrome w wersji 99 lub nowszej .

    Obietnice są obsługiwane w Manifest V3 i nowszych, ale wywołania zwrotne są podane w przypadku zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Polecenie promowana jest realizowane z tym samym typem, który jest przekazywany do wywołania zwrotnego.

getMessage()

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

Pobiera zlokalizowany ciąg znaków dla określonej wiadomości. Jeśli brakuje komunikatu, ta metoda zwraca pusty ciąg znaków („”). Jeśli format wywołania getMessage() jest nieprawidłowy – na przykład messageName nie jest ciągiem znaków lub tablica substitutions ma więcej niż 9 elementów, ta metoda zwraca undefined.

Parametry

  • messageName

    ciąg znaków

    Nazwa wiadomości podana w pliku messages.json.

  • zamienniki

    dowolne opcjonalne

    Maksymalnie 9 ciągów zastępowania, jeśli wiadomość wymaga ich.

  • Opcje

    obiekt opcjonalny

    Chrome w wersji 79 lub nowszej .
    • escapeLt

      Wartość logiczna opcjonalna

      Escape < – tłumaczenie na język &lt;. Dotyczy to tylko samej wiadomości, a nie obiektów zastępczych. Może być przydatna, jeśli tłumaczenie jest używane w kontekście HTML. Szablony Closure używane z Closure Compiler generują go automatycznie.

Zwroty

  • ciąg znaków

    Wiadomość zlokalizowana dla bieżącego języka.

getUILanguage()

chrome.i18n.getUILanguage()

Pobiera język interfejsu przeglądarki. Ta wartość różni się od metody i18n.getAcceptLanguages, która zwraca preferowane języki użytkownika.

Zwroty

  • ciąg znaków

    Kod języka interfejsu przeglądarki, np. en-US lub fr-FR.