Açıklama
Uygulamanızın veya uzantınızın tamamında uluslararasılaştırma sağlamak için chrome.i18n
altyapısını kullanın.
Manifest
Bir uzantının /_locales
dizini varsa manifest, "default_locale"
öğesini tanımlamalıdır.
Kavramlar ve kullanım
Kullanıcının görebildiği 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 Korece (ko
) dilleri destekleyen uluslararası bir uzantının dosya hiyerarşisini aşağıda bulabilirsiniz:
Birden çok dili destekleme
Aşağıdaki şekilde gösterilen dosyaları içeren bir uzantınız olduğunu varsayalım:
Bu uzantıyı uluslararası hale getirmek için kullanıcının görebildiği her dizeyi adlandırın ve bir mesajlar dosyasına yerleştirin. Uzantının manifest, CSS dosyaları ve JavaScript kodu, yerelleştirilmiş sürümünü almak için her bir dizenin adını kullanır.
Uzantı uluslararası hale getirildiğinde şöyle görünür (hâlâ yalnızca İngilizce dizeleri olduğunu unutmayın):
<img "__msg_extname__",="" "default_locale"="" "en".="" "extname"."="" "hello="" _locates="" a="" alt="manifest.json dosyasında, " and="" been="" changed="" chrome.i18n.getmessage("extname" />" chrome.i18n.getmessage("extname").=""docs.i18n.getmessage("extname":" uzantılı mesajlar", javascript-ni18n.getmessage="m/services"-burken_google-"burken_on-bu yerine" Saat-google-sirketi-"- adının yerine”kodlama/destekle-ilen-"-").
Uluslararası hale getirme hakkında bazı notlar:
- Desteklenen yerel ayarlardan herhangi birini kullanabilirsiniz. Desteklenmeyen bir yerel ayar kullanıyorsanız Google Chrome bunu yoksayar.
manifest.json
ve CSS dosyalarında, şu şekilde messagename adlı bir dizeye başvurun:__MSG_messagename__
Uzantınızın veya uygulamanızın JavaScript kodunda, aşağıdaki gibi messagename adlı bir dizeye bakın:
chrome.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'a 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ının görebildiği 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. "message", dizenin bu yerel ayardaki değerini belirtir. İsteğe bağlı "açıklama", 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 Özel Mesajlar bölümüne bakın.
Bir uzantı uluslararası hale getirildikten sonra çevirisi basittir. messages.json
dosyasını kopyalayıp çeviriyor ve kopyayı /_locates
altında yeni bir dizine koyuyorsunuz. Örneğin, İspanyolcayı desteklemek için /_locates/es
öğesinin altına messages.json
metninin çevrilmiş bir kopyasını eklemeniz yeterlidir. Aşağıdaki şekilde, yeni bir İspanyolca çeviri içeren önceki uzantı gösterilmektedir.
Ö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 @@ui_locale
bulunur. Böylece, geçerli kullanıcı arayüzü yerel ayarını ve metin yönünü algılamanızı sağlayan birkaç @@bidi_...
mesajını algılayabilirsiniz. Sonraki mesajlar, cihazlar BIDI (iki yönlü) API'sindeki sabitlere benzer adlara sahiptir.
Uzantının veya uygulamanın yerelleştirilmesinden bağımsız olarak @@extension_id
özel mesajı, CSS ve JavaScript dosyalarında kullanılabilir. Bu mesaj, manifest dosyalarında çalışmaz.
Önceden tanımlanmış mesajlar aşağıdaki tabloda açıklanmıştır.
Mesaj adı | Açıklama |
---|---|
@@extension_id | Uzantı veya uygulama kimliği; bu dizeyi uzantı içindeki kaynakların URL'lerini oluşturmak için kullanabilirsiniz. Yerelleştirilmemiş uzantılar bile bu mesajı kullanabilir. Not: Bu mesajı, bir manifest dosyasında kullanamazsınız. |
@@ui_locale | Geçerli yerel ayar; yerel ayara özel URL'ler oluşturmak için bu dizeyi kullanabilirsiniz. |
@@bidi_dir | Geçerli yerel ayar için 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 değeri "ltr" ise "left"; aksi durumda "sağ" olur. |
@@bidi_end_edge | @@bidi_dir değeri "ltr" ise bu değer "sağ", aksi durumda "sol"dur. |
Aşağıda, URL oluşturmak için CSS dosyasında @@extension_id
kullanımına bir örnek verilmiştir:
body {
background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
}
Uzantı kimliği abcdefghijklmnopqrstuvwxyzabcdef ise önceki kod snippet'inde kalın harflerle yazılmış satır şu şekilde olur:
background-image:url('chrome-extension://abcdefghijklmnopqrstuvwxyzabcdef/background.png');
CSS dosyasında @@bidi_*
mesajlarının kullanımıyla ilgili 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 yazılan dillerde kalın çizgiler şu şekilde olur:
dir: ltr;
padding-left: 0;
padding-right: 1.5em;
Yerel ayarlar
Tek bir çevirinin, bir dilin birden çok varyasyonunu (en_GB
ve en_US
gibi) desteklemesine olanak tanıyan bazıları (en
gibi) 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"
konumunu seçin.
Yerel ayar 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 | Estonca |
fa | Farsça |
fi | Fince |
fil | Filipince |
fr | Fransızca |
gu | Gucerat dili |
he | İ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 |
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 | Swahili |
ta | Tamilce |
te | Telugu dili |
th | Tayca |
tr | Türkçe |
uk | Ukraynaca |
vi | Vietnamca |
zh_CN | Çince (Çin) |
zh_TW | Çince (Tayvan) |
Mesajlarda arama yapma
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, çeviri ne kadar az olursa olsun uzantınız veya uygulamanız çalışır. Uzantı sistemi bir mesajı şu şekilde arar:
- Kullanıcının tercih ettiği yerel ayarı, iletiler dosyasında (varsa) arayın. Örneğin, Google Chrome'un yerel ayarı İngiliz İngilizcesi (
en_GB
) olarak ayarlandığında, sistem ilk olarak iletiyi/_locates/en_GB/messages.json
üzerinde arar. Söz konusu dosya mevcutsa ve ileti varsa, sistem başka arama yapmaz. - Kullanıcının tercih ettiği yerel ayarda bölge varsa (yani yerel ayarda alt çizgi: _ varsa) bu bölge olmadan yerel ayarı arayın. Örneğin,
en_GB
mesaj dosyası yoksa veya mesajı içermiyorsa sistem,en
mesaj dosyasına bakar. Söz konusu dosya mevcutsa ve mesaj varsa, sistem başka arama yapmaz. - Mesajlar dosyasında varsayılan yerel ayarı arayın. Örneğin, uzantının "default_locale" değeri "es" olarak ayarlanmışsa ve
/_locates/en_GB/messages.json
veya/_locates/en/messages.json
mesajı içermiyorsa uzantı,/_locates/es/messages.json
adresindeki mesajı kullanır.
Aşağıdaki şekilde "colores" adlı mesaj, uzantının desteklediği üç yerel ayarda da yer almaktadır, ancak "extName" yerel ayarların yalnızca ikisinde bulunmaktadır. Google Chrome'u ABD İngilizcesi ile çalıştıran bir kullanıcı "Renkler" etiketini görürse, İngiliz İngilizcesi kullanıcıları "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ışındaki herhangi bir dilde çalıştıran kullanıcılar "Renkler" etiketini ve "Hola mundo" uzantı adını görür.
Tarayıcınızın yerel ayarını belirleyin
Çevirileri test etmek için tarayıcınızın yerel ayarını belirleyebilirsiniz. Bu bölümde Windows, Mac OS X, Linux ve ChromeOS'te yerel ayarın nasıl ayarlanacağı açıklanmaktadı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ı, kurulduktan sonra daha hızlı olur ve aynı anda birden fazla dili kullanmanıza olanak tanır.
Yerel ayara özel bir kısayol kullan
Google Chrome'u belirli bir yerel ayarla başlatan bir kısayol oluşturmak ve kullanmak için:
- Masaüstünüzde bulunan Google Chrome kısayolunun bir kopyasını oluşturun.
- Yeni kısayolu, yeni yerel ayarla eşleşecek şekilde yeniden adlandırın.
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ünür:path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
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 şu 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 çok 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'da kullanıcı arayüzünü kullanarak yerel ayarı nasıl değiştireceğiniz aşağıda açıklanmıştır:
- Uygulama simgesi > Seçenekler
- Gelişmiş Seçenekler sekmesini seçin.
- Aşağı kaydırarak Web İçeriği'ne gidin
- Yazı tipi ve dil ayarlarını değiştir'i tıklayın
- Diller sekmesini seçin
- Google Chrome dilini ayarlamak için açılır menüyü kullanın.
- Chrome'u yeniden başlatın.
Mac OS X
Mac'te yerel ayarı değiştirmek için sistem tercihlerini kullanırsınız.
- Apple menüsünden Sistem Tercihleri'ni seçin.
- Kişisel bölümünün altında Uluslararası'yı seçin
- Dilinizi ve konumunuzu seçin
- Chrome'u yeniden başlatın.
Linux
Linux'ta yerel ayarı değiştirmek için önce Google Chrome'dan çıkın. Ardından, hepsi 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:
- Sistem tepsisinden Ayarlar'ı seçin.
- Diller ve giriş bölümünde Dil açılır listesini seçin.
- Diliniz listede yoksa Dil ekle'yi tıklayıp istediğiniz dili ekleyin.
- Ekleme işleminden 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.
- ChromeOS'i yeniden başlatmak için ayarlanan dilin yanındaki Yeniden başlat düğmesini tıklayın.
Örnekler
Uluslararasılaştırmaya ilişkin basit örnekleri examples/api/i18n dizininde bulabilirsiniz. Eksiksiz bir örnek için örnekler/uzantılar/haberler bölümüne bakın. Diğer örnekler ve kaynak kodu görüntüleme konusunda 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 bir dize olarak görüntüler. Mesajdaki 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 Özel Mesajlar sayfasına bakın. getMessage()
çağrısı hakkında ayrıntılı bilgi için API referansını inceleyin.
getAcceptLanguages()
Aşağıdaki kod, kabul edilen dilleri tarayıcıdan alır ve her kabul dilini ',' 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ıyla ilgili ayrıntılar için API referansına bakın.
detectLanguage()
Aşağıdaki kod, belirtilen 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ı hakkında daha fazla bilgi için API referansına bakın.
Türler
LanguageCode
en
veya fr
gibi bir ISO dil kodu. Bu yöntemin desteklediği dillerin tam listesi için kLanguageInfoTable bölümüne bakın. Bilinmeyen bir dil için und
döndürülür. Bu durumda, metnin [percentage] kadarı CLD tarafından bilinmiyor
Tür
dize
Yöntemler
detectLanguage()
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
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(result: object) => void
-
sonuç
nesne
Algılanan langugae güvenilirliğini ve DetectedLanguage dizisini barındıran LanguageDetectionResult nesnesi
-
isReliable
boolean
CLD algılanan dil güvenilirliği
-
diller
nesne[]
algılananDil dizisi
-
language
dize
-
yüzde
sayı
Algılanan dilin yüzdesi
-
-
-
İlerlemeler
-
Promise<object>
Chrome 99 ve sonraki sürümlerVaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geri çağırma işlevleri, geriye dönük uyumluluk için sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
)
Tarayıcının kabul dillerini alır. Bu, tarayıcı tarafından kullanılan yerel ayardan farklıdır. Yerel ayarı almak için i18n.getUILanguage
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
-
İlerlemeler
-
Promise<LanguageCode[]>
Chrome 99 ve sonraki sürümlerVaatler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geri çağırma işlevleri, geriye dönük uyumluluk için sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Vaat, geri çağırmaya iletilen aynı türle çözümlenir.
getMessage()
chrome.i18n.getMessage(
messageName: string,
substitutions?: any,
options?: object,
)
Belirtilen mesaj için yerelleştirilmiş dizeyi alır. İleti yoksa 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
İletinin
messages.json
dosyasında belirtilen adı. -
ikame değerler
isteğe bağlı herhangi bir
Mesaj gerekiyorsa 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ı
<
diline çeviride<
kod dışına alı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. Kapanış Derleyici ile kullanılan Kapatma Şablonları bunu otomatik olarak oluşturur.
-
İlerlemeler
-
dize
İleti mevcut 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
'ten farklıdır.
İlerlemeler
-
dize
Tarayıcının kullanıcı arayüzü dil kodu (ör. en-US veya fr-FR).