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.

Manifest

Bir uzantının /_locales dizini varsa manifest "default_locale"'ı tanımlamalıdır.

Kavramlar ve kullanım

Kullanıcı tarafından görülebilen tüm dizelerini messages.json adlı bir dosyaya koymanız gerekir. Her yeni yerel ayar eklediğinizde /_locales/_localeCode_ adlı bir dizine bir messages dosyası eklersiniz. Bu dosyada localeCode, İngilizce için en gibi bir koddur.

İngilizce (en), İspanyolca (es) ve Korece'yi (ko) destekleyen uluslararasılaştırılmış bir uzantının dosya hiyerarşisi aşağıda verilmiştir:

Uzantı dizininde: manifest.json, *.html, *.js, /_locales dizini. /_locales dizininde: en, es ve ko dizinleri (her biri bir messages.json dosyasına sahiptir).

Birden fazla dili destekleme

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 "Merhaba Dünya" ifadesi yer alıyor. JavaScript dosyasında title = "Merhaba Dünya" ifadesi yer alıyor.

Bu uzantıyı uluslararasılaştırmak için kullanıcı tarafından görülebilen her dizeyi adlandırıp bir mesajlar dosyasına koyarsınız. Uzantı manifesti, CSS dosyaları ve JavaScript kodu, her dizenin yerelleştirilmiş sürümünü almak için dizenin adını kullanır.

Uluslararasılaştırılmış uzantı aşağıdaki gibi görünür (yine de yalnızca İngilizce dizelerin bulunduğunu unutmayın):

manifest.json dosyasında "Merhaba Dünya" ifadesi "__MSG_extName__" olarak değiştirildi ve "default_locale" öğesi "en" değerini aldı. JavaScript dosyasında "Merhaba Dünya", chrome.i18n.getMessage("extName") olarak değiştirildi. /_locales/tr/messages.json adlı yeni bir dosya "extName" değerini tanımlar.

Uluslararasılaştırmayla ilgili bazı notlar:

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

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

    chrome.i18n.getMessage("messagename")
    
  • getMessage() çağrısında her seferinde 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 içinde, 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. Ad, dizeyi tanımlayan "extName" veya "search_string" gibi bir anahtardır. "mesaj", dizenin bu yerel ayara göre değerini belirtir. İsteğe bağlı "açıklama", dizenin uzantınızda nasıl kullanıldığını göremeyebilecek olan ç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çimlendirme: Yerel Ayara Özel Mesajlar bölümüne bakın.

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

Bu, önceki şekildekiyle aynıdır ancak /_locales/es/messages.json adresinde, iletilerin İspanyolca çevirisini içeren yeni bir dosya vardır.

Önceden tanımlanmış mesajlar

Uluslararasılaştırma sistemi, yerelleştirmenize yardımcı olmak için önceden tanımlanmış birkaç mesaj sağlar. Bunlar arasında, mevcut kullanıcı arayüzü yerel ayarını algılamanızı sağlayan @@ui_locale ve metin yönünü algılamanızı sağlayan birkaç @@bidi_... mesajı yer alır. Sonraki mesajlar, gadget'lar BIDI (iki yönlü) API'deki sabitlerle benzer ada sahiptir.

@@extension_id özel mesajı, uzantı veya uygulama yerelleştirilmiş olsun veya olmasın CSS ve JavaScript dosyalarında kullanılabilir. Bu mesaj, manifest dosyalarında kullanılamaz.

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

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

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

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

Aşağıda, CSS dosyasında @@bidi_* mesajlarının kullanıldığı bir örnek verilmiştir:

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 okunan 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 varyantını (en_GB ve en_US gibi) desteklemesine olanak tanıyan bazı yerel ayarlar (en gibi) da dahil olmak üzere birçok yerel ayar arasından seçim yapabilirsiniz.

Uzantılarınızı Chrome Web Mağazası tarafından desteklenen tüm yerel ayarlara göre 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"'yi seçin.

Yer kodu Dil (bölge)
ar Arapça
öö 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 Estonya Dili
fa Farsça
fi Fince
fil Filipince
fr Fransızca
gu Gucerat dili
o İbranice
hi Hintçe
s Hırvatça
hu Macarca
id Endonezce
it İtalyanca
ja Japonca
kn Kannada
ko Korece
lt Litvanca
lv Letonca
ml Malayalamca
mr Marathi
ms Malayca
nl Felemenkçe
hayır 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 Swahili
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

Her dize için desteklenen her yerel ayarı tanımlamanız gerekmez. Varsayılan yerel dilin messages.json dosyasında her dize için bir değer olduğu sürece, çeviri ne kadar seyrek olursa olsun uzantınız veya uygulamanız çalışır. Uzantı sistemi bir mesajı şu şekilde arar:

  1. Kullanıcının tercih ettiği yerel ayarı bulmak için messages dosyasını (varsa) arayın. Örneğin, Google Chrome'un yerel ayarı İngiliz İngilizcesi (en_GB) olarak ayarlandığında sistem önce mesajı /_locales/en_GB/messages.json dilinde arar. Bu dosya mevcutsa ve mesaj oradaysa sistem başka bir yere bakmaz.
  2. Kullanıcının tercih ettiği yerel ayarın bir bölgesi varsa (yani yerel ayarda alt çizgi varsa: _) yerel ayarı bu bölge olmadan arayın. Örneğin, en_GB ileti dosyası yoksa veya iletiyi içermiyorsa sistem en ileti dosyasını kontrol eder. Bu dosya varsa ve ileti oradaysa sistem başka bir yere bakmaz.
  3. Mesajlar dosyasında varsayılan yerel ayarı arayın. Örneğin, uzantının "default_locale" özelliği "tr" olarak ayarlanmışsa ve ileti /_locales/en_GB/messages.json veya /_locales/en/messages.json içinde yer almıyorsa uzantı, /_locales/es/messages.json kaynağından gelen iletiyi kullanır.

