Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ help/console.chm

*.aps
*.user

# ignore resource.h in localization projects
# it's supposed to be copied from the main folder
console_ru/resource.h
135 changes: 135 additions & 0 deletions Console/Console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,139 @@ int Run(LPTSTR lpstrCmdLine = NULL, int nCmdShow = SW_SHOWDEFAULT)
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////

#define FALLBACK_LANGUAGE (wchar_t *)-1
// created from http://www.loc.gov/standards/iso639-2/php/code_list.php
struct {
LANGID language;
wchar_t *iso639;
} languages[] = {
{ LANG_AFRIKAANS, L"af" },
{ LANG_ALBANIAN, L"sq" },
{ LANG_ARABIC, L"ar" },
{ LANG_ARMENIAN, L"hy" },
{ LANG_ASSAMESE, L"as" },
{ LANG_AZERI, L"az" },
{ LANG_BASQUE, L"eu" },
{ LANG_BELARUSIAN, L"be" },
{ LANG_BENGALI, L"bn" },
{ LANG_BULGARIAN, L"bg" },
{ LANG_CATALAN, L"ca" },
{ LANG_CHINESE, L"zh" },
{ LANG_CROATIAN, L"hr" },
{ LANG_CZECH, L"cs" },
{ LANG_DANISH, L"da" },
{ LANG_DIVEHI, L"dv" },
{ LANG_DUTCH, L"nl" },
{ LANG_ENGLISH, FALLBACK_LANGUAGE },
{ LANG_ESTONIAN, L"et" },
{ LANG_FAEROESE, L"fo" },
{ LANG_FARSI, L"fa" },
{ LANG_FINNISH, L"fi" },
{ LANG_FRENCH, L"fr" },
{ LANG_GALICIAN, L"gl" },
{ LANG_GEORGIAN, L"ka" },
{ LANG_GERMAN, L"de" },
{ LANG_GREEK, L"el" },
{ LANG_GUJARATI, L"gu" },
{ LANG_HEBREW, L"he" },
{ LANG_HINDI, L"hi" },
{ LANG_HUNGARIAN, L"hu" },
{ LANG_ICELANDIC, L"is" },
{ LANG_INDONESIAN, L"id" },
{ LANG_ITALIAN, L"it" },
{ LANG_JAPANESE, L"jp" },
{ LANG_KANNADA, L"kn" },
{ LANG_KASHMIRI, L"ks" },
{ LANG_KAZAK, L"kk" },
{ LANG_KONKANI, L"kok" },
{ LANG_KOREAN, L"ko" },
{ LANG_KYRGYZ, L"ky" },
{ LANG_LATVIAN, L"lv" },
{ LANG_LITHUANIAN, L"lt" },
{ LANG_MACEDONIAN, L"mk" },
{ LANG_MALAY, L"ms" },
{ LANG_MALAYALAM, L"ml" },
{ LANG_MANIPURI, L"mni" },
{ LANG_MARATHI, L"mr" },
{ LANG_MONGOLIAN, L"mn" },
{ LANG_NEPALI, L"ne" },
{ LANG_NORWEGIAN, L"nn" },
{ LANG_ORIYA, L"or" },
{ LANG_POLISH, L"pl" },
{ LANG_PORTUGUESE, L"pt" },
{ LANG_PUNJABI, L"pa" },
{ LANG_ROMANIAN, L"ro" },
{ LANG_RUSSIAN, L"ru" },
{ LANG_SANSKRIT, L"sa" },
{ LANG_SERBIAN, L"sr" },
{ LANG_SINDHI, L"sd" },
{ LANG_SLOVAK, L"sk" },
{ LANG_SLOVENIAN, L"sl" },
{ LANG_SPANISH, L"es" },
{ LANG_SWAHILI, L"sw" },
{ LANG_SWEDISH, L"sv" },
{ LANG_SYRIAC, L"syr" },
{ LANG_TAMIL, L"ta" },
{ LANG_TATAR, L"tt" },
{ LANG_TELUGU, L"te" },
{ LANG_THAI, L"th" },
{ LANG_TURKISH, L"tr" },
{ LANG_UKRAINIAN, L"uk" },
{ LANG_URDU, L"ur" },
{ LANG_UZBEK, L"uz" },
{ LANG_VIETNAMESE, L"vi" }
};

