在使用Zend_Framework建立网站,若网站在以后的使用中面向国际,这时就需要实现网站的多语言国际化问题。使用Zend_Framework开发的网站需要进行多语言的开发时,就需要用到了Zend_Translate这个解决方案。

Zend_Translate解决方案提供了很多关于多语言使用的适配器,有Array,ini,Csv,Gettext等等,这样的话我们需要根据不同的需求选择不同的适配器,在本项目中选择的是gettext适配器,之所以选择该适配器是应为该格式的文件有专门的软件,因此操作使用起来很方便,它不像其他的Array 和Xml文件看起来很是混乱。使用gettext文件需要一个专门的软件进行相关的编写,该软件为PoEdit使用该软件进行编写文件是很方面的。
那么怎使用PoEdit进行相关的文件的创建呢?
打开该软件,进行相关的界面语言的配置,选择中文界面,然后点击“文件”菜单,“新建”,然后选择要翻译的语言,这里我选择的是中文,然后选择保存,之后会生成一个计算机可读的二进制文件,这里本项目中是zh_CN.mo新建的文件时zh_CN.po,*.po文件是人可读可编辑的文件,用相关的文本编辑器打开,这里我使用的是Sublime Text2打开的,打开之后可进行相关的编辑:
msgid "Hello"
msgstr "你好"

这样一个po文件就编写好了,然后进行保存,这里有一些小问题就是在保存的时候会出现一些小的问题,这一方面是文件没有配好的缘故,这里需要进行的配置是打开刚刚新建好的zh_CN.po文件,然后打开编目>>属性菜单,

如图所示,然后在源路径下进行设定,在源路径下,有个基础路径,该基础路径是PoEdit在进行文件扫描的时候要用到的,当一切设置完成之后进行点击确定,然后若设置正确的话下图中的更新就可用:

否则不可用,然后进行翻译,在翻译之前可进行翻译验证,检查是否有错误,检查无误后就可以开始进行正常的配置了。

在Zend_Framework中还需要进行多语言的配置。首先在application文件夹下的application.ini文件中需要进行如下的配置:
;============Zend_Translate
resources.locale.default="zh_CN"
resources.translate.registry_key="Zend_Translate"
resources.translate.adapter="gettext"
resources.translate.options.scan="filename"
resources.translate.locale="zh_CN"
resources.translate.data = APPLICATION_PATH"/langs/"

上面的文件的意思如下,首先,resource.locale.default="zh_CN"是指系统默认语言环境,下面的registry_key是指使用Zend_Translate,translate.adapter="gettext"是表明使用的是gettext适配器,最后的那个translate.data=APPLICATION_PATH"/langs/"是说明相关的语言文件所在的位置,这样在ini文件中就把最基础的相关参数配置好了,接下来是进行Bootstrap.php,也就是引导文件中进行相关的配置,Bootstrap.php中需要写入如下的代码:

 1 public function _initTranslate() 
2 {

3 //首先读取相关的配置文件
$options=$this->getOption("resources");
$options=$options["translate"];
if(!isset($options["data"])){
throw new Zend_Application_Resources_Exception("No translation resources provided");
}
$adapter=isset($options["adapter"])?$options["adapter"]:Zend_Translate::AN_GETTEXT;
$session=new Zend_Session_Namespace("locale");
if($session->locale){
$locale=$secsson->locale;
}else{
$locale=isset($options["locale"])?$option["locale"]:new Zend_Local(Zend_Locale::BROWSER);
$session->locale=$locale;
}
$date=$options["data"];
$translateOptions=isset($options["option"])?$options["option"]:array();
$translate=new Zend_Translate($adapte,$locale,$data,$translateOptions);
Zend_Registry::set("Zend_Translate",$translate);
}

以上的就是相关的关于多语言的相关的一些配置上面的配置完成之后就需要进行使用了,在controller中的使用方法是如下代码:

public function indexAction()
{
//首先取得已经注册了的键值
$translate=Zend_Registry::get("Zend_Translate");
$translate->_('msgid');
}

视图文件中的使用为:

<h4><?php echo $this->translate('translate') ?></h4>

