browser.i18n

Açıklama

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

Manifest

Bir uzantının /_locales dizini varsa manifest, "default_locale" değerini tanımlamalıdır.

Kavramlar ve kullanım

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

İngilizce (en), İspanyolca (es) ve Koreceyi (ko) destekleyen uluslararası bir uzantının dosya hiyerarşisi aşağıda verilmiştir:

Uzantı dizininde: manifest.json, *.html, *.js, /_locales dizini. /_locales dizininde: Her birinde messages.json dosyası bulunan en, es ve ko dizinleri.

Birden çok dili destekleme

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

manifest.json dosyası ve JavaScript içeren bir dosya. .json dosyasında "Hello World" ifadesi yer alır. JavaScript dosyasının başlığı "Hello World"dür.

Bu uzantıyı uluslararasılaştırmak için kullanıcı tarafından görülebilen her dizeyi adlandırıp bir mesaj dosyasına yerleştirirsiniz. Uzantının manifest dosyası, CSS dosyaları ve JavaScript kodu, her dize adını kullanarak yerelleştirilmiş sürümünü alır.

Uzantı, uluslararasılaştırıldığında aşağıdaki gibi görünür (yalnızca İngilizce dizeler içerdiğini unutmayın):

manifest.json dosyasında "Hello World", "__MSG_extName__" olarak değiştirildi ve yeni bir default_locale öğesinin değeri "en" oldu. JavaScript dosyasında "Hello World", browser.i18n.getMessage('extName') olarak değiştirilmiştir. /_locales/en/messages.json adlı yeni bir dosya, "extName"i tanımlar.

Uluslararasılaştırma ile ilgili 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, messagename adlı bir dizeye şu şekilde referans verin:

    __MSG_messagename__
    
  • Uzantınızın veya uygulamanızın JavaScript kodunda, messagename adlı bir dizeye şu şekilde referans verin:

    browser.i18n.getMessage("messagename")
    
  • getMessage() için yapılan her çağrıda, mesaja 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 dosyasında, kullanıcı tarafından görülebilen her dize bir ada, bir "message" öğesine ve isteğe bağlı bir "description" öğesine sahiptir. Ad, dizeyi tanımlayan "extName" veya "search_string" gibi bir anahtardır. "message", bu yerel ayardaki dize değerini belirtir. İsteğe bağlı "description" (açıklama), dizenin uzantınızda nasıl kullanıldığını göremeyebilecek ç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ü Mesajlar başlıklı makaleyi inceleyin.

Uluslararasılaştırılan bir uzantıyı çevirmek kolaydır. messages.json dosyasını kopyalayıp çevirir ve kopyayı /_locales altında yeni bir dizine yerleştirirsiniz. Örneğin, İspanyolca'yı desteklemek için messages.json dosyasının çevrilmiş bir kopyasını /_locales/es dizinine yerleştirmeniz yeterlidir. Aşağıdaki resimde, yeni İspanyolca çevirisiyle önceki uzantı gösterilmektedir.

Bu, önceki resimle aynı görünür ancak /_locales/es/messages.json konumunda mesajların İspanyolca çevirisini içeren yeni bir dosya vardır.

Önceden tanımlanmış mesajlar

Uluslararasılaştırma sistemi, yerelleştirmenize yardımcı olacak önceden tanımlanmış birkaç mesaj sağlar. Bunlar arasında, geçerli kullanıcı arayüzü yerel ayarını algılayabilmeniz için @@ui_locale ve metin yönünü algılamanızı sağlayan birkaç @@bidi_... mesajı yer alır. İkinci mesajlar, gadget'lar BIDI (çift yönlü) API'sindeki sabitlerle benzer adlara sahiptir.

Uzantı veya uygulama yerelleştirilmiş olsun ya da olmasın, CSS ve JavaScript dosyalarında özel mesaj @@extension_id kullanılabilir. Bu mesaj, manifesto dosyalarında çalışmaz.

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

Mesaj adıAçıklama
@@extension_idUzantı veya uygulama kimliği. Uzantıdaki kaynakların URL'lerini oluşturmak için bu dizeyi kullanabilirsiniz. Yerelleştirilmemiş uzantılar bile bu mesajı kullanabilir.
Not: Bu mesajı bir manifest dosyası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 Arapça gibi sağdan sola diller için "rtl".
@@bidi_reversed_dir@@bidi_dir "ltr" ise bu "rtl" olur, aksi takdirde "ltr" olur.
@@bidi_start_edge@@bidi_dir "ltr" ise bu "sol"dur, aksi takdirde "sağ"dır.
@@bidi_end_edge@@bidi_dir "ltr" ise bu "sağ", aksi takdirde "sol" olur.

