Desarrollo de Aplicaciones

Laravel 5.4 translations

En versiones anteriores de Laravel para poder tener más de un idioma en la web teníamos que crear ficheros php con un return de un array clave-valor y después accedíamos a ellos haciendo uso de la función trans de forma que trans('fichero.clave') nos daba el valor.

Laravel 5.4 translations

Traducciones en Laravel 5.4

La solución anterior es elegante y muy útil, pero al final terminamos repitiendo claves y valores en diferentes ficheros si no teníamos cuidado a la hora de crear las traducciones. 

Desde Laravel 5.4, a parte de mantener esta opción, tenemos otra forma de realizarlo. La función es "__('')" y su argumento es el texto que queremos obtener en el idioma predeterminado. Por cada idioma diferente al default creamos un [código del idioma].json con:
{
    "texto en el idioma default": "traducción"
}

Con esto no tendremos claves que recordar y para cambiar un texto solo tenemos que buscar cuál es en el idioma original y ponerle la traducción. Si en algún momento queremos cambiar el valor del idioma por defecto podemos crear un [código del idioma original].json y cambiar la clave anterior por la nueva, así nos ahorramos cambiar la clave en cada idioma que ya tenemos creado. Tiene el añadido que es un idioma menos del que preocuparte, ya que escribimos el idioma por defecto directamente en las vistas y no en un fichero por separado.

La parte negativa es que los paquetes no tienen acceso a este json, estos deben quedarse con el array php de clave valor y acabamos teniendo las traducciones mezcladas entre la opción de siempre y la nueva.

La utilidad está en el momento que tenemos una página ya terminada y el último día piden hacerla multiidioma, creamos los N ".json" y en las vistas cambiamos los textos de "Este es el texto" a "{{ __('Este es el texto') }}", y eso es mucho mas rápido que copiar el texto, ponerlo en un array y volver a la vista añadiéndole la key que acabamos de crear.

También es útil tener todas las traducciones juntas, nos evita copiar mil archivos por idioma en vez de 1 por idioma. Si queremos crear un idioma nuevo solo tenemos que copiar un archivo y modificarlo con el idioma nuevo. 

Comparte este artículo

Artículos Relacionados