From bda8ac55372a3ca78336b068f81d1e9f7b82a3ae Mon Sep 17 00:00:00 2001 From: Stefan Markovic Date: Wed, 18 Sep 2024 22:46:40 +0200 Subject: [PATCH] try fix --- src/common/utils/resources.h | 49 +++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/src/common/utils/resources.h b/src/common/utils/resources.h index 1bc8cc27720..4380c1d1c47 100644 --- a/src/common/utils/resources.h +++ b/src/common/utils/resources.h @@ -9,6 +9,22 @@ // Get a string from the resource file inline std::wstring get_resource_string(UINT resource_id, HINSTANCE instance, const wchar_t* fallback) { + // Try to load en-us string as the first fallback. + WORD english_language = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); + BOOL english_string_loaded = TRUE; + ATL::CStringW english_string; + try + { + if (!english_string.LoadStringW(instance, resource_id, english_language)) + { + english_string_loaded = FALSE; + } + } + catch (...) + { + english_string_loaded = FALSE; + } + std::wstring language = LanguageHelpers::load_language(); unsigned lang = LANG_ENGLISH; unsigned sublang = SUBLANG_ENGLISH_US; @@ -127,19 +143,32 @@ inline std::wstring get_resource_string(UINT resource_id, HINSTANCE instance, co } - // 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; + if (english_string_loaded) + { + return std::wstring(english_string); + } + else + { + return fallback; + } } } catch (...) { - return fallback; + if (english_string_loaded) + { + return std::wstring(english_string); + } + else + { + return fallback; + } } if (!result.IsEmpty()) @@ -152,22 +181,14 @@ inline std::wstring get_resource_string(UINT resource_id, HINSTANCE instance, co auto length = LoadStringW(instance, resource_id, reinterpret_cast(&text_ptr), 0); if (length == 0) { - // Try to load en-us string as the first fallback. - WORD english_language = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); - ATL::CStringW english_string; - try + if (english_string_loaded) { - if (!english_string.LoadStringW(instance, resource_id, english_language)) - { - return fallback; - } + return std::wstring(english_string); } - catch (...) + else { return fallback; } - - return std::wstring(english_string); } else {