Aşağıda, URL oluşturmak için CSS dosyasında @@extension_id kullanımına dair 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 satır şu şekilde olur:

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

CSS dosyasında @@bidi_* mesajlarının kullanımına dair bir örnek:

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 şekilde olur:

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

Yerel ayarlar

Tek bir çevirinin bir dilin birden fazla varyasyonunu (ör. en_GB ve en_US) desteklemesine olanak tanıyan bazı yerel ayarlar (ör. en) dahil olmak üzere birçok yerel ayar arasından seçim yapabilirsiniz.

Uzantınızı Chrome Web Mağazası tarafından desteklenen herhangi bir yerel ayara yerelleştirebilirsiniz. Yerel ayarınız burada listelenmiyorsa en yakın alternatifi seçin. Örneğin, uzantınızın varsayılan yerel ayarı "de_CH" ise Chrome Web Mağazası'nda "de" seçeneğini belirleyin.

Yerel ayar kodu Dil (bölge)
ar Arapça
am Amharca
bg Bulgarca
bn Bengalce
ca Katalanca
cs Çekçe
da Danca
de Almanca
el Yunanca
en İngilizce
en_AU İngilizce (Avustralya)
en_GB İngilizce (İngiltere)
en_US İngilizce (ABD)
es İspanyolca
es_419 İspanyolca (Latin Amerika ve Karayipler)
et Estonca
fa Farsça
fi Fince
fil Filipince
fr Fransızca
gu Güceratça
he İbranice
hi Hintçe
hr Hırvatça
hu Macarca
id Endonezce
it İtalyanca
ja Japonca
kn Kannada
ko Korece
lt Litvanca
lv Letonca
ml Malayalam
mr Marathi
ms Malayca
nl Felemenkçe
no Norveççe
pl Lehçe
pt_BR Portekizce (Brezilya)
pt_PT Portekizce (Portekiz)
ro Rumence
ru Rusça
sk Slovakça
sl Slovence
sr Sırpça
sv İsveççe
sw Svahili dili
ta Tamilce
te Telugu dili
th Tayca
tr Türkçe
uk Ukraynaca
vi Vietnamca
zh_CN Çince (Çin)
zh_TW Çince (Tayvan)

İleti ara

Desteklenen her yerel ayar için her dizeyi tanımlamanız gerekmez. Varsayılan yerel ayarın messages.json dosyasında her dize için bir değer olduğu sürece, uzantınız veya uygulamanız çevirinin ne kadar seyrek olduğuna bakılmaksızın çalışır. Uzantı sisteminin bir mesajı nasıl aradığı aşağıda açıklanmıştır:

  1. Kullanıcının tercih ettiği yerel ayar için mesajlar dosyasını (varsa) arayın. Örneğin, Google Chrome'un yerel ayarı İngiliz İngilizcesi (en_GB) olarak ayarlandığında sistem önce /_locales/en_GB/messages.json dizininde mesajı arar. Bu dosya mevcutsa ve mesaj oradaysa sistem başka bir yere bakmaz.
  2. Kullanıcının tercih ettiği yerel ayarda bir bölge varsa (yani yerel ayarda alt çizgi: _ varsa) bölge olmadan yerel ayarı arayın. Örneğin, en_GB mesaj dosyası yoksa veya mesajı içermiyorsa sistem en mesaj dosyasına bakar. Bu dosya mevcutsa ve ileti oradaysa sistem başka bir yere bakmaz.
  3. Varsayılan yerel ayar için mesajlar dosyasını arayın. Örneğin, uzantının "default_locale" değeri "es" olarak ayarlanmışsa ve ne /_locales/en_GB/messages.json ne de /_locales/en/messages.json mesajı içermiyorsa uzantı, /_locales/es/messages.json konumundaki mesajı kullanır.

Aşağıdaki şekilde, "colores" adlı mesaj, uzantının desteklediği üç yerel ayarın tümünde yer alır ancak "extName" yalnızca iki yerel ayarda bulunur. Google Chrome'u ABD İngilizcesi ile kullanan bir kullanıcı "Colors" etiketini görürken, İngiliz İngilizcesi kullanan bir kullanıcı "Colours" etiketini 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 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ı, "extName" ve "colores" adlı mesajların girişlerini gösterir; en_GB dosyasında yalnızca bir giriş ("colores" için) vardır.

Tarayıcınızın yerel ayarını belirleme

