powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запустить приложение с заданной локализацией
14 сообщений из 14, страница 1 из 1
Запустить приложение с заданной локализацией
    #39633397
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, м.б. кто сталкивался или знает?
Есть некое приложение, не мое, скажем так системное.
Локализация реализована стандартным для Win способом.
Т.е. лежит application.exe
Там же лежат папочки en-US, ru-RU, fr-FR...
В зависимости от того какой язык интерфейса, какие языковые пакеты установлены.
В каждой папочке соответственно свой application.exe.mui с переводом

Стандартный принцип:
если тек. язык интерфейса системы русский, подгружается ru-RU
если тек. язык интерфейса системы английский, подгружается en-US
и т.д.

А если язык интерфейса системы русский, а я хочу запустить на английском или французском?
Ну типа
CreateProcess (application.exe, ...)
Как обмануть, чтоб он ориентировался на заданную локализацию, а не системную?
Пока ничего внятного на эту тему не нашел.

Английский напр. можно запустить, уничтожив папку ru-RU, французский почему-то не схватывает если оставить только папку fr-FR.
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633401
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вендопроблемы такие вендопроблемы.

В *nix достаточно
Код: plaintext
LANG=fr_FR ./app
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633403
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_wsetlocale а потом оттуда CreateProcess?

https://gist.github.com/feuvan/828705

не оно?
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633425
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фундаментально вроде тут пишут https://msdn.microsoft.com/en-us/library/windows/desktop/dd319073(v=vs.85).aspx
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633426
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чет я туплю пока.
SetThreadUILanguage c LangId=1033
по идее должен установить английский,
но в итоге CreateProcess запускает все одно на русском,
но CreateProcess же запускает приложение в другом потоке.
а как мне новый процесс с заданным UILanguage запустить?
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633452
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633459
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Как обмануть, чтоб он ориентировался на заданную локализацию, а не системную?

Внедриться в запускаемый процесс и вызвать SetProcessPrefrredUILanguages(), например.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633462
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

И, легко сказать.
А вот как это сделать.
21353339 (не C но не суть)
SetThreadUILanguage
SetProcessPreferredUILanguages
SetThreadPreferredUILanguages

Все эти 3 ф-ции я уже опробовал.
Но я волен их запустить в своем процессе.

Из своего я потом делаю
CreateProcess(то чего хочу запустить...)

Но "то чего хочу запустить" плевать на мои вызовы Set...UILanguage, оно схватывает тот UI что прописан в системе
И вот как мне "внедриться" в "то чего хочу запустить" на этапе вызова CreateProcess?
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633702
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И вот как мне "внедриться" в "то чего хочу запустить" на этапе вызова CreateProcess?

DLL Injection описан у Рихтера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633717
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВнедриться в запускаемый процесс и вызвать SetProcessPrefrredUILanguages(), например.Разве дочерний процесс не наследует окружение родительского процесса, включая установленную локализацию?
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devРазве дочерний процесс не наследует окружение родительского процесса, включая
установленную локализацию?

Окружение - наследует. Локализация в окружение не входит. Почитай ссылку mayton.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633761
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Локализация реализована стандартным для Win способом.


Ну, какого-то стандарта в общем и нет.

Дмитрий77Т.е. лежит application.exe
Там же лежат папочки en-US, ru-RU, fr-FR...
В зависимости от того какой язык интерфейса, какие языковые пакеты установлены.
В каждой папочке соответственно свой application.exe.mui с переводом


Ну это .dll c ресурсами подгружаются разные в зависимости от языка.
Ну да, трюк достаточно стандартный, но в зависимости от чего подгружать какую-то .dll -- это дело приложения.
Оно может и не использовать системные настройки.

Дмитрий77А если язык интерфейса системы русский, а я хочу запустить на английском или французском?


Это зависит от приложения. Как там реализовано.
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633763
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devDimitry SibiryakovВнедриться в запускаемый процесс и вызвать SetProcessPrefrredUILanguages(), например.Разве дочерний процесс не наследует окружение родительского процесса, включая установленную локализацию?

Наследует, только Винда плюёт на все почти настройки из окружения.
...
Рейтинг: 0 / 0
Запустить приложение с заданной локализацией
    #39633975
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы.

MasterZivно в зависимости от чего подгружать какую-то .dll -- это дело приложения.
Оно может и не использовать системные настройки.Это зависит от приложения. Как там реализовано.

Ну, судя по документации да. Т.е. оно само знает список предпочтений (5 языков как понял) + аварийный вариант, напрашивается en-US.

Подопытное приложение - это классический WinMail.exe (из висты), я вожусь с инсталлятором оного для Win7-10.
Естественно задумался о локализации, ибо все mui из вистовских пакетов извлекаются на ура.
Поведение там понятное: установил языковой пакет, переключил UI системы на этот язык, стало на этом языке (этож компонент OS).

Возникла идея, а нельзя ли "задать язык принудительно", типа на выбор.
Наличием/отсутствием папок с mui на любом языке OS можно подтасовать только en-US (оставляем одну папочку), французский на RU системе по этому принципу не заработает.

Возникла далее идея запустить процесс в условиях чтоб он думал что он на такой-то локализации (естественно с применением программного переходника) и пошел в заданную mui-папку. Но сутя по рассуждениям и тестам, нереально, игра не стоит свеч.

Т.е. варианта инсталляции разумных 2.
1) устанавливать "все" папки с mui, найдет сам в зависимости от языка OS, либо будет en-US. Много, но не бог весть (1,5-2 МБ на язык).
2) устанавливать одну папку соответствующую вычисленному UI, либо en-US, либо +en-US.

А системное поведение видимо на раз-два не обойти, да и надо ли. Понятно, что если человек установил китайскую OS, то польский его не интересует.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запустить приложение с заданной локализацией
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]