Есть слово на английском Home его нужно перевести в слово Рщьу.
Т.е. перевести из английской раскладки в русскую. Понятно, что для двух раскладок можно составить словарь перевода.
Есть ли готовые инструменты для нескольких раскладок?
Например для следующих переводов:
EN > RU
RU > EN
ES > EN
EN > ES
JA > EN
ZH > EN
AR > EN
Можно попробовать сделать так:
[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]));
}
}
Для русского языка выведет: Рщьу
Пример (но может я не понял сути вопроса):
using System.Globalization; //пространство имен для использования языков
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("ru-RU"));
Eng "en-US"
Продвижение своими сайтами как стратегия роста и независимости