2012-03-12 3 views
3

У меня есть приложение, которое принимает входные данные на двух языках (на английском и арабском языках) Я проверяю входное текстовое поле, логика проверки не является одинаковой для английского и арабского языков, поэтому Мне нужно знать, что это язык, пользователь печатаетКак определить язык ввода с клавиатуры с помощью JQuery

всех решений я наткнулся определить язык по умолчанию для системы и браузера, но я ничего не нашел помог мне определить текущий язык ввода

ответ

0

Вы можете использовать ActiveXObject для отправки входного ключа скажите 'a' и прочитайте его значение unicode/ascii. Если его английский еще не английский. Проверьте этот вопрос:

Get the current keyboard layout language in JavaScript

+0

такое же решение не работает, но это помогло мне что-то понять, мне нужно будет узнайте больше об этом, но прежде чем я его рассмотрю, и я опубликую то, что нашел здесь –

0

Вы можете сделать это с помощью Google's AJAX Language API

var content = "your text"; 
google.language.detect(content, function(result) { 
    if (!result.error) { 
    var language = 'unknown'; 
    for (lang in google.language.Languages) { 
     if (google.language.Languages[lang] == result.language) { 
     language = lang; 
     break; 
     } 
    } 
    // Now use the variable `language` 
    } 
}); 
+0

, спасибо за помощь в моей проблеме, но я пробовал это решение, и это занимает много времени, и использование jquery состояло в том, чтобы сэкономить время в первой место, кроме того, я думаю, что он всегда возвращает одинаковое значение для обоих языков. –

+0

@MahaKhairy, его не так уж и непонятно. Он возвращает почти правильные языки, если у него много символов для чтения, и все они кодируются в кодировке UTF8. Но это не всегда 100% – Starx

+0

спасибо за ваш комментарий Я не много знал об этом google api, возможно, достаточное состояние символов не было применено, но мое приложение должно работать даже с одним символом, в любом случае вызов занимает много времени и мне нужно применить эту проверку с каждым нажатием клавиши –

1

хорошо здесь это решение, которое работает для меня. Обратите внимание, что в моем приложении я знаю точно, язык ввода будет один из двух языков либо ввода является английским или арабским так вот что я сделал

  var msgText = entered message text; 
      var textLength = msgText.length; // entered message length 
      var isEnglish = true; 
      for (var index = 0; index <= textLength; index = index + 1) { 

       if (msgText.charCodeAt(index) > 160) { 
        //Not English 
        isEnglish=false; 
        break; 
       } 
      } 

в предыдущем примере, что это то, что мне было нужно, если единственный символ - арабский, весь текст должен быть подтвержден как арабский, поэтому я добавил переменную isEnglish = true по умолчанию и будет изменяться только в том случае, если символ в строке не является английским. Я повторил символы в строке, используя charCodeAt (index) который возвращает номер символа ISO Latin-1. , используя таблицу на странице this. Я смог решить, что максимальное число в этом наборе, которое представляет английские символы, равно 160, и