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, oluşturabileceğiniz bazı örnek yapılandırmalar verilmiştir:

  • Aynı Fransızca içeriği, Fransızca tercih eden tüm kullanıcılara (Fransızca'dan bağımsız olarak) 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 yaşayan ve Fransızca tercih eden kullanıcılara ise Kanada Fransızcası içeriği yayınlayın.
    Örnek: Standart Fransızca ifadeler içeren bir ana sayfa ile Kanada Fransızcası ifadeler

  • 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 sitenizde i18n yeniden yazmalarını ayarlamak için "i18n" oluşturmanız gerekir içeriği" dizinini oluşturun, ardından i18n özelliğini ekleyin. firebase.json dosyanıza ekleyerek yeni "i18n içeriğinize" dizin.

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 bu kombinasyona özel içeriği ekleyin, örneğin Tatil temalı ana sayfalar veya dile özgü 404 sayfaları.

    Bir "i18n içeriği" örneği. localized-files adlı dizin:

    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. Adlandırma kalıbı her bir alt klasör şu biçimlerden birine uygun olmalı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. temel olarak languageCode_ALL ile eşdeğerdir

    Alt bölüme bakın Aşağıdaki ülke ve dil kodları ziyaret edin. 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).

    Alt klasördeki dosyaların, public dizininde veya diğer alt klasörlerde benzer dosyalara sahip olması gerekmez. Tamamen ilgi alanına dayalı içerik oluşturabilirsiniz belirli bir dile ve/veya ülkeye özgü olmalıdır.

  2. firebase.json dosyanıza i18n özelliğini ekleyin ve dizininizde olmalıdır. Örneğimizden 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, şu işlemin yapıldığı dizinin adı olmalıdır: tüm "i18n içeriklerinizi" barındırır. alt klasörlerde de yer alı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" dağıtın ve Hosting sitenizde yapılandırı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. Şunları belirtmek için 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 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ğ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, es-419 veya es-US kullanılamaz. dil kodunu da içerir ancak es kullanabilirsiniz.

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

  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/ tarafından sağlanan içerik)
      Bu sıra, istek dilindeki her dil için kalite değerlerini Accept-Language üstbilgisi.

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

    3. Yalnızca dil kodu (örneğin, fr/ veya es_ALL/ kaynağından içerik)
      Bu sıra, istek dilindeki her dil için kalite değerlerini Accept-Language başlığı.

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

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

  5. 404 işleme

    1. i18n 404 sayfaları
      Bu, tam eşleme için yukarıda listelenen aynı öncelik sırasına sahiptir statik içeriği.

    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 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ı ş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 şu açıdan eşdeğerdir: Ülke ve dil tercihlerine bağlı olarak değişebilir. Ancak her iki alt klasör de Hosting, fr_ALL/ içeriğini fr/ içeriğinden önce sunar.

Ülkeyi geçersiz kılmak için çerezleri kullanarak yayınlanacak içeriği değiştirebilirsiniz. ve dil üstbilgilerini görebilirsiniz.

Ç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ştirmesine olanak tanıyın. Örneğin, şunları yapabilirsiniz: bir dil seçici uygulayın, ardından kullanıcının Buna göre firebase-language-override çerezi de kullanılabilir.

Çerez geçersiz kılmalarını yapılandırmak için şu adların her ikisine veya bu adlardan birine sahip çerezleri 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.