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

Farklı içerikler sunmak için uluslararasılaştırma yeniden yazmalarını ("i18n yeniden yazmaları") kullanın veya tercih ettiği dile göre değişir. Aşağıda birkaç örnek verilmiştir şu yapılandırmaları kullanabilirsiniz:

  • 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ızca tercih eden kullanıcılara Standart Fransızca içeriği, Kanada'da Fransızca tercih eden kullanıcılara ise Kanada Fransızcası içeriği yayınlayın.
    Ö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 sunma
    Örnek: Sitenizin "varsayılan" dilini kullanan ancak Kanada'ya özgü bir özelliğe (ör. tatil teması) sahip bir ana sayfa

  • Fransızcayı tercih eden Kanadalı kullanıcılara Kanada Fransızcası içerikleri sunun.
    Örnek: Kanada Fransızcası ifadeleri içeren ve Kanada'ya özgü bir ana sayfa bir özellik (ör. tatil teması)

Firebase Hosting, kullanıcının ülkesini IP adresinden belirler ve Accept-Language istek başlığından kullanıcının dil tercihlerini (genellikle tarayıcı tarafından otomatik olarak ayarlanır.)

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 bir alt klasöre söz konusu kombinasyona özgü içeriği ekleyin, örneğin Tatil temalı ana sayfalar veya dile özgü 404 sayfaları.

    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 her bir alt klasör için ayrı alt klasörler içerir siteniz tarafından desteklenen dil ve ülke kombinasyonudur. Her alt klasörün adlandırma kalıbı aşağıdaki biçimlerden birine uymalıdır:

    • languageCode_countryCode: Kullanıcılara özel içerik barındırır söz konusu dil tercihine ve bu ülke koduna sahip olan kullanıcılar

    • languageCode: İzlemeye sahip kullanıcılara özel içerik barındırır Ancak içerikler ü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. ALL değerini kullanabilirsiniz Herhangi bir ülkeyi (es_ALL/ gibi) veya herhangi bir ülkeyi belirtmek için (büyük/küçük harfe duyarlı) dil (ALL_ca/ gibi).

    Bir alt klasördeki dosyaların public içinde benzer dosyalara sahip olması gerekmez. diğer alt klasörlerde de olabilir. Tamamen bir dile ve/veya ülkeye özel içerikler oluşturabilirsiniz.

  2. firebase.json dosyanıza i18n özelliğini ekleyin ve dizininizde olmalıdır. Ö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 ile ilgili içerik" public dizininizin kök dizininde bulunan alt klasörler için / kullanın root değeri için. 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.

Çerezleri geçersiz kılma kullanarak kurulumunuzu test edebilirsiniz.

Ülke ve dil kodları

"i18n içeriği"ni adlandırırken alt klasörler varsa her iki ülke için de küçük harf kullanmanız gerekir. ve dil kodları kullanır. Aşağıdaki durumlarda ALL (büyük/küçük harfe duyarlı) değerini kullanabilirsiniz: herhangi bir ülke (es_ALL/ gibi) veya herhangi bir dil (ALL_ca/ gibi).

Hosting, ülke kodunu kullanıcının IP adresinden alır. Ülke kodları iki harflidir ISO 3166-1 alpha-2 kodları.

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ği"ni aradığında en son derece karmaşık Accept-Language başlığındaki kalite değerlerine göre değişir.

  • 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 ülkeye özgü içerikler yayınlamak istiyorsanız istediğiniz dil-ülke içeriğini içeren alt klasörler destek.

"i18n içeriği" için öncelik sırası

i18n yeniden yazmalarını ayarlarsanız Hosting aşağıdakilere göre içerik sunar: öncelik sırası:

  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, istekteki Accept-Language başlığında her dilin kalite değerlerini takip eder.

    2. Yalnızca ülke kodu (örneğin, ALL_ca/ yayıncısının içeriği)

    3. Yalnızca dil kodu (ör. fr/ veya es_ALL/'daki içerik)
      Sıralama, istek Accept-Language başlığındaki her bir dilin kalite değerlerini takip eder.

    4. "Default" (Varsayılan) tam eşlemeli statik içerik
      Bu içerik, "i18n içeriği" dışındadır. dizini, örneğin, public dizininin kökü.

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

  5. 404 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. Bunun için aynı örnek dizini kullanacağız. örnek bir istek.

  • "i18n içeriğine" sahip örnek yerel proje dizini dizin (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ı şu dildeki kalite değerlerine göre sıralanır: Accept-Language başlığı.

    • Ülke kodu: ca (Kanada)

Tam eşleşme önceliği sırasına ve dil tercihlerinde, Hosting istenen dil için dizinlerde sayfada aşağıdaki sırada yer alı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" arama ve sunma ile ilgili aşağıdakilere dikkat edin dizin:

  • localized-files/ dizini aslında en_ca/ içermez, en_ALL/ veya en/ alt klasörleri olduğundan Hosting yalnızca istek listesi için eşleşen bir alt klasör bulana kadar dil-ülke kombinasyonudur.

  • localized-files/ dizini bir es_ALL/ alt klasörü içerse de yukarıdaki örnek istek, es veya es-foo dil kodu içermediğinden Hosting, es ile eşleşen "i18n içeriğ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ılmaları kullanmanın bazı yolları aşağıda verilmiştir:

  • 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'i, ülke kodunu ca olacak şekilde geçersiz kılıyor ve Accept-Language başlığı fr,en olacak:

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

Dil çerezi geçersiz kılmaları, öncelik sırasına koyma, alt etiketler veya kalite değerleri olmaksızın.

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