diff --git a/language/common_res.h b/language/common_res.h index e2777a540..296cce4fa 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -5,6 +5,67 @@ #ifndef _COMMON_RES_H_ #define _COMMON_RES_H_ +// undefined Sub-Language +#define SUBLANG_SPANISH_LATIN_AMERICA 0x16 + +#if defined(MUI_BASE_LNG_EN_US) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) +#elif defined(MUI_BASE_LNG_AF_ZA) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA) +#elif defined(MUI_BASE_LNG_BE_BY) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_BELARUSIAN, SUBLANG_BELARUSIAN_BELARUS) +#elif defined(MUI_BASE_LNG_DE_DE) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN) +#elif defined(MUI_BASE_LNG_EL_GR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_GREEK, SUBLANG_GREEK_GREECE) +#elif defined(MUI_BASE_LNG_EN_GB) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK) +#elif defined(MUI_BASE_LNG_ES_419) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_LATIN_AMERICA) +#elif defined(MUI_BASE_LNG_ES_ES) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN) +#elif defined(MUI_BASE_LNG_FR_FR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH) +#elif defined(MUI_BASE_LNG_HI_IN) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_HINDI, SUBLANG_HINDI_INDIA) +#elif defined(MUI_BASE_LNG_HU_HU) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_HUNGARIAN, SUBLANG_HUNGARIAN_HUNGARY) +#elif defined(MUI_BASE_LNG_ID_ID) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_INDONESIAN, SUBLANG_INDONESIAN_INDONESIA) +#elif defined(MUI_BASE_LNG_IT_IT) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN) +#elif defined(MUI_BASE_LNG_JA_JP) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN) +#elif defined(MUI_BASE_LNG_KO_KR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN) +#elif defined(MUI_BASE_LNG_NL_NL) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH) +#elif defined(MUI_BASE_LNG_PL_PL) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_POLISH, SUBLANG_POLISH_POLAND) +#elif defined(MUI_BASE_LNG_PT_BR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN) +#elif defined(MUI_BASE_LNG_PT_PT) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE) +#elif defined(MUI_BASE_LNG_RU_RU) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN_RUSSIA) +#elif defined(MUI_BASE_LNG_SK_SK) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SLOVAK, SUBLANG_SLOVAK_SLOVAKIA) +#elif defined(MUI_BASE_LNG_SV_SE) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH) +#elif defined(MUI_BASE_LNG_TR_TR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_TURKISH, SUBLANG_TURKISH_TURKEY) +#elif defined(MUI_BASE_LNG_VI_VN) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_VIETNAMESE, SUBLANG_VIETNAMESE_VIETNAM +#elif defined(MUI_BASE_LNG_ZH_CN) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED) +#elif defined(MUI_BASE_LNG_ZH_TW) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_CHINESE_TRADITIONAL, SUBLANG_CHINESE_TRADITIONAL) +#else +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) +#endif + +// ========================================== + #ifndef IDC_STATIC #define IDC_STATIC (-1) #endif @@ -14,9 +75,6 @@ #define IDC_STATIC5 (-5) #define IDC_STATIC6 (-6) -// undefined Sub-Language -#define SUBLANG_SPANISH_LATIN_AMERICA 0x16 - #define IDR_MUI_MAINMENU 10001 #define IDR_MUI_POPUPMENU 10002 diff --git a/minipath/language/common_res.h b/minipath/language/common_res.h index a8ea8b6e2..61cab1228 100644 --- a/minipath/language/common_res.h +++ b/minipath/language/common_res.h @@ -5,7 +5,65 @@ #define _COMMON_RES_H_ // undefined Sub-Language -#define SUBLANG_SPANISH_LATIN_AMERICA 0x16 +#define SUBLANG_SPANISH_LATIN_AMERICA 0x16 + +#if defined(MUI_BASE_LNG_EN_US) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) +#elif defined(MUI_BASE_LNG_AF_ZA) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA) +#elif defined(MUI_BASE_LNG_BE_BY) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_BELARUSIAN, SUBLANG_BELARUSIAN_BELARUS) +#elif defined(MUI_BASE_LNG_DE_DE) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN) +#elif defined(MUI_BASE_LNG_EL_GR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_GREEK, SUBLANG_GREEK_GREECE) +#elif defined(MUI_BASE_LNG_EN_GB) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK) +#elif defined(MUI_BASE_LNG_ES_419) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_LATIN_AMERICA) +#elif defined(MUI_BASE_LNG_ES_ES) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN) +#elif defined(MUI_BASE_LNG_FR_FR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH) +#elif defined(MUI_BASE_LNG_HI_IN) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_HINDI, SUBLANG_HINDI_INDIA) +#elif defined(MUI_BASE_LNG_HU_HU) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_HUNGARIAN, SUBLANG_HUNGARIAN_HUNGARY) +#elif defined(MUI_BASE_LNG_ID_ID) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_INDONESIAN, SUBLANG_INDONESIAN_INDONESIA) +#elif defined(MUI_BASE_LNG_IT_IT) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN) +#elif defined(MUI_BASE_LNG_JA_JP) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN) +#elif defined(MUI_BASE_LNG_KO_KR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN) +#elif defined(MUI_BASE_LNG_NL_NL) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH) +#elif defined(MUI_BASE_LNG_PL_PL) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_POLISH, SUBLANG_POLISH_POLAND) +#elif defined(MUI_BASE_LNG_PT_BR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN) +#elif defined(MUI_BASE_LNG_PT_PT) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE) +#elif defined(MUI_BASE_LNG_RU_RU) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN_RUSSIA) +#elif defined(MUI_BASE_LNG_SK_SK) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SLOVAK, SUBLANG_SLOVAK_SLOVAKIA) +#elif defined(MUI_BASE_LNG_SV_SE) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH) +#elif defined(MUI_BASE_LNG_TR_TR) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_TURKISH, SUBLANG_TURKISH_TURKEY) +#elif defined(MUI_BASE_LNG_VI_VN) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_VIETNAMESE, SUBLANG_VIETNAMESE_VIETNAM +#elif defined(MUI_BASE_LNG_ZH_CN) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED) +#elif defined(MUI_BASE_LNG_ZH_TW) +#define MUI_BASE_LNG_ID MAKELANGID(LANG_CHINESE_TRADITIONAL, SUBLANG_CHINESE_TRADITIONAL) +#else +#define MUI_BASE_LNG_ID MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) +#endif + +// ========================================== #define IDR_MAINWND 100 #define IDC_COMMANDLINE 100 diff --git a/minipath/src/Dialogs.c b/minipath/src/Dialogs.c index abc19c8f6..2f4e95a45 100644 --- a/minipath/src/Dialogs.c +++ b/minipath/src/Dialogs.c @@ -515,7 +515,6 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) switch(umsg) { case WM_INITDIALOG: { - WCHAR wch[256]; LOGFONT lf; if (g_hDlgIconSmall) { @@ -540,6 +539,7 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) hFontTitle = CreateFontIndirect(&lf); SendDlgItemMessage(hwnd,IDC_VERSION,WM_SETFONT,(WPARAM)hFontTitle,TRUE); + WCHAR wch[256]; if (GetDlgItem(hwnd,IDC_WEBPAGE) == NULL) { SetDlgItemText(hwnd,IDC_WEBPAGE2,VERSION_WEBPAGEDISPLAY); ShowWindow(GetDlgItem(hwnd,IDC_WEBPAGE2),SW_SHOWNORMAL); diff --git a/minipath/src/minipath.c b/minipath/src/minipath.c index 80426df28..14b1cb8e5 100644 --- a/minipath/src/minipath.c +++ b/minipath/src/minipath.c @@ -283,10 +283,8 @@ int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPWSTR lpCmdLine,int // Init OLE and Common Controls OleInitialize(NULL); - INITCOMMONCONTROLSEX icex; - ZeroMemory(&icex, sizeof(INITCOMMONCONTROLSEX)); - icex.dwSize = sizeof(INITCOMMONCONTROLSEX); - icex.dwICC = ICC_WIN95_CLASSES|ICC_COOL_CLASSES|ICC_BAR_CLASSES|ICC_USEREX_CLASSES; + INITCOMMONCONTROLSEX icex = { sizeof(INITCOMMONCONTROLSEX) }; + icex.dwICC = ICC_WIN95_CLASSES | ICC_COOL_CLASSES | ICC_BAR_CLASSES | ICC_USEREX_CLASSES | ICC_NATIVEFNTCTL_CLASS | ICC_STANDARD_CLASSES; InitCommonControlsEx(&icex); msgTaskbarCreated = RegisterWindowMessage(L"TaskbarCreated"); @@ -305,8 +303,6 @@ int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPWSTR lpCmdLine,int // ---------------------------------------------------- // MultiLingual // - BOOL bPrefLngNotAvail = FALSE; - int res = 0; if (lstrlenW(g_tchPrefLngLocName) > 0) { WCHAR wchLngLocalName[LOCALE_NAME_MAX_LENGTH]; @@ -345,19 +341,21 @@ int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPWSTR lpCmdLine,int } #ifdef HAVE_DYN_LOAD_LIBS_MUI_LNGS + bool bPrefLngNotAvail = false; g_hLngResContainer = _LoadLanguageResources(g_tchPrefLngLocName, g_iPrefLANGID); + if (!g_hLngResContainer) { // fallback en-US (1033) + g_hLngResContainer = g_hInstance; + g_iPrefLANGID = MUI_BASE_LNG_ID; + bPrefLngNotAvail = true; + } #else - g_hLngResContainer = NULL; + g_hLngResContainer = g_hInstance; + g_iPrefLANGID = MUI_BASE_LNG_ID; #endif - if (!g_hLngResContainer) { // fallback en-US (1033) - LANGID const langID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); - g_hLngResContainer = g_hInstance; - InitMUILanguage(langID); - if (g_iPrefLANGID != langID) { - bPrefLngNotAvail = TRUE; - } - } + SetThreadUILanguage(g_iPrefLANGID); + InitMUILanguage(g_iPrefLANGID); + // ---------------------------------------------------- diff --git a/minipath/src/resource.h b/minipath/src/resource.h index 5765be335..6a7f8e552 100644 --- a/minipath/src/resource.h +++ b/minipath/src/resource.h @@ -49,9 +49,13 @@ //#define MUI_BASE_LNG_VI_VN 1 //#define MUI_BASE_LNG_ZH_CN 1 //#define MUI_BASE_LNG_ZH_TW 1 + #endif + // ----------------------------------------------------- -// 3. Extent minipath.rc file accordingly (new language) +// 3. In case of a new language: +// Extent Notepad3.rc file accordingly +// and the language_id mapping in ../language/common_res.h // ----------------------------------------------------- #include "../language/common_res.h" diff --git a/src/MuiLanguage.c b/src/MuiLanguage.c index 66afdf148..840bca89a 100644 --- a/src/MuiLanguage.c +++ b/src/MuiLanguage.c @@ -281,12 +281,16 @@ void SetPreferredLanguage(LANGID iPreferredLanguageID) { int const langIdx = GetMUILanguageIndexByLangID(iPreferredLanguageID); if (langIdx < 0) { - Globals.iPrefLANGID = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); // internal - SetMuiLocaleAll(MUI_LanguageDLLs[0].szLocaleName); + Globals.iPrefLANGID = MUI_BASE_LNG_ID; // internal + int const idx = GetMUILanguageIndexByLangID(MUI_BASE_LNG_ID); + if (idx >= 0) { + SetMuiLocaleAll(MUI_LanguageDLLs[idx].szLocaleName); + } return; } if (iPreferredLanguageID != Globals.iPrefLANGID) { + Globals.iPrefLANGID = iPreferredLanguageID; // == MUI_LanguageDLLs[langIdx].LangId const WCHAR* const szLocaleName = MUI_LanguageDLLs[langIdx].szLocaleName; diff --git a/src/Notepad3.c b/src/Notepad3.c index f75833324..cd0e8f561 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -861,6 +861,10 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, // #if defined(HAVE_DYN_LOAD_LIBS_MUI_LNGS) SetPreferredLanguage(LoadLanguageResources()); + #else + Globals.iPrefLANGID = MUI_BASE_LNG_ID; + SetThreadUILanguage(MUI_BASE_LNG_ID); + InitMUILanguage(MUI_BASE_LNG_ID); #endif // ---------------------------------------------------- @@ -9470,6 +9474,7 @@ static void _SaveRedoSelection(int token) } if ((_UndoRedoActionMap(token, &pSel) >= 0) && (pSel != NULL)) { + int const selMode = ((numOfSel > 1) && !SciCall_IsSelectionRectangle()) ? NP3_SEL_MULTI : SciCall_GetSelectionMode(); pSel->selMode_redo = selMode; diff --git a/src/resource.h b/src/resource.h index 1e3d55c88..489691450 100644 --- a/src/resource.h +++ b/src/resource.h @@ -47,12 +47,14 @@ //#define MUI_BASE_LNG_VI_VN 1 //#define MUI_BASE_LNG_ZH_CN 1 //#define MUI_BASE_LNG_ZH_TW 1 -#endif -// ----------------------------------------------------- -// 3. Extent Notepad3.rc file accordingly (new language) -// ----------------------------------------------------- -// ========================================== +#endif + +// ----------------------------------------------------- +// 3. In case of a new language: +// Extent Notepad3.rc file accordingly +// and the language_id mapping in ../language/common_res.h +// ----------------------------------------------------- #ifndef IDC_STATIC #define IDC_STATIC (-1) @@ -110,6 +112,7 @@ #define IDS_WARN_PREF_LNG_NOT_AVAIL 4000 +// ========================================== #include "../language/common_res.h"