Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Configurar reescrituras de internacionalización (i18n)

Utilice reescrituras de internacionalización ("reescrituras i18n") para ofrecer contenido diferente según el país del usuario o el idioma preferido. A continuación, se muestran algunas configuraciones de ejemplo que puede configurar:

  • Servir el mismo contenido en francés a todos los usuarios que prefieren Francés (independientemente del país).
    Ejemplo: una página de inicio con texto en francés

  • Servir contenido Estándar Francés a los usuarios que prefieren francés, pero para los usuarios que prefieren canadiense francés, francés canadiense servir contenido en su lugar.
    Ejemplo: una página de inicio con redacción en francés estándar frente a una página de inicio con redacción en francés canadiense

  • Servir el mismo contenido a todos los usuarios canadienses (independientemente de su preferencia de idioma).
    Ejemplo: una página de inicio con el idioma "predeterminado" de su sitio, pero con una función específica de Canadá (como un tema de vacaciones)

  • Ofrezca contenido en francés canadiense a usuarios canadienses que prefieran el francés.
    Ejemplo: una página de inicio con redacción en francés canadiense y una función específica de Canadá (como un tema de vacaciones)

Hosting firebase determina únicamente para un usuario de su dirección IP y las preferencias de idioma de un usuario de la Accept-Language encabezado de solicitud (normalmente ajustados automáticamente por su navegador web ).

Configurar reescrituras de i18n

Para configurar reescrituras i18n para su sitio de alojamiento, es necesario crear un directorio "contenido i18n" por todo su contenido localizado, a continuación, añadir el i18n atributo a su firebase.json archivo a punto a su nuevo directorio "contenido i18n".

Estos son los pasos detallados:

  1. Dentro de su directorio de aplicación local de public carpeta, crea un directorio independiente para su "contenido i18n", a continuación, crear subcarpetas para cada combinación de idioma y el país con el apoyo de su sitio.

    En cada subcarpeta, agregue el contenido específico para esa combinación, como páginas de inicio con temas de vacaciones o páginas 404 específicas para cada idioma.

    He aquí un ejemplo de directorio "contenido i18n" llama 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
    

    El localized-files/ directorio contiene subcarpetas separadas para cada combinación de idioma y el país con el apoyo de su sitio. El patrón de nomenclatura de cada subcarpeta debe seguir cualquiera de estos formatos:

    • languageCode_countryCode : Contiene contenido específico para los usuarios que tienen esa preferencia de idioma y que el código de país

    • languageCode : Contiene contenido específico para los usuarios que tienen esa preferencia de idioma, pero el contenido no es específico de cada país; básicamente equivalente a languageCode_ALL

    Refiérase a la subsección códigos de país y de idioma a continuación para más detalles acerca de estos códigos. Se puede utilizar el valor de ALL (mayúsculas y minúsculas) para indicar cualquier país (como es_ALL/ ) o en cualquier idioma (como ALL_ca/ ).

    Los archivos en una subcarpeta no necesita tener los archivos análogos en el public directorio u otras subcarpetas. Puede crear contenido que sea completamente específico para un idioma y / o país.

  2. Añadir la i18n atributo a su firebase.json archivo y especificar el directorio que contiene el "contenido i18n". Continuando con nuestro ejemplo:

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

    El directorio especificado para root debe ser el nombre del directorio que contiene todas sus subcarpetas "contenido" i18n. Si ha colocado todas sus subcarpetas "contenido" i18n en la raíz de su public , utilícese / por el valor de root . Guiones iniciales y finales en la root valor son opcionales.

  3. Implemente su "contenido i18n" y su configuración en su sitio de alojamiento.

Puede probar su configuración utilizando las anulaciones de galletas .

Códigos de país e idioma

Al nombrar subcarpetas "contenido i18n", debe usar minúsculas para los códigos de país e idioma. Se puede utilizar el valor de ALL (mayúsculas y minúsculas) para indicar cualquier país (como es_ALL/ ) o en cualquier idioma (como ALL_ca/ ).

Hosting obtiene el código de país de la dirección IP del usuario. Los códigos de país son de dos letras ISO 3166-1 alfa-2 códigos .

