Hey @davy_yg
What you are looking for is called localization. There are many tutorial about it. But they key points are:
- App uses
localeto figure out what language it needs to display to user. - Use this guide to start with: https://laravel.com/docs/master/localization
- It is not as simple as in the docs as you soon find out you gonna need more.
In your case you need to translate your model and instead of normal fields use json fields in your table. That json field will then consist of as many translations as you like. You can use for it: https://github.com/spatie/laravel-translatable or https://github.com/ARCANEDEV/Localization/blob/master/_docs/3-Usage.md#translated-models
Here is list of additional stuff I'm using for my localizations:
https://github.com/ARCANEDEV/Localization Really good staring point, allows you also to localize your routes wich in turn is important for SEO.
https://github.com/cviebrock/eloquent-sluggable
Once your routes are localized you also need to localize your models as for SEO it is not good to use model id in the paths.
https://github.com/rmariuzzo/Laravel-JS-Localization Solves a possible problem of making your translations available inside Vue, jQuery etc
Last but not least here is a paid service that you might use while your app grows big and you realise that you need to add multiple languages: https://poeditor.com/ it allows for community to translate your app into multiple languages.
Here is a good example how this is used in real life:
https://help.crisp.chat/en/article/what-languages-are-supported-by-crisp-1ivdmy2/ https://poeditor.com/join/project/l718IiBWl8
I hope this answers your question! As you can see it is hard to think about it while you deal with 2 languages but if as in crisp you deal with dozen of languages it changes your thinking of how app should be structured from the very start.
Hope it helps!