Traducciones en laravel
Las traducciones en laravel permiten mostrar tu aplicación en distintos idiomas de manera fácil y rápida. Esto permite que tu aplicación tenga un alcance mucho mayor según los lenguajes que tengas habilitados. Cada lenguaje estará situado por lo general en la carpeta resources/lang, por defecto laravel viene configurado en inglés y traerá la carpeta resources/lang/en. Si deseas que tu aplicación muestre texto tanto en inglés como en español deberás crear la carpeta ../es. Dentro de cada carpeta de lenguaje pueden ir distintos archivos dependiendo del contexto, por ejemplo, laravel trae por defecto el archivo passwords.php el cuál trae el siguiente contenido.
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'reset' => 'Your password has been reset!',
'sent' => 'We have e-mailed your password reset link!',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that e-mail address.",
'throttled' => 'Please wait before retrying.',
];
Cada archivo deberá retornar un array de claves y valores en donde cada clave contedrá un identificar de la traducción y cada valor la traducción en sí.
Crear una traducción
Para crear una traducción vamos a suponer que tienes un proyecto laravel creardo previamente. Si no es así puedes visitar nuestro post Instalación Laravel para crear un nuevo proyecto rápidamente. Después de esto, vas a crear la carpeta resources/lang/es. Seguido a esto, vamos a crear el archivo greetings.php tanto en las carpetas en/es de las traducciones. A continuación presentamos el contenido que debe tener cada archivo.
/en/greetings.php
<?php
return [
'hello' => 'Hello World',
];
>/es/greetings.php
<?php
return [
'hello' => 'Hola Mundo',
];
Utilizar una traducción
Vamos a modificar el archivo que viene por defecto con la instalación de laravel llamado welcome.blade.php en la carpeta resoureces/views. Para utilizar el texto de la traducción basta reemplazar el string Laravel con el valor de la traducción tomada desde el helper lang
.
@lang('greetings.hello')
O bien,
{{ '\{\{' }} __('greetings.hello') {{ '\}\}' }}
Traducciones con parámetros
Muchas veces es necesario mostrar un texto en donde una palabra o sección es dinámica. Para esto, basta con indicar en la definción de la traducción un identificador de la siguiente manera:
return [
'hello' => 'Hello :name',
];
Para indicar el valor que toma dicho identificador basta pasarlo como segundo parámetro al mostrar el mensaje.
echo __('greetings.hello', ['name' => 'Steave']);
También puedes indicar si el parámetro debería ser mostrado todo en mayúscula colando así mismo el parámetro como :NAME
o si deseas mostrar solamente la primer letra mayúscula deberás indicar el parámetro como :Name
.
Pluralización
En los casos en los cuales se necesite traducir una palabra tanto en su forma singular como plurar bien podríamos crear dos entradas a nuestro array de traducciones. Sin embargo, laravel provee una forma mucho más elegante de tratar con este problema mediante el helper trans_choice
.
Supongamos que queremos mostrar el string resultado y resultados dependiendo si alguna búsqueda obtuvo uno o varios resultados. La entrada correcta a nuestro array sería de la siguiente forma:
return [
'search' => 'resultado|resultados',
];
Si queremos mostrar el primer valor singular, podemos utilizar el helper de la siguiente forma:
echo trans_choice('forms.search', 1);
Si queremos mostrar el valor plural deberíamos pasar el número 2 como segundo parámetro del helper.
echo trans_choice('forms.search', 2);
Hasta la próxima!.