Можно ли установить язык или локаль программы Windows во время выполнения? - PullRequest
5 голосов
/ 14 октября 2011

У нас есть некоторые существующие программы (приложения C ++ для Windows), ресурсы которых переведены на несколько языков для различных клиентов. Приложение выбирает локаль из локали Windows и работает на соответствующем языке.

Следуя недавнему заказу, мы перевели ресурсы на немецкий язык, однако мы только что узнали, что клиенты устанавливают Windows на английском языке, но хотят, чтобы наше программное обеспечение по-прежнему работало на немецком языке. Очевидно, остальная часть программного обеспечения, работающего на ПК, не была глобализирована и является только немецкой.

Есть ли в Windows способ переопределить локаль, чтобы программное обеспечение считало, что оно работает на немецкой установке Windows? Сейчас у нас нет времени вносить изменения в программное обеспечение, чтобы переопределить локаль, и мы все равно не хотели бы раскладывать приложение для этого одного клиента.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Я не знаю ни одного простого способа, который не подразумевал бы изменение вашей программы, но я могу предложить обходной путь:

На машинах, где работает ваше приложение, создайте другого пользователя и установите этого пользователялокаль на немецкий.Затем запустите вашу программу с учетными данными этого пользователя (используя runas или psexec).Затем программа будет работать с немецким языком, в то время как пользователь продолжит работать в среде английского языка.Это будет раздражать, однако, если пользователь попытается сохранить или открыть файлы - папка рабочего стола и документов будут принадлежать немецкому пользователю, а не английскому.

0 голосов
/ 14 октября 2011

Да, вы можете использовать вызов Win32 SetThreadLocale из WinMain или любую точку входа вашего приложения. Любые дочерние потоки будут наследовать родительскую локаль. Подробности здесь:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd374051%28v=vs.85%29.aspx

...