Çevirileri test etmek için tarayıcınızın yerel ayarını belirlemeniz gerekebilir. Bu bölümde, Windows, macOS, Linux ve ChromeOS'te yerel ayarın nasıl yapılacağı açıklanmaktadır.

Windows

Yerel ayara özgü bir kısayol veya Google Chrome kullanıcı arayüzünü kullanarak yerel ayarı değiştirebilirsiniz. Kısayol yaklaşımını ayarladıktan sonra bu yaklaşım daha hızlıdır ve aynı anda birkaç dil kullanmanıza olanak tanır.

Yerel ayara özel 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 eşleşecek şekilde yeniden adlandırın.
  3. Kısayolun özelliklerini, Hedef alanında --lang ve --user-data-dir işaretleri belirtilecek şekilde değiştirin. Hedef şuna benzer:

    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 (es) başlatan bir kısayol oluşturmak için aşağıdaki hedefe sahip chrome-es adlı 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 kolayca test yapabilirsiniz. Ö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'da 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. Under the Hood (Gelişmiş) sekmesini seçin.
  3. 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şlatın.

Mac OS

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

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

Linux

Linux'ta yerel ayarı değiştirmek için önce Google Chrome'dan çıkın. Ardından, tek bir 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 menüsünü seçin.
  3. Diliniz listede yoksa Dil ekle'yi tıklayıp 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ılaştırma örneklerini examples/api/i18n dizininde bulabilirsiniz. Eksiksiz bir örnek için examples/extensions/news adresine bakın. Diğer örnekler ve kaynak kodunu görüntüleme konusunda yardım için Örnekler'e bakın.

getMessage()

Aşağıdaki kod, tarayıcıdan yerelleştirilmiş bir mesaj alır ve bunu dize olarak gösterir. İleti içindeki iki yer tutucuyu "string1" ve "string2" dizeleriyle değiştirir.

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ü Mesajlar sayfasını inceleyin. getMessage() çağrısı hakkında ayrıntılı bilgi için API referansına bakın.

getAcceptLanguages()

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

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

getAcceptLanguages() yöntemini çağırma hakkında ayrıntılı bilgi için API referansına bakın.

detectLanguage()

Aşağıdaki kod, verilen dizeden en fazla 3 dil 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ı hakkında daha fazla bilgi için API referansına bakın.

Türler

LanguageCode

Chrome 47 ve sonraki sürümler Chrome 148'den itibaren browser.*

en veya fr gibi bir ISO dil kodu. Bu yöntemle desteklenen dillerin tam listesi için kLanguageInfoTable sayfasına bakın. Bilinmeyen bir dil için und döndürülür. Bu, metnin [yüzde] kadarının CLD tarafından bilinmediği anlamına gelir.

Tür

dize

Yöntemler

detectLanguage()

Chrome 47 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.i18n.detectLanguage(
  text: string,
)
: Promise<object>

CLD kullanarak sağlanan metnin dilini algılar.

Parametreler

  • text (metin)

    dize

    Çevrilecek kullanıcı girişi dizesi.

İadeler

  • Promise<object>

    Chrome 99 ve sonraki sürümler Chrome 148'den itibaren browser.*

getAcceptLanguages()

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

Tarayıcının kabul edilen dillerini alır. Bu, tarayıcı tarafından kullanılan yerel ayardan farklıdır. Yerel ayarı almak için i18n.getUILanguage kullanın.

İadeler

  • Promise<LanguageCode[]>

    Chrome 99 ve sonraki sürümler Chrome 148'den itibaren browser.*

getMessage()

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

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

Parametreler

  • messageName

    dize

    messages.json dosyasında belirtilen mesajın adı.

  • oyuncu değişiklikleri

    isteğe bağlı

    Mesajda gerekiyorsa en fazla 9 ikame dizesi.

  • seçenekler

    isteğe bağlı nesne

    Chrome 79 ve sonraki sürümler Chrome 148'den itibaren browser.*
    • escapeLt

      boole isteğe bağlı

      <, &lt; diline çevrilirken kaçış karakteri kullanın. Bu durum yalnızca mesajın kendisi için geçerlidir, yer tutucular için geçerli değildir. Geliştiriciler, çeviri bir HTML bağlamında kullanılıyorsa bu seçeneği kullanmak isteyebilir. Closure Compiler ile kullanılan Closure Şablonları bunu otomatik olarak oluşturur.

İadeler

  • dize

    Mesaj, mevcut yerel ayara göre yerelleştirildi.

getUILanguage()

browser.i18n.getUILanguage(): string

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

İadeler

  • dize

    Tarayıcı kullanıcı arayüzü dil kodu (ör. tr-TR veya fr-FR).