Of course you need to cache the strings. The usual approach is to have a class that holds an array or dictionary which is initialized from a language file. Some uses “phraseIDs” which are just the index into the array or the dictionary. That way it’s very easy to load the data.
Another approach is to use english as default language and use a dictionary which translates each sentence into the desired language.
There’s also the SystemLanguage enum which can be used to specify the lanugage.