【问题标题】:C# libraries for internationalization?用于国际化的 C# 库?
【发布时间】:2010-09-11 14:05:58
【问题描述】:

有哪些库可以编写 C# 国际化应用程序?

库中应包含的典型功能:

  • 验证特定国家/地区的数据(例如增值税号、电话号码、地址……)
  • 验证银行和财务坐标(例如信用卡号、IBAN 等)
  • 特定于语言的功能(例如,数字到单词到数字、总结……)
  • 特定语言的内容过滤(例如脏话过滤...)

Perl 中此类库的一个示例是 CPAN 的 Internationalization/Locale section

有哪些可用的 C# 解决方案?


注意:我不是在寻找 System.Globalization 命名空间的介绍 :)


注 2:我应该假设没有可用的选项吗?有人有兴趣联合起来并创建一个吗?


注 3:编辑以使问题出现在首页,以期获得更多答案。这不是一个很难的问题,Stackers 怎么可能不做 i18n?

【问题讨论】:

  • 我猜 i18n 是一种禁忌话题 - 每个人都使用自己的解决方案方法(有时它采用丑陋的形式,为每种语言/文化/国家创建全新的网站)。 >
  • 单是脏话过滤就可以全职雇佣每个地区和语言的团队。
  • 有趣。我只是在和我的同事讨论这个问题的验证方面。然后我回到我的电脑,15 秒后我看到了这个问题。 :)

标签: c# internationalization


【解决方案1】:

这是一项巨大的努力。让我们从一个简单的问题开始:电话号码。 http://code.google.com/p/libphonenumber/ 的 Libphonenumber Google 库在 https://bitbucket.org/pmezard/libphonenumber-csharp 有一个 C# 端口,在 http://blog.thekieners.com/2011/06/06/using-googles-libphonenumber-in-microsoft-net-with-c/ 有注释。似乎是处理美国和国际数字的好库。

【讨论】:

    【解决方案2】:

    一个致力于全球化、国际化和本地化知识数据库的项目是Unicode Common Locale Data Repository,它基于 IBM 的旧 ICU 项目。

    由于它是一个 XML 数据数据库,它不包含任何特定于 .NET 的代码,但作为一个知识体系,它非常好。

    .NET 框架中只有一小部分。微软还没有接近任何补充内容,如邮政编码格式、数字拼写(用于支票/支票金额)等。标准时区名称(来自Olson/tz 分布)等也包括在内,并映射到Windows 特定的名称。一些分层的特定于语言环境的行为也有更好的支持。

    【讨论】:

    • 不仅它不是一个库,而且大多数东西已经在 .net 堆栈中。
    【解决方案3】:

    本身并不完全是“图书馆”,但我实际上遇到了一家名为 E4X(我的前客户)的公司提供的优质服务(付费)。
    他们提供的是您电子商务网站的完整本地化,包括语言翻译、货币兑换、本地计费和金融交易处理,包括特定地区的税收等。他们甚至处理物理运输的物流......

    对于电子商务业务而言,值得研究。让他们知道我派你来... ;-)

    【讨论】:

      【解决方案4】:

      我不会说没有人使用 i18n,但我不知道有任何通用工具可以用于每个项目。维护包含您正在寻找的所有信息的数据库将是一个史诗般的项目。听起来您要查找的不是特定的 C# 库,而是您可以从中获取的在线信息集合。如果您能够找到各种语言的脏话库(例如),那么在 C# 中使用它对您来说是微不足道的。我认为要找到一个解决方案,将您的所有需求封装到一个易于使用的程序集中是不可能的。

      【讨论】:

      • 我希望在库中看到的示例:电话号码验证、地址格式、邮政编码、SSN(或等效)、银行帐号;名称格式;节假日日历;货币类别;特定国家/地区的类别,例如在英国,您可以从邮政编码中获取地址;等等……
      【解决方案5】:

      找到的第一个库:NUtility(MIT 许可证)

      NUtility 目前有提供数据库抽象层、命令行处理以及验证和转换功能的类,其中包括:命令行处理;信用卡验证;电子邮件地址验证; IP地址验证;英国邮政编码验证; Soundex、扩展 Soundex 和变音编码; ROT13编码;语音字母编码;和公制 - 英制转换。

      【讨论】:

        【解决方案6】:

        字符串到数字,反之亦然,可以如下进行:

           culture = new CultureInfo(locale);
           int number = Convert.ToInt32(myString, culture.NumberFormat);
           string str= Convert.ToString(myNumber, culture.NumberFormat);
        

        至于查看VATS和地址,我也对这个感兴趣,目前还没有发现任何有用的东西。

        【讨论】:

          【解决方案7】:

          【讨论】:

          • 我已经非常了解 System.Globalization。我的问题是不同的。无论如何,谢谢。
          猜你喜欢
          • 2011-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-25
          • 2010-11-06
          • 1970-01-01
          • 2010-10-09
          相关资源
          最近更新 更多