Aşağıdaki şekilde, "colores" adlı mesaj, uzantının desteklediği üç yerel dilin hepsinde bulunur ancak "extName" yalnızca iki yerel dilde bulunur. Google Chrome'u ABD İngilizcesi dilinde kullanan bir kullanıcının "Colors" etiketini gördüğü her yerde, İngiliz İngilizcesi kullanan bir kullanıcı "Colours" etiketini görür. Hem ABD İngilizcesi hem de İngiliz İngilizcesi kullanıcıları "Merhaba Dünya" uzantısı 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ş vardır ("colores" için).

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

Çevirileri test etmek için tarayıcınızın yerel ayarını yapmanız önerilir. Bu bölümde, Windows, Mac OS, Linux ve ChromeOS'te yerel ayarı nasıl yapacağınız açıklanmaktadır.

Windows

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

Yerel ayara özel bir kısayol kullanın

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ının --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 (es) dilinde 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 sayıda kısayol oluşturarak birden fazla dilde test yapmayı 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'daki kullanıcı arayüzünü kullanarak yerel ayarı değiştirmek için:

  1. Uygulama simgesi > Seçenekler
  2. Kapağın Altında 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şlatma

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şlatma

Linux

Linux'da yerel ayarı değiştirmek için önce Google Chrome'dan çıkın. Ardından, LANGUAGE ortam değişkenini tek bir satırda 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 tepsisinde 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 dili ekleyin.
  4. Dil eklendikten sonra, dilinizin yanındaki 3 noktalı Diğer işlemler menü öğesini tıklayın ve ChromeOS'yi 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 getirme örneklerini examples/api/i18n dizininde bulabilirsiniz. Tam bir örnek için examples/extensions/news adresine bakın. Diğer örnekler ve kaynak kodu görüntülemeyle ilgili yardım için Örnekler bölümüne bakın.

getMessage()

Aşağıdaki kod, tarayıcıdan yerelleştirilmiş bir mesaj alır ve bunu dize olarak gösterir. İletideki 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 dize sağlama ve kullanma işlemini aşağıdaki şekilde yapabilirsiniz:

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

getAcceptLanguages()

Aşağıdaki kod, tarayıcıdan accept-languages öğesini alır ve her accept-language öğesini "," ile ayırarak dize olarak gösterir.

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

getAcceptLanguages() çağrısı hakkında ayrıntılı bilgi için API referansı bölümüne bakın.

detectLanguage()

Aşağıdaki kod, belirtilen dizedeki 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ı hakkında daha fazla bilgi için API referansı bölümüne bakın.

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 sayfasına bakın. Bilinmeyen bir dil için und döndürülür. Bu, metnin [yüzde]'sinin CLD tarafından bilinmediği anlamına gelir.

Tür

dize

Yöntemler

detectLanguage()

Promise Chrome 47 ve sonraki sürümler
chrome.i18n.detectLanguage(
  text: string,
  callback?: function,
)

CLD'yi kullanarak sağlanan metnin dilini algılar.

Parametreler

  • text (metin)

    dize

    Çevrilecek kullanıcı girişi dizesi.

  • geri çağırma

    işlev 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 içeren LanguageDetectionResult nesnesi

      • isReliable

        boolean

        CLD tarafından algılanan dil güvenilirliği

      • diller

        object[]

        detectedLanguage dizisi

        • language

          dize

        • yüzde

          sayı

          Algılanan dilin yüzdesi

İadeler

  • Promise<object>

    Chrome 99 ve üzeri sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getAcceptLanguages()

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

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 değerini kullanın.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

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

    (languages: string[]) => void

    • diller

      dize[]

      LanguageCode dizisi

İadeler

  • Promise<LanguageCode[]>

    Chrome 99 ve üzeri sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getMessage()

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

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

Parametreler

  • messageName

    dize

    messages.json dosyasında belirtildiği şekilde mesajın adı.

  • ikameler

    herhangi bir isteğe bağlı

    Mesaj için gerekliyse en fazla 9 değiştirme dizesi.

  • seçenekler

    nesne isteğe bağlı

    Chrome 79 ve sonraki sürümler
    • escapeLt

      boole isteğe bağlı

      < dilinde çeviri yaparken &lt; dilinde kaçış karakteri Bu, yer tutucular için değil yalnızca mesajın kendisi için geçerlidir. Geliştiriciler, çeviri HTML bağlamında kullanılıyorsa bunu kullanmak isteyebilir. Closure Compiler ile kullanılan Closure şablonları bunu otomatik olarak oluşturur.

İadeler

  • dize

    Mevcut yerel ayar için yerelleştirilmiş mesaj.

getUILanguage()

chrome.i18n.getUILanguage()

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

İadeler

  • dize

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