当涉及到来自许多不同国家/地区的用户使用的应用程序时,以结构化方式存储personal names似乎非常困难。我正在研究的应用程序理论上可以被世界上任何地方的任何人使用。
通常会使用given name (first name / forename)和surname。在这种情况下,这两个可以简单地存储在用户数据库表中。
一些重要事实:
答案 0 :(得分:5)
实际上没有一种通用的结构化方法。我有一个“全名”的大字段和“显示名称”的另一个字段。两个unicode。
例如,在西班牙语国家IIRC,人们通常有四个名字。两个名字和两个姓氏(一个来自父亲,一个来自母亲)。阿拉伯人在他们选择的时候基本上有一个名单链接(某某某某某的儿子,某某的儿子,......)。东亚国家倾向于将给定的名字放在最后,而欧洲人则将给定的名字放在第一位。
答案 1 :(得分:1)
如果您真的对跨越所有文化的全球化感兴趣,请查看HR-XML specification of Person。鉴于名称&当你搬到西方之外时,姓氏就不会削减它。 FamilyName GivenName的东部标准将使您在定义FullName时绊倒。此外,你有备用脚本的所有潜在复杂性(不是每个人都使用拉丁字母,你知道),前缀和后缀(NN Sr,范德瓦尔斯)。
它是用于传输和集成而非存储的标准,但不要让XML模式语法吓到你。我不会实现它的每个方面,但它是一个优秀的角落案例提供者,并不是很明显,你可以有意识地忽略它。特别是,最后查看示例!
为了善良,不要创建一个美国应用程序,假设每个人都有一个中间的首字母!
答案 2 :(得分:1)
通常,名称是人类可读的标识符。对于给定的人,您将需要为此类标识符的每个用例存储一个名称。您需要一个名称作为邮政地址的一部分显示;你可能需要一个用作“屏幕名称”;你可能需要一个用来打开给这个人的信件;你有时可能需要包括这个人的头衔和荣誉,有时候不需要。
在任何这些情况下,您要显示的是单个字符串。您可能会或可能不会通过存储这些字符串的组件并在以后将它们重新组合在一起来避免重复工作。但总的来说,无论是在民族文化还是专业文化方面,你最好只存储完整的字符串。
除了有一个国际标准允许一个国家的邮政机构向另一个国家的人发送邮件外,BTW主要出现在邮政地址上。答案 3 :(得分:1)