diff --git a/src/common/utils/resources.h b/src/common/utils/resources.h index 00caff6f700..1bc8cc27720 100644 --- a/src/common/utils/resources.h +++ b/src/common/utils/resources.h @@ -4,9 +4,150 @@ #include #include +#include + // Get a string from the resource file inline std::wstring get_resource_string(UINT resource_id, HINSTANCE instance, const wchar_t* fallback) { + std::wstring language = LanguageHelpers::load_language(); + unsigned lang = LANG_ENGLISH; + unsigned sublang = SUBLANG_ENGLISH_US; + + if (!language.empty()) + { + if (language == L"ar-SA") + { + lang = LANG_ARABIC; + sublang = SUBLANG_ARABIC_SAUDI_ARABIA; + } + else if (language == L"cs-CZ") + { + lang = LANG_CZECH; + sublang = SUBLANG_CZECH_CZECH_REPUBLIC; + } + else if (language == L"de-DE") + { + lang = LANG_GERMAN; + sublang = SUBLANG_GERMAN; + } + else if (language == L"en-US") + { + lang = LANG_ENGLISH; + sublang = SUBLANG_ENGLISH_US; + } + else if (language == L"es-ES") + { + lang = LANG_SPANISH; + sublang = SUBLANG_SPANISH; + } + else if (language == L"fa-IR") + { + lang = LANG_PERSIAN; + sublang = SUBLANG_PERSIAN_IRAN; + } + else if (language == L"fr-FR") + { + lang = LANG_FRENCH; + sublang = SUBLANG_FRENCH; + } + else if (language == L"he-IL") + { + lang = LANG_HEBREW; + sublang = SUBLANG_HEBREW_ISRAEL; + } + else if (language == L"hu-HU") + { + lang = LANG_HUNGARIAN; + sublang = SUBLANG_HUNGARIAN_HUNGARY; + } + else if (language == L"it-IT") + { + lang = LANG_ITALIAN; + sublang = SUBLANG_ITALIAN; + } + else if (language == L"ja-JP") + { + lang = LANG_JAPANESE; + sublang = SUBLANG_JAPANESE_JAPAN; + } + else if (language == L"ko-KR") + { + lang = LANG_KOREAN; + sublang = SUBLANG_KOREAN; + } + else if (language == L"nl-NL") + { + lang = LANG_DUTCH; + sublang = SUBLANG_DUTCH; + } + else if (language == L"pl-PL") + { + lang = LANG_POLISH; + sublang = SUBLANG_POLISH_POLAND; + } + else if (language == L"pt-BR") + { + lang = LANG_PORTUGUESE; + sublang = SUBLANG_PORTUGUESE_BRAZILIAN; + } + else if (language == L"pt-PT") + { + lang = LANG_PORTUGUESE; + sublang = SUBLANG_PORTUGUESE; + } + else if (language == L"ru-RU") + { + lang = LANG_RUSSIAN; + sublang = SUBLANG_RUSSIAN_RUSSIA; + } + else if (language == L"sv-SE") + { + lang = LANG_SWEDISH; + sublang = SUBLANG_SWEDISH; + } + else if (language == L"tr-TR") + { + lang = LANG_TURKISH; + sublang = SUBLANG_TURKISH_TURKEY; + } + else if (language == L"uk-UA") + { + lang = LANG_UKRAINIAN; + sublang = SUBLANG_UKRAINIAN_UKRAINE; + } + else if (language == L"zh-CN") + { + lang = LANG_CHINESE_SIMPLIFIED; + sublang = SUBLANG_CHINESE_SIMPLIFIED; + } + else if (language == L"zh-TW") + { + lang = LANG_CHINESE_TRADITIONAL; + sublang = SUBLANG_CHINESE_TRADITIONAL; + } + + + // Try to load en-us string as the first fallback. + WORD languageID = MAKELANGID(lang, sublang); + ATL::CStringW result; + try + { + if (!result.LoadStringW(instance, resource_id, languageID)) + { + return fallback; + } + } + catch (...) + { + return fallback; + } + + if (!result.IsEmpty()) + { + return std::wstring(result); + } + } + wchar_t* text_ptr; auto length = LoadStringW(instance, resource_id, reinterpret_cast(&text_ptr), 0); if (length == 0) diff --git a/src/modules/FileLocksmith/FileLocksmithContextMenu/pch.h b/src/modules/FileLocksmith/FileLocksmithContextMenu/pch.h index 885d5d62e48..46064ef0445 100644 --- a/src/modules/FileLocksmith/FileLocksmithContextMenu/pch.h +++ b/src/modules/FileLocksmith/FileLocksmithContextMenu/pch.h @@ -7,6 +7,8 @@ #ifndef PCH_H #define PCH_H +#include + // add headers that you want to pre-compile here #include "framework.h"