Catch up on everthing we announced at this year's Firebase Summit. Learn more

Configurar reescritas de internacionalização (i18n)

Use reescritas de internacionalização ("reescritas i18n") para servir conteúdo diferente dependendo do país do usuário ou idioma preferido. Aqui estão alguns exemplos de configurações que você pode definir:

  • Servir o mesmo conteúdo em francês a todos os utilizadores que preferem Francês (independentemente do país).
    Exemplo: uma página inicial com texto em francês

  • Servir conteúdo padrão francês para usuários que preferem francês, mas para usuários canadenses que preferem francês, servir conteúdo em francês canadense vez.
    Exemplo: uma página inicial com frase em francês padrão versus uma página inicial com frase em francês canadense

  • Servir o mesmo conteúdo para todos os usuários canadenses (independentemente da sua preferência de idioma).
    Exemplo: uma página inicial com o idioma "padrão" do seu site, mas com um recurso específico do Canadá (como um tema de feriado)

  • Ofereça conteúdo em francês canadense para usuários canadenses que preferem francês.
    Exemplo: uma página inicial com frase em francês canadense e um recurso específico do Canadá (como um tema de feriado)

Hospedagem Firebase determina país de um usuário a partir de seu endereço IP e preferências de idioma do usuário do Accept-Language cabeçalho de solicitação (geralmente definido automaticamente pelo seu navegador da web ).

Configurar reescritas i18n

Para configurar regravações i18n para o seu site de hospedagem, você precisa criar um diretório "conteúdo i18n" por todo o seu conteúdo localizado, em seguida, adicione o i18n atributo para o seu firebase.json arquivo para apontar para o novo diretório "conteúdo i18n".

Aqui estão as etapas detalhadas:

  1. Dentro do seu diretório app locais public pasta, crie um diretório separado para o seu "conteúdo i18n", em seguida, criar subpastas para cada combinação de idioma e país suportado pelo seu site.

    Em cada subpasta, adicione o conteúdo específico para essa combinação, como páginas iniciais com tema de feriados ou páginas 404 específicas do idioma.

    Aqui está um exemplo de diretório "conteúdo i18n" chamou localized-files :

    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
    

    A localized-files/ diretório contém subpastas separadas para cada combinação de idioma e país suportado pelo seu site. O padrão de nomenclatura para cada subpasta deve seguir um destes formatos:

    • languageCode_countryCode : Contém conteúdo específico para os usuários que têm esse idioma de preferência e que o código do país

    • languageCode : Contém conteúdo específico para os usuários que têm essa preferência de idioma, mas o conteúdo não é específico para o país; basicamente equivalente a languageCode_ALL

    Consulte a subsecção País e códigos de idioma abaixo para mais detalhes sobre esses códigos. Você pode usar o valor da ALL (case-sensitive) para indicar qualquer país (como es_ALL/ ) ou qualquer linguagem (como ALL_ca/ ).

    Os arquivos em uma subpasta não precisa ter arquivos análogas no public diretório ou outras subpastas. Você pode criar conteúdo totalmente específico para um idioma e / ou país.

  2. Adicione o i18n atributo para o seu firebase.json arquivo e especificar o diretório que contém o seu "conteúdo i18n". Continuando nosso exemplo:

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    O diretório especificado para root deve ser o nome do diretório que contém todas as suas subpastas "conteúdo i18n". Se você colocou todas as suas subpastas "conteúdo i18n" na raiz do seu public diretório, use / para o valor de root . Esquerda e à direita barras na root valor são opcionais.

  3. Implante seu "conteúdo i18n" e configure seu site de hospedagem.

Você pode testar a configuração utilizando substituições de biscoito .

Códigos de país e idioma

Ao nomear as subpastas "conteúdo i18n", você deve usar letras minúsculas para os códigos de país e idioma. Você pode usar o valor da ALL (case-sensitive) para indicar qualquer país (como es_ALL/ ) ou qualquer linguagem (como ALL_ca/ ).

A hospedagem obtém o código do país do endereço IP do usuário. Os códigos de país são de duas letras ISO 3166-1 alfa 2-códigos .

