Kullanıcının ülkesine veya tercih ettiği dile bağlı olarak farklı içerik sunmak için uluslararasılaştırma yeniden yazma ("i18n yeniden yazma") kullanın. Ayarlayabileceğiniz bazı örnek yapılandırmalar şunlardır:
Fransızcayı 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ç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 tümcelere sahip bir ana sayfa ile Kanada Fransızcası tümcelerine 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ı ifadeleri ve Kanada'ya özgü bir özelliği (tatil teması gibi) içeren bir ana sayfa
Firebase Hosting, bir kullanıcının ülkesini IP adreslerinden ve bir kullanıcının dil tercihlerini Accept-Language
istek başlığından (genellikle web tarayıcıları tarafından otomatik olarak ayarlanır ) belirler.
i18n yeniden yazma ayarlarını yapın
Barındırma siteniz için i18n yeniden yazmalarını ayarlamak için, tüm yerelleştirilmiş içeriğiniz için bir "i18n içerik" dizini oluşturmanız ve ardından yeni "i18n içerik" dizininizi işaret etmek için firebase.json
dosyanıza i18n
niteliğini eklemeniz gerekir.
Ayrıntılı adımlar şunlardır:
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 özel içeriği ekleyin.
İşte
localized-files
adlı örnek bir "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 düzeni şu biçimlerden birine uymalıdır:languageCode_countryCode
: Bu dil tercihine ve o ülke koduna sahip kullanıcılara özel içerik içerirlanguageCode
: Bu 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. Herhangi bir ülkeyi (
es_ALL/
gibi) veya herhangi bir dili (ALL_ca/
gibi) belirtmek içinALL
(büyük/küçük harf 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 özgü içerik oluşturabilirsiniz.firebase.json
dosyanızai18n
niteliğini ekleyin ve "i18n içeriğinizi" içeren dizini belirtin. Örneğimize devam ediyoruz:// 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çerik" alt klasörlerinizipublic
dizininizin köküne yerleştirdiyseniz,root
değeri için/
öğesini kullanın.root
değerde 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.
Tanımlama bilgisi geçersiz kılmaları kullanarak kurulumunuzu test edebilirsiniz.
Ülke ve dil kodları
"i18n içerik" 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 harf duyarlı) değerini kullanabilirsiniz.
Hosting, ülke kodunu kullanıcının IP adresinden alır. Ülke kodları, iki harfli ISO 3166-1 alfa-2 kodlarıdır .
Dil kodları, kullanıcının Accept-Language
istek başlığından alınır (genellikle web tarayıcıları 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ı ararken,
Accept-Language
başlığındaki kalite değerlerine göre dilleri sıralar.Hosting,
Accept-Language
başlığında herhangi bir bölgesel ve ülke alt etiketini düşürür, bu nedenle bir "i18n içerik" 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
es
,es-es
ve hattaes-419
dil tercihine sahip bir istek, Hosting tüm bu dil kodlarınıes
olarak elees_es/
alt klasöründen içerik alacaktır.Amerika Birleşik Devletleri, Meksika veya
es-419
dil tercihine sahip başka bir ülkeden gelen bir istek, Hostinges-419
es
olarak değerlendirdiği içines_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,
es-419
dil tercihiyle Meksika'dan gelen bir istek,es_mx/
alt klasöründen içerik alacaktır çünkü Hosting,es-419
es
değerlendirir.Ancak, Amerika Birleşik Devletleri'nden
es-419
dil tercihine sahip bir istek,es_ALL/
alt klasöründen içerik alacaktır çünkü Hosting,es-419
es
olarak değerlendirir vees_us/
alt klasörü yoktur.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 kesimi ile 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ğinden)
Sipariş, isteğinAccept-Language
başlığındaki her dil için kalite değerlerini takip eder.Yalnızca ülke kodu (örneğin,
ALL_ca/
içeriğinden)Yalnızca dil kodu (örneğin,
fr/
veyaes_ALL/
içeriği)
Sipariş, isteğinAccept-Language
başlığındaki her dil için kalite değerlerini takip eder."Varsayılan" tam eşleşmeli statik içerik
Bu,public
dizinin kökünde olduğu gibi "i18n içerik" dizininin dışında kalan 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ı için örnek
Örneğimize yukarıdan devam edelim. Aynı örnek dizini ve örnek bir isteği 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, sonra İ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, istenen bir sayfa için dizinleri aşağıdaki sırayla 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, o alt klasördekiindex.html
için tam eşleşmeyi bulacaktır.İstenen sayfa:
awesome-page.html
fr/
alt klasöründen404.html
Barındırma önce tüm dizini (tüm "i18n içerik" alt klasörleri ve kök dizini dahil) bir tam eşleşme için öncelik sırasına göre arar, ancak
awesome-page.html
için tam bir eşleşme yoktur.Bu nedenle, Hosting, tam eşleşme aramalarıyla aynı i18n öncelik sırasını izleyen 404 işlemeye başlayacaktır.
fr/
alt klasörü, 404 sayfa içeren ilk aranan 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 atlar.localized-files/
dizini bires_ALL/
alt klasörü içerse de, yukarıdaki örnek istek bires
veyaes-foo
dil kodu içermez, bu nedenle Hostinges
ile eşleşen "i18n içeriğini" 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, Hostingfr_ALL/
içeriğinifr/
içeriğinden önce 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 buna göre ayarlayabilirsiniz.
Tanımlama bilgisi geçersiz kılmalarını yapılandırmak için tanımlama bilgilerini şu adların her ikisiyle veya herhangi biriyle 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
olarak 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 olmadan, tercih sırasına göre virgülle ayrılmış bir dil kodları listesi olmalıdır.
Tanımlama bilgisi geçersiz kılmaları günlüklere yansıtılmaz.