人物/语言

时间:2010-09-18 19:28:08

标签: c# asp.net asp.net-mvc

我刚开发了一个简单的asp.net mvc应用项目,仅供英文使用。我想阻止用户输入除英语之外的语言的任何输入。是否有可能知道用户在文本框或编辑器上写东西时是否输入其他语言以便给出弹出消息?

5 个答案:

答案 0 :(得分:3)

您可以将输入框限制为拉丁字符,但无法自动查看用户输入的内容是英语,芬兰语还是挪威语。他们都大多使用a-z。 a-z之外的任何字符都可以给你一个指示,但是也需要用英语允许某些重音,所以它不是100%。

Google Translate公开了一个用于检测文字语言的JavaScript API。

答案 1 :(得分:3)

使用以下代码:

<p>Note that this community uses the English language exclusively, so please be
considerate and write your posts in English. Thank you!</p>

答案 2 :(得分:0)

检查拉丁语26

如果您想确保提交任何非英文字母,您可以简单地验证它们是否超出A-Z,a-z,0-9和正常的标点符号范围。听起来你想要检测和拒绝常规的非拉丁字符。

检测用户的操作系统设置,键盘设置不是最好的方法,因为用户可以连接多个键盘,并使用复制/粘贴。

用户界面验证

在用户界面级别,您可以创建一个jQuery方法,该方法将检查文本框的值是否超出可接受的范围。也许这是A-Z,a-z和数字。你可以在事件onBlur上做到这一点。请注意,您可能希望允许'.

$('#customerName').blur(function() {
    var isAlphaNumeric;
    //implementation of checking a-z, A-Z, 0-9, etc.
    alert(isAlphaNumeric);
});

控制器验证

如果您还希望在控制器级别实现此功能,则可以对传入值运行正则表达式。

public ActionMethod CreateCustomer(string custName)
{
    if (IsAcceptableRange(custName))
    { 
       //continue
    }
}

public bool IsAcceptableRange(string input)
{
   //whitelist all the valid inputs here. be sure to include 
   //space, period, apostrophe, hypen, etc
   Regex alphaNumericPattern=new Regex("[^a-zA-Z0-9]");
   return !alphaNumericPattern.IsMatch(input); 
}

答案 3 :(得分:0)

你可以做两个测试。一个是找出在用户机器上设置的cultureinfo:

http://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture.aspx

这会给你他们当前的文化背景,这是一个开始。当然,您可以将您的设置设为“英语”,但仍然使用俄语输入,并且大多数字母都是相同的。

所以下一步是使用这个来发现语言:http://www.google.com/uds/samples/language/detect.html

根据在线讨论,这不是最好的,但它是一个开始的地方。不过,我确信那里有更好的自然语言标识符。

答案 4 :(得分:0)

谷歌翻译引用了两个答案,但我想补充说, Microsoft Word API 也可能用于检测语言,就像Word用于检查拼写一样。

肯定不是最佳解决方案,因为Microsoft Office的语言检测效果不佳(恕我直言),但如果在每个发布的消息上向Google或其他远程服务发出Web请求不是溶液

此外,通过Microsoft Word API检查拼写也很有用。如果在使用英语检查时消息中包含大量拼写错误的单词,可能是因为该消息是用另一种语言编写的(或者该消息的作者写得太差了。)

最后,我完全赞同Matti Virkkunen。确保消息以英文书写的最好,也许唯一的方法是要求用户用英文写作。否则,它与实施obscenity filters一样糟糕。