Is there a way to determine what is currently used to set the input language?

Basically I want to know that the system input language is currently turned on (for users who have several language input methods). This will determine if the text direction <textarea> should be rtl or not.

Remember that this setting may change after the page loads.

Is there an easy way to do this in JavaScript / jQuery?

+4
source share
3 answers

There is no in the browser to determine what the current keyboard layout (input language) is. As mentioned in @kirilloid, one of the possible ways to solve the problem is to check the keyup for keyup and determine the language from this.

+5
source

Javascript does not have access to the Accept-Language HTTP header, which sends the browser this information to the server.

This means that you will have to use server-side scripts anyway and send the Accept-Language value as a javascript variable.

If you want to test it dynamically, you can make an ajax call on the server side of a script that simply returns the Accept-Language header from the ajax request. This way, you will probably catch those who change their language settings after the page loads.

+3
source

I came across this situation, so I wrote a small jQuery plugin for this:

 $.fn.checkDirection = function() { var dir = checkRTL(this.val()[0]) ? 'RTL' : 'LTR'; this.css("direction", dir); function checkRTL(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); } }; 

Basically, as soon as the user starts typing, he will check the language direction and adjust the direction of the selection accordingly. Usage will be as follows:

 $('textarea').on('input', function(){ $(this).checkDirection(); }); 
0
source

Source: https://habr.com/ru/post/1399205/


All Articles