diff --git a/Sources/Plasma/Apps/plClient/win32/res/plClient.rc b/Sources/Plasma/Apps/plClient/win32/res/plClient.rc index 1cfe8e2e67..9a8497332a 100644 --- a/Sources/Plasma/Apps/plClient/win32/res/plClient.rc +++ b/Sources/Plasma/Apps/plClient/win32/res/plClient.rc @@ -1,6 +1,8 @@ // Microsoft Visual C++ generated resource script. // #include "resource.h" +#include "resource_en.rc" +#include "resource_de.rc" #define WIN32_LEAN_AND_MEAN #include @@ -92,15 +94,15 @@ IDD_URULOGIN_MAIN DIALOGEX 0, 0, 302, 246 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Login",IDOK,87,225,50,14 - PUSHBUTTON "Quit",IDCANCEL,163,225,50,14 + DEFPUSHBUTTON "Login",IDC_BUTTON_LOGIN,87,225,50,14 + PUSHBUTTON "Quit",IDC_BUTTON_CANCEL,163,225,50,14 CONTROL 151,IDC_STATIC,"Static",SS_BITMAP | SS_REALSIZECONTROL | WS_BORDER,7,7,289,36 - LTEXT "Account name:",IDC_STATIC,69,119,49,10 - LTEXT "Password:",IDC_STATIC,69,135,49,10 + LTEXT "Account name:",IDC_STATIC_ACCOUNT,69,119,49,10 + LTEXT "Password:",IDC_STATIC_PASSWORD,69,135,49,10 EDITTEXT IDC_URULOGIN_USERNAME,123,119,108,12,ES_AUTOHSCROLL EDITTEXT IDC_URULOGIN_PASSWORD,123,135,108,12,ES_PASSWORD | ES_AUTOHSCROLL GROUPBOX "",IDC_STATIC,14,99,274,112 - LTEXT "Language:",IDC_STATIC,69,151,49,10 + LTEXT "Language:",IDC_STATIC_LANGUAGE,69,151,49,10 COMBOBOX IDC_LANGUAGE,123,151,108,100,CBS_DROPDOWNLIST | WS_TABSTOP CONTROL "Remember Password:",IDC_URULOGIN_REMEMBERPASS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,69,167,100,10 GROUPBOX "",IDC_STATIC,14,54,274,43 @@ -114,8 +116,8 @@ IDD_URULOGIN_EULA DIALOGEX 0, 0, 300, 318 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Accept",IDOK,89,297,50,14 - PUSHBUTTON "Decline",IDCANCEL,160,297,50,14 + DEFPUSHBUTTON "Accept",IDC_BUTTON_ACCEPT,89,297,50,14 + PUSHBUTTON "Decline",IDC_BUTTON_DECLINE,160,297,50,14 CONTROL 151,IDC_STATIC,"Static",SS_BITMAP,7,7,287,36,WS_EX_CLIENTEDGE CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,9,46,284,242 CTEXT "End User License Agreement",IDC_STATIC,46,55,207,10 diff --git a/Sources/Plasma/Apps/plClient/win32/res/resource.h b/Sources/Plasma/Apps/plClient/win32/res/resource.h index 4f0bc7be40..023f3bdebe 100644 --- a/Sources/Plasma/Apps/plClient/win32/res/resource.h +++ b/Sources/Plasma/Apps/plClient/win32/res/resource.h @@ -26,6 +26,29 @@ #define IDC_STATUS_TEXT 1034 #define IDC_HOTKEY1 1035 #define IDC_LANGUAGE 1040 +#define IDC_STATIC_ACCOUNT 1050 +#define IDC_STATIC_PASSWORD 1051 +#define IDC_STATIC_LANGUAGE 1052 + +#define IDC_BUTTON_LOGIN 1901 +#define IDC_BUTTON_CANCEL 1902 +#define IDC_BUTTON_ACCEPT 1903 +#define IDC_BUTTON_DECLINE 1904 + +#define IDC_TEXT_LOGIN 2000 +#define IDC_TEXT_QUIT 2001 +#define IDC_TEXT_ACCOUNT 2002 +#define IDC_TEXT_PASSWORD 2003 +#define IDC_TEXT_LANGUAGE 2004 +#define IDC_TEXT_REMEMBER_PASS 2005 +#define IDC_TEXT_WELCOME 2006 +#define IDC_TEXT_NEED_ACCOUNT 2007 +#define IDC_TEXT_DONATE 2008 + +#define IDC_TEXT_ACCEPT 2009 +#define IDC_TEXT_DECLINE 2010 +#define IDC_TEXT_AUTH 2011 + // Next default values for new objects // diff --git a/Sources/Plasma/Apps/plClient/win32/res/resource_de.rc b/Sources/Plasma/Apps/plClient/win32/res/resource_de.rc new file mode 100644 index 0000000000..fcc5d3400d --- /dev/null +++ b/Sources/Plasma/Apps/plClient/win32/res/resource_de.rc @@ -0,0 +1,22 @@ +#include "resource.h" +#include +#include + +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN + +STRINGTABLE +BEGIN + IDC_TEXT_LOGIN "Anmelden" + IDC_TEXT_QUIT "Beenden" + IDC_TEXT_ACCOUNT "Kontoname:" + IDC_TEXT_PASSWORD "Passwort:" + IDC_TEXT_LANGUAGE "Sprache:" + IDC_TEXT_REMEMBER_PASS "Passwort merken:" + IDC_TEXT_NEED_ACCOUNT "Konto erstellen?" + IDC_TEXT_DONATE "Spenden" + + IDC_TEXT_ACCEPT "Akzeptieren" + IDC_TEXT_DECLINE "Ablehnen" + + IDC_TEXT_AUTH "Authentifizierung fehlgeschlagen. Bitte versuchen Sie es erneut." +END diff --git a/Sources/Plasma/Apps/plClient/win32/res/resource_en.rc b/Sources/Plasma/Apps/plClient/win32/res/resource_en.rc new file mode 100644 index 0000000000..38e10930f7 --- /dev/null +++ b/Sources/Plasma/Apps/plClient/win32/res/resource_en.rc @@ -0,0 +1,22 @@ +#include "resource.h" +#include +#include + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE +BEGIN + IDC_TEXT_LOGIN "Login" + IDC_TEXT_QUIT "Quit" + IDC_TEXT_ACCOUNT "Account name:" + IDC_TEXT_PASSWORD "Password:" + IDC_TEXT_LANGUAGE "Language:" + IDC_TEXT_REMEMBER_PASS "Remember Password:" + IDC_TEXT_NEED_ACCOUNT "Need an account?" + IDC_TEXT_DONATE "Donate" + + IDC_TEXT_ACCEPT "Accept" + IDC_TEXT_DECLINE "Decline" + + IDC_TEXT_AUTH "Authentication failed. Please try again." +END diff --git a/Sources/Plasma/Apps/plClient/win32/winmain.cpp b/Sources/Plasma/Apps/plClient/win32/winmain.cpp index 8b2d1ab786..b83a9ac8c3 100644 --- a/Sources/Plasma/Apps/plClient/win32/winmain.cpp +++ b/Sources/Plasma/Apps/plClient/win32/winmain.cpp @@ -579,6 +579,13 @@ INT_PTR CALLBACK AuthFailedDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, L return FALSE; } +static const char* LoadLocalizedString(UINT nID) +{ + static char buffer[256]; + LoadStringA(gHInst, nID, buffer, sizeof(buffer)); + return buffer; +} + INT_PTR CALLBACK UruTOSDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) @@ -598,6 +605,9 @@ INT_PTR CALLBACK UruTOSDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA SetDlgItemTextW(hwndDlg, IDC_URULOGIN_EULATEXT, ST::string(eula, ST::substitute_invalid).to_wchar().data()); + + SetDlgItemText(hwndDlg, IDC_BUTTON_ACCEPT, LoadLocalizedString(IDC_TEXT_ACCEPT)); + SetDlgItemText(hwndDlg, IDC_BUTTON_DECLINE, LoadLocalizedString(IDC_TEXT_DECLINE)); } else // no TOS found, go ahead EndDialog(hwndDlg, true); @@ -605,9 +615,9 @@ INT_PTR CALLBACK UruTOSDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA break; } case WM_COMMAND: - if (HIWORD(wParam) == BN_CLICKED && (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)) + if (HIWORD(wParam) == BN_CLICKED && (LOWORD(wParam) == IDC_BUTTON_ACCEPT || LOWORD(wParam) == IDC_BUTTON_DECLINE)) { - bool ok = (LOWORD(wParam) == IDOK); + bool ok = (LOWORD(wParam) == IDC_BUTTON_ACCEPT); EndDialog(hwndDlg, ok); return TRUE; } @@ -722,6 +732,23 @@ static size_t CurlCallback(void *buffer, size_t size, size_t nmemb, void *param) return size * nmemb; } +void SetWindowsUILanguage(plLocalization::Language lang) +{ + LANGID langId; + + switch (lang) { + case plLocalization::kGerman: + langId = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN); + break; + + default: + langId = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); + break; + } + + SetThreadUILanguage(langId); +} + INT_PTR CALLBACK UruLoginDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static LoginDialogParam* pLoginParam; @@ -835,9 +862,9 @@ INT_PTR CALLBACK UruLoginDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPA case WM_COMMAND: { - if (HIWORD(wParam) == BN_CLICKED && (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)) + if (HIWORD(wParam) == BN_CLICKED && (LOWORD(wParam) == IDC_BUTTON_LOGIN || LOWORD(wParam) == IDC_BUTTON_CANCEL)) { - bool ok = (LOWORD(wParam) == IDOK); + bool ok = (LOWORD(wParam) == IDC_BUTTON_LOGIN); if (ok) { wchar_t password[kMaxPasswordLength]; @@ -896,6 +923,16 @@ INT_PTR CALLBACK UruLoginDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPA return TRUE; } + else if (HIWORD(wParam) == CBN_SELCHANGE && LOWORD(wParam) == IDC_LANGUAGE) + { + HWND hCombo = (HWND)lParam; + int currentIndex = (int)SendMessage(hCombo, CB_GETCURSEL, 0, 0); + + if (currentIndex != CB_ERR) { + plLocalization::Language new_language = (plLocalization::Language)SendMessage(GetDlgItem(hwndDlg, IDC_LANGUAGE), CB_GETCURSEL, 0, 0L); + SetWindowsUILanguage(new_language); + } + } break; }