Javascript 当本地化被纳入等式时,如何接近字符串长度约束?

Javascript 当本地化被纳入等式时,如何接近字符串长度约束?,javascript,web-applications,localization,internationalization,Javascript,Web Applications,Localization,Internationalization,一旦有搜索输入。 它负责根据用户输入过滤表中的数据。 但是这个搜索输入很特殊:除非输入至少3个字符,否则它不会做任何事情。 不是因为它懒惰,而是因为它在其他方面没有意义 一切都很好,直到一种新的和陌生的(与英语相比)语言来到城里。 它是日语,现在最小字符串长度3是愚蠢和无用的 我把那个故事的最后几页弄丢了。有人记得它是如何结束的吗?我想这主要取决于你从哪里得到最小长度变量。如果是硬编码的,您可能最好使用动态国际化模块: int.getMinStringLength(int.getCurrentL

一旦有搜索输入。
它负责根据用户输入过滤表中的数据。
但是这个搜索输入很特殊:除非输入至少3个字符,否则它不会做任何事情。
不是因为它懒惰,而是因为它在其他方面没有意义

一切都很好,直到一种新的和陌生的(与英语相比)语言来到城里。
它是日语,现在最小字符串长度3是愚蠢和无用的


我把那个故事的最后几页弄丢了。有人记得它是如何结束的吗?

我想这主要取决于你从哪里得到最小长度变量。如果是硬编码的,您可能最好使用动态国际化模块:

int.getMinStringLength(int.getCurrentLanguage())
要么您有一个动态绑定框架,比如AngularJS,要么在用户更改语言时更新该模块


现在,您可能希望通过使用分组属性(如“verbose”和“condensed”)对支持的语言进行排序。

为了解决此问题,您显然需要确定用户的输入是否属于某些脚本。最明显的方法是使用:

唯一的问题是,JavaScript不支持这种开箱即用的正则表达式。无论如何,您很幸运——有一个名为的JS库,它的附加组件似乎正是您所需要的。现在的问题是,您是想要求非日语或非汉语用户至少输入三个字符,还是想要求其他用户输入三个字符——某些脚本(拉丁语、通用语、西里尔语、希腊语和希伯来语)至少输入三个字符,同时允许在一个字符上搜索其他任何字符。我建议第二种解决方案:

if (XRegExp('[\\p{Latin}\\p{Common}\\p{Cyrillic}\\p{Greek}\\p{Hebrew}]+').test(input)) {
    // test for string length and call AJAX if the string is long enough
} else {
    // call AJAX search method
}

您可能希望预编译正则表达式以获得更好的性能,但基本上就是这样。

这是一个好问题,但与编程无关。。。不管怎样,你指的是桌面还是web应用程序?web。我将编辑标签。谢谢。尽管脚本比语言更容易确定,但你能给出你心目中的“动态i18n模块”的链接吗?谢谢Florian,简单又好。谢谢你的回答Pawel。我决定采用Florian建议的方法,因为它更适合我目前的情况。但是你的主意很好。@Francisc:好的,但是如何知道用户输入的是哪种语言呢?如果一个页面上有多语言数据,该怎么办?我只是好奇,你可以实现任何你想要的,因为我们不是在同一家公司(我相信)。哈哈。:)对于这种特殊情况,它更简单:没有多语言数据,用户可以选择应用程序显示的语言。语言将有一个最小字符规则。因此,如果他或她选择日语,例如,对于必填字段,最小字符约束将设置为1。如果他或她切换到法语,最小字符限制设置回3。它简单有效。
if (XRegExp('[\\p{Latin}\\p{Common}\\p{Cyrillic}\\p{Greek}\\p{Hebrew}]+').test(input)) {
    // test for string length and call AJAX if the string is long enough
} else {
    // call AJAX search method
}