Bir kullanıcının ülkesine veya tercih ettiği dile bağlı olarak farklı içerikler sunmak için uluslararasılaştırma yeniden yazmalarını ("i18n yeniden yazmaları") kullanın. Aşağıda, ayarlayabileceğiniz bazı örnek yapılandırmalar verilmiştir:
Fransızca'yı 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ızca'yı tercih eden kullanıcılara Standart Fransızca içeriği sunun, ancak Fransızca'yı tercih eden Kanadalı kullanıcılar için bunun yerine Kanada Fransızcası içeriği sunun.
Örnek: Standart Fransızca ifadeye sahip bir ana sayfa ile Kanada Fransızcası ifadeye sahip bir ana sayfaAynı içeriği tüm Kanadalı kullanıcılara sunun (dil tercihlerinden bağımsız olarak).
Örnek: sitenizin "varsayılan" diline sahip, ancak Kanada'ya özgü bir özelliğe (tatil teması gibi) sahip bir ana sayfaFransızcayı tercih eden Kanadalı kullanıcılara Kanada Fransızcası içeriği sunun.
Örnek: Kanada Fransızcası ifadeler ve Kanada'ya özgü bir özellik (tatil teması gibi) içeren bir ana sayfa
Firebase Barındırma, bir kullanıcının ülkesini IP adresinden ve bir kullanıcının dil tercihlerini Accept-Language
isteği başlığından (genellikle web tarayıcıları tarafından otomatik olarak ayarlanır ) belirler.
i18n yeniden yazmalarını ayarla
Barındırma siteniz için i18n yeniden yazmalarını ayarlamak üzere, tüm yerelleştirilmiş içeriğiniz için bir "i18n içerik" dizini oluşturmanız, ardından yeni "i18n içerik" dizininize işaret etmesi için firebase.json
dosyanıza i18n
özniteliğini eklemeniz gerekir.
İşte ayrıntılı adımlar:
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 alt klasöre, tatil temalı ana sayfalar veya dile özgü 404 sayfaları gibi o kombinasyona özgü içeriği ekleyin.
İşte
localized-files
adlı bir örnek "i18n içerik" dizini: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
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature 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 için adlandırma modeli aşağıdaki biçimlerden birini izlemelidir:languageCode_countryCode
: Bu dil tercihine ve o ülke koduna sahip kullanıcılara özel içerik içerirlanguageCode
: Söz konusu dil tercihine sahip kullanıcılara özel içerik içerir, ancak içerik ülkeye özgü değildir; temeldelanguageCode_ALL
ile eşdeğerdir
Bu kodlar hakkında daha fazla ayrıntı için aşağıdaki Ülke ve dil kodları alt bölümüne bakın.
ALL
değerini (büyük/küçük harfe duyarlı) herhangi bir ülkeyi (es_ALL/
gibi) veya herhangi bir dili (ALL_ca/
gibi) belirtmek için kullanabilirsiniz.Bir alt klasördeki dosyaların
public
dizinde veya diğer alt klasörlerde benzer dosyalara sahip olması gerekmez. Tamamen bir dile ve/veya ülkeye özgü içerik oluşturabilirsiniz.i18n
niteliğinifirebase.json
dosyanıza ekleyin ve "i18n içeriğinizi" içeren dizini belirtin. Örneğimize devam edersek:// 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ı olmalıdır. Tüm "i18n içeriği" alt klasörlerinizipublic
dizininizin kök dizinine yerleştirdiyseniz,root
değeri için/
kullanın.root
değerindeki baştaki ve sondaki 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ılmaları kullanarak kurulumunuzu test edebilirsiniz.
Ülke ve dil kodları
"i18n içeriği" alt klasörlerini adlandırırken hem ülke hem de dil kodları için küçük harf kullanmalısınız. ALL
değerini (büyük/küçük harfe duyarlı) herhangi bir ülkeyi ( es_ALL/
gibi) veya herhangi bir dili ( ALL_ca/
gibi) belirtmek için 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
Et isteği başlığından alınır (genellikle web tarayıcıları tarafından otomatik olarak ayarlanır ). ISO 639-1 kodlarıdır . Dil kodlarını kullanırken aşağıdakileri aklınızda bulundurun:
Barındırma, hangi "i18n içeriğinin" sunulacağını aradığında, Dilleri
Accept-Language
başlığındaki kalite değerlerine göre sıralar.Barındırma, herhangi bir bölge ve ülke alt etiketini
Accept-Language
başlığına bırakır, bu nedenle "i18n içeriği" alt klasör adındaki dil kodu bu alt etiketleri içeremez. Örneğin, bir alt klasör adında dil kodu olarakes-419
veyaes-US
kullanamazsınız, ancakes
kullanabilirsiniz.Belirli bir bölge veya ülke içeriği sunmak istiyorsanız, desteklemek istediğiniz belirli dil-ülke içeriğini içeren alt klasörler oluşturabilirsiniz.
Bu örnekte, İspanya'dan dil tercihi
es
,es-es
ve hattaes-419
olan bir istek, Hosting tüm bu dil kodlarınıes
olarak ele aldığı içines_es/
alt klasöründen içerik alır.Amerika Birleşik Devletleri, Meksika veya
es-419
dil tercihine sahip başka herhangi bir ülkeden gelen istek, Hostinges-419
es
olarak ele aldığı içines_ALL/
alt klasöründen içerik alır.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
Bu örnekte, Hosting
es-419
dil kodunues
olarak ele aldığından, Meksika'danes-419
dil tercihine sahip bir istekes_mx/
alt klasöründen içerik alacaktır.Ancak, Amerika Birleşik Devletleri'nden
es-419
dil tercihine sahip bir istek, Hostinges-419
es
olarak ele aldığı vees_us/
alt klasörü olmadığı için es_ALLes_ALL/
alt klasöründen içerik alacaktır.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
"i18n içeriği" için öncelik sırası
i18n yeniden yazmalarını ayarlarsanız Hosting, içeriği aşağıdaki öncelik sırasına göre sunar:
/__/*
yol segmenti ile başlayan ayrılmış ad alanlarıYapılandırılmış yönlendirmeler
Tam eşlemeli statik içerik
Dil kodu + Ülke kodu (örneğin,
fr_ca/
kaynağından içerik)
Sipariş, isteğinAccept-Language
başlığındaki her dil için kalite değerlerini takip eder.Yalnızca ülke kodu (örneğin,
ALL_ca/
kaynağından içerik)Yalnızca dil kodu (örneğin,
fr/
veyaes_ALL/
öğesinden içerik)
Sipariş, isteğinAccept-Language
başlığındaki her dil için kalite değerlerini takip eder."Varsayılan" tam eşlemeli statik içerik
Bu,public
dizinin kökü gibi "i18n içerik" dizininin dışındaki içeriktir.
Yapılandırılmış yeniden yazmalar
404 taşıma
i18n 404 sayfa
Bu, tam eşleşen statik içerik için yukarıda listelenen aynı öncelik sırasını takip eder.Özel 404 sayfası
Varsayılan 404 sayfası (Firebase tarafından sağlanır)
Öncelik sırası örneği
Örneğimize yukarıdan devam edelim. Aynı örnek dizini ve örnek bir istek kullanacağız.
"i18n içerik" dizini içeren örnek yerel proje dizini (
localized-files
olarak adlandırılır)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
Ö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)
Tam eşleşme öncelik sırasına ve dil tercihlerinin kalite değerlerine göre Hosting, aşağıdaki sırayla istenen bir sayfayı dizinlerde arayacaktır.
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 taşıma
Kullanıcıya hangi sayfa sunulacak?
İstenen sayfa:
index.html
fr_ca/
alt klasöründenindex.html
Hosting önce
fr_ca/
alt klasörünü aradığından, bu alt klasördeindex.html
için tam eşleşmeyi bulacaktır.İstenen sayfa:
awesome-page.html
fr/
alt klasöründen404.html
Barındırma önce tam bir eşleşme için tüm dizini (tüm "i18n içeriği" alt klasörleri ve kök dizini dahil) öncelik sırasına göre arar, ancak
awesome-page.html
için tam bir eşleşme yoktur.Böylece Hosting, tam eşleşme aramalarıyla aynı i18n öncelik sırasını izleyen 404 işlemeye başlayacaktır.
fr/
alt klasörü, bir 404 sayfası içeren, aranan ilk alt klasördür.
"i18n içerik" dizininin bu arama ve sunma işlemi hakkında aşağıdakilere dikkat edin:
localized-files/
dizini aslındaen_ca/
,en_ALL/
veyaen/
alt klasörlerini içermez, bu nedenle Hosting, isteğin dil-ülke kombinasyonu için eşleşen bir alt klasör bulana kadar öncelik listesini atlayacaktır.localized-files/
dizini bires_ALL/
alt klasörü içerse de, yukarıdaki örnek istek bires
veyaes-foo
dil kodu içermez, dolayısıyla Hosting,es
ile eşleşen "i18n içeriği"ni 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 mevcutsa Hosting,fr/
içeriğinden öncefr_ALL/
içeriğini sunacaktır.
Çerezlerle dil ve ülke kodlarını geçersiz kıl
Ülke ve dil başlıklarını geçersiz kılmak için tanımlama bilgilerini kullanarak hangi içeriğin sunulacağını değiştirebilirsiniz.
Çerez geçersiz kılmalarını kullanmanın bazı yolları şunlardır:
Hangi içeriğin sunulduğunu 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ştirmelerini sağlayın. Örneğin, bir dil seçici uygulayabilir, ardından kullanıcının
firebase-language-override
tanımlama bilgisini uygun şekilde ayarlayabilirsiniz.
Tanımlama bilgisi geçersiz kılmalarını yapılandırmak için tanımlama bilgilerini şu adların her ikisine veya birine ayarlayın: firebase-country-override
ve firebase-language-override
. Örneğin, aşağıdaki JavaScript kod parçacığı, ülke kodunu ca
olarak ve Accept-Language
başlığını fr,en
geçersiz kılar:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Dil tanımlama bilgisi geçersiz kılmaları, alt etiketler veya kalite değerleri olmaksızın tercih sırasına göre virgülle ayrılmış bir dil kodları listesi olmalıdır.
Çerez geçersiz kılmaları günlüklere yansıtılmaz.