https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e3e520d15402eebe2e20e…
commit e3e520d15402eebe2e20edad8a0b54973057daf3
Author: Marcin Jabłoński <nnxcomputing(a)gmail.com>
AuthorDate: Thu Jan 16 18:24:04 2025 +0100
Commit: GitHub <noreply(a)github.com>
CommitDate: Thu Jan 16 18:24:04 2025 +0100
[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`).
---
base/applications/network/telnet/lang/en-US.rc | 52 +++++++++----------
base/applications/network/telnet/lang/pl-PL.rc | 52 +++++++++----------
base/applications/network/telnet/lang/ro-RO.rc | 52 +++++++++----------
base/applications/network/telnet/lang/ru-RU.rc | 52 +++++++++----------
base/applications/network/telnet/lang/tr-TR.rc | 52 +++++++++----------
base/applications/network/telnet/lang/zh-CN.rc | 52 +++++++++----------
base/applications/network/telnet/lang/zh-TW.rc | 52 +++++++++----------
base/applications/network/telnet/precomp.h | 1 +
base/applications/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 <winbase.h>
#include <winuser.h>
#include <wincon.h>
+#include <winnls.h>
#define _INC_WINDOWS
#include <winsock.h>
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);
}