1111#include " TextConv.h"
1212#include " HtmlTag.h"
1313#include " AboutDlg.h"
14+ #include " dialogs.h"
1415
1516// Handle static text in default theme mode
1617#define WM_CTLCOLORSTATIC_LITE WM_CTLCOLORSTATIC
@@ -27,12 +28,17 @@ struct DialogHyperlink {
2728 WNDPROC defWndProc;
2829};
2930
31+ struct LocalizedResource {
32+ const char *locale;
33+ int dialog, modal;
34+ };
35+
3036INT_PTR CALLBACK modalDlgProc (HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);
3137INT_PTR CALLBACK linkCtrlWndProc (HWND hLink, UINT message, WPARAM wParam, LPARAM lParam);
38+ LocalizedResource getLocalizedResource ();
3239
3340Version pluginVersion;
3441HFONT hDefaultFont, hActiveLinkFont;
35- bool themeInitialized = false ;
3642
3743DialogHyperlink linkCtrls[] = {
3844 { ID_RELEASE_NOTES_LINK, nullptr },
@@ -45,6 +51,32 @@ DialogHyperlink linkCtrls[] = {
4551 { ID_TINYXML_LINK, nullptr },
4652};
4753constexpr size_t nbLinkCtrls = ARRAYSIZE(linkCtrls);
54+
55+ constexpr LocalizedResource dialogLocales[] = {
56+ { " arabic" , AR_ABOUT_DLG, AR_UNICODE_DLG },
57+ { " catalan" , CA_ABOUT_DLG, CA_UNICODE_DLG },
58+ { " chineseSimplified" , ZH_ABOUT_DLG, ZH_UNICODE_DLG },
59+ { " dutch" , NL_ABOUT_DLG, NL_UNICODE_DLG },
60+ { " farsi" , FA_ABOUT_DLG, FA_UNICODE_DLG },
61+ { " french" , FR_ABOUT_DLG, FR_UNICODE_DLG },
62+ { " german" , DE_ABOUT_DLG, DE_UNICODE_DLG },
63+ { " hebrew" , HE_ABOUT_DLG, HE_UNICODE_DLG },
64+ { " hindi" , HI_ABOUT_DLG, HI_UNICODE_DLG },
65+ { " italian" , IT_ABOUT_DLG, IT_UNICODE_DLG },
66+ { " japanese" , JP_ABOUT_DLG, JP_UNICODE_DLG },
67+ { " korean" , KO_ABOUT_DLG, KO_UNICODE_DLG },
68+ { " polish" , PL_ABOUT_DLG, PL_UNICODE_DLG },
69+ { " portuguese" , PT_ABOUT_DLG, PT_UNICODE_DLG },
70+ { " brazilian_portuguese" , BR_PT_ABOUT_DLG, BR_PT_UNICODE_DLG },
71+ { " romanian" , RO_ABOUT_DLG, RO_UNICODE_DLG },
72+ { " russian" , RU_ABOUT_DLG, RU_UNICODE_DLG },
73+ { " sinhala" , SI_ABOUT_DLG, SI_UNICODE_DLG },
74+ { " spanish" , ES_ABOUT_DLG, ES_UNICODE_DLG },
75+ { " spanish_ar" , ES_ABOUT_DLG, ES_UNICODE_DLG },
76+ { " tamil" , TA_ABOUT_DLG, TA_UNICODE_DLG },
77+ { " ukrainian" , UK_ABOUT_DLG, UK_UNICODE_DLG },
78+ };
79+ constexpr size_t nbDialogLocales = ARRAYSIZE(dialogLocales);
4880}
4981
5082// --------------------------------------------------------------------------------------
@@ -57,7 +89,7 @@ AboutDlg::AboutDlg(HINSTANCE hInst, NppData const &data) : StaticDialog() {
5789// --------------------------------------------------------------------------------------
5890void AboutDlg::show () {
5991 if (!isCreated ())
60- create (ID_ABOUT_HTML_TAG_DLG );
92+ create (getLocalizedResource (). dialog );
6193
6294 goToCenter ();
6395}
@@ -133,8 +165,8 @@ INT_PTR CALLBACK AboutDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
133165 prefixTxt.append (L" 0000" );
134166 ::SetDlgItemTextW (_hSelf, ID_UNICODE_USER_FMT_TXT, &(prefixTxt)[0]);
135167 }
136- toggleDarkMode (_hSelf, themeInitialized ? dmfHandleChange : dmfInit);
137- themeInitialized = true ;
168+ toggleDarkMode (_hSelf, _themeInitialized ? dmfHandleChange : dmfInit);
169+ _themeInitialized = true ;
138170 result = TRUE ;
139171 break ;
140172 }
@@ -172,7 +204,7 @@ INT_PTR CALLBACK AboutDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
172204 bool hideOnReturn = true ;
173205 switch (wParam & 0xffff ) {
174206 case ID_UNICODE_CONFIG_LINK:
175- ::DialogBoxParamW (_hInst, MAKEINTRESOURCE(ID_UNICODE_FMT_CONFIG_DLG ), _hSelf,
207+ ::DialogBoxParamW (_hInst, MAKEINTRESOURCE(getLocalizedResource().modal ), _hSelf,
176208 (DLGPROC)modalDlgProc, reinterpret_cast<LPARAM>(this ));
177209 hideOnReturn = false ;
178210 break ;
@@ -285,4 +317,19 @@ INT_PTR CALLBACK linkCtrlWndProc(HWND hCtrl, UINT message, WPARAM wParam, LPARAM
285317 }
286318 return defWndProc (hCtrl, message, wParam, lParam);
287319}
320+ // --------------------------------------------------------------------------------------
321+ LocalizedResource getLocalizedResource () {
322+ LocalizedResource res{
323+ LocalizedPlugin::defaultLangId.c_str (),
324+ ID_ABOUT_HTML_TAG_DLG,
325+ ID_UNICODE_FMT_CONFIG_DLG,
326+ };
327+ for (size_t i = 0 ; i < nbDialogLocales; i++) {
328+ if (plugin.menuLocale () == dialogLocales[i].locale ) {
329+ res = dialogLocales[i];
330+ break ;
331+ }
332+ }
333+ return res;
334+ }
288335}
0 commit comments