Translating database query values in Laravel is essential for building multilingual applications. This tutorial demonstrates how to translate single and multiple database values, store translations for SEO, and serve API responses dynamically.
Install Free Google Translate Package
composer require stichoza/google-translate-php
Single Database Value
use Stichoza\GoogleTranslate\GoogleTranslate;
use App\Models\Post;
$post = Post::find(1);
$translator = new GoogleTranslate('bn'); // Target language
$translatedTitle = $translator->translate($post->title);
echo $translatedTitle;
Translate Multiple Query Results
use Stichoza\GoogleTranslate\GoogleTranslate;
use App\Models\Post;
$translator = new GoogleTranslate('fr');
$posts = Post::select('id', 'title', 'content')->get();
$posts->transform(function ($post) use ($translator) {
$post->title_translated = $translator->translate($post->title);
$post->content_translated = $translator->translate($post->content);
return $post;
});
return $posts;
Store Translations in Database
$post = Post::find(1);
$translator = new GoogleTranslate('es');
$post->title_es = $translator->translate($post->title);
$post->content_es = $translator->translate($post->content);
$post->save();
Step 5: Serve Translations via API Response
public function translatedPosts($lang) {
$translator = new GoogleTranslate($lang);
return response()->json(
Post::all()->map(function ($post) use ($translator) {
return [
'id' => $post->id,
'title' => $translator->translate($post->title),
'content' => $translator->translate($post->content),
];
})
);
}