Every two weeks I send out a newsletter containing lots of interesting stuff for the modern PHP developer. You can expect quick tips, links to interesting tutorials, opinions and packages. Want to learn the cool stuff? Then sign up now!

Using a Database for Localization in Laravel

Sebastian De Deyne, developer at Spatie and creator of several Spatie packages, has written a post on how to override Laravel’s default translation provider.

When building a website for a client that wants to be able to manage content, Laravel’s language files aren’t ideal since you can’t edit them without diving into a bundle of text files. We recently decided to drop all the lang files in our custom CMS in favor of persisting translations in the database, which allows us to build a custom interface for managing them.

This post is a quick overview on overwriting Laravel’s default translation loader, which means you can keep using the lang method while fetching the translations from a database. Writing a custom loader is easier than it sounds. First we’ll set up our translation models, then we’ll write our loader, and finally register it in our application.


Seb implemented the described functionality in Blender, our Laravel template we use to kickstart nearly all our projects.

Freek Van der Herten is a partner and developer at Spatie, an Antwerp based company that specializes in creating web apps with Laravel. After hours he writes about modern PHP and Laravel on this blog. When not coding he’s probably rehearsing with his kraut rock band.