diff --git a/grepWinNP3/sktoolslib_mod/DPIAware.h b/grepWinNP3/sktoolslib_mod/DPIAware.h index 62bec8a27..e9dcfcf62 100644 --- a/grepWinNP3/sktoolslib_mod/DPIAware.h +++ b/grepWinNP3/sktoolslib_mod/DPIAware.h @@ -1,4 +1,4 @@ -// sktoolslib - common files for SK tools +// sktoolslib - common files for SK tools // Copyright (C) 2018, 2020 - Stefan Kueng @@ -48,10 +48,10 @@ public: return m_dpi; } // Convert between raw pixels and relative pixels. - int Scale(HWND hWnd, int x) { return MulDiv(x, GetDPI(hWnd), 96); } - float ScaleFactor(HWND hWnd) { return GetDPI(hWnd) / 96.0f; } + int Scale(HWND hWnd, int x) { return MulDiv(x, GetDPI(hWnd), USER_DEFAULT_SCREEN_DPI); } + float ScaleFactor(HWND hWnd) { return (float)GetDPI(hWnd) / (float)USER_DEFAULT_SCREEN_DPI; } float ScaleFactorSystemToWindow(HWND hWnd) { return (float)GetDPI(hWnd) / (float)m_dpi; } - int Unscale(HWND hWnd, int x) { return MulDiv(x, 96, GetDPI(hWnd)); } + int Unscale(HWND hWnd, int x) { return MulDiv(x, USER_DEFAULT_SCREEN_DPI, GetDPI(hWnd)); } // Determine the screen dimensions in relative pixels. int ScaledScreenWidth() { return _ScaledSystemMetric(SM_CXSCREEN); } diff --git a/grepWinNP3/src/AboutDlg.cpp b/grepWinNP3/src/AboutDlg.cpp index 5e9af7826..e9a516f11 100644 --- a/grepWinNP3/src/AboutDlg.cpp +++ b/grepWinNP3/src/AboutDlg.cpp @@ -21,8 +21,11 @@ #include "AboutDlg.h" #include "version.h" #include "Theme.h" +#include "DPIAware.h" #include +extern HICON g_hDlgIcon128; + CAboutDlg::CAboutDlg(HWND hParent) : m_hParent(hParent) , m_themeCallbackId(0) @@ -33,6 +36,29 @@ CAboutDlg::~CAboutDlg(void) { } + +static LRESULT DrawGrepWinIcon(HWND hWnd) +{ + if (g_hDlgIcon128) + { + PAINTSTRUCT ps; + HDC const hDC = GetWindowDC(hWnd); + if (hDC) + { + BeginPaint(hWnd, &ps); + int const dpiSized = CDPIAware::Instance().Scale(hWnd, 64); + int const dpiLeft = CDPIAware::Instance().Scale(hWnd, 22); + int const dpiTop = CDPIAware::Instance().Scale(hWnd, 44); + HBRUSH const hBrush = (HBRUSH)GetSysColorBrush(COLOR_3DFACE); + DrawIconEx(hDC, dpiLeft, dpiTop, g_hDlgIcon128, dpiSized, dpiSized, 0, hBrush, DI_NORMAL); + ReleaseDC(hWnd, hDC); + EndPaint(hWnd, &ps); + } + } + return FALSE; +} + + LRESULT CAboutDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); @@ -54,6 +80,7 @@ LRESULT CAboutDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam SetDlgItemText(*this, IDC_DATE, TEXT(GREPWIN_VERDATE)); } return TRUE; + case WM_COMMAND: return DoCommand(LOWORD(wParam), HIWORD(wParam)); case WM_CLOSE: @@ -61,6 +88,10 @@ LRESULT CAboutDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam break; default: return FALSE; + + case WM_PAINT: + return DrawGrepWinIcon(*this); + } return FALSE; } diff --git a/grepWinNP3/src/Resources/grepWin.rc b/grepWinNP3/src/Resources/grepWin.rc index 9d9f09a96..d61ae430f 100644 --- a/grepWinNP3/src/Resources/grepWin.rc +++ b/grepWinNP3/src/Resources/grepWin.rc @@ -32,6 +32,16 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL // remains consistent on all systems. IDI_GREPWIN ICON "grepWinNP3.ico" +#endif // Neutral resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Neutral resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + ///////////////////////////////////////////////////////////////////////////// // @@ -146,17 +156,17 @@ BEGIN LTEXT "Double-Click to select a preset",IDC_INFOLABEL,7,7,226,8 END -IDD_ABOUT DIALOGEX 0, 0, 263, 86 +IDD_ABOUT DIALOGEX 0, 0, 263, 98 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About grepWinNP3" FONT 9, "Segoe UI", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,206,65,50,14 - ICON IDI_GREPWIN,IDC_STATIC,17,18,20,20,SS_CENTERIMAGE + DEFPUSHBUTTON "OK",IDOK,206,73,50,14 + //~ICON IDI_GREPWIN,IDC_STATIC,7,7,24,24,SS_CENTERIMAGE LTEXT "",IDC_VERSIONINFO,50,18,206,8 LTEXT "",IDC_DATE,50,30,206,8 - LTEXT "Visit Stefan K\xFCng's website",IDC_WEBLINK,50,65,150,8 - CTEXT "Notepad3's grepWin(NP3)-mod of Stefan K\xFCng's great tool!",IDC_NP3_DISCLAIMER,7,47,249,8 + LTEXT "Visit Stefan K\xFCng's website",IDC_WEBLINK,50,73,150,8 + CTEXT "Notepad3's grepWin(NP3)-mod of \nStefan K\xFCng's great tool!",IDC_NP3_DISCLAIMER,7,47,249,18 END IDD_MULTILINEEDIT DIALOGEX 0, 0, 317, 135 @@ -259,7 +269,7 @@ BEGIN RIGHTMARGIN, 256 VERTGUIDE, 50 TOPMARGIN, 7 - BOTTOMMARGIN, 79 + BOTTOMMARGIN, 91 END IDD_MULTILINEEDIT, DIALOG @@ -317,36 +327,6 @@ END IDR_INFODLG HTML "infodlg.htm" -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#include ""windows.h""\r\n" - "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" - "#ifndef APSTUDIO_INVOKED\r\n" - "#include ""grepWin.rc2""\r\n" - "#endif\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - ///////////////////////////////////////////////////////////////////////////// // // String Table @@ -443,6 +423,45 @@ END ///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// +// Neutral resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#ifndef APSTUDIO_INVOKED\r\n" + "#include ""grepWin.rc2""\r\n" + "#endif\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Neutral resources +///////////////////////////////////////////////////////////////////////////// + + #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// diff --git a/grepWinNP3/src/SearchDlg.cpp b/grepWinNP3/src/SearchDlg.cpp index aa91b8998..4149773c1 100644 --- a/grepWinNP3/src/SearchDlg.cpp +++ b/grepWinNP3/src/SearchDlg.cpp @@ -259,14 +259,17 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara else m_searchpath = std::wstring(m_regSearchPath); } - // expand a possible 'short' path - DWORD ret = 0; - ret = ::GetLongPathName(m_searchpath.c_str(), nullptr, 0); - if (ret) + else { - std::unique_ptr pathbuf(new TCHAR[ret+2]); - ret = ::GetLongPathName(m_searchpath.c_str(), pathbuf.get(), ret+1); - m_searchpath = std::wstring(pathbuf.get(), ret); + // expand a possible 'short' path + DWORD ret = 0; + ret = ::GetLongPathName(m_searchpath.c_str(), NULL, 0); + if (ret) + { + std::unique_ptr pathbuf(new TCHAR[ret + 2]); + ret = ::GetLongPathName(m_searchpath.c_str(), pathbuf.get(), ret + 1); + m_searchpath = std::wstring(pathbuf.get(), ret); + } } if (m_patternregex.empty()) @@ -633,10 +636,15 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara OnOutOfScope(DestroyMenu(hSplitMenu)); if (pDropDown->hdr.hwndFrom == GetDlgItem(*this, IDOK)) { + auto buf = GetDlgItemText(IDC_SEARCHPATH); + bool bIsDir = !!PathIsDirectory(buf.get()); + if ((!bIsDir) && _tcschr(buf.get(), '|')) + bIsDir = true; // assume directories in case of multiple paths + auto sInverseSearch = TranslatedString(hResource, IDS_INVERSESEARCH); auto sSearchInFoundFiles = TranslatedString(hResource, IDS_SEARCHINFOUNDFILES); auto sCaptureSearch = TranslatedString(hResource, IDS_CAPTURESEARCH); - AppendMenu(hSplitMenu, MF_STRING, IDC_INVERSESEARCH, sInverseSearch.c_str()); + AppendMenu(hSplitMenu, bIsDir ? MF_STRING : MF_STRING | MF_DISABLED, IDC_INVERSESEARCH, sInverseSearch.c_str()); AppendMenu(hSplitMenu, m_items.empty() ? MF_STRING | MF_DISABLED : MF_STRING, IDC_SEARCHINFOUNDFILES, sSearchInFoundFiles.c_str()); AppendMenu(hSplitMenu, GetDlgItemTextLength(IDC_REPLACETEXT) ? MF_STRING : MF_STRING | MF_DISABLED, IDC_CAPTURESEARCH, sCaptureSearch.c_str()); } diff --git a/grepWinNP3/src/grepWin.cpp b/grepWinNP3/src/grepWin.cpp index 1c552996d..70b42504e 100644 --- a/grepWinNP3/src/grepWin.cpp +++ b/grepWinNP3/src/grepWin.cpp @@ -29,10 +29,13 @@ #pragma warning(push) #pragma warning(disable : 4458) // declaration of 'xxx' hides class member #include +#include "WinUser.h" #pragma warning(pop) // Global Variables: HINSTANCE g_hInst; // current instance +HICON g_hDlgIcon128; + bool bPortable = false; CSimpleIni g_iniFile; HANDLE hInitProtection = nullptr; @@ -161,12 +164,16 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, g_hInst = hInstance; ::OleInitialize(nullptr); ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + // we need some of the common controls INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_LINK_CLASS | ICC_LISTVIEW_CLASSES | ICC_PAGESCROLLER_CLASS | ICC_PROGRESS_CLASS | ICC_STANDARD_CLASSES | ICC_TAB_CLASSES | ICC_TREEVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_USEREX_CLASSES | ICC_WIN95_CLASSES; InitCommonControlsEx(&icex); + g_hDlgIcon128 = NULL; + LoadIconWithScaleDown(hInstance, MAKEINTRESOURCE(IDI_GREPWIN), 128, 128, &g_hDlgIcon128); + HMODULE hRichEdt = LoadLibrary(L"Riched20.dll"); CCmdLineParser parser(lpCmdLine); diff --git a/grepWinNP3/src/last/version.h b/grepWinNP3/src/last/version.h index 0b1090838..6e6454dd7 100644 --- a/grepWinNP3/src/last/version.h +++ b/grepWinNP3/src/last/version.h @@ -6,13 +6,13 @@ //#pragma message(__LOC__"Run the NAnt script to get proper version info") -#define FILEVER 2, 1, 3, 18 -#define PRODUCTVER 2, 1, 3, 18 -#define STRFILEVER "2.1.3.18\0" -#define STRPRODUCTVER "2.1.3.18\0" +#define FILEVER 2, 1, 3, 19 +#define PRODUCTVER 2, 1, 3, 19 +#define STRFILEVER "2.1.3.19\0" +#define STRPRODUCTVER "2.1.3.19\0" #define GREPWIN_VERMAJOR 2 #define GREPWIN_VERMINOR 1 #define GREPWIN_VERMICRO 3 -#define GREPWIN_VERBUILD 18 -#define GREPWIN_VERDATE "2020-07-14" +#define GREPWIN_VERBUILD 19 +#define GREPWIN_VERDATE "2020-07-21" diff --git a/grepWinNP3/translationsNP3/Afrikaans (Suid-Afrika) [af-ZA].lang b/grepWinNP3/translationsNP3/Afrikaans (Suid-Afrika) [af-ZA].lang index c23e7cb9b..6c3802e8f 100644 --- a/grepWinNP3/translationsNP3/Afrikaans (Suid-Afrika) [af-ZA].lang +++ b/grepWinNP3/translationsNP3/Afrikaans (Suid-Afrika) [af-ZA].lang @@ -587,8 +587,8 @@ msgid "Reset" msgstr "Reset" #. Resource IDs: (3001) -msgid "Notepad3 se grepWin(NP3)-mod van Stefan Küng se wonderlike tool!" -msgstr "" +msgid "Notepad3's grepWin(NP3)-mod of Stefan Küng's great tool!" +msgstr "Notepad3 se grepWin(NP3)-mod van Stefan Küng se wonderlike tool!" #. Resource IDs: (3004) msgid "Max # of concurrent worker" diff --git a/grepWinNP3/translationsNP3/Беларуская (Беларусь) [be-BY].lang b/grepWinNP3/translationsNP3/Беларуская (Беларусь) [be-BY].lang index 5e1abdd87..2675c55d0 100644 --- a/grepWinNP3/translationsNP3/Беларуская (Беларусь) [be-BY].lang +++ b/grepWinNP3/translationsNP3/Беларуская (Беларусь) [be-BY].lang @@ -588,7 +588,7 @@ msgstr "Скінуць" #. Resource IDs: (3001) msgid "Notepad3's grepWin(NP3)-mod of Stefan Küng's great tool!" -msgstr "" +msgstr "grepWin(NP3) для Notepad3 на аснове выдатнага інструмента ад Stefan Küng!" #. Resource IDs: (3004) msgid "Max # of concurrent worker" diff --git a/grepWinNP3/translationsNP3/Русский (Pоссия) [ru-RU].lang b/grepWinNP3/translationsNP3/Русский (Pоссия) [ru-RU].lang index 5f3651eea..b2c8484ac 100644 --- a/grepWinNP3/translationsNP3/Русский (Pоссия) [ru-RU].lang +++ b/grepWinNP3/translationsNP3/Русский (Pоссия) [ru-RU].lang @@ -588,7 +588,7 @@ msgstr "Сброс" #. Resource IDs: (3001) msgid "Notepad3's grepWin(NP3)-mod of Stefan Küng's great tool!" -msgstr "" +msgstr "grepWin(NP3) для Notepad3 на основе отличного инструмента от Stefan Küng!" #. Resource IDs: (3004) msgid "Max # of concurrent worker" diff --git a/language/np3_af_za/dialogs_af_za.rc b/language/np3_af_za/dialogs_af_za.rc index c75bc0afb..aba460354 100644 --- a/language/np3_af_za/dialogs_af_za.rc +++ b/language/np3_af_za/dialogs_af_za.rc @@ -94,7 +94,7 @@ BEGIN CONTROL "Outo Esc Ctrl C&hr",IDC_FINDAUTOESCCTRLCHR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,73,85,10 CONTROL "Gereelde &uitdrukkingssoektog",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,106,10 CONTROL "&Dot pas alles by",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,65,10 - CONTROL "&Overlapping search",IDC_FIND_OVERLAPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,37,75,10 + CONTROL "&Oorvleuelende soektog",IDC_FIND_OVERLAPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,37,75,10 CONTROL "&Moenie omdraai nie",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,49,75,10 CONTROL "Maak toe &na vind",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,61,65,10 CONTROL "Merk &gebeurtenisse",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,85,73,10 @@ -129,7 +129,7 @@ BEGIN CONTROL "Outo Esc Ctrl C&hr",IDC_FINDAUTOESCCTRLCHR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,102,85,10 CONTROL "Gereelde &uitdrukkingssoektog",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,114,110,10 CONTROL "&Dot pas alles by",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,125,65,10 - CONTROL "&Overlapping search",IDC_FIND_OVERLAPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,66,75,10 + CONTROL "&Oorvleuelende soektog",IDC_FIND_OVERLAPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,66,75,10 CONTROL "&Moenie omdraai nie",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,78,75,10 CONTROL "Maak toe &na vervang",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,90,77,10 CONTROL "Merk &gebeurtenisse",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,114,73,10 @@ -372,7 +372,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Lang Lyne" FONT 9, "Segoe UI", 0, 0, 0x0 BEGIN - LTEXT "&Multi edge-line pos:",IDC_STATIC,7,10,80,8 + LTEXT "&Veelrand-lyn pos:",IDC_STATIC,7,10,80,8 EDITTEXT IDC_MULTIEDGELINE,92,7,180,14,ES_AUTOHSCROLL CONTROL "&Wys randlyn.",IDC_SHOWEDGELINE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,27,140,10 CONTROL "&Verander agtergrondkleur.",IDC_BACKGRDCOLOR,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,7,38,140,10 diff --git a/language/np3_af_za/menu_af_za.rc b/language/np3_af_za/menu_af_za.rc index 5f78ee293..060d9f308 100644 --- a/language/np3_af_za/menu_af_za.rc +++ b/language/np3_af_za/menu_af_za.rc @@ -77,7 +77,7 @@ BEGIN END POPUP "&Begin" BEGIN - MENUITEM "&Search in Files\tCtrl+Alt+F", IDM_GREP_WIN_SEARCH + MENUITEM "&Soek in lêers\tCtrl+Alt+F", IDM_GREP_WIN_SEARCH MENUITEM SEPARATOR MENUITEM "&Nuwe Venster\tAlt+N", IDM_FILE_NEWWINDOW MENUITEM "Lê&er Venster\tAlt+Shift+N", IDM_FILE_NEWWINDOW2 @@ -309,7 +309,7 @@ BEGIN MENUITEM "Vervang Volge&nde\tF4", IDM_EDIT_REPLACENEXT MENUITEM "&Gaan na...\tCtrl+G", IDM_EDIT_GOTOLINE MENUITEM SEPARATOR - MENUITEM "&Search in Files\tCtrl+Alt+F", IDM_GREP_WIN_SEARCH + MENUITEM "&Soek in lêers\tCtrl+Alt+F", IDM_GREP_WIN_SEARCH END END POPUP "&Aansig" diff --git a/language/np3_af_za/strings_af_za.rc b/language/np3_af_za/strings_af_za.rc index 05596aa13..f1feb2a26 100644 --- a/language/np3_af_za/strings_af_za.rc +++ b/language/np3_af_za/strings_af_za.rc @@ -92,7 +92,7 @@ BEGIN IDT_VIEW_TOGGLE_VIEW "Gefokusde Aansig" IDT_VIEW_CHASING_DOCTAIL "Moniteringslogboek" IDT_VIEW_PIN_ON_TOP "Altyd Bo-op" - IDT_GREP_WIN_TOOL "Search in Files" + IDT_GREP_WIN_TOOL "Soek in lêers" END STRINGTABLE @@ -127,9 +127,9 @@ STRINGTABLE BEGIN IDS_MUI_ERR_LOADFILE "Kon nie ""%s"" laai nie." IDS_MUI_ERR_SAVEFILE "Kon nie ""%s"" stoor nie." - IDS_MUI_ERR_DLG_FORMAT "Error '%s', cause:\n%s(ID:%d)\n" + IDS_MUI_ERR_DLG_FORMAT "Fout '%s', oorsaak:\n%s(ID:%d)\n" IDS_MUI_ERR_BROWSE "Geen lêerblaaier plugin is gevind nie.\nDie MiniPath-lêerblaaier plugin kan afgelaai word vanaf https://www.rizonesoft.com." - IDS_MUI_ERR_GREPWIN "No file search plugin was found.\nThe grepWinNP3 file search plugin can be downloaded from https://rizonesoft.com." + IDS_MUI_ERR_GREPWIN "Geen lêer soek-inprop is gevind nie.\nDie grepWinNP3 lêersoek plugin kan afgelaai word vanaf https://www.rizonesoft.com." IDS_MUI_ERR_MRUDLG "Geen toegang tot die gekose lêer nie!\nWil jy dit uit die lys verwyder?" IDS_MUI_ERR_CREATELINK "Kon nie die Desktop skakel skep nie." IDS_MUI_ERR_PREVWINDISABLED @@ -181,7 +181,7 @@ BEGIN IDS_MUI_CREATEINI_FAIL "Kon nie konfigurasielêer skep nie." IDS_MUI_WRITEINI_FAIL "Kon nie instellings na konfigurasielêer skryf nie." IDS_MUI_INIFILE_READONLY - "Configuration file is readonly - ignore and override settings?" + "Die konfigurasielêer is leesalleen - ignoreer en ignoreer instellings?" IDS_MUI_SETTINGSNOTSAVED "Geen bestaande konfigurasielêer is gevind nie.\nOm jou stylwysigings te hou, stoor instellings nou (F7) of gaan terug na skemakonfigurasie (Ctrl + F12) en voer jou styl uit." END