3

我相信我们中的一些人已经从事过一个项目,其中不仅要支持 UI,而且还必须支持不同语言的数据。例如 - 例如,能够为我在这里写的内容提供和存储翻译。

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

最后,还需要根据某些语言支持从右到左的用户界面,并在读取提交的数据文件时使用不同的编码(例如解析文本和 excel 数据)

目前,我将所有实体的所有翻译都存储在一个表上(不太实用,因为在执行 sql 查询以查找问题时很难找到自己),主要在附属程序集上设置 UI 翻译,并且不支持两者时区也不是从右到左的设计。

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

[编辑]

我假设大多数人认为这种多元文化要求就像构建一个巨大的项目一样。事实上,如果您在以下位置进行在线调查:

  1. 答案将只收集到午夜
  2. 问卷定义和部分答案来自文本文件(任何语言)以及翻译
  3. 根据访问者的不同,问题和响应选项必须以多种语言显示
  4. 报告还必须以几种不同的语言显示和生成

可以看出,我们不必在应用程序中走得太远就可以满足这种要求。

[编辑2]

刚刚发现我的问题是重复的

i18n 在您的项目中

第一个答案(通过投票订购时)是如此全面,我必须在某一天至少​​实现其中的一部分。

4

6 回答 6

3

非常非常谨慎。从你所说的关于你试图实现的 i18n 功能的内容来看,我想知道你是否太过分了。

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

另一方面,您可能需要成为下一个 amazon.com。用一种语言交付成功的 Web 应用程序很困难,更不用说多种语言了。如果这对您的网络应用程序的业务需求有意义,那么您不应该害怕偏爱一个用户群(例如,您的亚洲语言使用者)而不是其他用户群。

于 2008-10-02T03:28:46.917 回答
2

慢慢来。

把所有事情都想清楚,然后再认真想想你在做什么。请记住,您添加的越多(例如从右到左),您的 QA 周期就越长。

于 2008-10-01T20:50:32.413 回答
1

您的难题的主要部分将是在代码方面广泛使用接口,或者通过翻译器将一个数据源传递到需要支持的任何语言,或者为每种语言提供单独的数据源。

时间问题可以由接口处理,因为您可能希望事情以相同的方式运行,但在实现细节上有所不同。在很大程度上,在调整界面以支持不同的语言时,可以将类似的思维过程应用于界面的创建。当你深入了解它时,皮肤就是这样,被皮肤的内容是界面,外观/感觉是实现。

于 2008-10-01T21:13:57.333 回答
1

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

于 2008-10-01T21:28:11.667 回答
1

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

于 2008-10-01T22:06:14.883 回答
0

我将描述我在项目中所做的事情(这不是我的原始架构,但我还是喜欢它)

提供翻译支持

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

  1. 错误文本:像发生在应用业务层深处的错误
  2. UI 文本:显示在用户界面中的文本(标签、按钮、网格标题、菜单)
  3. 用户自定义文本:需要根据最终用户的偏好进行翻译的文本(即 - 用户在调查中创建问题,他还可以创建该调查的翻译版本)

对于每个不同的范畴,用于提供翻译服务的模式是不同的——因此我们有:

  1. 错误文本:具有访问资源文件的静态函数的库
  2. UI 文本:链接到视图引擎的“Helper”类,提供来自远程程序集的翻译
  3. 用户自定义文本:数据库中提供翻译的表(根据翻译实体的 typeID 和对象 id)并通过 1 x N 关系链接到实体

然而,我还没有攻击其他明显的问题,例如处理时区、不同的布局和图片翻译(如果真的有必要的话)。有没有人以不同的方式解决了这个问题?

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

于 2008-10-21T17:04:13.950 回答