chrome.i18n

Açıklama

Uygulamanızın veya uzantınızın tamamında uluslararasılaştırmayı uygulamak için chrome.i18n altyapısını kullanın.

Bu etiketin kullanıcı tarafından görülebilen tüm dizelerini messages.json adlı bir dosyaya yerleştirmeniz gerekir. Her yeni yerel ayar eklediğinizde _locales/_localeCode_ adlı bir dizin altına bir mesaj dosyası eklersiniz. Burada localeCode, İngilizce için en gibi bir koddur.

İngilizce (en), İspanyolca (es) ve Korece (ko) dillerini destekleyen uluslararası bir uzantının dosya hiyerarşisini aşağıda görebilirsiniz:

Uzantı dizininde: manifest.json, *.html, *.js, _locales dizini. _locales dizininde: en, es ve ko dizinleri. Her biri messages.json dosyası içerir.

Birden fazla dil nasıl desteklenir?

Aşağıdaki şekilde gösterilen dosyaları içeren bir uzantınız olduğunu varsayalım:

Bir manifest.json dosyası ve JavaScript içeren bir dosya. .json dosyasında

Bu uzantıyı uluslararası hale getirmek için, kullanıcı tarafından görülebilen her dizeyi adlandırıyor ve bir mesaj dosyasına yerleştiriyorsunuz. Uzantının manifesti, CSS dosyaları ve JavaScript kodu, yerelleştirilmiş sürümünü almak için her bir dizenin adını kullanır.

Uzantının uluslararası hale getirildiğinde nasıl göründüğünü burada görebilirsiniz (hâlâ yalnızca İngilizce dizeler içerdiğini unutmayın):

