Как определить текущий язык (не локаль!) Windows 7?

474
15 декабря 2016, 16:06

Интересует метод определения локализации Windows 7 на с++(не локали, а именно языка интерфейса), например "Пуск" в русской версии, "Start" - в английской.

Подозреваю, что эти строки где-то хранятся, вот только где и как их извлечь?

Answer 1

Вот получилось

#include <iostream>
#include <Windows.h>
using namespace std;
int main(){
    int   ret;
    ret = GetSystemDefaultLangID();
    if (ret == 1049)
        cout << "is type os russian interface" << endl;
    else
        cout << "is type os not russian interface" << endl;
    return 0;
}

В настройках проекта не забудьте включить Использовать MFC в общей DLL, чтоб ошибок не было.

Answer 2

Текущий язык интерфейса: HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages

Языковые пакеты находятся в самой папке windows и обычно имеют имя самого пакета, к примеру: en\_EN, fr\_FR, ru\_RU. В этих папках содержатся бинарные файлы с расширением .mui (Multilingual User Interface File), которые, по идее, как раз содержат строки локализации интерфейса windows. Правда, можно ли их использовать и как, не знаю.

UPD 1

По примеру @perfect нашел, что данную опцию выбора пакета языка так же выводит GetSystemDefaultUILanguage(). Информацию по использованию Multilingual User Interface File можно начать искать отсюда.

READ ALSO
Сигнал  для редактирования БД, QTableView\QSqlRelationalTableModel

Сигнал для редактирования БД, QTableView\QSqlRelationalTableModel

Подскажите подходящий сигнал для редактирования БДНеобходимо сразу после редактирования пользователем ячейки таблицы послать запрос в БД об изменении...

266
Не удаляется объект из памяти

Не удаляется объект из памяти

Вспоминаю C++, используя Qt

202