How to capitalize first letter in Laravel Blade
Stefan Izdrail
Founder & Senior Architect · 2026-06-29
Title: Efficiently Capitalizing First Letters in Laravel Blade Templates Using Translation Methods
As a developer working with Laravel, you may encounter situations where you need to display the translation of your text but want the first letter capitalized. Instead of adding duplicate entries in your language files and cluttering them with slight variations, you can use Laravel's localization features. This article explains how you can achieve this goal smoothly using the built-in translation method.
Understanding Laravel Blade and Translations
Laravel provides a powerful templating engine called Blade, which makes it easier to create dynamic templates with simple syntax. You can include language files in your application using themessages.php file and store within the /resources/lang/en folder. For each translation key, you define the value as a string that represents the message to be translated.
Capitalizing First Letter Using Laravel Translation Methods
To capitalize the first letter of a word for your translation in Laravel Blade, you can add a helper function namedtrans_choice. This function allows you to display translated text while providing an integer that acts as a plural form. To achieve the desired effect, follow these steps:
1. Create a new variable to store your message and a constant for its plural form (if applicable):
```php
$message = trans('messages.my_message');
$pluralFormConstant = 1; // If it's one of the plural forms you will have, e.g., 0 for singular, 1 for plural, etc.
```
2. Define a helper function named capitalizeFirstLetter, which takes a string and capitalizes the first letter:
```php
function capitalizeFirstLetter($string) {
return ucfirst(strtolower($string));
}
```
3. Use the trans_choice method, incorporating the helper you just created to capitalize the first letter:
```php
echo view('view', [
'message' => $message,
'pluralFormConstant' => $pluralFormConstant,
]);
@section('content')
{{ trans_choice(capitalizeFirstLetter($message), $pluralFormConstant) }}
@endsection
```
4. In your Blade template, use the trans method as usual but pass an array containing the helper function result to handle capitalization:
```php
{{ trans([$message => null], ['messages.' . $translationKey]) }}
```
5. In your application class (e.g., AppServiceProvider), you can define a custom macro for convenience:
```php
Blade::directive('capitalizeFirstLetter', function ($value) {
return "{{ \App\Helpers\MyHelper@capitalizeFirstLetter($value) }}";
});
// Use the helper's new method in your templates:
@section('content')
{{ trans_choice(capitalizeFirstLetter($message), $pluralFormConstant) }}
@endsection
```