It sounds like it works. Add another language and test to be sure.
Scalability is essential, you don't want to change anything when adding new languages except adding a language file and a way of selecting that language file, but if you need to change other events/code, it's probably not optimal.
In my experience, most of the time, companies use JSON-files. One for each locale and defined naming conventions like: en-US.json for American English, en-GB.json for British English, etc.
One JSON-files is loaded when the game starts, and then other files are loaded when the user selects a language.
What you find is easiest for you is probably the best solution if you are working solo.
One thing that can be good to support is the possibility to pass variables to translation.
E.g. If players can add there own name then it is nice if npc can use that name when talking to the player.
All projects are different test things and you will find a solution.