Los códigos de idioma se obtienen a partir del usuario Accept-Language encabezado de solicitud (normalmente ajustados automáticamente por su navegador web ). Son códigos ISO 639-1 . Tenga en cuenta lo siguiente cuando utilice códigos de idioma:

  • Al alojar búsquedas para las que "el contenido i18n" para servir, que ordena a los lenguajes basados en los valores de calidad de la Accept-Language cabecera.

  • Hosting gotas ningún subetiquetas regional y nacional en el Accept-Language cabecera, por lo que el código de idioma en un "contenido i18n" nombre de la subcarpeta no puede contener estas etiquetas secundarias. Por ejemplo, no se puede utilizar es-419 o es-US como un código de idioma en una subcarpeta, pero se puede usar es .

    Si desea ofrecer contenido regional o de país específico, puede crear subcarpetas que contengan el contenido de idioma y país específico que desea admitir.

Orden de prioridad para "contenido i18n"

Si configura las reescrituras de i18n, Hosting ofrece contenido según el siguiente orden de prioridad:

  1. Espacios de nombres reservados que comienzan con un /__/* segmento de trazado

  2. configurados redirecciones

  3. Contenido estático de coincidencia exacta

    1. Código de idioma + código de país (por ejemplo, el contenido de fr_ca/ )
      El orden sigue los valores de calidad para cada idioma en la solicitud de Accept-Language cabecera.

    2. Código de país solamente (por ejemplo, el contenido de ALL_ca/ )

    3. Código de la lengua única (por ejemplo, el contenido de fr/ o es_ALL/ )
      El orden sigue los valores de calidad para cada idioma en la solicitud de Accept-Language cabecera.

    4. Contenido estático de coincidencia exacta "predeterminado"
      Este es el contenido que está fuera del directorio "contenido i18n", al igual que en la raíz de la public directorio.

  4. configurados reescrituras

  5. 404 manejo

    1. i18n 404 páginas
      Esto sigue el mismo orden de prioridad mencionado anteriormente para el contenido estático de coincidencia exacta.

    2. 404 página

    3. Página 404 predeterminada (proporcionada por Firebase)

Ejemplo de orden de prioridad

Continuemos con nuestro ejemplo de arriba. Usaremos el mismo directorio de ejemplo y una solicitud de ejemplo.

  • Ejemplo directorio del proyecto local con un directorio de "contenido i18n" (llamados 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
    
  • Información de solicitud de ejemplo

    • Los códigos de idioma: fr , en (francés, inglés) a continuación,
      Los códigos de idioma se ordenan en base a los valores de calidad en el Accept-Language cabecera.

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

De acuerdo con el orden de prioridad de coincidencia exacta y los valores de calidad para las preferencias de idioma, Hosting buscará en los directorios una página solicitada en el siguiente orden.

  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 manejo

¿Qué página se le entregará al usuario?

  • Página solicitada: index.html

  • Página solicitada: awesome-page.html

Tenga en cuenta lo siguiente sobre esta búsqueda y publicación del directorio "contenido i18n":

  • El localized-files/ directorio no contiene realmente en_ca/ , en_ALL/ o en/ subcarpetas, por lo Hosting se acaba de saltar hacia abajo la lista de prioridades hasta que encuentra una subcarpeta correspondiente para la combinación de idiomas de los países de la solicitud.

  • A pesar de que el localized-files/ directorio contiene una es_ALL/ subcarpeta, la solicitud ejemplo anterior no incluye una es o es-foo código de idioma, por lo Hosting no busque "contenido i18n" que coincide con es .

  • Subcarpetas llamadas fr/ y fr_ALL/ son equivalentes desde el punto de vista de las preferencias de país e idioma del usuario. Sin embargo, si existen dos subcarpetas, servirá de alojamiento fr_ALL/ contenido antes de fr/ contenido.

Puede cambiar el contenido que se sirve utilizando cookies para anular los encabezados de país e idioma.

A continuación, se muestran algunas formas en las que puede utilizar anulaciones de cookies:

  • Pruebe una función con diferentes combinaciones de idioma / país para comprobar qué contenido se ofrece.

  • Permita que sus usuarios cambien el contenido que ven. Por ejemplo, se puede implementar un selector de idioma, a continuación, ajuste del usuario firebase-language-override de galletas en consecuencia.

Para las anulaciones de galletas, galletas de configure conjunto con ambos o cualquiera de estos nombres: firebase-country-override y firebase-language-override . Por ejemplo, el siguiente fragmento de código JavaScript anula el código de país sea ca y la Accept-Language cabecera para ser fr,en :

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

Las anulaciones de cookies de idioma deben ser una lista separada por comas de códigos de idioma en orden de preferencia, sin subetiquetas ni valores de calidad.

Las anulaciones de cookies no se reflejan en los registros.