Kullanıcının ülkesine veya tercih ettiği dile bağlı olarak farklı içerik sunmak için uluslararasılaştırma yeniden yazmalarını ("i18n yeniden yazmaları") kullanın. Ayarlayabileceğiniz bazı örnek yapılandırmalar şunlardır:
Fransızca'yı tercih eden tüm kullanıcılara (ülkeye bakılmaksızın) 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çerik 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 ifadeler içeren bir ana sayfa ile Kanada Fransızcası ifadeler içeren bir ana sayfaAynı içeriği tüm Kanadalı kullanıcılara (dil tercihlerine bakılmaksızın) sunun.
Örnek: sitenizin "varsayılan" dilini içeren ancak Kanada'ya özgü bir özelliği olan (tatil teması gibi) bir ana sayfaFransızca'yı tercih eden Kanadalı kullanıcılara Kanada Fransızcası içeriği sunun.
Örnek: Kanada Fransızcası ifadeleri ve Kanada'ya özgü bir özelliği (tatil teması gibi) içeren bir ana sayfa
Firebase Hosting, kullanıcının ülkesini IP adresinden ve kullanıcının dil tercihlerini Accept-Language
istek başlığından (genellikle web tarayıcısı tarafından otomatik olarak ayarlanır ) belirler.
i18n yeniden yazma işlemlerini ayarlama
Barındırma siteniz için i18n yeniden yazmalarını ayarlamak amacıyla, tüm yerelleştirilmiş içeriğiniz için bir "i18n içeriği" dizini oluşturmanız, ardından yeni "i18n içeriği" dizininizi işaret edecek şekilde firebase.json
dosyanıza i18n
niteliğ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 sitenizin desteklediği 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 özel içeriği ekleyin.
İşte
localized-files
adı verilen bir "i18n içeriği" dizini örneği: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, sitenizin desteklediği her dil ve ülke kombinasyonu için ayrı alt klasörler içerir. Her alt klasörün adlandırma modeli şu formatlardan birine uymalıdır:languageCode_countryCode
: Söz konusu dil tercihine ve söz konusu ülke koduna sahip kullanıcılara özel içerik içerirlanguageCode
: İlgili dil tercihine sahip kullanıcılara özel içerik içerir ancak içerik ülkeye özgü değildir; temel olaraklanguageCode_ALL
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. Herhangi bir ülkeyi (
es_ALL/
gibi) veya herhangi bir dili (ALL_ca/
gibi) belirtmek içinALL
(büyük/küçük harfe duyarlı) değerini 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 özel içerikler oluşturabilirsiniz.firebase.json
dosyanızai18n
niteliğini 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üne yerleştirdiyseniz,root
değeri için/
öğesini kullanın.root
değerin başındaki ve sonundaki eğik çizgiler isteğe bağlıdır."i18n içeriğinizi" dağıtın ve Barındırma sitenize yapılandırın.
Çerez geçersiz kılmalarını 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. 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 alınır (genellikle web tarayıcısı tarafından otomatik olarak ayarlanır ). Bunlar ISO 639-1 kodlarıdır . Dil kodlarını kullanırken aşağıdakileri aklınızda bulundurun:
Hosting hangi "i18n içeriğinin" sunulacağını aradığında,
Accept-Language
başlığındaki kalite değerlerine göre dilleri sıralar.Barındırma
Accept-Language
başlığındaki tüm bölgesel ve ülke alt etiketlerini bırakır, dolayısıyla "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ölgesel 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
es
,es-es
ve hattaes-419
dil tercihine sahip bir istekes_es/
alt klasöründen içerik alacaktır çünkü Hosting tüm bu dil kodlarınıes
olarak ele alır.Hosting
es-419
es
olarak değerlendirdiğinden, Amerika Birleşik Devletleri, Meksika veyaes-419
dil tercihine sahip herhangi bir ülkeden gelen bir istekes_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 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 değerlendirdiğinden, Meksika'danes-419
dil tercihine sahip bir istekes_mx/
alt klasöründen içerik alacaktır.Bununla birlikte, Amerika Birleşik Devletleri'nden
es-419
dil tercihine sahip bir istek, Hosting'ines-419
es
olarak ele alması vees_us/
alt klasörü olmaması nedeniyle 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 yazma işlemlerini ayarlarsanız Hosting, içeriği aşağıdaki öncelik sırasına göre sunar:
/__/*
yol bölümüyle 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/
içeriği)
Sıra, isteğinAccept-Language
başlığındaki her dilin kalite değerlerini takip eder.Yalnızca ülke kodu (örneğin,
ALL_ca/
adresinden gelen içerik)Yalnızca dil kodu (örneğin,
fr/
veyaes_ALL/
içeriği)
Sıra, isteğinAccept-Language
başlığındaki her dilin kalite değerlerini takip eder."Varsayılan" tam eşleme statik içeriği
Bu,public
dizinin kökünde olduğu gibi "i18n içeriği" dizininin dışında bulunan içeriktir.
Yapılandırılmış yeniden yazmalar
404 işleme
i18n 404 sayfa
Bu, tam eşlemeli statik içerik için yukarıda listelenen öncelik sırasının aynısını izler.Ö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 isteği kullanacağız.
"i18n içerik" dizinine sahip ö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)
Dil tercihlerinin tam eşleşme öncelik sırasına ve kalite değerlerine göre Hosting, istenen sayfayı aşağıdaki sırayla 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 işleme
Kullanıcıya hangi sayfa sunulacak?
İstenen sayfa:
index.html
fr_ca/
alt klasöründenindex.html
Hosting ilk olarak
fr_ca/
alt klasörünü aradığından, bu alt klasördekiindex.html
dosyasının tam eşleşmesini bulacaktır.İstenen sayfa:
awesome-page.html
fr/
alt klasöründen404.html
Barındırma, tam bir eşleşme için öncelikle tüm dizini ("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ı takip eden 404 işlemeye başlayacaktır.
fr/
alt klasörü, 404 sayfasını içeren aranan ilk alt klasördür.
"i18n içeriği" dizininin bu arama ve sunma işlemiyle ilgili aşağıdakilere dikkat edin:
localized-files/
dizini aslındaen_ca/
,en_ALL/
veyaen/
alt klasörlerini içermediğinden Hosting, isteğin dil-ülke birleşimi 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çermediğinden Hosting,es
ile eşleşen "i18n içeriğini" aramayacaktır.fr/
vefr_ALL/
adı verilen 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, Hostingfr_ALL/
içeriğinifr/
içeriğinden önce sunacaktır.
Çerezlerle dil ve ülke kodlarını geçersiz kılın
Ülke ve dil başlıklarını geçersiz kılmak için çerezleri 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ştirmesine olanak tanıyın. Örneğin, bir dil seçici uygulayabilir ve ardından kullanıcının
firebase-language-override
çerezini buna göre ayarlayabilirsiniz.
Çerez geçersiz kılmalarını yapılandırmak için çerezleri şu adların her ikisiyle veya herhangi biriyle ayarlayın: firebase-country-override
ve firebase-language-override
. Örneğin, aşağıdaki JavaScript kod pasajı, ü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 çerezi geçersiz kılmaları, alt etiketler veya kalite değerleri olmadan, 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.