I don't think it's clear what you are asking. Is your question about database efficiency? Database design?
When I have done this in the past with a similar model, I use the database to store languages, keys, default text, and translated text (per language, per key) and pull the information into a "translation dictionary" for the user (in a WPF/Winforms environment) or globally, one per language (in a web environment).
I think it's possble to do it with entities, but translations really lend themselves to in-memory key/value pair dictionaries, which are a far more efficient way to look up the information (this is assuming you don't have millions of translation which may not work as it would take up a lot of memory). So load the translations into a dictionary(s) once at startup (and maybe refresh periodically or manually when there are translation changes), and then look them up as you need them.
I have no idea if this fits your scenario or not, but from my experience it is a very efficient way to do it.