HMODULE FindLocalizedResources(const LANGID language)
{
for (int i = 0; i < _countof(languages); ++i) {
if (language == languages[i].language) {
if (FALLBACK_LANGUAGE == languages[i].iso639)
return (HMODULE)-1;

wstring dll (L"console_");
dll += languages[i].iso639;
return ::LoadLibrary(dll.c_str());
}
}

return 0;
}

void LoadLocalizedResources()
{
wstring strLibrary (L"console_");
HMODULE hResources = NULL;
size_t sizeLang = 0;
shared_array<wchar_t> szLangEnv(new wchar_t[32768]);

// if we can securely get LANG, and its size greater than 2 chars (e.g. "en\0")
if (! _wgetenv_s(&sizeLang, szLangEnv.get(), 32768, L"LANG") && sizeLang > 2) {
if (0 == _wcsnicmp(szLangEnv.get(), L"en", 2))
return; // default language
// try to use the whole variable
hResources = ::LoadLibrary(wstring (strLibrary + szLangEnv.get()).c_str());
// if not supported, try to use just the language
if (NULL == hResources)
hResources = ::LoadLibrary(wstring(strLibrary + wstring (szLangEnv.get()).substr(0, 2)).c_str());
}

if (NULL == hResources) {
hResources = FindLocalizedResources(PRIMARYLANGID(::GetUserDefaultUILanguage()));
}
if (NULL == hResources) {
hResources = FindLocalizedResources(PRIMARYLANGID(::GetSystemDefaultUILanguage()));
}

if (NULL != hResources && (HMODULE)-1 != hResources)
_Module.SetResourceInstance(hResources);
}

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
Expand All @@ -230,6 +363,8 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lp
hRes = _Module.Init(NULL, hInstance);
ATLASSERT(SUCCEEDED(hRes));

LoadLocalizedResources();

int nRet = Run(lpstrCmdLine, nCmdShow);

_Module.Term();
Expand Down
194 changes: 126 additions & 68 deletions Console/Console.rc
Original file line number Diff line number Diff line change
Expand Up @@ -12,73 +12,6 @@
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Croatian resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HRV)
#ifdef _WIN32
LANGUAGE LANG_CROATIAN, SUBLANG_DEFAULT
#pragma code_page(1250)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

3 TEXTINCLUDE
BEGIN
"\r\0"
END

#endif // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_CREDENTIALS DIALOGEX 0, 0, 207, 79
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Enter username and password"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "&Password:",IDC_STATIC,7,31,34,8
EDITTEXT IDC_PASSWORD,54,28,146,14,ES_PASSWORD | ES_AUTOHSCROLL
DEFPUSHBUTTON "OK",IDOK,93,58,50,14
PUSHBUTTON "Cancel",IDCANCEL,150,58,50,14
LTEXT "&Username:",IDC_STATIC,7,16,36,8
EDITTEXT IDC_USER,54,13,146,14,ES_AUTOHSCROLL
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_CREDENTIALS, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 200
VERTGUIDE, 54
TOPMARGIN, 7
BOTTOMMARGIN, 72
HORZGUIDE, 20
HORZGUIDE, 35
END
END
#endif // APSTUDIO_INVOKED

#endif // Croatian resources
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

Expand Down Expand Up @@ -472,6 +405,18 @@ BEGIN
PUSHBUTTON "&Clear",IDC_BTN_CLEAR,168,208,42,14
END

IDD_CREDENTIALS DIALOGEX 0, 0, 207, 79
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Enter username and password"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "&Password:",IDC_STATIC,7,31,34,8
EDITTEXT IDC_PASSWORD,54,28,146,14,ES_PASSWORD | ES_AUTOHSCROLL
DEFPUSHBUTTON "OK",IDOK,93,58,50,14
PUSHBUTTON "Cancel",IDCANCEL,150,58,50,14
LTEXT "&Username:",IDC_STATIC,7,16,36,8
EDITTEXT IDC_USER,54,13,146,14,ES_AUTOHSCROLL
END

