【问题标题】:Person name format globalization人名格式全球化
【发布时间】:2011-04-08 20:26:58
【问题描述】:

我在数据库中有名字、姓氏和中间名,并希望显示它们。我的第一个想法是显示:last, first middle 但我认为其他语言/文化可能使用不同的格式和分隔符。

有没有人知道会在文化基础上处理这个问题的格式器?理想情况下是 .Net 的一部分。

【问题讨论】:

  • “名”和“姓”的概念差异很大。例如,在某些文化中,没有“一个”“姓”的概念。
  • 这里有一个有趣的问题。一些文化使用first+middle names in a formal context
  • 我遇到的印尼人只有一个名字,既不是“名”也不是“姓”。
  • 如果您想按名称排序,情况会变得更糟。例如,在冰岛,目录名称被列为 GIVEN_NAME MIDDLE_NAME PATRONYMIC,但它们被排序为 GIVEN_NAME PATRONYMIC MIDDLE_NAME。德国有不同的电话簿和字典排序顺序。

标签: .net internationalization formatting globalization culture


【解决方案1】:

假设要翻译 UI(或电子邮件模板或其他),而不是寻找格式化程序,只需将模式外部化并使用 Format 方法:

        string firstName = "Paweł";
        string lastName = "Dyda";
        // externalize this pattern
        string firstLastNamePattern = "{0} {1}";
        string displayable = string.Format(firstLastNamePattern, firstName, lastName);

换句话说,让翻译者决定如何翻译,即匈牙利语翻译者会使用“{1} {0}”。

【讨论】:

    【解决方案2】:

    我同意 Pawel Dyda 的意见,但我会更进一步。

    当您有需要本地化的复杂数据结构时,明智的做法是包装这些东西以支持任何场景。

    现在,当我说复杂的数据结构时,我并不是想把事情复杂化,但你倾向于意识到走向国际是每个国家都有自己的做事方式。诸如姓名、地址、电话号码之类的东西在很大程度上是特定于文化的,需要像这样对待,你应该在你的应用程序中有一个表示层来获取这些。如果你想成功,它也应该是高度可定制的。

    在某种程度上,.NET 中特定于文化的东西很棒,但仅仅依靠复合格式字符串是不够的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      相关资源
      最近更新 更多