MCPcopy Create free account
hub / github.com/TranslucentTB/TranslucentTB / SetProcessLangOverride

Method SetProcessLangOverride

TranslucentTB/localization.cpp:11–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9#include "../ProgramLog/error/winrt.hpp"
10
11bool Localization::SetProcessLangOverride(std::wstring_view langOverride)
12{
13 // make double null terminated
14 std::wstring language(langOverride);
15 language.push_back(L'\0');
16
17 // set for process
18 if (!SetProcessPreferredUILanguages(MUI_LANGUAGE_NAME, language.c_str(), nullptr))
19 {
20 LastErrorHandle(spdlog::level::err, L"Failed to set process UI language. Is the language set in the configuration file a BCP-47 language name?");
21
22 // don't try setting thread & XAML language, it'll probably fail too
23 return false;
24 }
25
26 // SetProcessPreferredUILanguages does not affect the lookup behavior of resource functions like FindResourceEx,
27 // only SetThreadPreferredUILanguages does.
28 // WHY WINDOWS
29 // WHAT IS THE POINT OF SETPROCESSPREFERREDUILANGUAGES THEN
30 if (!SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, language.c_str(), nullptr))
31 {
32 LastErrorHandle(spdlog::level::err, L"Failed to set thread UI language. Is the language set in the configuration file a BCP-47 language name?");
33
34 // remove the existing override to not fail in a partially localized to previous value state
35 SetProcessPreferredUILanguages(MUI_LANGUAGE_NAME, nullptr, nullptr);
36
37 // don't try setting XAML language, it'll probably fail too
38 return false;
39 }
40
41 // set for WinRT resources
42 try
43 {
44 winrt::Windows::ApplicationModel::Resources::Core::ResourceContext::SetGlobalQualifierValue(L"Language", langOverride);
45 }
46 catch (const winrt::hresult_error& err)
47 {
48 HresultErrorHandle(err, spdlog::level::err, L"Failed to set resource language override. Is the language set in the configuration file a BCP-47 language name?");
49
50 // remove the existing overrides to not fail in a partially localized to previous value state
51 SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, nullptr, nullptr);
52 SetProcessPreferredUILanguages(MUI_LANGUAGE_NAME, nullptr, nullptr);
53
54 return false;
55 }
56
57 return true;
58}
59
60Util::null_terminated_wstring_view Localization::LoadLocalizedResourceString(uint16_t resource, HINSTANCE hInst, WORD lang)
61{

Callers

nothing calls this directly

Calls 1

c_strMethod · 0.80

Tested by

no test coverage detected