From e6f5065f32fbf823e7db278c6c6fe7af0844a1ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 27 Apr 2025 20:16:39 +0200 Subject: [PATCH] [EVENTVWR] Rewrite the way data is copied into the clipboard CORE-20023 - Besides copying the event information, copy also its formatted data. - Update translations with new IDS_COPY* strings. - Eliminate all statically-sized temporary buffers, in favour of carefully calculating the size, and allocating an adequately sized buffer to hold the data to be copied. - By default, the "title" and event info on the single-line fields, are separated with TABs (to facilitate data import in spreadsheets). Add a mode where, when the user presses the SHIFT key while clicking on the "Copy" button, the separation is instead done with space padding, to be able to prettify information display when copying into text files instead. --- .../mscutils/eventvwr/evtdetctl.c | 350 +++++++++++++++--- .../mscutils/eventvwr/lang/bg-BG.rc | 20 +- .../mscutils/eventvwr/lang/cs-CZ.rc | 20 +- .../mscutils/eventvwr/lang/de-DE.rc | 20 +- .../mscutils/eventvwr/lang/el-GR.rc | 20 +- .../mscutils/eventvwr/lang/en-US.rc | 20 +- .../mscutils/eventvwr/lang/es-ES.rc | 20 +- .../mscutils/eventvwr/lang/fr-FR.rc | 20 +- .../mscutils/eventvwr/lang/he-IL.rc | 20 +- .../mscutils/eventvwr/lang/it-IT.rc | 20 +- .../mscutils/eventvwr/lang/ja-JP.rc | 20 +- .../mscutils/eventvwr/lang/ko-KR.rc | 20 +- .../mscutils/eventvwr/lang/no-NO.rc | 20 +- .../mscutils/eventvwr/lang/pl-PL.rc | 20 +- .../mscutils/eventvwr/lang/pt-BR.rc | 22 +- .../mscutils/eventvwr/lang/pt-PT.rc | 20 +- .../mscutils/eventvwr/lang/ro-RO.rc | 24 +- .../mscutils/eventvwr/lang/ru-RU.rc | 20 +- .../mscutils/eventvwr/lang/sk-SK.rc | 20 +- .../mscutils/eventvwr/lang/sq-AL.rc | 20 +- .../mscutils/eventvwr/lang/sv-SE.rc | 20 +- .../mscutils/eventvwr/lang/tr-TR.rc | 20 +- .../mscutils/eventvwr/lang/uk-UA.rc | 20 +- .../mscutils/eventvwr/lang/zh-CN.rc | 20 +- .../mscutils/eventvwr/lang/zh-HK.rc | 30 +- .../mscutils/eventvwr/lang/zh-TW.rc | 20 +- .../applications/mscutils/eventvwr/resource.h | 11 +- 27 files changed, 563 insertions(+), 314 deletions(-) diff --git a/base/applications/mscutils/eventvwr/evtdetctl.c b/base/applications/mscutils/eventvwr/evtdetctl.c index a0aa33682d3..103f37704d5 100644 --- a/base/applications/mscutils/eventvwr/evtdetctl.c +++ b/base/applications/mscutils/eventvwr/evtdetctl.c @@ -12,6 +12,17 @@ #include +/** + * @brief + * ReactOS-only feature: + * Enable or disable support for copying event info text using space padding + * between header titles and data, when pressing the SHIFT key while clicking + * on the "Copy" button, instead of using TABs as separators. + * + * @see CopyEventEntry(). + **/ +#define COPY_EVTTEXT_SPACE_PADDING_MODE + // FIXME: #define EVENT_MESSAGE_EVENTTEXT_BUFFER (1024*10) extern WCHAR szTitle[]; @@ -250,83 +261,291 @@ DisplayEventData( HeapFree(GetProcessHeap(), 0, pTextBuffer); } -static -HFONT -CreateMonospaceFont(VOID) +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + +static inline +int my_cType3ToWidth(WORD wType, wchar_t ucs) { - LOGFONTW tmpFont = {0}; - HFONT hFont; - HDC hDC; - - hDC = GetDC(NULL); - - tmpFont.lfHeight = -MulDiv(8, GetDeviceCaps(hDC, LOGPIXELSY), 72); - tmpFont.lfWeight = FW_NORMAL; - wcscpy(tmpFont.lfFaceName, L"Courier New"); - - hFont = CreateFontIndirectW(&tmpFont); - - ReleaseDC(NULL, hDC); - - return hFont; + if (wType & C3_HALFWIDTH) + return 1; + else if (wType & (C3_FULLWIDTH | C3_KATAKANA | C3_HIRAGANA | C3_IDEOGRAPH)) + return 2; + /* + * HACK for Wide Hangul characters not recognized by GetStringTypeW(CT_CTYPE3) + * See: + * https://unicode.org/reports/tr11/ + * https://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt + * https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedEastAsianWidth.txt + * (or the /Public/UNIDATA/ files) + */ + else if ((ucs >= 0x1100 && ucs <= 0x115F) || (ucs >= 0x302E && ucs <= 0x302F) || + (ucs >= 0x3131 && ucs <= 0x318E) || (ucs >= 0x3260 && ucs <= 0x327F) || + (ucs >= 0xA960 && ucs <= 0xA97C) || (ucs >= 0xAC00 && ucs <= 0xD7A3)) + return 2; + else if (wType & (C3_SYMBOL | C3_KASHIDA | C3_LEXICAL | C3_ALPHA)) + return 1; + else // if (wType & (C3_NONSPACING | C3_DIACRITIC | C3_VOWELMARK | C3_HIGHSURROGATE | C3_LOWSURROGATE | C3_NOTAPPLICABLE)) + return 0; } +int my_wcwidth(wchar_t ucs) +{ + WORD wType = 0; + GetStringTypeW(CT_CTYPE3, &ucs, sizeof(ucs)/sizeof(WCHAR), &wType); + return my_cType3ToWidth(wType, ucs); +} + +int my_wcswidth(const wchar_t *pwcs, size_t n) +{ + int width = 0; + PWORD pwType, pwt; + + pwType = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, n * sizeof(WORD)); + if (!pwType) + return 0; + if (!GetStringTypeW(CT_CTYPE3, pwcs, n, pwType)) + goto Quit; + + for (pwt = pwType; n-- > 0; ++pwt, ++pwcs) + { + width += my_cType3ToWidth(*pwt, *pwcs); + } +Quit: + HeapFree(GetProcessHeap(), 0, pwType); + return width; +} + +#endif // COPY_EVTTEXT_SPACE_PADDING_MODE + +/** + * @brief + * Retrieves the already-gathered event information, structure it in + * text format and copy it into the clipboard for user consumption. + * + * The copied event information has the following text format, where + * each text line ends with CR-LF newlines: + * ``` + * Event Type: \r\n + * Event Source: \r\n + * Event Category: \r\n + * Event ID: \r\n + * Date: \r\n + * Time: \r\n + * User: \r\n + * Computer: \r\n + * Description:\r\n + * \r\n + * Data:\r\n + * \r\n + * ``` + * + * For the single-line fields, the spacing between the header title and + * information is either a TAB (default), to facilitate data import in + * spreadsheet programs, or space-padding (when the user presses the + * SHIFT key while copying the data) to prettify information display. + * (This latter functionality is supported only if the program is compiled + * with the @b COPY_EVTTEXT_SPACE_PADDING_MODE define.) + **/ static VOID -CopyEventEntry(HWND hWnd) +CopyEventEntry( + _In_ HWND hWnd) { - WCHAR tmpHeader[512]; - WCHAR szEventType[MAX_PATH]; - WCHAR szSource[MAX_PATH]; - WCHAR szCategory[MAX_PATH]; - WCHAR szEventID[MAX_PATH]; - WCHAR szDate[MAX_PATH]; - WCHAR szTime[MAX_PATH]; - WCHAR szUser[MAX_PATH]; - WCHAR szComputer[MAX_PATH]; - WCHAR evtDesc[EVENT_MESSAGE_EVENTTEXT_BUFFER]; - ULONG size = 0; - LPWSTR output; +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + static const LONG nTabWidth = 4; +#endif + static const WCHAR szCRLF[] = L"\r\n"; + struct + { + WORD uHdrID; // Header string resource ID. + WORD nDlgItemID; // Dialog control ID containing the corresponding info. + WORD bSameLine : 1; // Info follows header on same line (TRUE) or not (FALSE). + WORD bOptional : 1; // Omit if info is empty (TRUE) or keep it (FALSE). + PCWCH pchHdrText; // Pointer to header string resource. + SIZE_T cchHdrLen; // Header string length (number of characters). + SIZE_T cchInfoLen; // Info string length (number of characters). +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + UINT nHdrWidth; // Display width of the header string. + UINT nSpacesPad; // Padding after header in number of spaces. +#endif + } CopyData[] = + { + {IDS_COPY_EVTTYPE, IDC_EVENTTYPESTATIC , TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTSRC , IDC_EVENTSOURCESTATIC , TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTCAT , IDC_EVENTCATEGORYSTATIC, TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTID , IDC_EVENTIDSTATIC , TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTDATE, IDC_EVENTDATESTATIC , TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTTIME, IDC_EVENTTIMESTATIC , TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTUSER, IDC_EVENTUSERSTATIC , TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTCOMP, IDC_EVENTCOMPUTERSTATIC, TRUE , FALSE, NULL, 0, 0}, + {IDS_COPY_EVTTEXT, IDC_EVENTTEXTEDIT , FALSE, FALSE, NULL, 0, 0}, + {IDS_COPY_EVTDATA, IDC_EVENTDATAEDIT , FALSE, TRUE , NULL, 0, 0}, + }; + USHORT i; +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + BOOL bUsePad; // Use space padding (TRUE) or not (FALSE, default). + UINT nMaxHdrWidth = 0; +#endif + SIZE_T size = 0; + PWSTR output; + PWSTR pszDestEnd; + size_t cchRemaining; HGLOBAL hMem; /* Try to open the clipboard */ if (!OpenClipboard(hWnd)) return; - /* Get the formatted text needed to place the content into */ - size += LoadStringW(hInst, IDS_COPY, tmpHeader, ARRAYSIZE(tmpHeader)); - - /* Grab all the information and get it ready for the clipboard */ - size += GetDlgItemTextW(hWnd, IDC_EVENTTYPESTATIC, szEventType, ARRAYSIZE(szEventType)); - size += GetDlgItemTextW(hWnd, IDC_EVENTSOURCESTATIC, szSource, ARRAYSIZE(szSource)); - size += GetDlgItemTextW(hWnd, IDC_EVENTCATEGORYSTATIC, szCategory, ARRAYSIZE(szCategory)); - size += GetDlgItemTextW(hWnd, IDC_EVENTIDSTATIC, szEventID, ARRAYSIZE(szEventID)); - size += GetDlgItemTextW(hWnd, IDC_EVENTDATESTATIC, szDate, ARRAYSIZE(szDate)); - size += GetDlgItemTextW(hWnd, IDC_EVENTTIMESTATIC, szTime, ARRAYSIZE(szTime)); - size += GetDlgItemTextW(hWnd, IDC_EVENTUSERSTATIC, szUser, ARRAYSIZE(szUser)); - size += GetDlgItemTextW(hWnd, IDC_EVENTCOMPUTERSTATIC, szComputer, ARRAYSIZE(szComputer)); - size += GetDlgItemTextW(hWnd, IDC_EVENTTEXTEDIT, evtDesc, ARRAYSIZE(evtDesc)); - - size++; /* Null-termination */ - size *= sizeof(WCHAR); +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + /* Use space padding only if the user presses SHIFT */ + bUsePad = !!(GetKeyState(VK_SHIFT) & 0x8000); +#endif /* - * Consolidate the information into one big piece and - * sort out the memory needed to write to the clipboard. + * Grab all the information and get it ready for the clipboard. */ - hMem = GlobalAlloc(GMEM_MOVEABLE, size); - if (hMem == NULL) goto Quit; + + /* Calculate the necessary string buffer size */ + for (i = 0; i < _countof(CopyData); ++i) + { + /* Retrieve the event info string length (without NUL terminator) */ + CopyData[i].cchInfoLen = GetWindowTextLengthW(GetDlgItem(hWnd, CopyData[i].nDlgItemID)); + + /* If no data is present and is optional, ignore it */ + if ((CopyData[i].cchInfoLen == 0) && CopyData[i].bOptional) + continue; + + /* Load the header string from resources */ + CopyData[i].cchHdrLen = LoadStringW(hInst, CopyData[i].uHdrID, (PWSTR)&CopyData[i].pchHdrText, 0); + size += CopyData[i].cchHdrLen; + + if (CopyData[i].bSameLine) + { + /* The header and info are on the same line */ +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + if (bUsePad) + { + /* Retrieve the maximum header string displayed + * width for computing space padding later */ + CopyData[i].nHdrWidth = my_wcswidth(CopyData[i].pchHdrText, CopyData[i].cchHdrLen); + nMaxHdrWidth = max(nMaxHdrWidth, CopyData[i].nHdrWidth); + } + else +#endif + { + /* Count a TAB separator */ + size++; + } + } + else + { + /* The data is on a separate line, count a newline */ + size += _countof(szCRLF)-1; + } + + /* Count the event info string and the newline that follows it */ + size += CopyData[i].cchInfoLen; + size += _countof(szCRLF)-1; + } +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + if (bUsePad) + { + /* Round nMaxHdrWidth to the next TAB width, and + * compute the space padding for each field */ + UINT nSpaceWidth = 1; // my_wcwidth(L' '); + nMaxHdrWidth = ((nMaxHdrWidth / nTabWidth) + 1) * nTabWidth; + for (i = 0; i < _countof(CopyData); ++i) + { + /* If no data is present and is optional, ignore it */ + if ((CopyData[i].cchInfoLen == 0) && CopyData[i].bOptional) + continue; + + /* If the data is on a separate line, ignore padding */ + if (!CopyData[i].bSameLine) + continue; + + /* Compute the padding */ + CopyData[i].nSpacesPad = (nMaxHdrWidth - CopyData[i].nHdrWidth) / nSpaceWidth; + size += CopyData[i].nSpacesPad; + } + } +#endif // COPY_EVTTEXT_SPACE_PADDING_MODE + /* Add NUL-termination */ + size++; + + /* + * Consolidate the information into a single buffer to copy in the clipboard. + */ + hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, size * sizeof(WCHAR)); + if (!hMem) + goto Quit; output = GlobalLock(hMem); - if (output == NULL) + if (!output) { GlobalFree(hMem); goto Quit; } - StringCbPrintfW(output, size, - tmpHeader, szEventType, szSource, szCategory, szEventID, - szDate, szTime, szUser, szComputer, evtDesc); + /* Build the string */ + pszDestEnd = output; + cchRemaining = size; + for (i = 0; i < _countof(CopyData); ++i) + { + SIZE_T sizeDataStr; + + /* If no data is present and is optional, ignore it */ + if ((CopyData[i].cchInfoLen == 0) && CopyData[i].bOptional) + continue; + + /* Copy the header string */ + StringCchCopyNExW(pszDestEnd, cchRemaining, + CopyData[i].pchHdrText, CopyData[i].cchHdrLen, + &pszDestEnd, &cchRemaining, 0); + + if (CopyData[i].bSameLine) + { + /* The header and info are on the same line, add + * either the space padding or the TAB separator */ +#ifdef COPY_EVTTEXT_SPACE_PADDING_MODE + if (bUsePad) + { + UINT j = CopyData[i].nSpacesPad; + while (j--) + { + *pszDestEnd++ = L' '; + cchRemaining--; + } + } + else +#endif + { + *pszDestEnd++ = L'\t'; + cchRemaining--; + } + } + else + { + /* The data is on a separate line, add a newline */ + StringCchCopyExW(pszDestEnd, cchRemaining, szCRLF, + &pszDestEnd, &cchRemaining, 0); + } + + /* Copy the event info */ + sizeDataStr = min(cchRemaining, CopyData[i].cchInfoLen + 1); + sizeDataStr = GetDlgItemTextW(hWnd, CopyData[i].nDlgItemID, pszDestEnd, sizeDataStr); + pszDestEnd += sizeDataStr; + cchRemaining -= sizeDataStr; + + /* A newline follows the data */ + StringCchCopyExW(pszDestEnd, cchRemaining, szCRLF, + &pszDestEnd, &cchRemaining, 0); + } + /* NUL-terminate the buffer */ + *pszDestEnd++ = UNICODE_NULL; + cchRemaining--; GlobalUnlock(hMem); @@ -777,6 +996,27 @@ ClearContents( SetDlgItemTextW(hDlg, IDC_EVENTDATAEDIT, L""); } +static +HFONT +CreateMonospaceFont(VOID) +{ + LOGFONTW tmpFont = {0}; + HFONT hFont; + HDC hDC; + + hDC = GetDC(NULL); + + tmpFont.lfHeight = -MulDiv(8, GetDeviceCaps(hDC, LOGPIXELSY), 72); + tmpFont.lfWeight = FW_NORMAL; + wcscpy(tmpFont.lfFaceName, L"Courier New"); + + hFont = CreateFontIndirectW(&tmpFont); + + ReleaseDC(NULL, hDC); + + return hFont; +} + static VOID InitDetailsDlgCtrl(HWND hDlg, PDETAILDATA pData) diff --git a/base/applications/mscutils/eventvwr/lang/bg-BG.rc b/base/applications/mscutils/eventvwr/lang/bg-BG.rc index a16667dec01..5338f6fea59 100644 --- a/base/applications/mscutils/eventvwr/lang/bg-BG.rc +++ b/base/applications/mscutils/eventvwr/lang/bg-BG.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/cs-CZ.rc b/base/applications/mscutils/eventvwr/lang/cs-CZ.rc index 9ee61e6829d..4a42700f2aa 100644 --- a/base/applications/mscutils/eventvwr/lang/cs-CZ.rc +++ b/base/applications/mscutils/eventvwr/lang/cs-CZ.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Typ: %s\r\n\ -Zdroj: %s\r\n\ -Kategorie: %s\r\n\ -ID: %s\r\n\ -Datum: %s\r\n\ -Čas: %s\r\n\ -Uživatel: %s\r\n\ -Počítač: %s\r\n\ -Popis:\r\n%s" + IDS_COPY_EVTTYPE "Typ:" + IDS_COPY_EVTSRC "Zdroj:" + IDS_COPY_EVTCAT "Kategorie:" + IDS_COPY_EVTID "ID události:" + IDS_COPY_EVTDATE "Datum:" + IDS_COPY_EVTTIME "Čas:" + IDS_COPY_EVTUSER "Uživatel:" + IDS_COPY_EVTCOMP "Počítač:" + IDS_COPY_EVTTEXT "Popis:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/de-DE.rc b/base/applications/mscutils/eventvwr/lang/de-DE.rc index 168af21a94f..b61d57e971a 100644 --- a/base/applications/mscutils/eventvwr/lang/de-DE.rc +++ b/base/applications/mscutils/eventvwr/lang/de-DE.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Typ: %s\r\n\ -Quelle: %s\r\n\ -Kategorie: %s\r\n\ -Ereignis-ID: %s\r\n\ -Datum: %s\r\n\ -Zeit: %s\r\n\ -Benutzer: %s\r\n\ -Computer: %s\r\n\ -Beschreibung:\r\n%s" + IDS_COPY_EVTTYPE "Typ:" + IDS_COPY_EVTSRC "Quelle:" + IDS_COPY_EVTCAT "Kategorie:" + IDS_COPY_EVTID "Ereignis-ID:" + IDS_COPY_EVTDATE "Datum:" + IDS_COPY_EVTTIME "Zeit:" + IDS_COPY_EVTUSER "Benutzer:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Beschreibung:" + IDS_COPY_EVTDATA "Daten:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/el-GR.rc b/base/applications/mscutils/eventvwr/lang/el-GR.rc index 2c638e4ec17..be3778eefd3 100644 --- a/base/applications/mscutils/eventvwr/lang/el-GR.rc +++ b/base/applications/mscutils/eventvwr/lang/el-GR.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/en-US.rc b/base/applications/mscutils/eventvwr/lang/en-US.rc index 3f57d12908e..a12b912d608 100644 --- a/base/applications/mscutils/eventvwr/lang/en-US.rc +++ b/base/applications/mscutils/eventvwr/lang/en-US.rc @@ -223,16 +223,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/es-ES.rc b/base/applications/mscutils/eventvwr/lang/es-ES.rc index ae64548114d..cc9e8951e36 100644 --- a/base/applications/mscutils/eventvwr/lang/es-ES.rc +++ b/base/applications/mscutils/eventvwr/lang/es-ES.rc @@ -224,16 +224,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Tipo de evento: %s\r\n\ -Fuente del evento: %s\r\n\ -Categ. del evento: %s\r\n\ -ID del evento: %s\r\n\ -Fecha: %s\r\n\ -Hora: %s\r\n\ -Usuario: %s\r\n\ -Equipo: %s\r\n\ -Descripción:\r\n%s" + IDS_COPY_EVTTYPE "Tipo de evento:" + IDS_COPY_EVTSRC "Fuente del evento:" + IDS_COPY_EVTCAT "Categ. del evento:" + IDS_COPY_EVTID "ID de evento:" + IDS_COPY_EVTDATE "Fecha:" + IDS_COPY_EVTTIME "Hora:" + IDS_COPY_EVTUSER "Usuario:" + IDS_COPY_EVTCOMP "Equipo:" + IDS_COPY_EVTTEXT "Descripción:" + IDS_COPY_EVTDATA "Datos:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/fr-FR.rc b/base/applications/mscutils/eventvwr/lang/fr-FR.rc index 11e5d7e8ded..a1a8b8de100 100644 --- a/base/applications/mscutils/eventvwr/lang/fr-FR.rc +++ b/base/applications/mscutils/eventvwr/lang/fr-FR.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Type d'événement : %s\r\n\ -Source de l'événement : %s\r\n\ -Catégorie de l'événement : %s\r\n\ -ID de l'événement : %s\r\n\ -Date : %s\r\n\ -Heure : %s\r\n\ -Utilisateur : %s\r\n\ -Ordinateur : %s\r\n\ -Description :\r\n%s" + IDS_COPY_EVTTYPE "Type de l'événement :" + IDS_COPY_EVTSRC "Source de l'événement :" + IDS_COPY_EVTCAT "Catégorie de l'événement :" + IDS_COPY_EVTID "ID de l'événement :" + IDS_COPY_EVTDATE "Date :" + IDS_COPY_EVTTIME "Heure :" + IDS_COPY_EVTUSER "Utilisateur :" + IDS_COPY_EVTCOMP "Ordinateur :" + IDS_COPY_EVTTEXT "Description :" + IDS_COPY_EVTDATA "Données :" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/he-IL.rc b/base/applications/mscutils/eventvwr/lang/he-IL.rc index 66d1007f9b4..53e806a37d6 100644 --- a/base/applications/mscutils/eventvwr/lang/he-IL.rc +++ b/base/applications/mscutils/eventvwr/lang/he-IL.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/it-IT.rc b/base/applications/mscutils/eventvwr/lang/it-IT.rc index eb998df371c..1672d64296f 100644 --- a/base/applications/mscutils/eventvwr/lang/it-IT.rc +++ b/base/applications/mscutils/eventvwr/lang/it-IT.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/ja-JP.rc b/base/applications/mscutils/eventvwr/lang/ja-JP.rc index 882aa21e605..2407c228bd1 100644 --- a/base/applications/mscutils/eventvwr/lang/ja-JP.rc +++ b/base/applications/mscutils/eventvwr/lang/ja-JP.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -イベントの種類: %s\r\n\ -イベントのソース: %s\r\n\ -イベントのカテゴリ: %s\r\n\ -イベント ID: %s\r\n\ -日付: %s\r\n\ -時刻: %s\r\n\ -ユーザー: %s\r\n\ -コンピューター: %s\r\n\ -説明:\r\n%s" + IDS_COPY_EVTTYPE "イベントの種類:" + IDS_COPY_EVTSRC "イベントのソース:" + IDS_COPY_EVTCAT "イベントのカテゴリ:" + IDS_COPY_EVTID "イベント ID:" + IDS_COPY_EVTDATE "日付:" + IDS_COPY_EVTTIME "時刻:" + IDS_COPY_EVTUSER "ユーザー:" + IDS_COPY_EVTCOMP "コンピューター:" + IDS_COPY_EVTTEXT "説明:" + IDS_COPY_EVTDATA "データ:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/ko-KR.rc b/base/applications/mscutils/eventvwr/lang/ko-KR.rc index 56618b01c9f..5bc5efd5a73 100644 --- a/base/applications/mscutils/eventvwr/lang/ko-KR.rc +++ b/base/applications/mscutils/eventvwr/lang/ko-KR.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/no-NO.rc b/base/applications/mscutils/eventvwr/lang/no-NO.rc index c37a5968842..1408838379f 100644 --- a/base/applications/mscutils/eventvwr/lang/no-NO.rc +++ b/base/applications/mscutils/eventvwr/lang/no-NO.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/pl-PL.rc b/base/applications/mscutils/eventvwr/lang/pl-PL.rc index 54f9112ba78..5429e36d896 100644 --- a/base/applications/mscutils/eventvwr/lang/pl-PL.rc +++ b/base/applications/mscutils/eventvwr/lang/pl-PL.rc @@ -224,16 +224,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Typ zdarzenia: %s\r\n\ -Źródło zdarzenia: %s\r\n\ -Kategoria zdarzenia: %s\r\n\ -Idnetyfikator Zdarzenia: %s\r\n\ -Data: %s\r\n\ -Czas: %s\r\n\ -Użytkownik: %s\r\n\ -Komputer: %s\r\n\ -Opis:\r\n%s" + IDS_COPY_EVTTYPE "Typ zdarzenia:" + IDS_COPY_EVTSRC "Źródło zdarzenia:" + IDS_COPY_EVTCAT "Kategoria zdarzenia:" + IDS_COPY_EVTID "Identyfikator zdarzenia:" + IDS_COPY_EVTDATE "Data:" + IDS_COPY_EVTTIME "Czas:" + IDS_COPY_EVTUSER "Użytkownik:" + IDS_COPY_EVTCOMP "Komputer:" + IDS_COPY_EVTTEXT "Opis:" + IDS_COPY_EVTDATA "Dane:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/pt-BR.rc b/base/applications/mscutils/eventvwr/lang/pt-BR.rc index 3ac5cf826fc..bcf51d40621 100644 --- a/base/applications/mscutils/eventvwr/lang/pt-BR.rc +++ b/base/applications/mscutils/eventvwr/lang/pt-BR.rc @@ -211,7 +211,7 @@ STRINGTABLE BEGIN IDS_COLUMNTYPE "Tipo" IDS_COLUMNDATE "Data" - IDS_COLUMNTIME "Hora" + IDS_COLUMNTIME "Tempo" IDS_COLUMNSOURCE "Fonte" IDS_COLUMNCATEGORY "Categoria" IDS_COLUMNEVENT "Evento" @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Tipo de evento:" + IDS_COPY_EVTSRC "Fonte do evento:" + IDS_COPY_EVTCAT "Categoria:" + IDS_COPY_EVTID "ID do evento:" + IDS_COPY_EVTDATE "Data:" + IDS_COPY_EVTTIME "Tempo:" + IDS_COPY_EVTUSER "Usuário:" + IDS_COPY_EVTCOMP "Computador:" + IDS_COPY_EVTTEXT "Descrição:" + IDS_COPY_EVTDATA "Dados:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/pt-PT.rc b/base/applications/mscutils/eventvwr/lang/pt-PT.rc index b31b70c113d..624107c2a32 100644 --- a/base/applications/mscutils/eventvwr/lang/pt-PT.rc +++ b/base/applications/mscutils/eventvwr/lang/pt-PT.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Tipo de evento: %s\r\n\ -Origem do evento: %s\r\n\ -Categoria: %s\r\n\ -ID do Evento: %s\r\n\ -Data: %s\r\n\ -Hora: %s\r\n\ -Utilizador: %s\r\n\ -Computador: %s\r\n\ -Descrição:\r\n%s" + IDS_COPY_EVTTYPE "Tipo de evento:" + IDS_COPY_EVTSRC "Origem do evento:" + IDS_COPY_EVTCAT "Categoria:" + IDS_COPY_EVTID "ID do evento:" + IDS_COPY_EVTDATE "Data:" + IDS_COPY_EVTTIME "Hora:" + IDS_COPY_EVTUSER "Utilizador:" + IDS_COPY_EVTCOMP "Computador:" + IDS_COPY_EVTTEXT "Descrição:" + IDS_COPY_EVTDATA "Dados:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/ro-RO.rc b/base/applications/mscutils/eventvwr/lang/ro-RO.rc index 7af071fd1ad..3b6d289c45f 100644 --- a/base/applications/mscutils/eventvwr/lang/ro-RO.rc +++ b/base/applications/mscutils/eventvwr/lang/ro-RO.rc @@ -93,7 +93,7 @@ BEGIN EDITTEXT IDC_EVENTCATEGORYSTATIC, 140, 15, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "T&ip:", IDC_STATIC, 8, 25, 31, 8 EDITTEXT IDC_EVENTTYPESTATIC, 46, 25, 47, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "ID &Eveniment:", IDC_STATIC, 103, 25, 36, 8 + LTEXT "ID &eveniment:", IDC_STATIC, 103, 25, 36, 8 EDITTEXT IDC_EVENTIDSTATIC, 140, 25, 82, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "&Utilizator:", IDC_STATIC, 8, 35, 36, 8 EDITTEXT IDC_EVENTUSERSTATIC, 46, 35, 152, 8, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL @@ -218,21 +218,21 @@ BEGIN IDS_COLUMNCATEGORY "Categorie" IDS_COLUMNEVENT "Eveniment" IDS_COLUMNUSER "Utilizator" - IDS_COLUMNCOMPUTER "Computer" + IDS_COLUMNCOMPUTER "Calculator" END STRINGTABLE BEGIN - IDS_COPY "\ -Tip eveniment: %s\r\n\ -Sursă eveniment: %s\r\n\ -Categorie eveniment: %s\r\n\ -ID eveniment: %s\r\n\ -Dată: %s\r\n\ -Oră: %s\r\n\ -Utilizator: %s\r\n\ -Computer: %s\r\n\ -Descriere:\r\n%s" + IDS_COPY_EVTTYPE "Tip eveniment:" + IDS_COPY_EVTSRC "Sursă eveniment:" + IDS_COPY_EVTCAT "Categorie eveniment:" + IDS_COPY_EVTID "ID eveniment:" + IDS_COPY_EVTDATE "Dată:" + IDS_COPY_EVTTIME "Oră:" + IDS_COPY_EVTUSER "Utilizator:" + IDS_COPY_EVTCOMP "Calculator:" + IDS_COPY_EVTTEXT "Descriere:" + IDS_COPY_EVTDATA "Date:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/ru-RU.rc b/base/applications/mscutils/eventvwr/lang/ru-RU.rc index 455cf6738bb..4e975a15825 100644 --- a/base/applications/mscutils/eventvwr/lang/ru-RU.rc +++ b/base/applications/mscutils/eventvwr/lang/ru-RU.rc @@ -225,16 +225,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Тип события: %s\r\n\ -Источник события: %s\r\n\ -Категория события: %s\r\n\ -ID события: %s\r\n\ -Дата: %s\r\n\ -Время: %s\r\n\ -Пользователь: %s\r\n\ -Компьютер: %s\r\n\ -Описание:\n%s" + IDS_COPY_EVTTYPE "Тип события:" + IDS_COPY_EVTSRC "Источник события:" + IDS_COPY_EVTCAT "Категория события:" + IDS_COPY_EVTID "ID события:" + IDS_COPY_EVTDATE "Дата:" + IDS_COPY_EVTTIME "Время:" + IDS_COPY_EVTUSER "Пользователь:" + IDS_COPY_EVTCOMP "Компьютер:" + IDS_COPY_EVTTEXT "Описание:" + IDS_COPY_EVTDATA "Данные:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/sk-SK.rc b/base/applications/mscutils/eventvwr/lang/sk-SK.rc index 195c7095e4b..79b7e0efd21 100644 --- a/base/applications/mscutils/eventvwr/lang/sk-SK.rc +++ b/base/applications/mscutils/eventvwr/lang/sk-SK.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/sq-AL.rc b/base/applications/mscutils/eventvwr/lang/sq-AL.rc index 2e749934629..437ddb31879 100644 --- a/base/applications/mscutils/eventvwr/lang/sq-AL.rc +++ b/base/applications/mscutils/eventvwr/lang/sq-AL.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/sv-SE.rc b/base/applications/mscutils/eventvwr/lang/sv-SE.rc index 1c60e22b991..c28d0a8a424 100644 --- a/base/applications/mscutils/eventvwr/lang/sv-SE.rc +++ b/base/applications/mscutils/eventvwr/lang/sv-SE.rc @@ -221,16 +221,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/tr-TR.rc b/base/applications/mscutils/eventvwr/lang/tr-TR.rc index b93e50009c8..8c7bc0a8929 100644 --- a/base/applications/mscutils/eventvwr/lang/tr-TR.rc +++ b/base/applications/mscutils/eventvwr/lang/tr-TR.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Olay Türü: %s\r\n\ -Olay Kaynağı: %s\r\n\ -Olay Kategorisi: %s\r\n\ -Olay Kimliği: %s\r\n\ -Tarih: %s\r\n\ -Saat: %s\r\n\ -Kullanıcı: %s\r\n\ -Bilgisayar: %s\r\n\ -Tanım:\r\n%s" + IDS_COPY_EVTTYPE "Olay Türü:" + IDS_COPY_EVTSRC "Olay Kaynağı:" + IDS_COPY_EVTCAT "Olay Kategorisi:" + IDS_COPY_EVTID "Olay Kimliği:" + IDS_COPY_EVTDATE "Tarih:" + IDS_COPY_EVTTIME "Saat:" + IDS_COPY_EVTUSER "Kullanıcı:" + IDS_COPY_EVTCOMP "Bilgisayar:" + IDS_COPY_EVTTEXT "Tanım:" + IDS_COPY_EVTDATA "Veri:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/uk-UA.rc b/base/applications/mscutils/eventvwr/lang/uk-UA.rc index 7c977803476..40b96c24a81 100644 --- a/base/applications/mscutils/eventvwr/lang/uk-UA.rc +++ b/base/applications/mscutils/eventvwr/lang/uk-UA.rc @@ -223,16 +223,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -Event Type: %s\r\n\ -Event Source: %s\r\n\ -Event Category: %s\r\n\ -Event ID: %s\r\n\ -Date: %s\r\n\ -Time: %s\r\n\ -User: %s\r\n\ -Computer: %s\r\n\ -Description:\r\n%s" + IDS_COPY_EVTTYPE "Event Type:" + IDS_COPY_EVTSRC "Event Source:" + IDS_COPY_EVTCAT "Event Category:" + IDS_COPY_EVTID "Event ID:" + IDS_COPY_EVTDATE "Date:" + IDS_COPY_EVTTIME "Time:" + IDS_COPY_EVTUSER "User:" + IDS_COPY_EVTCOMP "Computer:" + IDS_COPY_EVTTEXT "Description:" + IDS_COPY_EVTDATA "Data:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/zh-CN.rc b/base/applications/mscutils/eventvwr/lang/zh-CN.rc index 46b30b91d3f..7b6b3f5f58b 100644 --- a/base/applications/mscutils/eventvwr/lang/zh-CN.rc +++ b/base/applications/mscutils/eventvwr/lang/zh-CN.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -事件类型: %s\r\n\ -事件源: %s\r\n\ -事件类别: %s\r\n\ -事件 ID: %s\r\n\ -日期: %s\r\n\ -时间: %s\r\n\ -用户: %s\r\n\ -电脑: %s\r\n\ -描述:\r\n%s" + IDS_COPY_EVTTYPE "事件类型:" + IDS_COPY_EVTSRC "事件源:" + IDS_COPY_EVTCAT "事件类别:" + IDS_COPY_EVTID "事件 ID:" + IDS_COPY_EVTDATE "日期:" + IDS_COPY_EVTTIME "时间:" + IDS_COPY_EVTUSER "用户:" + IDS_COPY_EVTCOMP "电脑:" + IDS_COPY_EVTTEXT "描述:" + IDS_COPY_EVTDATA "数据:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/zh-HK.rc b/base/applications/mscutils/eventvwr/lang/zh-HK.rc index 967d78d51ee..3c3ed1ae170 100644 --- a/base/applications/mscutils/eventvwr/lang/zh-HK.rc +++ b/base/applications/mscutils/eventvwr/lang/zh-HK.rc @@ -117,7 +117,7 @@ STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION CAPTION "一般" FONT 9, "新細明體" BEGIN - LTEXT "顯示名稱(&D):", IDC_STATIC, 7, 9, 60, 8 + LTEXT "顯示名稱(&D):", IDC_STATIC, 7, 9, 60, 8 EDITTEXT IDC_DISPLAYNAME, 67, 7, 178, 12, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP LTEXT "記錄檔名稱(&L):", IDC_STATIC, 7, 25, 60, 8 EDITTEXT IDC_LOGNAME, 67, 23, 178, 12, ES_LEFT | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP @@ -126,7 +126,7 @@ BEGIN // The following 4 IDC_STATIC shall have accels in ReactOS, although MS doesn't have accels for them. // Translation note: First fill out ALL accels that MS has in this dialog for your language, // and only then as a final step use some remaining unused letters for those 4 controls! - LTEXT "大小(&S);", IDC_STATIC, 7, 57, 60, 8 + LTEXT "大小(&S):", IDC_STATIC, 7, 57, 60, 8 EDITTEXT IDC_SIZE_LABEL, 67, 57, 178, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "建立日期(&C):", IDC_STATIC, 7, 69, 60, 8 EDITTEXT IDC_CREATED_LABEL, 67, 69, 178, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL @@ -179,14 +179,14 @@ BEGIN \n\ EventVwr [電腦名稱] [/L:<事件記錄檔案>] [/?]\n\ \n\ -""電腦名稱"" : 指定要連線的遠端電腦\n\ +""電腦名稱"" :指定要連線的遠端電腦\n\ \t以擷取要顯示的事件。如果未指定名稱,\n\ \t則使用本地電腦。\n\ \n\ -/L:<事件記錄檔案> : 指定要開啟的事件記錄檔案。\n\ +/L:<事件記錄檔案> :指定要開啟的事件記錄檔案。\n\ \t只支援 .evt 格式檔案 (NT ≤ 5.2)。\n\ \n\ -/? : 顯示這個説明訊息。\n\ +/? :顯示這個説明訊息。\n\ " IDS_EVENTLOGFILE "事件記錄檔案" END @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -事件種類: %s\r\n\ -事件源: %s\r\n\ -事件種類: %s\r\n\ -事件 ID: %s\r\n\ -日期: %s\r\n\ -時間: %s\r\n\ -使用者: %s\r\n\ -電腦: %s\r\n\ -描述:\r\n%s" + IDS_COPY_EVTTYPE "事件種類:" + IDS_COPY_EVTSRC "事件源:" + IDS_COPY_EVTCAT "事件種類:" + IDS_COPY_EVTID "事件 ID:" + IDS_COPY_EVTDATE "日期:" + IDS_COPY_EVTTIME "時間:" + IDS_COPY_EVTUSER "使用者:" + IDS_COPY_EVTCOMP "電腦:" + IDS_COPY_EVTTEXT "描述:" + IDS_COPY_EVTDATA "資料:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/lang/zh-TW.rc b/base/applications/mscutils/eventvwr/lang/zh-TW.rc index 20640fb15ed..445e3890331 100644 --- a/base/applications/mscutils/eventvwr/lang/zh-TW.rc +++ b/base/applications/mscutils/eventvwr/lang/zh-TW.rc @@ -222,16 +222,16 @@ END STRINGTABLE BEGIN - IDS_COPY "\ -事件種類: %s\r\n\ -事件源: %s\r\n\ -事件種類: %s\r\n\ -事件 ID: %s\r\n\ -日期: %s\r\n\ -時間: %s\r\n\ -使用者: %s\r\n\ -電腦: %s\r\n\ -描述:\r\n%s" + IDS_COPY_EVTTYPE "事件種類:" + IDS_COPY_EVTSRC "事件源:" + IDS_COPY_EVTCAT "事件種類:" + IDS_COPY_EVTID "事件 ID:" + IDS_COPY_EVTDATE "日期:" + IDS_COPY_EVTTIME "時間:" + IDS_COPY_EVTUSER "使用者:" + IDS_COPY_EVTCOMP "電腦:" + IDS_COPY_EVTTEXT "描述:" + IDS_COPY_EVTDATA "資料:" END STRINGTABLE diff --git a/base/applications/mscutils/eventvwr/resource.h b/base/applications/mscutils/eventvwr/resource.h index 30956033cd7..a0f38db83a8 100644 --- a/base/applications/mscutils/eventvwr/resource.h +++ b/base/applications/mscutils/eventvwr/resource.h @@ -130,7 +130,16 @@ #define IDS_COLUMNUSER 226 #define IDS_COLUMNCOMPUTER 227 -#define IDS_COPY 240 +#define IDS_COPY_EVTTYPE 240 +#define IDS_COPY_EVTSRC 241 +#define IDS_COPY_EVTCAT 242 +#define IDS_COPY_EVTID 243 +#define IDS_COPY_EVTDATE 244 +#define IDS_COPY_EVTTIME 245 +#define IDS_COPY_EVTUSER 246 +#define IDS_COPY_EVTCOMP 247 +#define IDS_COPY_EVTTEXT 248 +#define IDS_COPY_EVTDATA 249 #define IDS_NONE 250 #define IDS_NOT_AVAILABLE 251