i18n验证

Ali*_*xel 15 php language-agnostic validation localization internationalization

Think Global,Act Local

这就是他们告诉你的,但是在我开发的所有时间里,我总是看到谷歌,微软,甲骨文等大公司以局部方式进行验证:他们知道我来自哪个国家,所以他们会尝试验证我的电话号码,邮政编码和其他详细信息,例如银行帐号以及我所在国家的正确验证方法.昨天我报名参加谷歌结账,他们甚至向我展示了我国的邮政编码格式的一些例子!

所以我的问题是,他们是如何做到的?我知道他们有成千上万的员工,但我发现很难相信他们都必须重新改造井.美国有无数的验证方法,但世界其他地方呢?我还没有看到一个开源的体面图书馆(除了非常不完整和过时的PEAR尝试之外)在各个国家的各个共同方面进行验证,例如:

  • 民事身份证
  • 税号
  • SSN(社会安全号码)
  • BBAN(基本银行账号)
  • 传真,电话和手机号码
  • 邮政编码
  • 车牌
  • 钞票序列号
  • 等等...

有什么隐藏的资源我不知道吗?

Lar*_*s D 1

简单验证和完整验证之间存在巨大差异。通常不可能跨区域设置完全标准化验证,以下是几个示例:

  • CivilID/SSN 等号码可以允许/禁止替代值(特定于系统)、外国值、历史值等。根据上下文,我们在同一领域的应用程序之一中有 2 个不同的验证系统,而其他 IT 系统可能有其他验证系统。

  • 邮政编码验证可能需要访问有效值列表,您需要订阅该列表。在许多国家,这种订阅不是自动化的,而且由于版权规则,重新分发并不是一件容易的事。

  • 电话号码也有类似的问题。你们允许昂贵的号码、手机号码吗?你如何检测它们?

您可能会争辩说,在大多数情况下,简单的验证是可能的 - 但对于简单的验证,使用模式匹配并让每个市场的本地部门定义有效模式通常更容易。

软件服务合同也存在问题。如果您购买软件并希望使用它 5 年,那么如果发生变化,您可以更改验证规则,这一点至关重要。我在我的国家经历了 4 次电话号码系统的变化,这些变化影响了简单的验证,例如“位数”和“第一位数字是什么”。

因此,最好的解决方案是拥有一个特定于区域设置的模式的集中数据库,并允许管理员修改验证模式。