Hasta ahora, definir áreas que queremos que contengan traducciones nos obligaba a inventar una «llave» y luego a irnos al directorio resources/lang para especificar la llave con su traducción, esta labor se vuelve tediosa cuando tenemos proyectos con cientos de cadenas que queremos traducir. A partir de Laravel 5.4 se simplifica este proceso, ya no necesitamos especificar una llave por cada texto sino que podemos usar texto plano y además todas las traducciones se almacenarán en un simple archivo JSON como veremos en esta lección:

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

En todas las versiones de Laravel 5 para definir áreas que quieras que sean multi idioma en las vistas de Blade, puedes usar la directiva lang o la función trans, ejemplo: @lang(‘products.edit.title’)  o {{ trans(‘products.edit.title’) }} y luego debes crear el archivo products.php dentro del directorio de idiomas correspondiente y retornar lo siguiente:

<?php

return [
    'edit' => [
        'title' => 'Editar producto'
    ]
];

A partir de Laravel 5.4 también definir un área para multi idioma en texto plano:

{{ __('Edit product') }}

Por supuesto también puedes definir y pasar parámetros dinámicos:

{{ __('Edit :name product', ['name' => $product->title]) }}

Una vez hecho esto debes definir tus traducciones en resources/lang creando un archivo con el nombre del idioma y la extensión JSON, por ejemplo: resources/lang/es.json :

{
  "Edit :name product": "Editar producto :name"
}

En tus vistas de Blade también es posible utilizar la siguientes sintaxis:

@trans(['name' => $product->name])
    Edit :name product
@endtrans

La cual te puede resultar útil para líneas más largas que tengan varios argumentos.

Un tip muy interesante es que puedes forzar que los valores de los parámetros tengan la primera letra en mayúsculas o sean impresos completamente en mayúsculas si colocas el nombre del parámetro de forma acorde, ejemplo:

{{ __('Edit :Name product', ['name' => 'macbook']) }} // Imprimirá Editar Macbook
{{ __('Edit :NAME product', ['name' => 'macbook']) }} // Imprimirá Editar MACBOOK

Si quieres ver mucho más contenido como éste y ayudarme a seguir creando cursos, considera registrarte hoy en Styde.

Material relacionado

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Nueva interfaz fluida en las rutas de Laravel 5.4 Lección siguiente Eventos de Eloquent basados en clases en Laravel 5.4