Catch up on highlights from Firebase at Google I/O 2023. Learn more

Uluslararasılaştırma (i18n) yeniden yazmalarını yapılandırın

Bir kullanıcının ülkesine veya tercih ettiği dile bağlı olarak farklı içerikler sunmak için uluslararasılaştırma yeniden yazmalarını ("i18n yeniden yazmaları") 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ızca'yı tercih eden kullanıcılara Standart Fransızca içeriği 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 ifadeye sahip bir ana sayfa ile Kanada Fransızcası ifadeye sahip bir ana sayfa

  • Aynı içeriği tüm Kanadalı kullanıcılara sunun (dil tercihlerinden bağımsız olarak).
    Örnek: sitenizin "varsayılan" diline sahip, ancak Kanada'ya özgü bir özelliğe (tatil teması gibi) sahip bir ana sayfa

  • Fransızcayı tercih eden Kanadalı kullanıcılara Kanada Fransızcası içeriği sunun.
    Örnek: Kanada Fransızcası ifadelere ve Kanada'ya özgü bir özelliğe (tatil teması gibi) sahip bir ana sayfa

Firebase Barındırma, bir kullanıcının ülkesini IP adresinden ve bir kullanıcının dil tercihlerini Accept-Language isteği başlığından (genellikle web tarayıcıları tarafından otomatik olarak ayarlanır ) belirler.

i18n yeniden yazmalarını ayarla

Barındırma siteniz için i18n yeniden yazmalarını ayarlamak üzere, tüm yerelleştirilmiş içeriğiniz için bir "i18n içerik" dizini oluşturmanız, ardından yeni "i18n içerik" dizininize işaret etmesi için firebase.json dosyanıza i18n özniteliğ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 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 o kombinasyona özgü içeriği ekleyin.

    İşte localized-files adlı bir örnek "i18n içerik" 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
    

    localized-files/ dizini, siteniz tarafından desteklenen her dil ve ülke kombinasyonu için ayrı alt klasörler içerir. Her alt klasör için adlandırma modeli aşağıdaki biçimlerden birini izlemelidir:

    • languageCode_countryCode : Bu dil tercihine ve o ülke koduna sahip kullanıcılara özel içerik içerir

    • languageCode : Söz konusu dil tercihine sahip kullanıcılara özel içerik içerir, ancak içerik ülkeye özgü değildir; temelde languageCode_ALL ile 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. ALL değerini (büyük/küçük harfe duyarlı) herhangi bir ülkeyi ( es_ALL/ gibi) veya herhangi bir dili ( ALL_ca/ gibi) belirtmek için 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 özgü içerik oluşturabilirsiniz.

  2. i18n niteliğ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 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 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" dağıtın ve Hosting sitenize yapılandırın.

Çerez geçersiz kılmaları 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. ALL değerini (büyük/küçük harfe duyarlı) herhangi bir ülkeyi ( es_ALL/ gibi) veya herhangi bir dili ( ALL_ca/ gibi) belirtmek için 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 Et isteği başlığından alınır (genellikle web tarayıcıları tarafından otomatik olarak ayarlanır ). ISO 639-1 kodlarıdır . Dil kodlarını kullanırken aşağıdakileri aklınızda bulundurun:

  • Barındırma, hangi "i18n içeriğinin" sunulacağını aradığında, Dilleri Accept-Language başlığındaki kalite değerlerine göre sıralar.

  • Barındırma, herhangi bir bölge ve ülke alt etiketini Accept-Language başlığına bırakır, bu nedenle "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ölge 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 yazmalarını ayarlarsanız Hosting, içeriği aşağıdaki öncelik sırasına göre sunar:

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

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

  3. Tam eşlemeli statik içerik

    1. Dil kodu + Ülke kodu (örneğin, fr_ca/ kaynağından içerik)
      Sipariş, isteğin Accept-Language başlığındaki her dil için kalite değerlerini takip eder.

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

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

    4. "Varsayılan" tam eşlemeli statik içerik
      Bu, public dizinin kökü gibi "i18n içerik" dizininin dışındaki içeriktir.

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

  5. 404 taşıma

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

    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 istek kullanacağız.

  • "i18n içerik" dizini içeren ö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)

Tam eşleşme öncelik sırasına ve dil tercihlerinin kalite değerlerine göre Hosting, aşağıdaki sırayla istenen bir sayfayı 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 taşıma

Kullanıcıya hangi sayfa sunulacak?

  • İstenen sayfa: index.html

  • İstenen sayfa: awesome-page.html

"i18n içerik" dizininin bu arama ve sunma işlemi hakkında aşağıdakilere dikkat edin:

  • localized-files/ dizini aslında en_ca/ , en_ALL/ veya en/ alt klasörlerini içermez, bu nedenle Hosting, isteğin dil-ülke kombinasyonu 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çermez, dolayısıyla Hosting, es ile eşleşen "i18n içeriği"ni 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/ içeriğinden önce fr_ALL/ içeriğini sunacaktır.

Ülke ve dil başlıklarını geçersiz kılmak için tanımlama bilgilerini 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ştirmelerini sağlayın. Örneğin, bir dil seçici uygulayabilir, ardından kullanıcının firebase-language-override tanımlama bilgisini uygun şekilde ayarlayabilirsiniz.

Tanımlama bilgisi geçersiz kılmalarını yapılandırmak için tanımlama bilgilerini şu adların her ikisine veya birine 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 tanımlama bilgisi geçersiz kılmaları, alt etiketler veya kalite değerleri olmaksızın tercih sırasına göre virgülle ayrılmış bir dil kodları listesi olmalıdır.

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