您如何实现多文化Web应用程序

时间:2008-10-01 20:46:11

标签: translation multilingual

我相信我们中的一些人已经开展了一个项目,不仅需要用户界面,还要用不同的语言支持数据。例如 - 能够为我在这里写的内容提供和存储翻译。

更重要的是,我还相信我们中的一些人有一些时间触发的事件(例如当会员资格访问到期时)应该考虑用户位置来计算,例如,根据正确的时区计算午夜。

最后,还需要支持从右到左的用户界面,以及在阅读提交的数据文件时使用不同的编码(例如,解析文本和Excel数据)

目前我将我所有实体的所有翻译存储在一个表中(不是那么实际,因为在进行sql查询以查找问题时很难找到自己),主要在卫星程序集上设置UI翻译既不支持时区也不支持从右到左的设计。

在应对这些挑战时,您有什么经验?

[编辑]

我认为大多数人认为这种多元文化要求就像建立一个庞大的项目一样。事实上,如果您了解一个在线调查,其中:

  1. 答案只会收集到 午夜
  2. 问卷调查定义和部分内容 答案来自文本文件 (任何语言)以及 翻译
  3. 问题和回应选项必须 以多种语言显示, 根据谁访问它
  4. 还必须显示报告 产生了几种不同的 语言
  5. 正如我们所看到的,我们不必在应用程序中走得太远以达到这种要求。

    [EDIT2]

    刚发现我的问题是重复的

    i18n in your projects

    第一个答案(通过投票订购时)是如此令人理解,我必须在某一天实现至少一部分。

6 个答案:

答案 0 :(得分:3)

要非常谨慎。根据你对你试图实现的i18n功能所说的话,我想知道你是否过度接触。

请注意,大男孩(例如eBay,amazon.com,yahoo,bbc)网络应用程序实际上以他们想要支持的每种语言提供单独的应用程序。这些Web应用程序中的每一个都使用一组通用的核心服务。如果两个不同国家的业务需求甚至说同一种语言(例如英国和美国)的差异足以让您确实需要一个单独的应用程序,请不要感到惊讶。

另一方面,您可能需要成为下一个amazon.com。用一种语言提供成功的Web应用程序很困难,更不用说多少。如果这对您的Web应用程序的业务需求有意义,那么您不应该害怕支持一个用户群(例如,您的亚洲语言使用者)。

答案 1 :(得分:2)

走得慢。

全心全意,然后真正思考你在做什么。请记住,您添加的越多(如从右到左),QA周期就越长。

答案 2 :(得分:1)

您的谜题的主要部分将是代码端广泛使用接口,以及通过翻译器传递给需要支持的语言的一个数据源,或者每种语言的单独数据源。

时间问题可以由接口处理,因为可能你会希望事物以相同的方式运行,但实现细节不同。在很大程度上,在调整界面以支持不同语言时,可以将类似的思维过程应用于界面的创建。当你接下来的时候,皮肤就是这样,被皮肤化的内容就是界面,外观就是实现。

答案 3 :(得分:1)

执行用户需要的操作。例如,大多数程序员都懂英语,没有意义翻译这个网站上的帖子。如果您的许多用户需要翻译,请添加具有语言ID的新表列,并使用另一列将已翻译的行链接到其原始列。如果您的目标听觉包含来自中东的用户,请实施从右到左。如果时间精度至关长达一小时,请将时区列添加到用户表,依此类推。

答案 4 :(得分:1)

如果您使用的是* NIX,请使用gettext。我使用的大多数语言都有一定程度的支持;例如,PHP's非常好。

答案 5 :(得分:0)

我将描述我的项目已经完成的工作(这不是我原来的架构,但我还是喜欢它)

提供翻译支持

需要翻译的文本分为三个不同的类别:

  1. 错误文本:类似于应用程序业务层深处发生的错误
  2. UI文本:用户界面中显示的文本(标签,按钮,网格标题,菜单)
  3. 用户定义的文本:需要根据最终用户的偏好进行翻译的文本(即用户在调查中创建问题,他还可以创建该调查的翻译版本)
  4. 对于每种不同的导管,用于提供翻译服务的模式是不同的 - 因此我们有:

    1. 错误文本:具有访问资源文件的静态函数的库
    2. UI Text:一个“Helper”类,链接到视图引擎,提供远程程序集的翻译
    3. 用户定义的文本:数据库中提供翻译的表(根据翻译的实体和对象ID的typeID)并通过1 x N关系链接到实体
    4. 然而,我还没有攻击其他明显的问题,例如处理时区,不同的布局和图片翻译(如果这确实是必要的话)。有没有人以不同的方式解决这个问题?

      有没有人解决过其他的i18n问题?