+ add: provide Mono-Language IDs

This commit is contained in:
Rainer Kottenhoff 2021-03-31 18:36:32 +02:00
parent 10567daa26
commit fa80353c72
8 changed files with 158 additions and 28 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);
// ----------------------------------------------------

View File

@ -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"

View File

@ -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;

View File

@ -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;

View File

@ -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"