检测用户输入语言javascript

detect user input language javascript

本文关键字:javascript 语言 输入 用户 检测      更新时间:2023-09-26

是否有一种方法可以检测用户在输入/文本区字段中输入的语言?我在facebook上看到过这样的情况,如果用户开始用RTL语言输入,那么光标就会移动到输入框的右侧。我试着找,但看不到任何想法,感谢任何帮助

https://stackoverflow.com/a/14824756/104380

我想出了一个新的,更短的解决方案:

function isRTL(s){           
    var ltrChars    = 'A-Za-z'u00C0-'u00D6'u00D8-'u00F6'u00F8-'u02B8'u0300-'u0590'u0800-'u1FFF'+''u2C00-'uFB1C'uFDFE-'uFE6F'uFEFD-'uFFFF',
        rtlChars    = ''u0591-'u07FF'uFB1D-'uFDFD'uFE70-'uFEFC',
        rtlDirCheck = new RegExp('^[^'+ltrChars+']*['+rtlChars+']');
    return rtlDirCheck.test(s);
};

操场上页

<input type="txt" id="give_lang"></br>
<button onclick='lngtype()'>Language</button>
<div id="lang_her">0</div>
<script type="text/javascript">
  function lngtype(text) {
  var text = document.getElementById("give_lang").value.replace(/'s/g); //read input value, and remove "space" by replace 's 
  //Dictionary for Unicode range of the languages
  var langdic = {
    "arabic" : /['u0600-'u06FF]/,
    "persian" : /['u0750-'u077F]/,
    "Hebrew" : /['u0590-'u05FF]/,
    "Syriac" : /['u0700-'u074F]/,
    "Bengali" : /['u0980-'u09FF]/,
    "Ethiopic" : /['u1200-'u137F]/,
    "Greek and Coptic" : /['u0370-'u03FF]/,
    "Georgian" : /['u10A0-'u10FF]/,
    "Thai" : /['u0E00-'u0E7F]/,
    "english" : /^[a-zA-Z]+$/
      //add other languages her
  }  
  //const keys = Object.keys(langdic); //read  keys
  //const keys = Object.values(langdic); //read  values
  const keys = Object.entries(langdic); // read  keys and values from the dictionary
  Object.entries(langdic).forEach(([key, value]) => {  // loop to read all the dictionary items if not true
    if (value.test(text) == true){   //Check Unicode to see which one is true
      return document.getElementById("lang_her").innerHTML = key; //print language name if unicode true   
    }
  });
  }
</script>