Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. 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çerik sunmak için uluslararasılaştırma yeniden yazma ("i18n yeniden yazma") kullanın. Ayarlayabileceğiniz bazı örnek yapılandırmalar şunlardır:

  • Fransızcayı 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ç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 tümcelere sahip bir ana sayfa ile Kanada Fransızcası tümcelerine 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ı ifadeleri ve Kanada'ya özgü bir özelliği (tatil teması gibi) içeren bir ana sayfa

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

i18n yeniden yazma ayarlarını yapın

Barındırma siteniz için i18n yeniden yazmalarını ayarlamak için, tüm yerelleştirilmiş içeriğiniz için bir "i18n içerik" dizini oluşturmanız ve ardından yeni "i18n içeriği" dizininizi gösterecek şekilde firebase.json dosyanıza i18n niteliğini eklemeniz gerekir.

Ayrıntılı adımlar şunlardır:

  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 özel içeriği ekleyin.

    İşte localized-files adlı örnek bir "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 düzeni şu biçimlerden birine uymalıdır:

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

    • languageCode : Bu dil tercihine sahip kullanıcılara özel içerik içerir, ancak içerik ülkeye özgü değildir; için temelde eşdeğer languageCode_ALL

    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 harf 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 özgü içerik oluşturabilirsiniz.

  2. firebase.json dosyanıza i18n niteliğini ekleyin ve "i18n içeriğinizi" içeren dizini belirtin. Örneğimize devam ediyoruz:

    // 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. Eğer kökünde tüm "i18n içerik" alt klasörler verdiyseniz public dizinde, kullanım / değeri için root . root değerde 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.

Tanımlama bilgisi geçersiz kılmaları kullanarak kurulumunuzu test edebilirsiniz.

Ülke ve dil kodları

"i18n içerik" 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 harf duyarlı) değerini 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-Language istek başlığından alınır (genellikle web tarayıcıları 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ı ararken, Accept-Language başlığındaki kalite değerlerine göre dilleri sıralar.

  • Hosting, Accept-Language başlığında herhangi bir bölgesel ve ülke alt etiketini düşürür, bu nedenle bir "i18n içerik" 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 kesimi ile 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ğinden)
      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/ içeriğinden)

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

    4. "Varsayılan" tam eşleşmeli statik içerik
      Bu, public dizinin kökünde olduğu gibi "i18n içerik" dizininin dışında kalan 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ı için örnek

Örneğimize yukarıdan devam edelim. Aynı örnek dizini ve örnek bir isteği kullanacağız.

  • "i18n içerik" dizini içeren örnek yerel proje dizini ( localized-files 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, sonra İ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, istenen bir sayfa için dizinleri aşağıdaki sırayla 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 atlar.

  • localized-files/ dizini bir es_ALL/ alt klasörü es_ALL/ , yukarıdaki örnek istek bir es veya es-foo dil kodu içermez, bu nedenle Hosting es eşleşen "i18n içeriğini" 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 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 buna göre ayarlayabilirsiniz.

Tanımlama bilgisi geçersiz kılmalarını yapılandırmak için tanımlama bilgilerini ş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 ve Accept-Language başlığını fr,en olarak 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 olmadan, tercih sırasına göre virgülle ayrılmış bir dil kodları listesi olmalıdır.

Tanımlama bilgisi geçersiz kılmaları günlüklere yansıtılmaz.