第 31 章 Zend_Translate

31.1. 简介

Zend_Translate是Zend框架为多语言应用程序提供的一个解决方案.

在多语言应用程序中,内容必须翻译为多种语言,并且根据用户的语言设置显示相应的内容. PHP已经提供了几个方法处理这样的问题,但是存在一些问题:

  • 不一致的API: 对于不同的源格式没有单一的API.gettext的使用非常复杂.

  • PHP仅支持gettext和原生数组: PHP本生仅为数组和gettext提供支持 . 所有其他的源格式必须自己进行处理,因为没有提供原生的支持.

  • 不检测默认语言: 没有深入的不同浏览器的背景知识,用户的默认语言不能被检测.

  • Gettext 是非线程安全的: PHP'的gettext库不是现在安全的,并且它不应该用于多线程环境中.这是由于gettex本生的问题而不是PHP,但却是一个存在的问题.

Zend_Translate没有上面的问题.这就是为什么我们推进使用Zend_Translate而不是PHP的原生函数.Zend_Translate的优点有:

  • 支持多种源格式: Zend_Translate 支持多种源格式, 包括被PHP支持的,和其他的格式,包括TMX和CSV文件.

  • 线程安全的gettext: Zend_Translate 的 gettext reader是线程安全的.在多线程的环境中使用它没有问题.

  • 简易并且通用的API: Zend_Translate的API非常简单并且只要求少数的函数.因此易于学习和维护.所有的源格式用同样的方法处理,如果你的源格式从Gettext改为TMX, 你只需要改变一行代码指定存储适配器.

  • 用户的标准语言检测: 用户访问站点的首选语言能够通过被检测并被Zend_Translate使用.

31.1.1. 开始多语言化

让我们打开多语言Web应用程序的窗口.我们想做的是转换字符串,产生翻译后的输出. 否则我们不得不给每种语言都写一个视图,没人愿意这么做.通常,多语言站点在设计中是非常简单的.仅有4个必须做的步骤:

  1. 决定你想使用那个适配器;

  2. 创建视图并把Zend_Translate集成到你的代码中.

  3. 从你的代码中创建源文件;

  4. 翻译你的源文件为所期望的语言.

下面的章节将指导你通过全部4个步骤.读取接下来的一些页面创建你自己的多语言web应用程序.

<xi:include></xi:include>