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çerikler sunmak için uluslararasılaştırma yeniden yazma işlemlerini ("i18n yeniden yazma işlemleri") kullanın. Aşağıda, ayarlayabileceğiniz bazı örnek yapılandırmalar verilmiştir:

  • Fransızca'yı 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 yayınlayın ancak Fransızcayı tercih eden Kanadalı kullanıcılara bunun yerine Kanada Fransızcası içerik yayınlayın.
    Örnek: Standart Fransızca ifadeler içeren bir ana sayfa ile Kanada Fransızcası ifadeler içeren bir ana sayfa

  • Tüm Kanadalı kullanıcılara (dil tercihlerinden bağımsız olarak) aynı içeriği sunma
    Örnek: Sitenizin "varsayılan " dilini içeren ancak Kanada'ya özel bir özellik (ör. tatil teması) barındıran bir ana sayfa

  • Fransızca'yı tercih eden Kanadalı kullanıcılara Kanada Fransızcası içerik sunma.
    Örnek: Kanada Fransızcası ifadeler içeren ve Kanada'ya özgü bir özellik (ör. tatil teması) barındıran 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 işlemlerini ayarlama

Hosting siteniz için i18n yeniden yazma işlemlerini ayarlamak üzere tüm yerelleştirilmiş içeriğiniz için bir "i18n content" dizini oluşturmanız, ardından yeni "i18n content" dizininize yönlendirmek 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, söz konusu kombinasyona özel içeriği (ör. tatil temalı ana sayfalar veya dile özgü 404 sayfaları) ekleyin.

    localized-files adlı bir "i18n content" dizininin ö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ı şu biçimlerden birine uymalıdır:

    • languageCode_countryCode: Bu dil tercihine ve ülke koduna sahip kullanıcılara özel içerikler barındırır.

    • languageCode: Bu dil tercihine sahip kullanıcılara özel içerikler barındırır ancak içerikler ülkeye özel 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 (büyük/küçük harfe duyarlı) herhangi bir ülkeyi (ör. es_ALL/) veya herhangi bir dili (ör. ALL_ca/) belirtmek için kullanabilirsiniz.

    Bir alt klasördeki dosyaların, public dizininde veya diğer alt klasörlerde benzer dosyaları olması gerekmez. Tamamen belirli bir dile ve/veya ülkeye özgü 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 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 content" alt klasörlerinizi içeren dizinin adı olmalıdır. Tüm "i18n content" alt klasörlerinizi public dizininizin kök dizinine yerleştirdiyseniz root değeri için / kullanın. root değerindeki baştaki ve sondaki eğik çizgiler isteğe bağlıdır.

  3. "i18n içeriğinizi" ve yapılandırmanızı Hosting sitenize dağıtın.

Kurulumunuzu çerez geçersiz kılma özelliğini kullanarak 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. ALL değerini (büyük/küçük harfe duyarlı) herhangi bir ülkeyi (ör. es_ALL/) veya herhangi bir dili (ör. ALL_ca/) belirtmek için 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-Languageistek 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 aklınızda bulundurun:

  • Hosting, hangi "i18n içeriğinin" yayınlanacağını ararken Accept-Language üstbilgisindeki kalite değerlerine göre dilleri sıralar.

  • Hosting, Accept-Language üstbilgisindeki tüm bölgesel ve ülke alt etiketlerini kaldırır. Bu nedenle, "i18n content" 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ölgeye veya ülkeye özel içerik sunmak istiyorsanız desteklemek istediğiniz belirli dil-ülke içeriklerini içeren alt klasörler oluşturabilirsiniz.

"i18n content" için öncelik sırası

Uluslararasılaştırma yeniden yazma işlemlerini ayarlarsanı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. Tam eşleşen statik içerik

    1. Dil kodu + Ülke kodu (örneğin, fr_ca/ dilindeki içerikler)
      Sıra, isteğin Accept-Language başlığındaki her dilin kalite değerlerine göre belirlenir.

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

    3. Yalnızca dil kodu (örneğin, fr/ veya es_ALL/ dilindeki içerikler)
      Sıra, isteğin Accept-Language üstbilgisindeki her dilin kalite değerlerine göre belirlenir.

    4. "Varsayılan" tam eşleşme statik içerik
      Bu, "i18n content" dizininin dışında bulunan içeriktir (ör. public dizininin kök dizininde).

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

  5. 404 işleme

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

    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 (önce Fransızca, sonra İngilizce)
      Dil kodları, Accept-Language üstbilgisindeki 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 bir sayfa için dizinlerde aşağıdaki sırayla arama yapar.

  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 bu şekilde aranması ve sunulmasıyla ilgili olarak 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 kombinasyonuna uygun bir alt klasör bulana kadar öncelik listesinde atlar.

  • localized-files/ dizini bir es_ALL/ alt klasörü içerse de yukarıdaki örnek istekte es veya es-foo dil kodu yer almıyor. Bu nedenle Hosting, es ile eşleşen "i18n content" araması yapmaz.

  • 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 varsa Hosting, fr/ içeriğinden önce fr_ALL/ içeriğini yayınlar.

Ülke ve dil üstbilgilerini geçersiz kılmak için çerezleri kullanarak sunulan içeriği değiştirebilirsiniz.

Çerez geçersiz kılmalarını kullanabileceğiniz bazı yöntemler ş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 izin verin. Örneğin, bir dil seçici uygulayabilir, 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 ikisiyle veya biriyle ayarlayın: firebase-country-override ve firebase-language-override. Örneğin, aşağıdaki JavaScript kodu snippet'i ülke kodunu ca, Accept-Language üstbilgisini ise fr,en olarak geçersiz kılar:

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

Dil çerezini geçersiz kılma, tercih sırasına göre virgülle ayrılmış dil kodu listesi olmalıdır. Alt etiketler veya kalite değerleri içermemelidir.

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