I can share my solution of a similar problem.
1. Created a sqlite database containing a table containing localized control captions
Example:
ID EN RU
IDS_MAIN_WND_CAPTION Application Приложение
and so on
2. AUT creates registry value corresponding currently selected localization when it is being installed (for example, REG_SZ Language=DE, FR, JA and so on)
3. Custom created entity (class LanguageProvider) reads registry value data and then obtains a control caption (by ID from the database) corresponding currently selected localization from the database column. Connection string will be very easy
Example:
con_str = '''SELECT {} FROM L10N WHERE SOURCE = {}'''.format("FR", "IDS_MAIN_WND_CAPTION")
4. Obtained value is transferred to FindChildEx (WaitWindows etc.) function
5. Tests "know" what a language is selected (as localization is being selected whether by UI control or defining command line parameter)
Benefits of this approach:
1. You can add support as many localizations as you need. Only thing you will need is to add a new column to the database (for example, CN) and create CN control captions for each string ID. String IDs will not be changed and selection from the database will always correspond to the localization stated in a test.
2. You do not need to modify your tests or high level UI wrapper under AUT as if a control caption is changed you only need to modify corresponding value of string ID in the database.
This requires additional scripting but not so much as, for example, interaction with sqlite database can be performed by using standard python package sqlite3.
But this is very flexible.