Simplify localization with Laravel’s __() function

Harris Raftopoulos
3 min readJul 31, 2024

Localization is essential for building applications that cater to users from different regions and language backgrounds. Laravel provides a powerful and easy-to-use localization system that allows developers to translate their application strings effortlessly. The __() function is a key component of this system, enabling you to retrieve translation strings from your language files.

Understanding the __() function

The __() function is used to translate strings in your application. It looks up the given key in your language files and returns the corresponding translated string. This function is particularly useful for applications that need to support multiple languages, as it allows you to manage all your translations in a centralized manner.

Basic Usage

Here’s a basic example to illustrate how the __() function works:

echo __('Welcome to our application');

In this example, the __() function looks up the key Welcome to our application in the language files and returns the corresponding translation.

Real-Life Example

Consider a scenario where you have a blog application that supports multiple languages. You can use the __() function to translate common strings such as the welcome message, navigation items, and form labels. Here’s how you can implement this:

  1. Create a language file for each supported language. For example, create resources/lang/en/messages.php for English and resources/lang/es/messages.php for Spanish.
// resources/lang/en/messages.php
return [
'welcome' => 'Welcome to our application',
'home' => 'Home',
'contact' => 'Contact Us',
];

// resources/lang/es/messages.php
return [
'welcome' => 'Bienvenido a nuestra aplicación',
'home' => 'Inicio',
'contact' => 'Contáctenos',
];
  1. Use the __() function in your views to retrieve the translated strings.
<!-- Blade Template (resources/views/welcome.blade.php) -->
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="UTF-8">
<title>{{ __('messages.welcome') }}</title>
</head>
<body>
<nav>
<ul>
<li><a href="/">{{ __('messages.home') }}</a></li>
<li><a href="/contact">{{ __('messages.contact') }}</a></li>
</ul>
</nav>
</body>
</html>

In this example, the __() function retrieves the translated strings based on the current locale, ensuring that the correct language is displayed to the user.

Pro Tip

For better organization and maintainability, store your translations in JSON files. This allows you to manage your translations in a single file per language, making it easier to update and add new translations.

// resources/lang/en.json
{
"welcome": "Welcome to our application",
"home": "Home",
"contact": "Contact Us"
}

// resources/lang/es.json
{
"welcome": "Bienvenido a nuestra aplicación",
"home": "Inicio",
"contact": "Contáctenos"
}

You can then use the __() function to retrieve translations from these JSON files in the same way.

Conclusion

The __() function in Laravel is a powerful tool for simplifying localization and managing translations in your application. By leveraging this function, you can ensure that your application is accessible to a global audience, providing a seamless experience for users in different languages. Incorporate the __() function into your Laravel projects to take advantage of its flexibility and ease of use.

If this guide was helpful to you, subscribe to my daily newsletter and give me a follow on X/Twitter. It helps a lot!

--

--

Harris Raftopoulos

Senior Software Engineer | 15 years in PHP, 11 with Laravel | Expert in Livewire, TailwindCSS & VueJS | DevOps Enthusiast | 🎤Speaker at Athens Laravel Meetup