创建全局应用程序的痛苦

时间:2009-11-11 19:44:56

标签: web-applications internationalization global localization globalization

我需要创建一个全局应用程序。这意味着它应该在世界任何地方,任何国家(或大多数国家)都可以正常工作。这是一个PHP网站,可以在某些时间处理金钱和时间。

我希望我能为各国,相关的时区,货币格式,符号和代码,这种东西知道一个很好的资源......

如果有人提供有关这类数据的提示以及如何以适当的方式使用它们,我将非常感激:)

提前致谢!

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

看一下intl(http://www.php.net/manual/en/book.intl.php)。

它是ICU(Unicode的国际组件,http://site.icu-project.org/)的包装,包含了您需要的大部分内容。

答案 2 :(得分:1)

看看Mantis BugTracking software如何处理国际化。他们使用的方法相当不错。

其他信息: 我使用它已经有好几年了,但是通过源代码快速浏览可以看出这部分代码没有发生重大变化。他们使用许多产品使用的公共消息目录和获取消息方法。他们的语言API非常简单 - phpxref output is available并没有那么令人惊讶。消息目录实现为PHP脚本,只需获取include'd。例如,the catalog for English包含以下条目:

$s_new_bug = 'New Issue';
$s_bugnote_added = 'Note Added';

它包含大约1,600个左右的声明。有趣的魔法发生在lang_load内。加载语言时,将包含目录文件,因此它定义的所有变量都在本地范围内定义。 Lang_load遍历本地定义的变量,并根据变量名称构建消息映射,以便它可以按名称查找消息。例如,在加载上一个代码段之后,就好像执行了以下语句:

$g_lang_strings['en']['new_bug'] = 'New Issue';
$g_lang_strings['en']['bugnote_added'] = 'Note Added';

当用户界面需要访问“硬编码”字符串时,它会使用lang_get('new_bug')这样的调用:

  1. 在当前用户的设置中查找首选语言
  2. 通过调用lang_load()
  3. 确保加载语言地图
  4. 从相应的语言地图中返回值
  5. 有趣的是,所有的机器都是懒散的。在您需要访问其中一种语言之前,您不需要为它们定义了50种左右的语言付费。总的来说,这可能是我多年来挖掘过的最具代表性的PHP应用程序之一。

答案 3 :(得分:1)