<img "__msg_extname__",="" "default_locale"="" "en".="" "extname"."="" "merhaba="" _locales="" a="" alt="manifest.json dosyasında, " and="" be="" changed="" chrome.i18n.getmessage("extname"="" tanımlar="" en=""yeni" dosya="" dosyasında," chrome.i18n.getmessage("3" = "tanıma" dosyasında)="1.

Uluslararası hale getirme hakkında bazı notlar:

  • Desteklenen yerel ayarlardan herhangi birini kullanabilirsiniz. Desteklenmeyen bir yerel ayar kullanırsanız Google Chrome bunu yoksayar.
  • manifest.json ve CSS dosyalarında, mesajadı adlı bir dizeye şu şekilde referans verin:

    __MSG_messagename__
    
  • Uzantınızın veya uygulamanızın JavaScript kodunda, mesajadı adlı bir dizeye şu şekilde bakın:

    chrome.i18n.getMessage("messagename")
    
  • Her getMessage() çağrısında, iletiye dahil edilecek en fazla 9 dize sağlayabilirsiniz. Ayrıntılar için Örnekler: getMessage bölümüne bakın.

  • @@bidi_dir ve @@ui_locale gibi bazı mesajlar, uluslararasılaştırma sistemi tarafından sağlanır. Önceden tanımlanmış mesaj adlarının tam listesi için Önceden tanımlanmış mesajlar bölümüne bakın.

  • messages.json ürününde, kullanıcı tarafından görülebilen her dizenin bir adı, bir "mesaj" öğesi ve isteğe bağlı bir "açıklama" öğesi vardır. Bu ad, dizeyi tanımlayan "extName" veya "arama_dizesi" gibi bir anahtardır. "message", dizenin bu yerel ayardaki değerini belirtir. İsteğe bağlı "description" öğesi, dizenin uzantınızda nasıl kullanıldığını göremeyen çevirmenlere yardımcı olur. Örneğin:

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

    Daha fazla bilgi için Biçimler: Yerel Ayara Özgü İletiler bölümüne bakın.

Bir uzantı veya uygulama uluslararası hale getirildikten sonra, çevrilmesi kolaydır. messages.json dosyasını kopyalıyor, çeviriyor ve bu kopyayı _locales altında yeni bir dizine yerleştiriyorsunuz. Örneğin, İspanyolcayı desteklemek için _locales/es altına messages.json metninin çevrilmiş bir kopyasını eklemeniz yeterlidir. Aşağıdaki şekilde önceki uzantı yeni bir İspanyolca çeviriyle gösterilmektedir.

Bu işlem önceki şekille aynı olmasına rağmen _locales/es/messages.json adresinde mesajların İspanyolca çevirisini içeren yeni bir dosya görünür.

Önceden tanımlanmış mesajlar

Uluslararasılaştırma sistemi, yerelleştirmenize yardımcı olmak için önceden tanımlanmış birkaç mesaj sağlar. Bu özellikler arasında @@ui_locale yer alır. Böylece, mevcut kullanıcı arayüzü yerel ayarını ve metnin yönünü algılamanızı sağlayan birkaç @@bidi_... mesajını algılayabilirsiniz. İkinci mesajlar, gadget BIDI (iki yönlü) API'sindeki sabit değerlerle benzer adlara sahiptir.

@@extension_id özel mesajı, uzantının veya uygulamanın yerelleştirilip yerelleştirilmediğinden bağımsız olarak CSS ve JavaScript dosyalarında kullanılabilir. Bu mesaj, manifest dosyalarında çalışmaz.

Aşağıdaki tabloda, önceden tanımlanmış her bir ileti açıklanmaktadır.

Mesaj adıAçıklama
@@extension_idUzantı veya uygulama kimliği. Uzantı içindeki kaynaklar için URL'ler oluşturmak amacıyla bu dizeyi kullanabilirsiniz. Yerelleştirilmemiş uzantılar bile bu mesajı kullanabilir.
Not: Bu mesajı manifest dosyalarında kullanamazsınız.
@@ui_localeGeçerli yerel ayar; yerel ayara özel URL'ler oluşturmak için bu dizeyi kullanabilirsiniz.
@@bidi_dirGeçerli yerel ayarın metin yönü; İngilizce gibi soldan sağa diller için "ltr" veya Japonca gibi sağdan sola diller için "rtl".
@@bidi_reversed_dir@@bidi_dir değeri "ltr" ise bu "rtl" olur; aksi takdirde "ltr" olur.
@@bidi_start_edge@@bidi_dir değeri "ltr" ise "left" (sol), aksi takdirde "right" olur.
@@bidi_end_edge@@bidi_dir değeri "ltr" ise "right" (sağ), aksi takdirde "left" olur.

Aşağıda, URL oluşturmak için CSS dosyasında @@extension_id kullanımına ilişkin bir örnek verilmiştir:

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

Uzantı kimliği abcdefghijklmnopqrstuvwxyzabcdef ise önceki kod snippet'indeki kalın harflerle yazılmış satır şu şekildedir:

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

CSS dosyasında @@bidi_* mesajlarının kullanılmasına dair bir örneği aşağıda bulabilirsiniz:

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

İngilizce gibi soldan sağa diller için kalın çizgiler şu şekildedir:

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

Yerel ayarlar

Tek bir çevirinin, bir dilin birden fazla varyasyonunu (en_GB ve en_US gibi) desteklemesini sağlayan birkaç yerel ayar (ör. en) arasından seçim yapabilirsiniz.

Desteklenen yerler

Chrome Web Mağazası'nın desteklediği yerel ayarlardan herhangi birini kullanabilirsiniz.

İletileri arama

Desteklenen her yerel ayar için her dizeyi tanımlamanız gerekmez. Varsayılan yerel ayarın messages.json dosyası her dize için bir değere sahip olduğu sürece, bir çeviri ne kadar az olursa olsun uzantınız veya uygulamanız çalışır. Uzantı sisteminin bir mesajı şu şekilde arar:

  1. İleti dosyasında (varsa) kullanıcının tercih ettiği yerel ayarı arayın. Örneğin, Google Chrome'un yerel ayarı İngiliz İngilizcesi (en_GB) olarak ayarlandığında sistem, iletiyi ilk olarak _locales/en_GB/messages.json dilinde arar. O dosya varsa ve mesaj varsa sistem başka bir yere bakmaz.
  2. Kullanıcının tercih ettiği yerel ayar bir bölge içeriyorsa (yani yerel ayar alt çizgiye: _ ile sahipse) yerel ayarı bu bölge olmadan arayın. Örneğin, en_GB mesaj dosyası yoksa veya mesajı içermiyorsa sistem, en mesaj dosyasına bakar. O dosya varsa ve mesaj varsa sistem daha fazla arama yapmaz.
  3. İleti dosyasında varsayılan yerel ayarı arayın. Örneğin, uzantının "default_locale" değeri "es" olarak ayarlanmışsa ve _locales/en_GB/messages.json veya _locales/en/messages.json mesajı içermiyorsa uzantı _locales/es/messages.json adresindeki mesajı kullanır.

Aşağıdaki şekilde, "colores" adlı mesaj uzantının desteklediği üç yerel ayarda da yer alırken, "extName" yalnızca iki yerel ayardadır. Google Chrome'u ABD İngilizcesi çalıştıran bir kullanıcı "Renkler" etiketini görürse, İngiliz İngilizcesi söz konusu kullanıcı "Renkler"i görür. Hem ABD İngilizcesi hem de İngiliz İngilizcesi kullanıcılar "Hello World" uzantı adını görür. Varsayılan dil İspanyolca olduğundan, Google Chrome'u İngilizce dışında herhangi bir dilde çalıştıran kullanıcılar "Colores" etiketini ve "Hola mundo" uzantı adını görür.

Dört dosya: manifest.json ve üç messages.json dosyası (es, en ve en_GB için).  es ve en dosyaları,

Tarayıcınızın yerel ayarını yapma

Çevirileri test etmek için tarayıcınızın yerel ayarını yapmak isteyebilirsiniz. Bu bölümde, Windows, Mac OS X, Linux ve ChromeOS'te yerel ayarın nasıl ayarlanacağı anlatılmaktadır.

Windows

Yerel ayara özel bir kısayol veya Google Chrome kullanıcı arayüzünü kullanarak yerel ayarı değiştirebilirsiniz. Kısayol yaklaşımı, oluşturulduktan sonra daha hızlıdır ve aynı anda birden fazla dili kullanmanıza olanak tanır.

Yerel ayara özel bir kısayol kullanma

Google Chrome'u belirli bir yerel ayarla başlatan bir kısayol oluşturmak ve kullanmak için:

  1. Masaüstünüzde bulunan Google Chrome kısayolunun bir kopyasını oluşturun.
  2. Yeni kısayolu yeni yerel ayarla yeniden adlandırın.
  3. Kısayolun özelliklerini, Hedef alanında --lang ve --user-data-dir işaretlerini belirtecek şekilde değiştirin. Hedef, aşağıdaki gibi görünmelidir:

    path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
    
  4. Kısayolu çift tıklayarak Google Chrome'u başlatın.

Örneğin, Google Chrome'u İspanyolca olarak (es) başlatan bir kısayol oluşturmak için aşağıdaki hedefe sahip chrome-es adında bir kısayol oluşturabilirsiniz:

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

İstediğiniz kadar kısayol oluşturarak birden fazla dilde test etmeyi kolaylaştırabilirsiniz. Örneğin:

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
Kullanıcı arayüzünü kullanma

Windows için Google Chrome kullanıcı arayüzünü kullanarak yerel ayarı nasıl değiştireceğiniz aşağıda açıklanmıştır:

  1. Uygulama simgesi > Seçenekler
  2. Gelişmiş Seçenekler sekmesini seçin
  3. Aşağı kaydırarak Web İçeriği'ne gidin
  4. Yazı tipi ve dil ayarlarını değiştir'i tıklayın.
  5. Diller sekmesini seçin
  6. Google Chrome dilini ayarlamak için açılır menüyü kullanın
  7. Chrome'u yeniden başlatma

Mac OS X

Mac'te yerel ayarı değiştirmek için sistem tercihlerini kullanın.

  1. Apple menüsünden Sistem Tercihleri'ni seçin.
  2. Kişisel bölümünün altında Uluslararası'yı seçin
  3. Dilinizi ve konumunuzu seçin
  4. Chrome'u yeniden başlatma

Linux

Linux'ta yerel ayarı değiştirmek için önce Google Chrome'dan çıkın. Ardından, hepsi tek satırda, LANGUAGE ortam değişkenini ayarlayın ve Google Chrome'u başlatın. Örneğin:

LANGUAGE=es ./chrome

ChromeOS

ChromeOS'te yerel ayarı değiştirmek için:

  1. Sistem tepsisinden Ayarlar'ı seçin.
  2. Diller ve giriş bölümünde Dil açılır listesini seçin.
  3. Diliniz listede yoksa Dil ekle'yi tıklayıp dili ekleyin.
  4. Eklendikten sonra dilinizin yanındaki 3 noktalı Diğer işlemler menü öğesini tıklayın ve ChromeOS'i bu dilde görüntüle'yi seçin.
  5. ChromeOS'i yeniden başlatmak için ayarlanan dilin yanında görünen Yeniden başlat düğmesini tıklayın.

Örnekler

Uluslararası hale getirmeyle ilgili basit örnekleri examples/api/i18n dizininde bulabilirsiniz. Eksiksiz bir örnek için examples/extensions/news sayfasına bakın. Diğer örnekler ve kaynak kodu görüntülemeyle ilgili yardım için Örnekler bölümüne bakın.

Örnekler: getMessage

Aşağıdaki kod tarayıcıdan yerelleştirilmiş bir mesaj alır ve bunu bir dize olarak gösterir. "string1" ve "string2" dizeleri, iletideki iki yer tutucunun yerine geçer.

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

Tek bir dizeyi nasıl sağlayacağınız ve kullanacağınız aşağıda açıklanmıştır:

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

Yer tutucular hakkında daha fazla bilgi için Yerel Ayara Özgü İletiler sayfasına bakın. getMessage() çağrısıyla ilgili ayrıntılar için API referansı bölümüne bakın.

Örnek: getKabulDiller

Aşağıdaki kod, kabul edilen dilleri tarayıcıdan alır ve her kabul edilen dili "" ile ayırarak bir dize olarak görüntüler.

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

getAcceptLanguages() çağrısı yapmayla ilgili ayrıntılar için API referansını inceleyin.

Örnek: detectLanguage

Aşağıdaki kod, belirli bir dizeden en fazla 3 dili algılar ve sonucu yeni satırlarla ayrılmış dizeler olarak gösterir.

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

detectLanguage(inputText) çağrısı yapma hakkında daha fazla bilgi için API referansını inceleyin.

Türler

LanguageCode

Chrome 47 ve sonraki sürümler

en veya fr gibi bir ISO dil kodu. Bu yöntemin desteklediği dillerin tam listesi için kLanguageInfoTable adresine bakın. Bilinmeyen bir dil için und döndürülür. Bu, metnin [percentage] kadarlık kısmının CLD tarafından bilinmediği anlamına gelir

Tür

dize

Yöntemler

detectLanguage()

Söz Chrome 47 ve sonraki sürümleri
chrome.i18n.detectLanguage(
  text: string,
  callback?: function,
)

CLD kullanarak sağlanan metnin dilini algılar.

Parametreler

  • text (metin)

    dize

    Çevrilecek kullanıcı girişi dizesi.

  • geri çağırma

    Functions (isteğe bağlı)

    callback parametresi şu şekilde görünür:

    (result: object)=>void

    • sonuç

      nesne

      Algılanan dil güvenilirliğini ve DetectedLanguage dizisini barındıran LanguageDetectionResult nesnesi

      • isReliable

        boolean

        CLD dil güvenilirliği algıladı

      • diller

        nesne[]

        algılandıLanguage dizisi

        • dil

          dize

        • yüzde

          sayı

          Algılanan dilin yüzdesi

İlerlemeler

  • Promise<object>

    Chrome 99 ve sonraki sürümler

    Vaatler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırmaları kullanması gerekir.

getAcceptLanguages()

Söz
chrome.i18n.getAcceptLanguages(
  callback?: function,
)

Tarayıcının kabul ettiği dilleri alır. Bu, tarayıcının kullandığı yerel ayardan farklıdır; yerel ayarı almak için i18n.getUILanguage kullanın.

Parametreler

  • geri çağırma

    Functions (isteğe bağlı)

    callback parametresi şu şekilde görünür:

    (languages: string[])=>void

    • diller

      dize[]

      LanguageCode Dizisi

İlerlemeler

  • Promise<LanguageCode[]>

    Chrome 99 ve sonraki sürümler

    Vaatler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırmaları kullanması gerekir.

getMessage()

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

Belirtilen mesaj için yerelleştirilmiş dizeyi alır. Mesaj yoksa bu yöntem boş bir dize ('') döndürür. getMessage() çağrısının biçimi yanlışsa (örneğin, messageName dize değilse veya substitutions dizisi 9'dan fazla öğe içeriyorsa bu yöntem undefined sonucunu döndürür.)

Parametreler

  • messageName

    dize

    İletinin, messages.json dosyasında belirtilen adı.

  • ikameler

    isteğe bağlı

    İleti gerektiriyorsa en fazla 9 değiştirme dizesi.

  • seçenekler

    isteğe bağlı

    Chrome 79 ve sonraki sürümler
    • escapeLt

      boole isteğe bağlı

      &lt; diline çeviride < çıkışı yapın. Bu, yalnızca iletinin kendisi için geçerlidir; yer tutucular için geçerli değildir. Çeviri bir HTML bağlamında kullanılıyorsa geliştiriciler bunu kullanmak isteyebilir. Kapatma Derleyici ile kullanılan Kapatma Şablonları bunu otomatik olarak oluşturur.

İlerlemeler

  • dize

    Mesaj, geçerli yerel ayar için yerelleştirilmiş.

getUILanguage()

chrome.i18n.getUILanguage()

Tarayıcının tarayıcı kullanıcı arayüzü dilini alır. Bu, tercih edilen kullanıcı dillerini döndüren i18n.getAcceptLanguages işlevinden farklıdır.

İlerlemeler

  • dize

    Tarayıcının kullanıcı arayüzü dil kodu (ör. en-US veya fr-FR).