2 つの言語 (英語とアラビア語) での入力を受け入れるアプリケーションがあります。入力テキスト ボックスを検証しています。検証ロジックは英語とアラビア語で同じではないため、ユーザーが入力している言語を知る必要があります。
私が遭遇したすべてのソリューションは、システムとブラウザのデフォルト言語を決定しましたが、現在の入力言語を決定するのに役立つものは何も見つかりませんでした
2 つの言語 (英語とアラビア語) での入力を受け入れるアプリケーションがあります。入力テキスト ボックスを検証しています。検証ロジックは英語とアラビア語で同じではないため、ユーザーが入力している言語を知る必要があります。
私が遭遇したすべてのソリューションは、システムとブラウザのデフォルト言語を決定しましたが、現在の入力言語を決定するのに役立つものは何も見つかりませんでした
ここに私のために働いた解決策があります。私のアプリケーションでは、入力言語が英語またはアラビア語の2つの言語のいずれかになることが確実にわかっていることに注意してください。
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 を追加し、文字列内の文字が英語でない場合にのみ変更されます。 ISO Latin-1 Character Number を返す charCodeAt(index) を使用した文字列内の文字。このページの表を使用して、英語の文字を表すこのセットの最大数は 160 であると判断できました。
ActiveXObjectを使用して、「a」などの入力キーを送信し、そのユニコード/ASCII値を読み取ることができます。その97の場合、その英語はそうではありません。この質問をチェックしてください:
これは、 Google の AJAX 言語 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`
}
});