В ларе есть специальный хелпер для локализации
__()
https://laravel.com/docs/10.x/localization
Такой-же, кстати, в вордпрессе. Внутрянка немного различается, но применение практически одинаковое.
В большом оперсорсном софте делают
вот так. Но вы можете делать и свои велосипеды с json'ами-массивами, особенно если уверены, что объемы локализации небольшие, и вам не понадобится для них привлекать сторонних исполнителей, писать тесты, и прочие энтерпрайзные штуки. Ну просто для готовых решений уже тонны сопутствующего софта написаны, а для велосипедов придется их тоже велосипедить. Ну или не придется, если приложение мелкое или с коротким жизненным циклом.