/////////////////////////////////////////////////////////////////////////////
//
Expand Down Expand Up @@ -845,6 +790,20 @@ STRINGTABLE
BEGIN
IDR_MAINFRAME "Console"
IDS_TAB_CREATE_FAILED "Failed to open %s tab!\nThe process %s could still be running (use the Task Manager to find it and end it)"
IDS_SETTINGS_CONSOLE "Console"
IDS_SETTINGS_APPEARANCE "Appearance"
IDS_SETTINGS_MORE "More..."
IDS_SETTINGS_BEHAVIOR "Behavior"
IDS_SETTINGS_HOTKEYS "Hotkeys"
IDS_SETTINGS_MOUSE "Mouse"
IDS_SETTINGS_TABS "Tabs"
IDS_COMMAND_SETTINGS_DIALOG "Settings dialog"
IDS_COMMAND_HELP "Help"
IDS_COMMAND_EXIT_CONSOLE "Exit Console"
IDS_COMMAND_NEWTAB1 "New Tab 1"
IDS_COMMAND_NEWTAB2 "New Tab 2"
IDS_COMMAND_NEWTAB3 "New Tab 3"
IDS_COMMAND_NEWTAB4 "New Tab 4"
END

STRINGTABLE
Expand Down Expand Up @@ -952,6 +911,104 @@ STRINGTABLE
BEGIN
IDS_ERR_CANT_START_SHELL "Unable to start a %1%!"
IDS_ERR_CANT_START_SHELL_AS_USER "Unable to start a %1% as user %2%!"
IDS_COMMAND_NEWTAB5 "New Tab 5"
IDS_COMMAND_NEWTAB6 "New Tab 6"
IDS_COMMAND_NEWTAB7 "New Tab 7"
IDS_COMMAND_NEWTAB8 "New Tab 8"
IDS_COMMAND_NEWTAB9 "New Tab 9"
IDS_COMMAND_NEWTAB10 "New Tab 10"
IDS_COMMAND_TAB1 "Switch to tab 1"
IDS_COMMAND_TAB2 "Switch to tab 2"
IDS_COMMAND_TAB3 "Switch to tab 3"
IDS_COMMAND_TAB4 "Switch to tab 4"
IDS_COMMAND_TAB5 "Switch to tab 5"
IDS_COMMAND_TAB6 "Switch to tab 6"
IDS_COMMAND_TAB7 "Switch to tab 7"
IDS_COMMAND_TAB8 "Switch to tab 8"
IDS_COMMAND_TAB9 "Switch to tab 9"
IDS_COMMAND_TAB10 "Switch to tab 10"
END

STRINGTABLE
BEGIN
IDS_COMMAND_NEXT_TAB "Next tab"
IDS_COMMAND_PREVIOUS_TAB "Previous tab"
IDS_COMMAND_CLOSE_TAB "Close tab"
IDS_COMMAND_RENAME_TAB "Rename tab"
IDS_COMMAND_COPY_SELECTION "Copy selection"
IDS_COMMAND_CLEAR_SELECTION "Clear selection"
IDS_COMMAND_PASTE "Paste"
IDS_COMMAND_SCROLL_UP "Scroll buffer row up"
IDS_COMMAND_SCROLL_DOWN "Scroll buffer row down"
IDS_COMMAND_SCROLL_UP_PAGE "Scroll buffer page up"
IDS_COMMAND_SCROLL_DOWN_PAGE "Scroll buffer page down"
IDS_COMMAND_SCROLL_LEFT "Scroll buffer column left"
IDS_COMMAND_SCROLL_RIGHT "Scroll buffer column right"
IDS_COMMAND_SCROLL_LEFT_PAGE "Scroll buffer page left"
IDS_COMMAND_SCROLL_RIGHT_PAGE "Scroll buffer page right"
IDS_COMMAND_DUMP_BUFFER "Dump screen buffer"
END

