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:

  • 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ızcayı tercih eden kullanıcılara Standart Fransızca içerik sunun, ancak Fransızcayı tercih eden Kanadalı kullanıcılar Kanada Fransızcası içeriği sunmaktadır .
    . Örnek: Standart Fransızca ifadeler içeren bir ana sayfa ile Kanada Fransızcası ifadeler

  • Kanada'daki tüm kullanıcılara (kullanıcıların dil tercihi) kullanabilirsiniz.
    . Örnek: sitenizin "varsayılan" değerine sahip bir ana sayfa dil ancak bir Kanada'ya özgü özellik (tatil teması gibi)

  • 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ıları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 yazmalarını ayarlamak üzere bir "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 ayrı bir dizin oluşturun bulun, ardından her dil için alt klasörler oluşturun ve siteniz tarafından desteklenen ülke kombinasyonudur.

    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 her bir alt klasör için ayrı alt klasörler içerir siteniz tarafından desteklenen dil ve ülke kombinasyonudur. 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).

    Bir alt klasördeki dosyaların public içinde benzer dosyalara sahip olması gerekmez. diğer alt klasörlerde de olabilir. 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 yapılandırmanız gerekir.

Ç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).

Barındırma, ü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 alınır. (genellikle tarayıcı tarafından otomatik olarak ayarlanır.) Bunlar ISO 639-1 kodlarıdır. Dil kodlarını kullanırken aşağıdakileri göz önünde bulundurun:

  • Hosting, "i18n content" için arama yaptığında en son derece karmaşık Accept-Language başlığındaki kalite değerlerine göre değişir.

  • Barındırma, Accept-Language içindeki tüm bölgesel ve ülke alt etiketlerini bırakır "i18n content" içindeki dil kodu da dahil olmak üzere alt klasör adı emin olun. Örneğin, es-419 veya es-US kullanılamaz. dil kodunu da içerir 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ğıdaki ölçütlere 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/ 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 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 kullanıyorsanız 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/ içerse de alt klasör, yukarıdaki örnek istek bir es veya es-foo içermiyor dil kodu içerir. Bu nedenle, Hosting "i18n content" için arama yapmaz. verileri es ile eşleşiyor.

  • 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 bulunuyorsa 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 dil/ülke kombinasyonuna sahip bir özelliği test ederek yayınlanır.

  • 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.