¿Qué es la internacionalización?
Las funciones de internacionalización de Laravel ofrecen un mecanismo cómodo para obtener cadenas de traducción en varios idiomas. Se usan para dar soporte a múltiples idiomas dentro de la aplicación. Hay dos formas de gestionar las traducciones:Por defecto una aplicación Laravel no incluye el directorio
lang. Para personalizarlo, publícalo con el comando Artisan lang:publish.Configuración del locale
Locale por defecto
Configura el idioma por defecto enconfig/app.php con locale.
Habitualmente usa la variable APP_LOCALE de .env.
fallback_locale es el idioma alternativo cuando no existe traducción en el indicado.
Cambio de locale en tiempo de ejecución
ConsetLocale() de la fachada App puedes cambiar el locale por solicitud.
Consultar el locale actual
Crear archivos de idioma
Archivos PHP
Crea archivos PHP enlang/{código_idioma}/. Devuelven un array clave-valor.
JSON
Cuando hay muchas traducciones, se recomienda el formato JSON. Crea archivos con el código del idioma en el directoriolang/.
Cuándo elegir uno u otro
Cuándo conviene el formato PHP
Cuándo conviene el formato PHP
- Si quieres organizar por funcionalidad (mensajes de validación, etc.)
- Cuando sobreescribes las traducciones integradas de Laravel (
validation.php,auth.php, etc.) - Cuando necesitas una jerarquía de claves
Cuándo conviene el formato JSON
Cuándo conviene el formato JSON
- Cuando hay muchos textos de UI y pensar claves resulta engorroso
- Cuando prefieres escribir la plantilla en inglés y traducir el resto con archivos
- Cuando añades i18n a una aplicación ya existente
Obtener cadenas de traducción
Helper __()
Es el método más habitual. En formato PHP se indica como “archivo.clave”.
Uso en plantillas Blade
En Blade usa{{ __() }}.
Marcadores (placeholders)
Puedes incluir marcadores de la forma:nombre en las traducciones.
__().
Plurales
Las reglas de plural varían por idioma. Laravel permite separar singular y plural con|.
Plural básico
trans_choice().
Plural por rangos
Puedes indicar rangos con detalle.Placeholders con plurales
Con:count puedes mostrar la cantidad. El tercer argumento admite sustituciones adicionales.
Sobrescribir archivos de idioma de paquetes
Si un paquete de terceros trae sus propios archivos de idioma, puedes sobrescribirlos colocando el mismo archivo enlang/vendor/{paquete}/{código_idioma}/.
Por ejemplo, para personalizar los mensajes en inglés del paquete skyrim/hearthfire:
Ejemplo práctico: middleware de conmutación de idiomas
Ejemplo de un middleware que ajusta el locale automáticamente según la URL, la sesión o las preferencias del usuario.1
Crear el middleware
2
Implementar el middleware
3
Registrar el middleware
Regístralo en
bootstrap/app.php.4
Añadir la ruta para cambiar de idioma
5
Añadir botones de cambio en Blade
Estructura recomendada de archivos de traducción
Resumen
Definir cadenas de traducción
Definir cadenas de traducción
Funciones y facades habituales
Funciones y facades habituales
Uso en Blade
Uso en Blade