STRINGTABLE
BEGIN
IDS_COMMAND_MOUSE_COPY "Copy/clear selection"
IDS_COMMAND_MOUSE_SELECT "Select text"
IDS_COMMAND_MOUSE_PASTE "Paste text"
IDS_COMMAND_MOUSE_DRAG "Drag window"
IDS_COMMAND_MOUSE_MENU "Context menu"
IDS_SETTINGS_COLUMN_COMMAND "Command"
IDS_SETTINGS_COLUMN_HOTKEY "Hotkey"
IDS_SETTINGS_COLUMN_MOUSEACTION "Mouse action"
IDS_SETTINGS_COLUMN_MAINTAB "Main"
IDS_SETTINGS_COLUMN_BACKGROUNDTAB "Background"
IDS_SETTINGS_COLUMN_TABNAME "Tab name"
IDS_TABBINGFRAMEWORK_TIPS_SCROLLRIGHT "Scroll Right"
IDS_TABBINGFRAMEWORK_TIPS_SCROLLLEFT "Scroll Left"
IDS_TABBINGFRAMEWORK_TIPS_CLOSE "Close"
IDS_COMMAND_ACTIVATE_CONSOLE "Activate Console (global)"
IDS_COMMAND_STOP_SCROLLING "Stop scrolling"
END

STRINGTABLE
BEGIN
IDS_COMBO_SMOOTHING "Default"
IDS_COMBO_SMOOTHING_NONE "None"
IDS_COMBO_SMOOTHING_CLEARTYPE "ClearType"
IDS_COMBO_DOCKING "None"
END

STRINGTABLE
BEGIN
IDS_COMBO_DOCKING_TOPLEFT "Top Left"
IDS_COMBO_DOCKING_TOPRIGHT "Top Right"
IDS_COMBO_DOCKING_BOTTOMLEFT "Bottom Left"
IDS_COMBO_DOCKING_BOTTOMRIGHT "Bottom Right"
IDS_COMBO_ZORDER "Regular"
IDS_COMBO_ZORDER_TOP "Always on top"
IDS_COMBO_ZORDER_BOTTOM "Always on bottom"
IDS_COMBO_ZORDER_PINNED "Pinned to desktop"
IDS_COMBO_MOUSEBUTTONS "None"
IDS_COMBO_MOUSEBUTTONS_LEFT "Left"
IDS_COMBO_MOUSEBUTTONS_RIGHT "Right"
IDS_COMBO_MOUSEBUTTONS_MIDDLE "Middle"
IDS_COMBO_MOUSEBUTTONS_Fourth "Fourth"
IDS_COMBO_MOUSEBUTTONS_FIFTH "Fifth"
IDS_COMBO_CURSOR "XTerm"
IDS_COMBO_CURSOR_BLOCK "Block"
END

STRINGTABLE
BEGIN
IDS_COMBO_CURSOR_NOBLINKBLOCK "Nonblinking block"
IDS_COMBO_CURSOR_PULSE "Pulse"
IDS_COMBO_CURSOR_BAR "Bar"
IDS_COMBO_CURSOR_NOBLINKHORZ "Nonblinking horz. line"
IDS_COMBO_CURSOR_HORZLINE "Horizontal line"
IDS_COMBO_CURSOR_VERTLINE "Vertical line"
IDS_COMBO_CURSOR_RECT "Rectangle"
IDS_COMBO_CURSOR_NOBLINKRECT "Nonblinking rect"
IDS_COMBO_CURSOR_PULSERECT "Pulsating rect"
IDS_COMBO_CURSOR_FADEBLOCK "Fading block"
END

STRINGTABLE
Expand All @@ -976,7 +1033,8 @@ END
//
// Generated from the TEXTINCLUDE 3 resource.
//



/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

5 changes: 5 additions & 0 deletions Console/DlgSettingsAppearance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,13 @@ LRESULT DlgSettingsAppearance::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LP
ExecuteDlgInit(IDD);

m_comboFontSmoothing.Attach(GetDlgItem(IDC_COMBO_SMOOTHING));
Helpers::LocalizeComboBox(m_comboFontSmoothing, IDS_COMBO_SMOOTHING);

m_comboDocking.Attach(GetDlgItem(IDC_COMBO_DOCKING));
Helpers::LocalizeComboBox(m_comboDocking, IDS_COMBO_DOCKING);

m_comboZOrder.Attach(GetDlgItem(IDC_COMBO_ZORDER));
Helpers::LocalizeComboBox(m_comboZOrder, IDS_COMBO_ZORDER);

m_windowSettings.Load(m_pOptionsRoot);
m_fontSettings.Load(m_pOptionsRoot);
Expand Down
Loading