Traducciones en laravel

2019-11-10 Laravel
Tags   Laravel 6x

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!.

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.