Страницы

Поиск по вопросам

пятница, 3 января 2020 г.

Как перевести текст из одной раскладки в другую (“Home” --> “Рщьу”)

#c_sharp #net


Есть слово на английском Home его нужно перевести в слово Рщьу.

Т.е. перевести из английской раскладки в русскую. Понятно, что для двух раскладок
можно составить словарь перевода. 

Есть ли готовые инструменты для нескольких раскладок?

Например для следующих переводов:

EN > RU

RU > EN

ES > EN

EN > ES

JA > EN

ZH > EN

AR > EN
    


Ответы

Ответ 1



Можно попробовать сделать так: [DllImport("user32.dll")] public static extern int ToUnicode(uint virtualKeyCode, uint scanCode, byte[] keyboardState, [Out, MarshalAs(UnmanagedType.LPWStr, SizeConst = 64)] StringBuilder receivingBuffer, int bufferSize, uint flags); static char GetChar(char key) { bool isUpper = char.IsUpper(key); var buf = new StringBuilder(256); var keyboardState = new byte[256]; ToUnicode((uint)char.ToUpper(key), 0, keyboardState, buf, 256, 0); return isUpper ? char.ToUpper(buf[0]) : buf[0]; } static void Main(string[] args) { var str = "Home"; for (int i = 0; i < str.Length; i++) { Console.Write(GetChar(str[i])); } } Для русского языка выведет: Рщьу

Ответ 2



Пример (но может я не понял сути вопроса): using System.Globalization; //пространство имен для использования языков InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("ru-RU")); Eng "en-US"

Комментариев нет:

Отправить комментарий