← Volver al blog

React.js i18n: guía de configuración y uso de la localización

Publicado el
2 min de lectura
--- vistas

Librería i18n

Librería y enfoque comúnmente usados para la localización.

Instalación

  • Instala los paquetes

    yarn add i18next i18next-browser-languagedetector i18next-xhr-backend
    
  • Echa un vistazo al archivo de configuración config/i18n/i18n.ts. Inclúyelo en tu proyecto en algún lugar

  • En index.tsx importa el i18n.ts agregado previamente

  • Coloca los archivos de traducción en public/locales/${LOCALIZATION_NAME}/translation.json

Uso

A través de un hook especial en componentes
import { useTranslation } from 'react-i18next';
///...

const Component: React.FC = () => {
  const { t } = useTranslation();

  ///...
  return (
    <TextField
      fullWidth
      type="email"
      label={t('Email address')}
      InputLabelProps={{
        shrink: true
      }}
      {...getFieldProps('email')}
      error={Boolean(touched.email && errors.email)}
      helperText={touched.email && errors.email}
    />
  )
}
Componentes con enlace de parámetros
    // in functional component
    <Trans i18nKey="View all images" values={{ total }} />

    // in locales/en/translation.json
    {
      //...
      "View all images": "View all {{total}} images",
      //...
    }

    // in locales/cn/translation.json
    {
      //...
      "View all images": "查看所有 {{total}} 張圖片",
      //...
    }
Forma directa, a través de una utilidad

Esto es útil si tienes una cadena para localizar en algunos objetos (no en componentes funcionales)

// importing file from ./config/18n/i18n.ts
import i18n from '~/utils/i18n';

const messages = {
  hello: i18n.t('world'),
};

Consejos y trucos

Para cambiar la traducción, tienes que cambiar el valor en el local storage del navegador llamado i18nextLng

o usa este comando en la consola:

localStorage.setItem('i18nextLng', 'cn');

Actualiza la página después para ver la nueva localización del sitio aplicada

Disponible para colaboración por contrato

Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.

Agenda una llamada de 30 min