Kullanıcının ülkesine veya tercih ettiği dile göre farklı içerikler sunmak için uluslararasılaştırma yeniden yazmalarını ("i18n yeniden yazmaları") kullanın. Aşağıda, oluşturabileceğiniz bazı örnek yapılandırmalar verilmiştir:
Fransızca tercih eden tüm kullanıcılara (ülkeden bağımsız olarak) aynı Fransızca içeriği sunun.
Örnek: Fransızca metin içeren bir ana sayfaFransızcayı tercih eden kullanıcılara Standart Fransızca içerik sunun, ancak Fransızcayı tercih eden Kanadalı kullanıcılar için bunun yerine Kanada Fransızcası içeriği sunun.
Örnek: Standart Fransızca ifadelerin kullanıldığı bir ana sayfa ile Kanada Fransızcası kelimeler içeren bir ana sayfaKanada'daki tüm kullanıcılara (dil tercihlerinden bağımsız olarak) aynı içeriği sunma
Örnek: Sitenizin "varsayılan" dilini içeren ancak Kanada'ya özgü bir özelliğe (ör. tatil teması) sahip bir ana sayfaFransızca tercih eden Kanadalı kullanıcılara Kanada Fransızcası içeriği sunabilirsiniz.
Örnek: Kanada Fransızcası ifadesi ve Kanada'ya özgü bir özellik (ör. tatil teması) içeren bir ana sayfa
Firebase Hosting, kullanıcının ülkesini IP adresinden, dil tercihlerini ise Accept-Language
istek başlığından (genellikle web tarayıcısı tarafından otomatik olarak ayarlanır) belirler.
i18n yeniden yazma işlemlerini ayarlama
Hosting siteniz için i18n yeniden yazma ayarlarını yapmak istiyorsanız tüm yerelleştirilmiş içerikleriniz için bir "i18n içeriği" dizini oluşturmanız, ardından yeni "i18n içeriği" dizininizi işaretlemek için firebase.json
dosyanıza i18n
özelliğini eklemeniz gerekir.
Ayrıntılı adımlar aşağıda verilmiştir:
Yerel uygulama dizininizin
public
klasöründe "i18n içeriğiniz" için ayrı bir dizin oluşturun, ardından siteniz tarafından desteklenen her dil ve ülke kombinasyonu için alt klasörler oluşturun.Her bir alt klasöre tatil temalı ana sayfalar veya dile özgü 404 sayfaları gibi o kombinasyona özel içerik ekleyin.
localized-files
adlı bir "i18n content" dizini örneğini aşağıda görebilirsiniz:public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.html
localized-files/
dizini, siteniz tarafından desteklenen her dil ve ülke kombinasyonu için ayrı alt klasörler içerir. Her alt klasörün adlandırma kalıbı aşağıdaki biçimlerden birine uymalıdır:languageCode_countryCode
: Bu dil tercihine ve bu ülke koduna sahip kullanıcılara özel içerik barındırırlanguageCode
: Bu dil tercihine sahip kullanıcılara özel içerik barındırır ancak içerik ülkeye özgü değildir. Temel olaraklanguageCode_ALL
ile eşdeğerdir.
Bu kodlar hakkında daha fazla bilgi için aşağıdaki Ülke ve dil kodları alt bölümüne bakın. Herhangi bir ülkeyi (
es_ALL/
gibi) veya herhangi bir dili (ALL_ca/
gibi) belirtmek içinALL
değerini (büyük/küçük harfe duyarlı) kullanabilirsiniz.Bir alt klasördeki dosyaların
public
dizininde veya diğer alt klasörlerde benzer dosyalara sahip olması gerekmez. Tamamen bir dile ve/veya ülkeye özel içerikler oluşturabilirsiniz.i18n
özelliğinifirebase.json
dosyanıza ekleyin ve "i18n içeriğinizi" içeren dizini belirtin. Örneğimize devam edelim:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
root
için belirtilen dizin, tüm "i18n içeriği" alt klasörlerinizi içeren dizinin adıdır. Tüm "i18n içeriği" alt klasörlerinizipublic
dizininizin köküne yerleştirdiysenizroot
değeri için/
değerini kullanın.root
değerinin başındaki ve sonundaki eğik çizgiler isteğe bağlıdır."i18n içeriğinizi" dağıtın ve Hosting sitenize yapılandırın.
Çerez geçersiz kılma özelliğini kullanarak kurulumunuzu test edebilirsiniz.
Ülke ve dil kodları
"i18n content" alt klasörlerini adlandırırken hem ülke hem de dil kodları için küçük harf kullanmanız gerekir. Herhangi bir ülkeyi (es_ALL/
gibi) veya herhangi bir dili (ALL_ca/
gibi) belirtmek için ALL
(büyük/küçük harfe duyarlı) değerini kullanabilirsiniz.
Hosting, ülke kodunu kullanıcının IP adresinden alır. Ülke kodları, iki harfli ISO 3166-1 alpha-2 kodlarıdır.
Dil kodları, kullanıcının Accept-Language
istek başlığından (genellikle web tarayıcısı tarafından otomatik olarak ayarlanır) alınır.
Bunlar ISO 639-1 kodlarıdır.
Dil kodlarını kullanırken aşağıdakileri göz önünde bulundurun:
Hosting, hangi "i18n içeriğinin" yayınlanacağını ararken dilleri
Accept-Language
başlığındaki kalite değerlerine göre sıralar.Hosting, bölgesel ve ülke alt etiketlerini
Accept-Language
başlığında bırakır. Bu nedenle, "i18n content" alt klasör adındaki dil kodu bu alt etiketleri içeremez. Örneğin, alt klasör adında dil kodu olarakes-419
veyaes-US
kullanamazsınız ancakes
kullanabilirsiniz.Belirli bölgesel veya ülkesel içerikler yayınlamak istiyorsanız desteklemek istediğiniz dil ve ülke içeriğini içeren alt klasörler oluşturabilirsiniz.
"i18n içeriği" için öncelik sırası
i18n yeniden yazmaları ayarladıysanız Hosting, içeriği aşağıdaki öncelik sırasına göre sunar:
/__/*
yol segmentiyle başlayan ayrılmış ad alanlarıYapılandırılmış yönlendirmeler
Tam eşleşen statik içerik
Dil kodu + Ülke kodu (örneğin,
fr_ca/
'ten içerik)
Sıralama, isteğinAccept-Language
başlığındaki her dilin kalite değerlerini takip eder.Yalnızca ülke kodu (örneğin,
ALL_ca/
'ten gelen içerik)Yalnızca dil kodu (ör.
fr/
veyaes_ALL/
'daki içerik)
Sıralama, istekAccept-Language
başlığındaki her bir dilin kalite değerlerini takip eder."Varsayılan" tam eşleşen statik içerik
Bu, "i18n content" dizininin dışındaki içeriktir (ör.public
dizininin kökünde).
Yapılandırılmış yeniden yazmalar
404 işleme
i18n 404 sayfaları
Bu, tam eşleşen statik içerik için yukarıda listelenen öncelik sırasına uyar.Özel 404 sayfası
Varsayılan 404 sayfası (Firebase tarafından sağlanır)
Öncelik sırası örneği
Yukarıdaki örneğimize devam edelim. Aynı örnek dizini ve örnek isteği kullanacağız.
"i18n content" dizini (
localized-files
olarak adlandırılır) içeren örnek yerel proje dizinipublic/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.html
Örnek istek bilgileri
Dil kodları:
fr
,en
(Fransızca, ardından İngilizce)
Dil kodları,Accept-Language
başlığındaki kalite değerlerine göre sıralanır.Ülke kodu:
ca
(Kanada)
Hosting, tam eşleşme önceliği sırasına ve dil tercihlerinin kalite değerlerine göre, istenen bir sayfanın dizinlerinde aşağıdaki sırayla arama yapar.
public/localized-files/fr_ca/
public/localized-files/en_ca/
public/localized-files/ALL_ca/
public/localized-files/fr_ALL/
public/localized-files/fr/
public/localized-files/en_ALL/
public/localized-files/en/
public/
404 işleme
Kullanıcıya hangi sayfa sunulacak?
İstenen sayfa:
index.html
İstenen sayfa:
awesome-page.html
"i18n content" dizininin aranıp sunulması ile ilgili olarak aşağıdakileri unutmayın:
localized-files/
dizini aslındaen_ca/
,en_ALL/
veyaen/
alt klasörleri içermez. Bu nedenle Hosting, isteğin dil-ülke kombinasyonuyla eşleşen bir alt klasör bulana kadar öncelik listesinde aşağı doğru ilerler.localized-files/
dizini bires_ALL/
alt klasörü içerse de yukarıdaki örnek request bires
veyaes-foo
dil kodunu içermez. Bu nedenle Hosting,es
ile eşleşen "i18n content"i aramaz.fr/
vefr_ALL/
adlı alt klasörler, kullanıcının ülke ve dil tercihleri açısından eşdeğerdir. Ancak her iki alt klasör de varsa Hosting,fr_ALL/
içeriğinifr/
içeriğinden önce sunar.
Çerezlerle dil ve ülke kodlarını geçersiz kılma
Ülke ve dil üstbilgilerini geçersiz kılmak için çerezleri kullanarak hangi içeriğin yayınlanacağını değiştirebilirsiniz.
Çerez geçersiz kılma özelliğini kullanabileceğiniz bazı yöntemler aşağıda açıklanmıştır:
Hangi içeriğin yayınlandığını kontrol etmek için bir özelliği farklı dil/ülke kombinasyonlarıyla test edin.
Kullanıcılarınızın gördükleri içeriği değiştirmelerine olanak tanıyın. Örneğin, bir dil seçici uygulayabilir, ardından kullanıcının
firebase-language-override
çerezini buna göre ayarlayabilirsiniz.
Çerez geçersiz kılma işlemlerini yapılandırmak için çerezleri şu adların ikisiyle veya biriyle ayarlayın: firebase-country-override
ve firebase-language-override
. Örneğin, aşağıdaki JavaScript kod snippet'inde ülke kodu ca
, Accept-Language
başlığı ise fr,en
olarak geçersiz kılınır:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Dil çereziyle ilgili geçersiz kılma işlemleri, alt etiketler veya kalite değerleri olmadan tercih sırasına göre virgülle ayrılmış bir dil kodu listesi olmalıdır.
Çerez geçersiz kılma işlemleri günlüklere yansıtılmaz.