Zend_Frameowrk中进行多语言国际化的相关的配置和使用的更多相关文章

  1. Java同步和异步过程中消息语言国际化处理策略

    在Java后端做消息内容的语言国际化处理时可以通过Spring中MessageSource接口的来实现,但是MessageSource接口需要用到Locale对象, 而Locale类又是根据前端传过来 ...

  2. 第九篇:在SOUI中使用多语言翻译

    为UI在不同地区显示不同的语言是产品国际化的一个重要要求. 在SOUI中实现了一套类似QT的多语言翻译机制:布局XML不需要调整,程序代码也不需要调整,只需要为不同地区的用户提供不同的语言翻译文件即可 ...

  3. jquery/vue/react前端多语言国际化翻译方案指南

    ❝ 本文章共3470字,预计阅读时间5-10分钟. ❞ 国际化-前言 每个开发者能希望编写的程序可以让全世界的用户使用,它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素.换种说法,「应用程序 ...

  4. 学习PHP中有趣的字符集国际化验证功能

    今天的内容非常简单,不过也很有趣.不知道大家有没有经历过这样的事情,就是在某些字体下,0 和 O 不好区分,1 和 l 也是很难看清楚.当然,现在大部分的编辑器和 IDE 的默认字体都是会选择那些比较 ...

  5. [原创]java WEB学习笔记69:Struts2 学习之路-- 消息处理与国际化,概述,配置国际资源文件,访问国际化消息,通过超链接切换语言

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. (三)Qt语言国际化

    Vs 2010+ Qt5 实现语言国际化 创建一个工程,cpp代码如下: 1.创建工程 #include "languageinternationalized.h" #includ ...

  7. i18next-页面层语言国际化js框架介绍

    因为工作需要,最近研究了下网站语言国际化的问题,根据当前项目架构,寻求一种较好的解决方案.首先总结下项目中语言切换实现方式大概有以下几种: 1,一种语言一套页面,如:index_CN.html,ind ...

  8. iOS语言国际化

    参考网站:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html   语言国际化:根据系统不同的语言自动切换 Xcode6.2   一.在不同语言下工 ...

  9. 今天给大家分享一下Android中的资源与国际化的问题

    摘要:该文章将向大家分享Android中的资源与国际化的问题. 今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layo ...

随机推荐

  1. 由Excel表格导出Latex代码

    Latex提供了不少绘制表格的宏包(参见:http://tug.org/pracjourn/2007-1/mori/),但在latex里画表并不直观,特别是在表格比较大的时候,有时候也需要先用Exce ...

  2. 此数据库文件与当前sql server实例不兼容

    在vs2015导入mdf数据库文件时提示:此数据库文件与当前sql server实例不兼容. mdf文件的版本是SQL SERVER 2005的,而VS2015自带的数据库是LocalDB,直接导入该 ...

  3. k近邻

    k近邻(k-NearestNeighbor)算法简称kNN.基本思想简单直接,对于一个需要分类的数据实例x,计算x与所有已知类别的样本点在特征空间中的距离.取与x距离最近的k个样本点,统计这些样本点所 ...

  4. Grunt_1从安装开始创建一个基本的Grunt

    Grunt的介绍:http://www.gruntjs.net/getting-started 文件架构:https://github.com/zhangsai521314/Grunt 1:安装Git ...

  5. Strus2第一次课:dom4j解析xml文档

    xml文本标记语言: 常用于交换数据:独立于操作系统.编程语言数据存储:xml数据配置:灵活性强,可读性高可以使用css样式改变xml样式 xml解析技术:dom解析xml技术: sax解析xml技术 ...

  6. point

    7.10 []getch->_getch []错误:fatal error C1189: #error : EasyX is only for C++ :.c改为.cpp

  7. commons-io ProxyInputStream,ProxyOutputStream,ProxyReader,ProxyWriter

    1.ProxyInputStream: A Proxy stream which acts as expected, that is it passes the method calls on to ...

  8. zsh下 home end 键失效的解决办法

    我的环境是 centos 6.5 x64 安装 oh my zsh 后,home end 键失效,解决办法为在 .zshrc 里添加设置如下 #Rebind HOME and END to do th ...

  9. java: system.gc()和垃圾回收机制finalize

    System.gc()和垃圾回收机制前的收尾方法:finalize(收尾机制) 程序退出时,为每个对象调用一次finalize方法,垃圾回收前的收尾方法 System.gc() 垃圾回收方法 clas ...

  10. DPDK编译步骤

    大页内存分配:  NUMA系统(现在的linux一般都是) echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048 ...