#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"