Os códigos de idioma são obtidos a partir do usuário Accept-Language cabeçalho de solicitação (geralmente definido automaticamente pelo seu navegador da web ). Eles são códigos ISO 639-1 . Lembre-se do seguinte ao usar códigos de idioma:

  • Ao hospedar pesquisas para o qual "o conteúdo i18n" para servir, ele ordena as línguas com base nos valores de qualidade no Accept-Language cabeçalho.

  • Hospedagem cai quaisquer submarcas regionais e nacionais no Accept-Language cabeçalho, então o código do idioma em um "conteúdo i18n" nome da subpasta não pode conter esses subtags. Por exemplo, você não pode usar es-419 ou es-US como um código de idioma em um nome de subpasta, mas você pode usar es .

    Se quiser servir conteúdo regional ou nacional específico, você pode criar subpastas que contenham o conteúdo específico do idioma-país que deseja oferecer suporte.

Ordem de prioridade para "conteúdo i18n"

Se você configurar reescritas de i18n, o Hosting exibirá conteúdo com base na seguinte ordem de prioridade:

  1. Namespaces reservados que começam com um /__/* segmento de caminho

  2. configurados redirecionamentos

  3. Conteúdo estático de correspondência exata

    1. Código de idioma + código do país (por exemplo, o conteúdo de fr_ca/ )
      A ordem segue os valores de qualidade para cada idioma no de solicitação Accept-Language cabeçalho.

    2. Apenas o código do país (por exemplo, o conteúdo de ALL_ca/ )

    3. Código de linguagem única (por exemplo, o conteúdo de fr/ ou es_ALL/ )
      A ordem segue os valores de qualidade para cada idioma no de solicitação Accept-Language cabeçalho.

    4. Conteúdo estático de correspondência exata "padrão"
      Este é o conteúdo que está fora do diretório "conteúdo i18n", como na raiz do public diretório.

  4. configurados reescreve

  5. Manuseio 404

    1. i18n 404 páginas
      Isso segue a mesma ordem de prioridade listada acima para conteúdo estático de correspondência exata.

    2. 404 personalizada página

    3. Página 404 padrão (fornecida pelo Firebase)

Exemplo para ordem de prioridade

Vamos continuar nosso exemplo acima. Usaremos o mesmo diretório de exemplo e uma solicitação de exemplo.

  • Exemplo diretório do projeto local com um diretório "conteúdo i18n" (chamados localized-files )

    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
    
  • Exemplo de informações de solicitação

    • Códigos de idioma: fr , en (francês, então inglês)
      Os códigos de idioma são ordenados com base em valores de qualidade no Accept-Language cabeçalho.

    • Código do país: ca (Canadá)

De acordo com a ordem de prioridade de correspondência exata e os valores de qualidade para as preferências de idioma, o Hosting pesquisará os diretórios de uma página solicitada na seguinte ordem.

  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. Manuseio 404

Qual página será exibida ao usuário?

  • A página solicitada: index.html

  • A página solicitada: awesome-page.html

Observe o seguinte sobre esta pesquisa e exibição do diretório "i18n content":

  • A localized-files/ diretório não contém realmente en_ca/ , en_ALL/ ou en/ subpastas, então hospedagem irá simplesmente ignorar a lista de prioridade até que encontre uma subpasta correspondente para combinação-country língua do pedido.

  • Mesmo que a localized-files/ diretório contém um es_ALL/ subpasta, o pedido exemplo acima não inclui um es ou es-foo código de idioma, por isso hosting não irá procurar por "conteúdo i18n" que corresponda es .

  • Subpastas chamado fr/ e fr_ALL/ são equivalentes a partir da perspectiva de preferências de país e idioma do usuário. No entanto, se existirem as duas subpastas, Hospedagem servirá fr_ALL/ conteúdo antes fr/ conteúdo.

Você pode alterar o conteúdo veiculado usando cookies para substituir os cabeçalhos de país e idioma.

Aqui estão algumas maneiras de usar substituições de cookies:

  • Teste um recurso com diferentes combinações de idioma / país para verificar qual conteúdo é veiculado.

  • Permita que seus usuários alterem o conteúdo que veem. Por exemplo, você pode implementar um seletor de idioma, em seguida, definir o usuário firebase-language-override cookie de conformidade.

Para substituições de cookie do configure, biscoitos conjunto com um ou ambos destes nomes: firebase-country-override e firebase-language-override . Por exemplo, o seguinte código JavaScript trecho substitui o código do país para ser ca eo Accept-Language cabeçalho para ser fr,en :

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

As substituições de cookies de idioma devem ser uma lista separada por vírgulas de códigos de idioma em ordem de preferência, sem subtags ou valores de qualidade.

As substituições de cookies não são refletidas nos registros.