Laravel Language

Laravel, a popular PHP framework, uses localization features to support multiple languages in web applications. This feature is managed through language files, which are simple PHP arrays stored in the resources/lang directory. Here’s an overview of Laravel’s language and localization capabilities:


  1. Language Files

Language files contain key-value pairs for translations. For example:

Directory Structure

resources/lang/
en/
messages.php
es/
messages.php

English (en/messages.php)

‘Welcome to our application!’,
‘goodbye’ => ‘Goodbye!’,
];

Spanish (es/messages.php)

‘¡Bienvenido a nuestra aplicación!’,
‘goodbye’ => ‘¡Adiós!’,
];


  1. Retrieving Translations

Use the __(‘key’) or the trans(‘key’) helper function to retrieve translations.

Example

echo __(‘messages.welcome’); // Output: Welcome to our application! (if locale is ‘en’)


  1. Setting the Locale

The locale determines which language file Laravel uses. You can set it in the config/app.php file or dynamically at runtime.

In config/app.php

‘locale’ => ‘en’,

Dynamically

App::setLocale(‘es’);
echo __(‘messages.welcome’); // Output: ¡Bienvenido a nuestra aplicación!


  1. Fallback Locale

Laravel allows you to specify a fallback locale in case a translation is missing.

In config/app.php

‘fallback_locale’ => ‘en’,


  1. Validation Messages

Laravel’s built-in validation messages are also translated. These are stored in resources/lang/{locale}/validation.php.


  1. Pluralization

Use the trans_choice() function to handle pluralization.

Example

echo trans_choice(‘messages.apples’, 1); // Output: “1 apple”
echo trans_choice(‘messages.apples’, 5); // Output: “5 apples”

In messages.php

‘apples’ => ‘{0} No apples|{1} :count apple|[2,*] :count apples’,


  1. JSON Language Files

Laravel supports JSON translation files for applications where keys are not needed. These are stored in resources/lang/{locale}.json.

Example (resources/lang/es.json)

{
“Welcome to our application!”: “¡Bienvenido a nuestra aplicación!”
}

Usage

echo __(‘Welcome to our application!’);


  1. Changing the Language Dynamically

You can change the application’s locale dynamically, e.g., based on user preferences.

Route::get(‘set-locale/{locale}’, function ($locale) {
App::setLocale($locale);
return redirect()->back();
});


If you have any specific use cases or questions, feel free to ask!

Leave a Comment