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); diff --git a/Languagefiles/es-ES.xml b/Languagefiles/es.xml similarity index 81% rename from Languagefiles/es-ES.xml rename to Languagefiles/es.xml index 09ccad5..d2b8321 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! @@ -28,12 +28,13 @@ ¡Error al cargar el componente!\nMensaje de error: Guardar configuración Configuración de efectos - Radio de desenfoque (global): - Redefinir efecto Mica establecido mediante DWMAPI (Win 11) + Radio de desenfoque global: + 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): @@ -43,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: @@ -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.