From 526aa59d6a2d9e56c15bcbb6c26fb148fb362998 Mon Sep 17 00:00:00 2001 From: lx-s Date: Mon, 6 Nov 2023 21:08:47 +0100 Subject: [PATCH] Added translations for mutecontrol.cpp --- Translations/strings.ods | Bin 16191 -> 17190 bytes Translations/wm_de/resource.h | 7 +++++++ Translations/wm_de/wm_de.rc | Bin 8022 -> 9466 bytes WinMute/MuteControl.cpp | 12 +++++------ WinMute/Utility.cpp | 38 ++++++++++++++-------------------- WinMute/VersionHelper.h | 9 +++++--- WinMute/WinMute.rc | 10 +++++++++ WinMute/resource.h | 7 +++++++ 8 files changed, 51 insertions(+), 32 deletions(-) diff --git a/Translations/strings.ods b/Translations/strings.ods index dff2a41fd9184d54ec7f8b27790a64a82a062aa5..a72e74cb2580d605f12308022cde75145a344c4d 100644 GIT binary patch delta 15135 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 delta 14075 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 KillTimer(hMuteCtrlWnd_, delayedMuteTimerId_); delayedMuteTimerId_ = 0; @@ -233,8 +233,8 @@ void MuteControl::RestoreVolume(bool withDelay) } else { log.Write(L"Restoring previous mute state"); ShowNotification( - L"Volume restored", - L"All endpoints have been restored to their previous configuration"); + WMi18n::GetInstance().GetTextW(IDS_POPUP_VOLUME_RESTORED_TITLE), + WMi18n::GetInstance().GetTextW(IDS_POPUP_VOLUME_RESTORED_TEXT)); if (withDelay) { Sleep(BLUETOOTH_RECONNECT_UNMUTE_DELAY); } @@ -336,8 +336,8 @@ void MuteControl::NotifyRestoreCondition(int type, bool active, bool withDelay) if (muteDelaySeconds_ == 0) { WMLog::GetInstance().Write(L"Muting workstation"); ShowNotification( - L"Muting workstation", - L"All endpoints have been muted"); + WMi18n::GetInstance().GetTextW(IDS_POPUP_MUTING_WORKSTATION_TITLE), + WMi18n::GetInstance().GetTextW(IDS_POPUP_MUTING_WORKSTATION_TEXT)); winAudio_->SetMute(true); } else { WMLog::GetInstance().Write(L"Starting delayed mute timer..."); diff --git a/WinMute/Utility.cpp b/WinMute/Utility.cpp index 6678eec..191b6f9 100644 --- a/WinMute/Utility.cpp +++ b/WinMute/Utility.cpp @@ -45,34 +45,26 @@ void PrintWindowsError(const wchar_t *functionName, DWORD lastError) FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - nullptr, lastError, + nullptr, + lastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast(&lpMsgBuf), 0, nullptr) != 0) { - size_t displayBufSize = - (wcslen(static_cast(lpMsgBuf)) - + wcslen(static_cast(functionName)) - + 40) * sizeof(wchar_t); // Display the error message and exit the process - LPVOID lpDisplayBuf = reinterpret_cast( - LocalAlloc(LMEM_ZEROINIT, displayBufSize)); - if (lpDisplayBuf) { - StringCchPrintfW((LPTSTR)lpDisplayBuf, - LocalSize(lpDisplayBuf), - L"%s failed with error %u: %s", + const std::wstring errorMsg = std::vformat( + WMi18n::GetInstance().GetTextW(IDS_MAIN_ERROR_WINAPI_FAILURE_TEXT), + std::make_wformat_args( functionName, lastError, - reinterpret_cast(lpMsgBuf)); - TaskDialog( - nullptr, - nullptr, - PROGRAM_NAME, - static_cast(lpDisplayBuf), - nullptr, - TDCBF_OK_BUTTON, - TD_ERROR_ICON, - nullptr); - LocalFree(lpDisplayBuf); - } + reinterpret_cast(lpMsgBuf))); + TaskDialog( + nullptr, + nullptr, + PROGRAM_NAME, + errorMsg.c_str(), + nullptr, + TDCBF_OK_BUTTON, + TD_ERROR_ICON, + nullptr); LocalFree(lpMsgBuf); } } diff --git a/WinMute/VersionHelper.h b/WinMute/VersionHelper.h index 58cd99b..f427207 100644 --- a/WinMute/VersionHelper.h +++ b/WinMute/VersionHelper.h @@ -54,21 +54,24 @@ inline bool IsWindowsVersionOrGreater( osvi.dwMinorVersion = wMinorVersion; osvi.wServicePackMajor = wServicePackMajor; - return VerifyVersionInfoW(&osvi, + return VerifyVersionInfoW( + &osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE; } inline bool IsWindowsXPOrGreater() { - return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), + return IsWindowsVersionOrGreater( + HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 0); } inline bool IsWindowsVistaOrGreater() { - return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), + return IsWindowsVersionOrGreater( + HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0); } diff --git a/WinMute/WinMute.rc b/WinMute/WinMute.rc index f623d47..49de38a 100644 --- a/WinMute/WinMute.rc +++ b/WinMute/WinMute.rc @@ -552,6 +552,7 @@ BEGIN IDS_MAIN_ERROR_INIT_WINMUTE_TITLE "Failed to start WinMute." IDS_MAIN_ERROR_INIT_WINMUTE_TEXT "WinMute encountered a critical error while initializing and must shut down." + IDS_MAIN_ERROR_WINAPI_FAILURE_TEXT "{} failed with error {}: {}" END STRINGTABLE @@ -588,6 +589,15 @@ BEGIN "WLAN network ""{}"" is not on allowed list." IDS_POPUP_WLAN_IS_ON_MUTE_LIST_TEXT "WLAN network ""{}"" is configured for AutoMute." + IDS_POPUP_MUTING_WORKSTATION_AFTER_DELAY_TITLE + "Muting workstation after delay" + IDS_POPUP_MUTING_WORKSTATION_AFTER_DELAY_TEXT + "All endpoints have been muted" + IDS_POPUP_VOLUME_RESTORED_TITLE "Volume restored" + IDS_POPUP_VOLUME_RESTORED_TEXT + "All endpoints have been restored to their previous configuration" + IDS_POPUP_MUTING_WORKSTATION_TITLE "Muting workstation after delay" + IDS_POPUP_MUTING_WORKSTATION_TEXT "All endpoints have been muted" END #endif // English (United Kingdom) resources diff --git a/WinMute/resource.h b/WinMute/resource.h index 7d82002..f4fcab0 100644 --- a/WinMute/resource.h +++ b/WinMute/resource.h @@ -14,6 +14,7 @@ #define IDR_TRAYMENU 106 #define IDS_MAIN_ERROR_INIT_WINMUTE_TITLE 106 #define IDS_MAIN_ERROR_INIT_WINMUTE_TEXT 107 +#define IDS_MAIN_ERROR_WINAPI_FAILURE_TEXT 108 #define IDD_SETTINGS 109 #define IDD_SETTINGS_GENERAL 114 #define IDD_SETTINGS_QUIETHOURS 116 @@ -45,6 +46,12 @@ #define IDS_POPUP_WORKSTATION_MUTED_TITLE 311 #define IDS_POPUP_WLAN_NOT_ON_MUTE_LIST_TEXT 312 #define IDS_POPUP_WLAN_IS_ON_MUTE_LIST_TEXT 313 +#define IDS_POPUP_MUTING_WORKSTATION_AFTER_DELAY_TITLE 314 +#define IDS_POPUP_MUTING_WORKSTATION_AFTER_DELAY_TEXT 315 +#define IDS_POPUP_VOLUME_RESTORED_TITLE 316 +#define IDS_POPUP_VOLUME_RESTORED_TEXT 317 +#define IDS_POPUP_MUTING_WORKSTATION_TITLE 318 +#define IDS_POPUP_MUTING_WORKSTATION_TEXT 319 #define IDC_LINK_HOMEPAGE 1001 #define IDC_LINK_SUPPORT 1002 #define IDC_LINK_PROJECT 1002 -- 2.43.0