From ffd02830d864f5a4816d9514686dfa5538716eed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 30 Nov 2024 00:39:47 -0500 Subject: [PATCH 1/3] Fallback to parent language if locale translation is not found On my computer, the application tries to load the "es-PE" translation, if the full locale translation file is not found, the application loads the "es" translation, if that file is still not found, the application loads the "en-US" translation. --- DWMBlurGlass/Helper/Helper.cpp | 14 ++++++++++---- DWMBlurGlass/Helper/Helper.h | 2 +- DWMBlurGlass/MainWindow.cpp | 14 ++++++++++---- DWMBlurGlass/winmain.cpp | 4 +++- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/DWMBlurGlass/Helper/Helper.cpp b/DWMBlurGlass/Helper/Helper.cpp index f05647f..7502bb2 100644 --- a/DWMBlurGlass/Helper/Helper.cpp +++ b/DWMBlurGlass/Helper/Helper.cpp @@ -87,14 +87,20 @@ namespace MDWMBlurGlass return str; } - std::wstring GetSystemLocalName() + std::pair GetSystemLocaleAndParent() { WCHAR langName[LOCALE_NAME_MAX_LENGTH]; - if (GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SNAME, langName, LOCALE_NAME_MAX_LENGTH)) + if (GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SNAME, langName, LOCALE_NAME_MAX_LENGTH)) { - return langName; + std::wstring locale = langName; + auto pos = locale.find(L'-'); + if (pos != std::wstring::npos) + { + return { locale, std::wstring(locale.substr(0, pos)) }; + } + return { locale, locale }; } - return L"en-US"; + return { L"en-US", L"en" }; } std::wstring hrToStr(HRESULT hr) diff --git a/DWMBlurGlass/Helper/Helper.h b/DWMBlurGlass/Helper/Helper.h index 395133b..7c7b5ac 100644 --- a/DWMBlurGlass/Helper/Helper.h +++ b/DWMBlurGlass/Helper/Helper.h @@ -26,7 +26,7 @@ namespace MDWMBlurGlass extern std::wstring ReadFileSting(std::wstring_view filePath); - extern std::wstring GetSystemLocalName(); + std::pair GetSystemLocaleAndParent(); extern bool InstallScheduledTasks(std::wstring& errinfo); diff --git a/DWMBlurGlass/MainWindow.cpp b/DWMBlurGlass/MainWindow.cpp index aa5801b..24b8f94 100644 --- a/DWMBlurGlass/MainWindow.cpp +++ b/DWMBlurGlass/MainWindow.cpp @@ -38,13 +38,19 @@ namespace MDWMBlurGlass if (!LoadDefualtUIStyle(ui)) return false; - if (!LoadLanguageString(ui, GetSystemLocalName(), true)) + auto [locale, parentLocale] = GetSystemLocaleAndParent(); + if (!LoadLanguageString(ui, locale, true)) { - if (!LoadLanguageString(ui, L"en-US", true)) - return false; + if (!LoadLanguageString(ui, parentLocale, true)) + { + if (!LoadLanguageString(ui, L"en-US", true)) + return false; + } } - else if(GetSystemLocalName() != L"en-US") + else if (locale != L"en-US") + { LoadLanguageString(ui, L"en-US", true, false); + } const HWND hWnd = (HWND)ctx->Base()->GetWindowHandle(); //SetWindowLongW(hWnd, GWL_STYLE, GetWindowLongW(hWnd, GWL_STYLE) & ~(WS_MAXIMIZEBOX | WS_SIZEBOX)); diff --git a/DWMBlurGlass/winmain.cpp b/DWMBlurGlass/winmain.cpp index c113401..bc2ee91 100644 --- a/DWMBlurGlass/winmain.cpp +++ b/DWMBlurGlass/winmain.cpp @@ -40,8 +40,10 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, return 0; #endif + auto [locale, parentLocale] = MDWMBlurGlass::GetSystemLocaleAndParent(); + if (!MDWMBlurGlass::LoadLanguageFileList() - || (!MDWMBlurGlass::LoadBaseLanguageString(MDWMBlurGlass::GetSystemLocalName()) + || (!MDWMBlurGlass::LoadBaseLanguageString(locale) && !MDWMBlurGlass::LoadBaseLanguageString(parentLocale) && !MDWMBlurGlass::LoadBaseLanguageString(L"en-US"))) { MessageBoxW(nullptr, L"初始化失败: 没有有效的语言文件 (Initialization failed: No valid language file).", L"error", MB_ICONERROR); From 49f97349b28e8dd133fb21eeb1d233f18034cafc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 30 Nov 2024 00:44:52 -0500 Subject: [PATCH 2/3] Update Spanish translation Also, rename the file to use the parent language ID code. --- Languagefiles/{es-ES.xml => es.xml} | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) rename Languagefiles/{es-ES.xml => es.xml} (93%) diff --git a/Languagefiles/es-ES.xml b/Languagefiles/es.xml similarity index 93% rename from Languagefiles/es-ES.xml rename to Languagefiles/es.xml index 09ccad5..d29e08f 100644 --- a/Languagefiles/es-ES.xml +++ b/Languagefiles/es.xml @@ -1,5 +1,5 @@  - + ¡Error al inicializar la biblioteca MiaoUI!\nMensaje de error: ¡Error al crear el contexto de ventana! ¡Error al inicializar la ventana! @@ -29,11 +29,12 @@ Guardar configuración Configuración de efectos Radio de desenfoque (global): - Redefinir efecto Mica establecido mediante DWMAPI (Win 11) + Redefinir efecto de DWMAPI (Win 11) Extender efectos a bordes (Win 10) Habilitar efecto de reflejo Aero (OldBlur sólo para Win 10) Restaurar tamaño de botones de barra de título (estilo de Win 7) + Habilitar brillo de botones de barra de título (estilo de Win 7) Colores de modo claro Colores de modo oscuro Color fusión de barra de título (activa): @@ -58,6 +59,8 @@ Usar color de énfasis para redefinir configuración de color Opacidad de textura de reflejo Aero: Redefinir efecto AccentBlur + Habilitar optimización de renderizado de desenfoque + Deshabilitar efecto en modo de ahorro de energía Archivos de símbolos: Descargar Los archivos de símbolos (pdb) son archivos que registran información \nde depuración sobre un programa. Dado que los sistemas varían de una \nversión a otra, debe descargar los archivos de símbolos desde el servidor \nde Microsoft. Si actualiza su sistema, es posible que deba descargar los \narchivos de símbolos nuevamente. From 5f44094590a422d2ed442a16943a8c6ce8729ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 30 Nov 2024 01:29:45 -0500 Subject: [PATCH 3/3] Fix Spanish translation text overflow --- Languagefiles/es.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Languagefiles/es.xml b/Languagefiles/es.xml index d29e08f..d2b8321 100644 --- a/Languagefiles/es.xml +++ b/Languagefiles/es.xml @@ -28,7 +28,7 @@ ¡Error al cargar el componente!\nMensaje de error: Guardar configuración Configuración de efectos - Radio de desenfoque (global): + Radio de desenfoque global: Redefinir efecto de DWMAPI (Win 11) Extender efectos a bordes (Win 10) Habilitar efecto de reflejo Aero @@ -44,11 +44,11 @@ Vista previa Ejemplo de título de ventana (activa) Método de desenfoque: - [Recomendado] Implementación personalizada de desenfoque que usa \nCVisual (DWM) y Windows.UI.Composition (dcomp) para lograr efectos \nde fondo personalizados, puede personalizar la mayoría de los parámetros, \nno sólo puede obtener la máxima eficiencia, sino también la mejor \napariencia y mayor estabilidad. Sin embargo, la compatibilidad no es tan \nbuena ya que puede fallar después de una importante actualización de \nWindows y deberá esperar una nueva versión del programa. - [No recomendado] Usa la implementación interna de desenfoque de DWM \nsin eliminar (clase AccentBlurBehind) para aplicar el efecto de desenfoque, \npuede personalizar algunos de los parámetros, pero es ineficiente y \nmenos estable. Puede funcionar normalmente en la mayoría de los \nsistemas, generalmente, una actualización del sistema no lo romperá. + [Recomendado] Implementación personalizada de desenfoque que usa \nCVisual (DWM) y Windows.UI.Composition (dcomp) para lograr efectos \nde fondo personalizados, puede personalizar la mayoría de los\nparámetros, no sólo puede obtener la máxima eficiencia, sino también \nla mejor apariencia y mayor estabilidad. Sin embargo, la compatibilidad \nno es tan buena ya que puede fallar después de una importante \nactualización de Windows y deberá esperar una nueva versión del \nprograma. + [No recomendado] Usa la implementación interna de desenfoque de \nDWM sin eliminar (clase AccentBlurBehind) para aplicar el efecto de \ndesenfoque, puede personalizar algunos de los parámetros, pero es \nineficiente y menos estable. Puede funcionar normalmente en la mayoría \nde los sistemas, generalmente, una actualización del sistema no lo \nromperá. Usa DWMAPI documentado para aplicar el efecto SystemBackdrop \nlimitado, como Acrylic, Mica, no puede personalizar estos parámetros \nen absoluto. Aunque tenga alta eficiencia y mejor estabilidad, puede \nromper la apariencia de algunos programas y sólo está disponible \nen Windows 11 22H2 o superior. Tipo de efecto: - Radio de desenfoque (sólo barra de título): + Radio de desenfoque (barra de título): Opacidad de luminosidad: ColorBalance: BlurBalance: