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

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 sayfa

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

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

  • Fransı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:

  1. 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
    

    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çerir

    • languageCode : İlgili dil tercihine sahip kullanıcılara özel içerik içerir ancak içerik ülkeye özgü değildir; temel olarak languageCode_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çin ALL (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.

  2. firebase.json dosyanıza i18n 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örlerinizi public 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.

  3. "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 olarak es-419 veya es-US kullanamazsınız ancak es 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.

"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:

  1. /__/* yol bölümüyle başlayan ayrılmış ad alanları

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

  3. Tam eşleşen statik içerik

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

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

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

    4. "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.

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

  5. 404 işleme

    1. i18n 404 sayfa
      Bu, tam eşlemeli statik içerik için yukarıda listelenen öncelik sırasının aynısını izler.

    2. Özel 404 sayfası

    3. 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.

  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 sunulacak?

  • İstenen sayfa: index.html

  • İstenen sayfa: awesome-page.html

"i18n içeriği" dizininin bu arama ve sunma işlemiyle ilgili aşağıdakilere dikkat edin:

  • localized-files/ dizini aslında en_ca/ , en_ALL/ veya en/ 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 bir es_ALL/ alt klasörü içerse de yukarıdaki örnek istek bir es veya es-foo dil kodu içermediğinden Hosting, es ile eşleşen "i18n içeriğini" aramayacaktır.

  • fr/ ve fr_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, Hosting fr_ALL/ içeriğini fr/ içeriğinden önce sunacaktır.

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

Çerez geçersiz kılmaları günlüklere yansıtılmaz.