在使用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. OpenCV从入门到放弃系列之——如何扫描图像、利用查找表和计时

    目的 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 颜色空间缩减.具体做法就是:将现有颜色空间值除以某个输入 ...

  2. (转载)MongoDB C#驱动中Query几个方法

    MongoDB C#驱动中Query几个方法 Query.All("name", "a", "b");//通过多个元素来匹配数组 Query ...

  3. iOS - MKMapView 地图

    1.创建 MKMapView 地图 在 iOS6 或者 iOS7 中实现这个功能只需要添加地图控件.设置用户跟踪模式.在 mapView:didUpdateUserLocation: 代理方法中设置地 ...

  4. 移动端上传图片iphone图片旋转以及服务端处理方法

    判断是否需要旋转 /**             *iphone判断图片方向,是否需要旋转图片             */            if(strpos($_SERVER['HTTP_U ...

  5. 参考__JS

    教程 jQuery选择器总结 日期和时间 Bootstrap日期和时间表单组件 图表 morrisHighcharts 垂直滚动 fsvs 水平滚动 swiper 倒计时 countdownjs 全屏 ...

  6. 金融IC卡 ARQC和ARPC计算方法和实例(转)

    假设发卡行的IC卡应用密钥如下:   PBOC_IMK_AC               F0C34A8124CEE0A91A0B034AA97D6EAC PBOC_IMK_ENC           ...

  7. Oculus安装问题

    1.必须FQ,可采用蓝灯,或其他vpn 2.Your computer doesn't meet Rift's recommended specifications 如果某些硬件达不到推荐配置(比如我 ...

  8. java 的 linq,不要再写令人讨厌的 for 了!

    package com.ly.linq; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator ...

  9. Android开发--Android Studio配置

    1.常见问题 emulator: You might want to adjust your AVD RAM size and/or HAXM configuration to run in fast ...

  10. 第一章 UI实战开发 UIWindow UIView

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...