Uluslararasılaştırma (i18n) yeniden yazma işlemlerini yapılandırma

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. Kurabileceğiniz bazı örnek yapılandırmalar şunlardır:

  • 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 sayfa

  • Fransı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 ifadenin kullanıldığı bir ana sayfa ile Kanada Fransızcası ifadenin kullanıldığı bir ana sayfa

  • Kanada'daki tüm kullanıcılara (dil tercihlerinden bağımsız olarak) aynı içeriği sunun.
    Örnek: Sitenizin "varsayılan" dilini kullanan ancak Kanada'ya özgü bir özelliğe (ör. tatil teması) sahip bir ana sayfa

  • Fransızca tercih eden Kanadalı kullanıcılara Kanada Fransızcası içeriği sunabilirsiniz.
    Örnek: Kanada Fransızcası ifadeleri 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 özelliğini 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:

  1. 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 söz konusu kombinasyona özel içeriği 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: Söz konusu dil tercihine ve ülke koduna sahip kullanıcılara özel içerikler içerir

    • languageCode: Bu dil tercihine sahip kullanıcılara özel içerik barındırır ancak içerik ülkeye özgü değildir; temelde languageCode_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çin ALL değerini (büyük/küçük harfe duyarlı) kullanabilirsiniz.

    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.

  2. i18n özelliğini firebase.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örlerinizi public dizininizin köküne yerleştirdiyseniz root değeri için / değerini kullanın. root değerinin başında ve sonunda eğik çizgiler isteğe bağlıdır.

  3. "i18n içeriğinizi" ve yapılandırmanızı Hosting sitenize dağıtı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 değerini (büyük/küçük harfe duyarlı) 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 olarak es-419 veya es-US kullanamazsınız ancak es kullanabilirsiniz.

    Belirli bölgesel veya ülke içeriklerini yayınlamak istiyorsanız desteklemek istediğiniz dil-ü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:

  1. /__/* yol segmentiyle başlayan ayrılmış ad alanları

  2. Yapılandırılmış yönlendirmeler

  3. Statik içerikle tam eşleme

    1. Dil kodu + Ülke kodu (örneğin, fr_ca/'ten içerik)
      Sıralama, isteğin Accept-Language başlığındaki her dilin kalite değerlerini takip eder.

    2. Yalnızca ülke kodu (örneğin, ALL_ca/'ten gelen içerik)

    3. Yalnızca dil kodu (örneğin, fr/ veya es_ALL/ içeriği)
      Sıralama, isteğin Accept-Language başlığında her dil için kalite değerlerini izler.

    4. "Varsayılan" tam eşleşme statik içeriği
      Bu, "i18n content" dizininin dışında bulunan, örneğin public dizininin kök dizininde bulunan içeriktir.

  4. Yapılandırılmış yeniden yazmalar

  5. 404 hatası işleme

    1. i18n 404 sayfaları
      Bu, tam eşleşen statik içerik için yukarıda listelenen öncelik sırasına uyar.

    2. Özel 404 sayfası

    3. 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 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
  • Ö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şleme öncelik sırasına ve dil tercihlerinin kalite değerlerine göre Hosting, istenen sayfa için dizinleri aşağıdaki sırayla arar.

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404 işleme

Kullanıcıya hangi sayfa sunulur?

  • İ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ında en_ca/, en_ALL/ veya en/ alt klasörlerini içermez. Bu nedenle Hosting, isteğin dil-ülke kombinasyonuyla eşleşen bir alt klasör bulana kadar öncelik listesini atlar.

  • localized-files/ dizini bir es_ALL/ alt klasörü içerse de yukarıdaki örnek request bir es veya es-foo dil kodunu içermez. Bu nedenle Hosting, es ile eşleşen "i18n content"i aramaz.

  • fr/ ve fr_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_ALL/ içeriğini fr/ içeriğinden önce yayınlar.

Ü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 ve 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 çerezi geçersiz kılmaları, alt etiketler veya kalite değerleri içermeyen, tercih sırasına göre dil kodlarının virgülle ayrılmış bir listesi olmalıdır.

Çerez geçersiz kılma işlemleri günlüklere yansıtılmaz.