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

340
03 августа 2017, 22:19

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

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

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

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

EN > RU

RU > EN

ES > EN

EN > ES

JA > EN

ZH > EN

AR > EN

Answer 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]));
    }
}

Для русского языка выведет: Рщьу

Answer 2

Пример (но может я не понял сути вопроса):

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

Eng "en-US"

READ ALSO
Получить Exception из BackgroundWorker

Получить Exception из BackgroundWorker

Перерыл интернет и не смог найти ответа на свой вопросИспользую backgroundworker, запускаю его в работу таким методом async void bw_DoWork(object sender, DoWorkEventArgs...

369
Использование команд и сервисной шины

Использование команд и сервисной шины

Предположим, есть веб-сервис, который принимает POST-запрос на регистрацию пользователяПервоначальная реализация (намеренно очень упрощенная):

353
Не отображает Particle sysme в 2Д игре

Не отображает Particle sysme в 2Д игре

Привет! создал первую 2Д игру, добавил партиклы, но они не отображаются над картинкой

221