From e3e520d15402eebe2e20edad8a0b54973057daf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Jab=C5=82o=C5=84ski?= Date: Thu, 16 Jan 2025 18:24:04 +0100 Subject: [PATCH] [TELNET] Fix Unicode character printing (#7597) CORE-18304 The included Telnet client does not support displaying messages with Unicode characters in them. This is a problem, because even though localisation for the program was made for ReactOS, it doesn't work properly. - Make the `printm` function load and format messages using wide character APIs instead of the narrow ones. - Add format specifiers to the resource files (this is necessary, as there are a lot of places, where narrow strings are used in the program, and passed as parameters to `printm`). --- .../applications/network/telnet/lang/en-US.rc | 52 +++++++-------- .../applications/network/telnet/lang/pl-PL.rc | 52 +++++++-------- .../applications/network/telnet/lang/ro-RO.rc | 52 +++++++-------- .../applications/network/telnet/lang/ru-RU.rc | 52 +++++++-------- .../applications/network/telnet/lang/tr-TR.rc | 52 +++++++-------- .../applications/network/telnet/lang/zh-CN.rc | 52 +++++++-------- .../applications/network/telnet/lang/zh-TW.rc | 52 +++++++-------- base/applications/network/telnet/precomp.h | 1 + .../network/telnet/src/tnerror.cpp | 63 ++++++++++++++++++- 9 files changed, 245 insertions(+), 183 deletions(-) diff --git a/base/applications/network/telnet/lang/en-US.rc b/base/applications/network/telnet/lang/en-US.rc index a13ad7f4144..edac1d7d5c1 100644 --- a/base/applications/network/telnet/lang/en-US.rc +++ b/base/applications/network/telnet/lang/en-US.rc @@ -9,25 +9,25 @@ BEGIN MSG_HELP "Commands may be abbreviated. Commands are:\n\ncl[ose] close current connection\nop[en] connect to a site\nq[uit] exit telnet\n" MSG_HELP_1 "ke[ys] changes/displays keymaps (write keys to see the options)\nse[t] displays/alters configuration options\nz suspend\n? h[elp] print help information\n" MSG_INVCMD "Invalid command. Type ? for help.\n" - MSG_ERROR "%1 failed.\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "Trying %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "Connected to %1. Escape key is ALT-%2.\n" + MSG_ERROR "%1!hs! failed.\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "Trying %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "Connected to %1!hs!. Escape key is ALT-%2!hs!.\n" MSG_TERMBYREM "Connection terminated.\n" - MSG_KEYMAP "Loading %1 from %2.\n" + MSG_KEYMAP "Loading %1!hs! from %2!hs!.\n" MSG_ERRKEYMAP "Error loading keymap.\n" - MSG_DUMPFILE "Writing output to file %1.\n" - MSG_CONFIG "Loading configuration options from %1.\n" - MSG_NOINI "Error loading configuration file %1.\nLoading default options.\n" - MSG_BADVAL "Warning: invalid variable %1.\n" + MSG_DUMPFILE "Writing output to file %1!hs!.\n" + MSG_CONFIG "Loading configuration options from %1!hs!.\n" + MSG_NOINI "Error loading configuration file %1!hs!.\nLoading default options.\n" + MSG_BADVAL "Warning: invalid variable %1!hs!.\n" MSG_NOSPAWN "Unable to spawn process.\n" - MSG_RESOLVING "Looking up host: %1..." - MSG_NOSERVICE "Could not find TCP service %1.\n" - MSG_SIZEALIAS "Warning: size of alias %1 is too big, ignoring.\n" + MSG_RESOLVING "Looking up host: %1!hs!..." + MSG_NOSERVICE "Could not find TCP service %1!hs!.\n" + MSG_SIZEALIAS "Warning: size of alias %1!hs! is too big, ignoring.\n" MSG_ERRPIPE "Error: unable to spawn process for pipe.\n" MSG_BADUSAGE "Error: invalid usage of command.\n" - MSG_ALREADYCONNECTED "Already connected to %1.\n" + MSG_ALREADYCONNECTED "Already connected to %1!hs!.\n" MSG_WSAEINTR "Interrupted function call.\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "Permission denied.\n" @@ -72,25 +72,25 @@ BEGIN MSG_WSATRY_AGAIN "Non-authoritative host not found.\n" MSG_WSANO_RECOVERY "This is a non-recoverable error.\n" MSG_WSANO_DATA "Valid name, no data record of requested type.\n" - MSG_KEYNOVAL "[GLOBAL]: No value for %1.\n" - MSG_KEYBADVAL "[GLOBAL]: Bad value for %1.\n" - MSG_KEYBADSTRUCT "%1: Bad structure.\n" - MSG_KEYBADCHARS "%1: Bad chars? %1 -> %3.\n" - MSG_KEYUNEXPLINE "Unexpected line ""%1"".\n" + MSG_KEYNOVAL "[GLOBAL]: No value for %1!hs!.\n" + MSG_KEYBADVAL "[GLOBAL]: Bad value for %1!hs!.\n" + MSG_KEYBADSTRUCT "%1!hs!: Bad structure.\n" + MSG_KEYBADCHARS "%1!hs!: Bad chars? %1!hs! -> %3!hs!.\n" + MSG_KEYUNEXPLINE "Unexpected line ""%1!hs!"".\n" MSG_KEYUNEXPEOF "Unexpended end of file.\n" - MSG_KEYUNEXPTOK "Unexpected token %1.\n" - MSG_KEYUNEXPTOKIN "Unexpected token in %1.\n" + MSG_KEYUNEXPTOK "Unexpected token %1!hs!.\n" + MSG_KEYUNEXPTOKIN "Unexpected token in %1!hs!.\n" MSG_KEYUNEXP "Unexpected end of file or token.\n" MSG_KEYNOGLOBAL "No [GLOBAL] definition!\n" - MSG_KEYNOCONFIG "No [CONFIG %1].\n" - MSG_KEYUSECONFIG "Use configuration: %1.\n" - MSG_KEYNOSWKEY "No switch key for ""%1"".\n" + MSG_KEYNOCONFIG "No [CONFIG %1!hs!].\n" + MSG_KEYUSECONFIG "Use configuration: %1!hs!.\n" + MSG_KEYNOSWKEY "No switch key for ""%1!hs!"".\n" MSG_KEYCANNOTDEF "You cannot define switch key for default keymap - ignored.\n" MSG_KEYDUPSWKEY "Duplicate switching key.\n" - MSG_KEYUNKNOWNMAP "Unknown keymap %1.\n" + MSG_KEYUNKNOWNMAP "Unknown keymap %1!hs!.\n" MSG_KEYNOCHARMAPS "No charmaps loaded.\n" MSG_KEYNOKEYMAPS "No keymaps loaded.\n" - MSG_KEYNUMMAPS "There are %1 maps.\n" + MSG_KEYNUMMAPS "There are %1!hs! maps.\n" MSG_KEYBADMAP "Bad keymap number - try 'keys display'\n" MSG_KEYMAPSWITCHED "keymap switched.\n" END diff --git a/base/applications/network/telnet/lang/pl-PL.rc b/base/applications/network/telnet/lang/pl-PL.rc index c75e95e825a..9cb42a47f85 100644 --- a/base/applications/network/telnet/lang/pl-PL.rc +++ b/base/applications/network/telnet/lang/pl-PL.rc @@ -9,25 +9,25 @@ BEGIN MSG_HELP "Polecenia mogą być skracane. Dostępne polecenia:\n\ncl[ose] zamknij bieżące połączenie\nop[en] połącz z witryną\nq[uit] zakończ telnet\n" MSG_HELP_1 "ke[ys] zmienia/wyświetla mapy klawiszy (wpisz klawisze,\naby zobaczyć opcje)\nse[t] wyświetla/zmienia opcje konfiguracji\nz wstrzymaj\n? h[elp] wypisz informacje pomocy\n" MSG_INVCMD "Nieprawidłowe polecenie. Wpisz ?, aby uzyskać pomoc.\n" - MSG_ERROR "%1 nie powiodło się.\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "Podejmowanie próby %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "Podłączono do %1. Klawisze wyjścia to ALT-%2.\n" + MSG_ERROR "%1!hs! nie powiodło się.\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "Podejmowanie próby %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "Podłączono do %1!hs!. Klawisze wyjścia to ALT-%2!hs!.\n" MSG_TERMBYREM "Połączenie zakończone.\n" - MSG_KEYMAP "Ładowanie %1 z %2.\n" + MSG_KEYMAP "Ładowanie %1!hs! z %2!hs!.\n" MSG_ERRKEYMAP "Błąd podczas ładowania mapy klawiszy.\n" - MSG_DUMPFILE "Zapisywanie danych wyjściowych do pliku %1.\n" - MSG_CONFIG "Ładowanie opcji konfiguracji z %1.\n" - MSG_NOINI "Błąd podczas ładowania pliku konfiguracyjnego %1.\nŁadowanie domyślnych opcji.\n" - MSG_BADVAL "Ostrzeżenie: nieprawidłowa zmienna %1.\n" + MSG_DUMPFILE "Zapisywanie danych wyjściowych do pliku %1!hs!.\n" + MSG_CONFIG "Ładowanie opcji konfiguracji z %1!hs!.\n" + MSG_NOINI "Błąd podczas ładowania pliku konfiguracyjnego %1!hs!.\nŁadowanie domyślnych opcji.\n" + MSG_BADVAL "Ostrzeżenie: nieprawidłowa zmienna %1!hs!.\n" MSG_NOSPAWN "Nie można zduplikować procesu.\n" - MSG_RESOLVING "Wyszukiwanie hosta: %1..." - MSG_NOSERVICE "Nie odnaleziono usługi TCP %1.\n" - MSG_SIZEALIAS "Ostrzeżenie: rozmiar aliasu %1 jest zbyt duży, ignorowanie.\n" + MSG_RESOLVING "Wyszukiwanie hosta: %1!hs!..." + MSG_NOSERVICE "Nie odnaleziono usługi TCP %1!hs!.\n" + MSG_SIZEALIAS "Ostrzeżenie: rozmiar aliasu %1!hs! jest zbyt duży, ignorowanie.\n" MSG_ERRPIPE "Błąd: nie można zduplikować procesu dla potoku.\n" MSG_BADUSAGE "Błąd: nieprawidłowe użycie polecenia.\n" - MSG_ALREADYCONNECTED "Już połączono z %1.\n" + MSG_ALREADYCONNECTED "Już połączono z %1!hs!.\n" MSG_WSAEINTR "Przerwano wywołanie funkcji.\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "Odmowa uprawnień.\n" @@ -72,25 +72,25 @@ BEGIN MSG_WSATRY_AGAIN "Nie odnaleziono nieautorytatywnego hosta.\n" MSG_WSANO_RECOVERY "Ten błąd jest niemożliwy do naprawienia.\n" MSG_WSANO_DATA "Nazwa jest prawidłowa, brak rekordu danych żądanego typu.\n" - MSG_KEYNOVAL "[GLOBAL]: Brak wartości dla %1.\n" - MSG_KEYBADVAL "[GLOBAL]: Zła wartość dla %1.\n" - MSG_KEYBADSTRUCT "%1: Zła struktura.\n" - MSG_KEYBADCHARS "%1: Złe znaki? %1 -> %3.\n" - MSG_KEYUNEXPLINE "Nieoczekiwany wiersz ""%1"".\n" + MSG_KEYNOVAL "[GLOBAL]: Brak wartości dla %1!hs!.\n" + MSG_KEYBADVAL "[GLOBAL]: Zła wartość dla %1!hs!.\n" + MSG_KEYBADSTRUCT "%1!hs!: Zła struktura.\n" + MSG_KEYBADCHARS "%1!hs!: Złe znaki? %1!hs! -> %3!hs!.\n" + MSG_KEYUNEXPLINE "Nieoczekiwany wiersz ""%1!hs!"".\n" MSG_KEYUNEXPEOF "Nieoczekiwany koniec pliku.\n" - MSG_KEYUNEXPTOK "Nieoczekiwany token %1.\n" - MSG_KEYUNEXPTOKIN "Nieoczekiwany token w %1.\n" + MSG_KEYUNEXPTOK "Nieoczekiwany token %1!hs!.\n" + MSG_KEYUNEXPTOKIN "Nieoczekiwany token w %1!hs!.\n" MSG_KEYUNEXP "Nieoczekiwany koniec pliku lub tokena.\n" MSG_KEYNOGLOBAL "Brak definicji [GLOBAL]!\n" - MSG_KEYNOCONFIG "Brak [CONFIG %1].\n" - MSG_KEYUSECONFIG "Użyj konfiguracji: %1.\n" - MSG_KEYNOSWKEY "Brak klawisza przełączającego dla ""%1"".\n" + MSG_KEYNOCONFIG "Brak [CONFIG %1!hs!].\n" + MSG_KEYUSECONFIG "Użyj konfiguracji: %1!hs!.\n" + MSG_KEYNOSWKEY "Brak klawisza przełączającego dla ""%1!hs!"".\n" MSG_KEYCANNOTDEF "Nie można zdefiniować klawisza przełączającego dla domyślnej mapy klawiszy - zignorowano.\n" MSG_KEYDUPSWKEY "Duplikuj klawisz przełączający.\n" - MSG_KEYUNKNOWNMAP "Nieznana mapa klawiszy %1.\n" + MSG_KEYUNKNOWNMAP "Nieznana mapa klawiszy %1!hs!.\n" MSG_KEYNOCHARMAPS "Nie załadowano żadnych tablic znaków.\n" MSG_KEYNOKEYMAPS "Nie załadowano żadnych map klawiszy.\n" - MSG_KEYNUMMAPS "Istnieje %1 map.\n" + MSG_KEYNUMMAPS "Istnieje %1!hs! map.\n" MSG_KEYBADMAP "Zły numer mapy klawiszy - sróbuj 'keys display'\n" MSG_KEYMAPSWITCHED "mapa klawiszy przełączona.\n" END diff --git a/base/applications/network/telnet/lang/ro-RO.rc b/base/applications/network/telnet/lang/ro-RO.rc index 4e22517242b..05ac44a9620 100644 --- a/base/applications/network/telnet/lang/ro-RO.rc +++ b/base/applications/network/telnet/lang/ro-RO.rc @@ -10,25 +10,25 @@ BEGIN MSG_HELP "Comenzile pot fi abreviate. Acestea sunt:\n\ncl[ose] Închide conexiunea curentă.\nop[en] Conectează la un sit.\nq[uit] Ieșire din telnet.\n" MSG_HELP_1 "ke[ys] Afișează/alterează configurații de taste.\nse[t] Afișează/alterează opțiunile de configurare.\nz Suspendă.\n? h[elp] Afișează informațiile de utilizare.\n" MSG_INVCMD "Comandă nevalidă. Tastați ? pentru informații.\n" - MSG_ERROR "%1 a eșuat.\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "Este încearcată %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "Conectat la %1. Pentru ieșire apăsați ALT-%2.\n" + MSG_ERROR "%1!hs! a eșuat.\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "Este încearcată %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "Conectat la %1!hs!. Pentru ieșire apăsați ALT-%2!hs!.\n" MSG_TERMBYREM "Conexiune încheiată.\n" - MSG_KEYMAP "Este încarcată %1 de la %2.\n" + MSG_KEYMAP "Este încarcată %1!hs! de la %2!hs!.\n" MSG_ERRKEYMAP "Eșec la încărcarea configurației de taste.\n" - MSG_DUMPFILE "Sunt scrise informații de ieșire în fișierul %1.\n" - MSG_CONFIG "Este încarcată din %1 opțiunile de configurare.\n" - MSG_NOINI "Eroare la încărcarea fișierului de configurare %1.\nSunt încărcate opțiunile implicite.\n" - MSG_BADVAL "Avertisment: variabila %1 nu este validă.\n" + MSG_DUMPFILE "Sunt scrise informații de ieșire în fișierul %1!hs!.\n" + MSG_CONFIG "Este încarcată din %1!hs! opțiunile de configurare.\n" + MSG_NOINI "Eroare la încărcarea fișierului de configurare %1!hs!.\nSunt încărcate opțiunile implicite.\n" + MSG_BADVAL "Avertisment: variabila %1!hs! nu este validă.\n" MSG_NOSPAWN "Lansarea procesului a eșuat.\n" - MSG_RESOLVING "Este căutată gazda: %1..." - MSG_NOSERVICE "Serviciul TCP %1 nu a fost găsit.\n" - MSG_SIZEALIAS "Avertisment: dimensiunea de alias %1 este prea mare, va fi ignorată.\n" + MSG_RESOLVING "Este căutată gazda: %1!hs!..." + MSG_NOSERVICE "Serviciul TCP %1!hs! nu a fost găsit.\n" + MSG_SIZEALIAS "Avertisment: dimensiunea de alias %1!hs! este prea mare, va fi ignorată.\n" MSG_ERRPIPE "Eroare: lansarea procesului pentru conexiune a eșuat.\n" MSG_BADUSAGE "Eroare: utilizare nevalidă a comenzii.\n" - MSG_ALREADYCONNECTED "Conexiunea la %1 a fost deja stabilită.\n" + MSG_ALREADYCONNECTED "Conexiunea la %1!hs! a fost deja stabilită.\n" MSG_WSAEINTR "Apel de funcție întrerupt.\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "Acces respins.\n" @@ -73,25 +73,25 @@ BEGIN MSG_WSATRY_AGAIN "Gazda ne-autoritată nu a fost găsită.\n" MSG_WSANO_RECOVERY "Eroare, stare nerecuperabilă.\n" MSG_WSANO_DATA "Numeele este valid, nu există date de tipul solicitat.\n" - MSG_KEYNOVAL "[GLOBAL]: Nu există valoare pentru %1.\n" - MSG_KEYBADVAL "[GLOBAL]: Valoarea pentru %1 este eronată.\n" - MSG_KEYBADSTRUCT "%1: Structură eronată.\n" - MSG_KEYBADCHARS "%1: Caractere eronate? %1 -> %3.\n" - MSG_KEYUNEXPLINE "Rând neprevăzut «%1».\n" + MSG_KEYNOVAL "[GLOBAL]: Nu există valoare pentru %1!hs!.\n" + MSG_KEYBADVAL "[GLOBAL]: Valoarea pentru %1!hs! este eronată.\n" + MSG_KEYBADSTRUCT "%1!hs!: Structură eronată.\n" + MSG_KEYBADCHARS "%1!hs!: Caractere eronate? %1!hs! -> %3!hs!.\n" + MSG_KEYUNEXPLINE "Rând neprevăzut «%1!hs!».\n" MSG_KEYUNEXPEOF "Sfârșit neprevăzut de fișier.\n" - MSG_KEYUNEXPTOK "Simbol neprevăzut %1.\n" - MSG_KEYUNEXPTOKIN "Simbol neprevăzut la %1.\n" + MSG_KEYUNEXPTOK "Simbol neprevăzut %1!hs!.\n" + MSG_KEYUNEXPTOKIN "Simbol neprevăzut la %1!hs!.\n" MSG_KEYUNEXP "Sfârșit neprevăzut de fișier sau simbol.\n" MSG_KEYNOGLOBAL "Nu există definiție pentru [GLOBAL]!\n" - MSG_KEYNOCONFIG "Nu există [CONFIG %1].\n" - MSG_KEYUSECONFIG "Utilizare configurație: %1.\n" - MSG_KEYNOSWKEY "Nu există tastă de comutare pentru «%1».\n" + MSG_KEYNOCONFIG "Nu există [CONFIG %1!hs!].\n" + MSG_KEYUSECONFIG "Utilizare configurație: %1!hs!.\n" + MSG_KEYNOSWKEY "Nu există tastă de comutare pentru «%1!hs!».\n" MSG_KEYCANNOTDEF "În configurația implicită nu pot fi definite taste de comutare, vor fi ignorate.\n" MSG_KEYDUPSWKEY "Duplicare tastă de comutare.\n" - MSG_KEYUNKNOWNMAP "%1 este o configurație de taste necunoscută.\n" + MSG_KEYUNKNOWNMAP "%1!hs! este o configurație de taste necunoscută.\n" MSG_KEYNOCHARMAPS "Nu au fost încărcate configurații de caractere.\n" MSG_KEYNOKEYMAPS "Nu au fost încărcate configurații de taste.\n" - MSG_KEYNUMMAPS "În total există %1 configurații.\n" + MSG_KEYNUMMAPS "În total există %1!hs! configurații.\n" MSG_KEYBADMAP "Număr de configurație de taste nevalid, încercați «keys display»\n" MSG_KEYMAPSWITCHED "Configurația de taste a fost comutată.\n" END diff --git a/base/applications/network/telnet/lang/ru-RU.rc b/base/applications/network/telnet/lang/ru-RU.rc index 007c60c1f78..423f3f58105 100644 --- a/base/applications/network/telnet/lang/ru-RU.rc +++ b/base/applications/network/telnet/lang/ru-RU.rc @@ -9,25 +9,25 @@ BEGIN MSG_HELP "Команды можно сократить. Команды:\n\ncl[ose] закрыть текущее соединение\nop[en] подключиться к узлу\nq[uit] выйти из telnet\n" MSG_HELP_1 "ke[ys] изменить/показать раскладку\nse[t] изменить/показать опции\nz приостановить\n? h[elp] отобразить справку\n" MSG_INVCMD "Неверная команда. Введите ? для справки.\n" - MSG_ERROR "%1 не удалось.\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "Попытка %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "Подключение к %1. Для выхода нажмите ALT-%2.\n" + MSG_ERROR "%1!hs! не удалось.\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "Попытка %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "Подключение к %1!hs!. Для выхода нажмите ALT-%2!hs!.\n" MSG_TERMBYREM "Соединение прервано.\n" - MSG_KEYMAP "Загрузка %1 из %2.\n" + MSG_KEYMAP "Загрузка %1!hs! из %2!hs!.\n" MSG_ERRKEYMAP "Ошибка при загрузке раскладки.\n" - MSG_DUMPFILE "Запись вывода в файл %1.\n" - MSG_CONFIG "Загрузка параметров из %1.\n" - MSG_NOINI "Ошибка загрузки параметров из %1.\nЗагрузка параметров по умолчанию.\n" - MSG_BADVAL "Предупреждение: неправильная переменная %1.\n" + MSG_DUMPFILE "Запись вывода в файл %1!hs!.\n" + MSG_CONFIG "Загрузка параметров из %1!hs!.\n" + MSG_NOINI "Ошибка загрузки параметров из %1!hs!.\nЗагрузка параметров по умолчанию.\n" + MSG_BADVAL "Предупреждение: неправильная переменная %1!hs!.\n" MSG_NOSPAWN "Невозможно породить процесс.\n" - MSG_RESOLVING "Поиск узла: %1..." - MSG_NOSERVICE "TCP служба не найдена: %1.\n" - MSG_SIZEALIAS "Внимание: Размер псевдонима %1 слишком большой, игнорирование.\n" + MSG_RESOLVING "Поиск узла: %1!hs!..." + MSG_NOSERVICE "TCP служба не найдена: %1!hs!.\n" + MSG_SIZEALIAS "Внимание: Размер псевдонима %1!hs! слишком большой, игнорирование.\n" MSG_ERRPIPE "Ошибка: невозможно породить процесс для пайпа.\n" MSG_BADUSAGE "Ошибка: недопустимое использование команды.\n" - MSG_ALREADYCONNECTED "Уже подключен к %1.\n" + MSG_ALREADYCONNECTED "Уже подключен к %1!hs!.\n" MSG_WSAEINTR "Вызов функции прерван.\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "Отказано в доступе.\n" @@ -72,25 +72,25 @@ BEGIN MSG_WSATRY_AGAIN "Ненадежный узел не найден.\n" MSG_WSANO_RECOVERY "Это неустранимая ошибка.\n" MSG_WSANO_DATA "Действительное имя, без записи данных требуемого типаe.\n" - MSG_KEYNOVAL "[GLOBAL]: Нет значения для %1.\n" - MSG_KEYBADVAL "[GLOBAL]: Неверное значение для %1.\n" - MSG_KEYBADSTRUCT "%1: Неправильная структура.\n" - MSG_KEYBADCHARS "%1: Неверные символы? %1 -> %3.\n" - MSG_KEYUNEXPLINE "Неожиданная строка ""%1"".\n" + MSG_KEYNOVAL "[GLOBAL]: Нет значения для %1!hs!.\n" + MSG_KEYBADVAL "[GLOBAL]: Неверное значение для %1!hs!.\n" + MSG_KEYBADSTRUCT "%1!hs!: Неправильная структура.\n" + MSG_KEYBADCHARS "%1!hs!: Неверные символы? %1!hs! -> %3!hs!.\n" + MSG_KEYUNEXPLINE "Неожиданная строка ""%1!hs!"".\n" MSG_KEYUNEXPEOF "Неожиданный конец файла.\n" - MSG_KEYUNEXPTOK "Неожиданный символ %1.\n" - MSG_KEYUNEXPTOKIN "Неожиданный символ в %1.\n" + MSG_KEYUNEXPTOK "Неожиданный символ %1!hs!.\n" + MSG_KEYUNEXPTOKIN "Неожиданный символ в %1!hs!.\n" MSG_KEYUNEXP "Неожиданный конец файла или символ.\n" MSG_KEYNOGLOBAL "[GLOBAL] Не определено!\n" - MSG_KEYNOCONFIG "Нет [CONFIG %1].\n" - MSG_KEYUSECONFIG "Используются настройки: %1.\n" - MSG_KEYNOSWKEY "Нет клавиши переключения для ""%1"".\n" + MSG_KEYNOCONFIG "Нет [CONFIG %1!hs!].\n" + MSG_KEYUSECONFIG "Используются настройки: %1!hs!.\n" + MSG_KEYNOSWKEY "Нет клавиши переключения для ""%1!hs!"".\n" MSG_KEYCANNOTDEF "Нельзя указать клавишу изменения раскладки клавиатуры по умолчанию – игнорирование.\n" MSG_KEYDUPSWKEY "Эта кнопка уже назначина.\n" - MSG_KEYUNKNOWNMAP "Неизвестная раскладка %1.\n" + MSG_KEYUNKNOWNMAP "Неизвестная раскладка %1!hs!.\n" MSG_KEYNOCHARMAPS "Не загружена таблица символов.\n" MSG_KEYNOKEYMAPS "Не загружена раскладка.\n" - MSG_KEYNUMMAPS "Раскладка %1 уже существует.\n" + MSG_KEYNUMMAPS "Раскладка %1!hs! уже существует.\n" MSG_KEYBADMAP "Неправильный номер раскладки - попробуйте 'keys display'\n" MSG_KEYMAPSWITCHED "раскладка переключена.\n" END diff --git a/base/applications/network/telnet/lang/tr-TR.rc b/base/applications/network/telnet/lang/tr-TR.rc index 77c29b4c856..c051774738c 100644 --- a/base/applications/network/telnet/lang/tr-TR.rc +++ b/base/applications/network/telnet/lang/tr-TR.rc @@ -11,25 +11,25 @@ BEGIN MSG_HELP "Komutlar kısaltılmış olabilir. Komutlar:\n\ncl[ose] Şimdiki bağlantıyı kapat.\nop[en] Bir siteye bağlan.\nq[uit] Telnet'ten çık.\n" MSG_HELP_1 "ke[ys] Tuş haritasını değiştirir ya da görüntüler. (Seçenekleri görmek için keys yazınız.)\nse[t] Yapılandırma seçeneklerini görüntüler ya da değiştirir.\nz Askıya al.\n? h[elp] Yardım bilgisini yazdır.\n" MSG_INVCMD "Geçersiz komut. Yardım için ? yazınız.\n" - MSG_ERROR "%1 başarısız.\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "Deneniyor: %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "%1 anabilgisayarına bağlandı. Çıkış tuş kombinasyonu ALT-%2.\n" + MSG_ERROR "%1!hs! başarısız.\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "Deneniyor: %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "%1!hs! anabilgisayarına bağlandı. Çıkış tuş kombinasyonu ALT-%2!hs!.\n" MSG_TERMBYREM "Bağlantı sonlandırıldı.\n" - MSG_KEYMAP "%2'den %1 yükleniyor.\n" + MSG_KEYMAP "%2!hs!'den %1!hs! yükleniyor.\n" MSG_ERRKEYMAP "Klavye yerleşimi yüklemede hata.\n" - MSG_DUMPFILE "%1 dosyasına çıktı yazdırılıyor.\n" - MSG_CONFIG "%1'den yapılandırma ayarları yükleniyor.\n" - MSG_NOINI "%1 yapılandırma dosyasına yüklemede hata.\nVarsayılan ayarlar yükleniyor.\n" - MSG_BADVAL "Uyarı: Geçersiz değişken (%1).\n" + MSG_DUMPFILE "%1!hs! dosyasına çıktı yazdırılıyor.\n" + MSG_CONFIG "%1!hs!'den yapılandırma ayarları yükleniyor.\n" + MSG_NOINI "%1!hs! yapılandırma dosyasına yüklemede hata.\nVarsayılan ayarlar yükleniyor.\n" + MSG_BADVAL "Uyarı: Geçersiz değişken (%1!hs!).\n" MSG_NOSPAWN "İşlem oluşturulamıyor.\n" - MSG_RESOLVING "Anabilgisayara bakılıyor: %1..." - MSG_NOSERVICE "%1 TCP hizmeti bulunamadı.\n" - MSG_SIZEALIAS "Uyarı: %1 takma adının büyüklüğü çok büyük, yok sayılıyor.\n" + MSG_RESOLVING "Anabilgisayara bakılıyor: %1!hs!..." + MSG_NOSERVICE "%1!hs! TCP hizmeti bulunamadı.\n" + MSG_SIZEALIAS "Uyarı: %1!hs! takma adının büyüklüğü çok büyük, yok sayılıyor.\n" MSG_ERRPIPE "Hata: Boru için işlem oluşturulamıyor.\n" MSG_BADUSAGE "Hata: Komutun kullanımı geçersiz.\n" - MSG_ALREADYCONNECTED "%1'e zaten bağlanılmış.\n" + MSG_ALREADYCONNECTED "%1!hs!'e zaten bağlanılmış.\n" MSG_WSAEINTR "Fonksiyon çağrısı kesildi.\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "İzin geri çevrildi.\n" @@ -74,25 +74,25 @@ BEGIN MSG_WSATRY_AGAIN "Yetkili olmayan anabilgisayar bulunamadı.\n" MSG_WSANO_RECOVERY "Bu bir karşılanamayan hatadır.\n" MSG_WSANO_DATA "Geçerli ad, istenilen tür kaydı verisi yok.\n" - MSG_KEYNOVAL "[GENEL]: %1 için değer yok.\n" - MSG_KEYBADVAL "[GENEL]: %1 için geçersiz değer.\n" - MSG_KEYBADSTRUCT "%1: Geçersiz yapı.\n" - MSG_KEYBADCHARS "%1: Geçersiz karakterler? %1 -> %3.\n" - MSG_KEYUNEXPLINE "Beklenmeyen satır: ""%1"".\n" + MSG_KEYNOVAL "[GENEL]: %1!hs! için değer yok.\n" + MSG_KEYBADVAL "[GENEL]: %1!hs! için geçersiz değer.\n" + MSG_KEYBADSTRUCT "%1!hs!: Geçersiz yapı.\n" + MSG_KEYBADCHARS "%1!hs!: Geçersiz karakterler? %1!hs! -> %3!hs!.\n" + MSG_KEYUNEXPLINE "Beklenmeyen satır: ""%1!hs!"".\n" MSG_KEYUNEXPEOF "Beklemeyen dosya sonu.\n" - MSG_KEYUNEXPTOK "Beklenmeyen simge: %1.\n" - MSG_KEYUNEXPTOKIN "%1'de beklenmeyen simge.\n" + MSG_KEYUNEXPTOK "Beklenmeyen simge: %1!hs!.\n" + MSG_KEYUNEXPTOKIN "%1!hs!'de beklenmeyen simge.\n" MSG_KEYUNEXP "Beklenmeyen dosya sonu ya da simge.\n" MSG_KEYNOGLOBAL "[GENEL] tanımlama yok!\n" - MSG_KEYNOCONFIG "[CONFIG %1] yok.\n" - MSG_KEYUSECONFIG "Yapılandırmayı kullan: %1.\n" - MSG_KEYNOSWKEY """%1"" için geçiş anahtarı yok.\n" + MSG_KEYNOCONFIG "[CONFIG %1!hs!] yok.\n" + MSG_KEYUSECONFIG "Yapılandırmayı kullan: %1!hs!.\n" + MSG_KEYNOSWKEY """%1!hs!"" için geçiş anahtarı yok.\n" MSG_KEYCANNOTDEF "Varsayılan anahtar haritası için geçiş anahtarı tanımlayamazsınız - yok sayıldı.\n" MSG_KEYDUPSWKEY "Aynı geçiş anahtarı.\n" - MSG_KEYUNKNOWNMAP "Bilinmeyen anahtar haritası: %1.\n" + MSG_KEYUNKNOWNMAP "Bilinmeyen anahtar haritası: %1!hs!.\n" MSG_KEYNOCHARMAPS "Bir karakter haritası yüklenmedi.\n" MSG_KEYNOKEYMAPS "Bir anahtar haritası yüklenmedi.\n" - MSG_KEYNUMMAPS "Burada %1 harita var.\n" + MSG_KEYNUMMAPS "Burada %1!hs! harita var.\n" MSG_KEYBADMAP "Geçersiz anahtar haritası numarası, ""keys display""ı deneyiniz.\n" MSG_KEYMAPSWITCHED "Anahtar haritasına geçildi.\n" END diff --git a/base/applications/network/telnet/lang/zh-CN.rc b/base/applications/network/telnet/lang/zh-CN.rc index b9d70f10a9a..e96ce2b7b8b 100644 --- a/base/applications/network/telnet/lang/zh-CN.rc +++ b/base/applications/network/telnet/lang/zh-CN.rc @@ -17,25 +17,25 @@ BEGIN MSG_HELP "命令可以被简写。命令有:\n\ncl[ose] 关闭当前连接\nop[en] 连接到一个站点\nq[uit] 退出 telnet\n" MSG_HELP_1 "ke[ys] 修改或显示按键映射(写入一些键来查看选项)\nse[t] 显示或修改配置选项\nz 暂停\n? h[elp] 打印帮助信息\n" MSG_INVCMD "无效命令。输入 ? 获得帮助。\n" - MSG_ERROR "%1 失败。\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "正在尝试 %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "已连接到 %1。Escape 键是 ALT-%2。\n" + MSG_ERROR "%1!hs! 失败。\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "正在尝试 %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "已连接到 %1!hs!。Escape 键是 ALT-%2!hs!。\n" MSG_TERMBYREM "连接结束。\n" - MSG_KEYMAP "正在从 %2 加载 %1。\n" + MSG_KEYMAP "正在从 %2!hs! 加载 %1!hs!。\n" MSG_ERRKEYMAP "加载按键映射时发生错误。\n" - MSG_DUMPFILE "正在将输出写入到文件 %1 中。\n" - MSG_CONFIG "正在从 %1 中加载配置选项。\n" - MSG_NOINI "从配置文件 %1 中加载发生错误。\n正在加载默认选项。\n" - MSG_BADVAL "警告:无效变量 %1。\n" + MSG_DUMPFILE "正在将输出写入到文件 %1!hs! 中。\n" + MSG_CONFIG "正在从 %1!hs! 中加载配置选项。\n" + MSG_NOINI "从配置文件 %1!hs! 中加载发生错误。\n正在加载默认选项。\n" + MSG_BADVAL "警告:无效变量 %1!hs!。\n" MSG_NOSPAWN "无法创建进程。\n" - MSG_RESOLVING "正在查找主机:%1..." - MSG_NOSERVICE "无法找到 TCP 服务 %1。\n" - MSG_SIZEALIAS "警告:别名 %1 过大,已忽略。\n" + MSG_RESOLVING "正在查找主机:%1!hs!..." + MSG_NOSERVICE "无法找到 TCP 服务 %1!hs!。\n" + MSG_SIZEALIAS "警告:别名 %1!hs! 过大,已忽略。\n" MSG_ERRPIPE "错误:无法为管道创建进程。\n" MSG_BADUSAGE "错误:命令的用法无效。\n" - MSG_ALREADYCONNECTED "已经连接到 %1。\n" + MSG_ALREADYCONNECTED "已经连接到 %1!hs!。\n" MSG_WSAEINTR "函数调用已被中断。\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "拒绝访问。\n" @@ -80,25 +80,25 @@ BEGIN MSG_WSATRY_AGAIN "未找到非授权主机。\n" MSG_WSANO_RECOVERY "这是一个无法恢复的错误。\n" MSG_WSANO_DATA "名称有效,但是没有与请求类型相同的数据记录。\n" - MSG_KEYNOVAL "[全局]:没有 %1 的值。\n" - MSG_KEYBADVAL "[全局]:%1 的值有错误。\n" - MSG_KEYBADSTRUCT "%1:错误的结构。\n" - MSG_KEYBADCHARS "%1:错误的字符?%1 -> %3。\n" - MSG_KEYUNEXPLINE "未预料的行 ""%1""。\n" + MSG_KEYNOVAL "[全局]:没有 %1!hs! 的值。\n" + MSG_KEYBADVAL "[全局]:%1!hs! 的值有错误。\n" + MSG_KEYBADSTRUCT "%1!hs!:错误的结构。\n" + MSG_KEYBADCHARS "%1!hs!:错误的字符?%1!hs! -> %3!hs!。\n" + MSG_KEYUNEXPLINE "未预料的行 ""%1!hs!""。\n" MSG_KEYUNEXPEOF "未预料的文件结束。\n" - MSG_KEYUNEXPTOK "未预料的令牌 %1。\n" - MSG_KEYUNEXPTOKIN "未预料的 %1 中的令牌。\n" + MSG_KEYUNEXPTOK "未预料的令牌 %1!hs!。\n" + MSG_KEYUNEXPTOKIN "未预料的 %1!hs! 中的令牌。\n" MSG_KEYUNEXP "未预料的文件或令牌结束。\n" MSG_KEYNOGLOBAL "没有 [全局] 定义!\n" - MSG_KEYNOCONFIG "没有 [配置 %1]。\n" - MSG_KEYUSECONFIG "使用配置:%1。\n" - MSG_KEYNOSWKEY "没有“%1”的切换键。\n" + MSG_KEYNOCONFIG "没有 [配置 %1!hs!]。\n" + MSG_KEYUSECONFIG "使用配置:%1!hs!。\n" + MSG_KEYNOSWKEY "没有“%1!hs!”的切换键。\n" MSG_KEYCANNOTDEF "您不能定义默认按键映射的切换键 - 已忽略。\n" MSG_KEYDUPSWKEY "重复的切换键。\n" - MSG_KEYUNKNOWNMAP "未知的按键映射 %1。\n" + MSG_KEYUNKNOWNMAP "未知的按键映射 %1!hs!。\n" MSG_KEYNOCHARMAPS "没有加载的字符映射。\n" MSG_KEYNOKEYMAPS "没有加载的按键映射。\n" - MSG_KEYNUMMAPS "有 %1 个映射。\n" + MSG_KEYNUMMAPS "有 %1!hs! 个映射。\n" MSG_KEYBADMAP "错误的按键映射码 - 请尝试“keys display”\n" MSG_KEYMAPSWITCHED "按键映射已经切换。\n" END diff --git a/base/applications/network/telnet/lang/zh-TW.rc b/base/applications/network/telnet/lang/zh-TW.rc index 8be539d105d..56cd84ecbf8 100644 --- a/base/applications/network/telnet/lang/zh-TW.rc +++ b/base/applications/network/telnet/lang/zh-TW.rc @@ -16,25 +16,25 @@ BEGIN MSG_HELP "命令可以被簡寫。 命令有:\n\ncl[ose] 關閉目前連線\nop[en] 連線到一個網站\nq[uit] 退出 telnet\n" MSG_HELP_1 "ke[ys] 修改或顯示按鍵映射 (寫入一些鍵來查看選項)\nse[t] 顯示或修改配置選項\nz 暫停\n? h[elp] 列印說明資訊\n" MSG_INVCMD "無效的命令。輸入 ? 以取得說明。\n" - MSG_ERROR "%1 失敗。\n" - MSG_INFO "%1\n" - MSG_WARNING "%1\n" - MSG_TRYING "正在嘗試 %1.%2.%3.%4:%5...\n" - MSG_CONNECTED "已經連線到 %1。Escape 鍵是 ALT-%2.\n" + MSG_ERROR "%1!hs! 失敗。\n" + MSG_INFO "%1!hs!\n" + MSG_WARNING "%1!hs!\n" + MSG_TRYING "正在嘗試 %1!hs!.%2!hs!.%3!hs!.%4!hs!:%5!hs!...\n" + MSG_CONNECTED "已經連線到 %1!hs!。Escape 鍵是 ALT-%2!hs!.\n" MSG_TERMBYREM "連線結束。\n" - MSG_KEYMAP "正在從 %2 載入 %1。\n" + MSG_KEYMAP "正在從 %2!hs! 載入 %1!hs!。\n" MSG_ERRKEYMAP "載入按鍵映射時發生錯誤。\n" - MSG_DUMPFILE "正在將輸出寫入到檔案 %1 中。\n" - MSG_CONFIG "正在從 %1 中載入配置選項。\n" - MSG_NOINI "從配置檔案 %1 中載入發生錯誤。\n正在載入預設選項。\n" - MSG_BADVAL "警告: 無效的變量 %1。\n" + MSG_DUMPFILE "正在將輸出寫入到檔案 %1!hs! 中。\n" + MSG_CONFIG "正在從 %1!hs! 中載入配置選項。\n" + MSG_NOINI "從配置檔案 %1!hs! 中載入發生錯誤。\n正在載入預設選項。\n" + MSG_BADVAL "警告: 無效的變量 %1!hs!。\n" MSG_NOSPAWN "無法建立進程。\n" - MSG_RESOLVING "正在查找主機: %1..." - MSG_NOSERVICE "無法找到 TCP 服務 %1。\n" - MSG_SIZEALIAS "警告: 别名 %1 太大了,正在忽略。\n" + MSG_RESOLVING "正在查找主機: %1!hs!..." + MSG_NOSERVICE "無法找到 TCP 服務 %1!hs!。\n" + MSG_SIZEALIAS "警告: 别名 %1!hs! 太大了,正在忽略。\n" MSG_ERRPIPE "錯誤: 無法為管道建立進程。\n" MSG_BADUSAGE "錯誤: 無效的命令用法。\n" - MSG_ALREADYCONNECTED "已經連線到 %1。\n" + MSG_ALREADYCONNECTED "已經連線到 %1!hs!。\n" MSG_WSAEINTR "中斷的函數調用。\n" MSG_WSAEBADF "WSAEBADF\n" MSG_WSAEACCESS "拒絕存取。\n" @@ -79,25 +79,25 @@ BEGIN MSG_WSATRY_AGAIN "找不到非授權主機。\n" MSG_WSANO_RECOVERY "這是一個無法恢復的錯誤。\n" MSG_WSANO_DATA "名稱有效,但沒有請求數據記錄的類型。\n" - MSG_KEYNOVAL "[全域]: 沒有 %1 的值。\n" - MSG_KEYBADVAL "[全域]: %1 的值有錯誤。\n" - MSG_KEYBADSTRUCT "%1: 錯誤的結構。\n" - MSG_KEYBADCHARS "%1: 錯誤的字符?%1 -> %3。\n" - MSG_KEYUNEXPLINE "未預期的行 ""%1""。\n" + MSG_KEYNOVAL "[全域]: 沒有 %1!hs! 的值。\n" + MSG_KEYBADVAL "[全域]: %1!hs! 的值有錯誤。\n" + MSG_KEYBADSTRUCT "%1!hs!: 錯誤的結構。\n" + MSG_KEYBADCHARS "%1!hs!: 錯誤的字符?%1!hs! -> %3!hs!。\n" + MSG_KEYUNEXPLINE "未預期的行 ""%1!hs!""。\n" MSG_KEYUNEXPEOF "未預期的檔案結尾。\n" - MSG_KEYUNEXPTOK "未預期的權杖 %1。\n" - MSG_KEYUNEXPTOKIN "在 %1 中出現未預期的權杖。\n" + MSG_KEYUNEXPTOK "未預期的權杖 %1!hs!。\n" + MSG_KEYUNEXPTOKIN "在 %1!hs! 中出現未預期的權杖。\n" MSG_KEYUNEXP "未預期的檔案結尾或權杖。\n" MSG_KEYNOGLOBAL "沒有 [全域] 定義!\n" - MSG_KEYNOCONFIG "沒有 [配置 %1]。\n" - MSG_KEYUSECONFIG "使用配置: %1。\n" - MSG_KEYNOSWKEY "沒有 ""%1"" 的切換鍵。\n" + MSG_KEYNOCONFIG "沒有 [配置 %1!hs!]。\n" + MSG_KEYUSECONFIG "使用配置: %1!hs!。\n" + MSG_KEYNOSWKEY "沒有 ""%1!hs!"" 的切換鍵。\n" MSG_KEYCANNOTDEF "您不能定義預設按鍵映射的切換鍵 - 已略過。\n" MSG_KEYDUPSWKEY "重複的切換鍵。\n" - MSG_KEYUNKNOWNMAP "未知的按鍵映射 %1。\n" + MSG_KEYUNKNOWNMAP "未知的按鍵映射 %1!hs!。\n" MSG_KEYNOCHARMAPS "沒有已載入的字符映射。\n" MSG_KEYNOKEYMAPS "沒有已載入的按鍵映射。\n" - MSG_KEYNUMMAPS "有 %1 個映射。\n" + MSG_KEYNUMMAPS "有 %1!hs! 個映射。\n" MSG_KEYBADMAP "錯誤的按鍵映射碼 - 請嘗試 'keys display'\n" MSG_KEYMAPSWITCHED "按鍵映射已經切換。\n" END diff --git a/base/applications/network/telnet/precomp.h b/base/applications/network/telnet/precomp.h index c678b12c462..bb215f3f71d 100644 --- a/base/applications/network/telnet/precomp.h +++ b/base/applications/network/telnet/precomp.h @@ -9,6 +9,7 @@ #include #include #include +#include #define _INC_WINDOWS #include diff --git a/base/applications/network/telnet/src/tnerror.cpp b/base/applications/network/telnet/src/tnerror.cpp index 5278cd266cf..82fda0b2180 100644 --- a/base/applications/network/telnet/src/tnerror.cpp +++ b/base/applications/network/telnet/src/tnerror.cpp @@ -81,6 +81,47 @@ int printit(const char * it){ return 0; } +#ifdef __REACTOS__ +int wprintit(LPCWSTR it) +{ + DWORD numwritten; + if (!ini.get_output_redir()) + { + if (!WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), + it, wcslen(it), &numwritten, NULL)) + { + return -1; + } + } + else + { + // calculate the number of bytes needed to store the UTF-8 string + int cbMultibyte = WideCharToMultiByte(CP_UTF8, 0, it, -1, NULL, 0, NULL, NULL); + if (cbMultibyte == 0) + return 0; + if (cbMultibyte < 0) + return -1; + // allocate the buffer for the UTF-8 string + char* szBuffer = new char[cbMultibyte]; + if (!szBuffer) + return -1; + + bool bSuccess = false; + if (WideCharToMultiByte(CP_UTF8, 0, it, -1, szBuffer, cbMultibyte, NULL, NULL) && + WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), + szBuffer, cbMultibyte, &numwritten, NULL)) + { + bSuccess = true; + } + + delete[] szBuffer; + if (!bSuccess) + return -1; + } + return 0; +} +#endif + int printm(LPTSTR szModule, BOOL fSystem, DWORD dwMessageId, ...) { int Result = 0; @@ -91,7 +132,23 @@ int printm(LPTSTR szModule, BOOL fSystem, DWORD dwMessageId, ...) va_list Ellipsis; va_start(Ellipsis, dwMessageId); +#ifdef __REACTOS__ + LPWSTR pszMessage = NULL; + DWORD dwMessage = 0; + if(fSystem) { + dwMessage = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM, hModule, dwMessageId, + LANG_USER_DEFAULT, (LPWSTR)&pszMessage, 128, &Ellipsis); + } else { + // we will use a string table. + WCHAR wszString[256]; + if(LoadStringW(0, dwMessageId, wszString, sizeof(wszString) / sizeof(*wszString))) + dwMessage = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_STRING, wszString, dwMessageId, + LANG_USER_DEFAULT, (LPWSTR)&pszMessage, sizeof(wszString) / sizeof(*wszString), &Ellipsis); + } +#else LPTSTR pszMessage = 0; DWORD dwMessage = 0; if(fSystem) { @@ -106,6 +163,7 @@ int printm(LPTSTR szModule, BOOL fSystem, DWORD dwMessageId, ...) FORMAT_MESSAGE_FROM_STRING, szString, dwMessageId, LANG_USER_DEFAULT, (LPTSTR)&pszMessage, 256, &Ellipsis); } +#endif va_end(Ellipsis); @@ -113,8 +171,11 @@ int printm(LPTSTR szModule, BOOL fSystem, DWORD dwMessageId, ...) FreeLibrary(hModule); if (dwMessage) { - +#ifdef __REACTOS__ + Result = wprintit(pszMessage); +#else Result = printit(pszMessage); +#endif LocalFree(pszMessage); }