{"id":20697224,"url":"https://github.com/tsnsoft/dialogblocksconsoleappml","last_synced_at":"2026-05-05T01:33:57.605Z","repository":{"id":208483025,"uuid":"721740798","full_name":"tsnsoft/DialogBlocksConsoleAppML","owner":"tsnsoft","description":"Пример мультиязычной консольной программы на C++ с использованием wxWidgets и DialogBlocks для Visual Studio 2022","archived":false,"fork":false,"pushed_at":"2025-07-12T10:02:23.000Z","size":13475,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-12T12:07:10.268Z","etag":null,"topics":["cpp","cross-platform","dialogblocks","linux","localization","multilanguage","visual-studio","windows","wxwidgets"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsnsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-21T17:18:05.000Z","updated_at":"2025-07-12T10:02:26.000Z","dependencies_parsed_at":"2025-02-11T12:27:57.736Z","dependency_job_id":"c0bf3f14-ac0a-42d1-994b-cdd52967a7fe","html_url":"https://github.com/tsnsoft/DialogBlocksConsoleAppML","commit_stats":null,"previous_names":["tsnsoft/dialogblocksconsoleappml"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tsnsoft/DialogBlocksConsoleAppML","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsnsoft%2FDialogBlocksConsoleAppML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsnsoft%2FDialogBlocksConsoleAppML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsnsoft%2FDialogBlocksConsoleAppML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsnsoft%2FDialogBlocksConsoleAppML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsnsoft","download_url":"https://codeload.github.com/tsnsoft/DialogBlocksConsoleAppML/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsnsoft%2FDialogBlocksConsoleAppML/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27992423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-23T02:00:07.087Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cross-platform","dialogblocks","linux","localization","multilanguage","visual-studio","windows","wxwidgets"],"created_at":"2024-11-17T00:17:13.242Z","updated_at":"2025-12-24T01:43:33.917Z","avatar_url":"https://github.com/tsnsoft.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DialogBlocksConsoleAppML\nПример мультиязычной консольной программы на C++ с использованием wxWidgets и DialogBlocks для Visual Studio 2022\n\n![srcreenshot](screenshot.png)\n\n```\n#include \u003cwx/wx.h\u003e\n\nint main(int argc, char** argv) {\n\twxApp myApp; // Создать объект wxApp-приложения\n\twxInitializer initializer(argc, argv); // Инициализировать приложение\n\tif (!initializer.IsOk()) { // Если инициализация не удалась\n\t\twxPuts(wxT(\"Failed to initialize the application!\")); // Вывести сообщение\n\t\treturn -1; // Завершить программу с кодом -1\n\t}\n\twxLocale m_locale; // Создать объект локализации приложения для подсистемы wxWidgets\n\tsetlocale(LC_ALL, \"ru_RU.UTF-8\"); // Установить локаль по умолчанию для Linux\n\tm_locale.AddCatalogLookupPathPrefix(wxT(\"locale\")); // Добавить путь к каталогу локализации\n\n\t// Список языков\n\tstd::vector\u003cstd::string\u003e languages = { \"English\", \"German\", \"Kazakh\", \"Russian\" };\n\n\t// Вывод списка языков\n\twxPuts(wxT(\"Choose language:\")); // Вывести сообщение\n\tfor (std::size_t i = 0; i \u003c languages.size(); ++i) { // Перебрать все языки\n\t\t// Вывести номер языка и название языка\n\t\twxPuts(std::to_wstring(i + 1) + L\". \" + wxString::FromUTF8(languages[i].c_str()));\n\t}\n\n\t// Выбор языка\n\twchar_t languageNumber; // Создать переменную для номера языка\n\twxPrintf(wxT(\"Enter language number: \")); // Вывести сообщение\n\tstd::wcin.get(languageNumber); // Считать номер языка\n\n\tstd::wcin.ignore(std::numeric_limits\u003cstd::streamsize\u003e::max(), '\\n'); // Очистить буфер ввода\n\tstd::wcin.clear(); // Очистить флаги ошибок ввода\n\tstd::wcin.sync();  // Синхронизировать поток\n\n\tif (languageNumber == '1') { // Если выбран английский язык\n\t\tm_locale.Init(wxLANGUAGE_ENGLISH); // Инициализировать локализацию\n\t\tm_locale.AddCatalog(wxT(\"en\")); // Добавить каталог локализации английского языка\n\t}\n\telse if (languageNumber == '2') { // Если выбран немецкий язык\n\t\tm_locale.Init(wxLANGUAGE_GERMAN); // Инициализировать локализацию\n\t\tm_locale.AddCatalog(wxT(\"de\")); // Добавить каталог локализации немецкого языка\n\t}\n\telse if (languageNumber == '3') { // Если выбран казахский язык\n\t\tm_locale.Init(wxLANGUAGE_KAZAKH); // Инициализировать локализацию\n\t\tm_locale.AddCatalog(wxT(\"kk\")); // Добавить каталог локализации казахского языка\n\t}\n\telse if (languageNumber == '4') { // Если выбран русский язык\n\t\tm_locale.Init(wxLANGUAGE_RUSSIAN); // Инициализировать локализацию\n\t}\n\telse { // Если выбран неправильный номер\n\t\tm_locale.Init(wxLANGUAGE_RUSSIAN); // Инициализировать локализацию\n\t\twxPuts(wxT(\"Wrong number!\")); // Вывести сообщение\n\t}\n\n#ifdef _WIN32 // Если это Windows\n\t_setmode(_fileno(stdout), _O_U16TEXT); // Установить Юникод для вывода в консоли Windows\n\t_setmode(_fileno(stdin), _O_U16TEXT); // Установить Юникод для ввода в консоли Windows\n\t_setmode(_fileno(stderr), _O_U16TEXT); // Установить Юникод для вывода ошибок в консоли Windows\n#endif\n\n\twxPuts(wxGetTranslation(L\"Замечательно! Das ist großartig! Wonderful! 精彩的！ رائع!\"));\n\twxPrintf(_(L\"Введите имя: \"));\n\tstd::wstring fio; // Создать строковую переменную\n\tstd::getline(std::wcin, fio); // Считать строку\n\twxPuts(_(L\"Привет\") + \", \" + fio + \"!\"); // Вывести строку\n\n#ifdef __WXMSW__ // Определение для Windows\n\tsystem(\"pause\"); // Приостановить выполнение программы\n#else // Определение для Linux\n\tsystem(\"read -p \\\"Нажмите Enter для продолжения...\\\"  var\"); // Приостановить выполнение программы\n#endif\n\n\tmyApp.Exit(); // Завершить главный цикл приложения\n}\n```\n\n## Ссылки:\n\nhttp://www.anthemion.co.uk/dialogblocks/\n\nhttps://www.wxwidgets.org/\n\nhttps://visualstudio.microsoft.com/ru/vs/community/\n\nhttp://www.anthemion.co.uk/dialogblocks/ImageBlocks-1.07-Setup.exe\n\nhttps://poedit.net/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsnsoft%2Fdialogblocksconsoleappml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsnsoft%2Fdialogblocksconsoleappml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsnsoft%2Fdialogblocksconsoleappml/lists"}