千家信息网

PHP Smarty如何通过gettext加强国际化的总结

发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,本篇文章给大家分享的是有关PHP Smarty如何通过gettext加强国际化的总结,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、采
千家信息网最后更新 2024年10月22日PHP Smarty如何通过gettext加强国际化的总结

本篇文章给大家分享的是有关PHP Smarty如何通过gettext加强国际化的总结,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、采用gettext,由于Smarty有相应得gettext的插件,所以就直接用这个插件了

步骤如下:

1.1 在公共的包含文件中加入如下的代码:

//$domain_info['lang']为cookie传进来的语言设定值$language_code = $domain_info['lang'];//界面语言设置成中文if($language_code == 'zh_CN'){//设置目标语言putenv("LANG=$language_code");setlocale(LC_ALL, $language_code);//$package为mo文件的名字$package = 'i18n_zh';//绑定mo文件的路径bindtextdomain($package, '/var/locale');//设置搜索的mo文件的文件名textdomain($package);
//指定mo文件的返回到gettext的编码bind_textdomain_codeset($package, 'UTF-8');}elseif($language_code == 'BIG5'){//界面语言设置成繁体$language_code = 'zh_TW';putenv("LANG=$language_code");setlocale(LC_ALL, $language_code);$package = 'i18n_tw';bindtextdomain($package, '/var/locale');textdomain($package);bind_textdomain_codeset($package, 'UTF-8');}else{//界面语言是英文//设置目标语言putenv("LANG=$language_code");setlocale(LC_ALL, $language_code);//$package为mo文件的名字$package = 'i18n_en';//绑定mo文件的路径bindtextdomain($package, '/var/locale');//设置搜索的mo文件的文件名textdomain($package);//指定mo文件的返回到gettext的编码bind_textdomain_codeset($package, 'UTF-8');}//*********添加国际化语言的处理结束***************/

1.2 相应的模版中加入smarty插件要求的t标签

1.3 用smarty插件提供的工具 生成c文件

这个c文件是把所有的模版中加了标签的串提取出来了

php -q ./tsmarty2c.php  *.html  $package.c

注意:默认的c文件的名和1.1中定义的***一样

需要注意的是tsmarty2c.php中定义的 smarty的open tag 和close tag 必须与smarty配置文件设置的一致

1.4 调用linux系统得xgettext把1.3中的c文件生成后缀为po的文件

xgettext -d $package    $package.c

注意:如果文件不是Asc编码的 还得在上面地命令中指明

--file-code=文件编码

1.5 编辑1.4中生成的$package.po ,加入相应的翻译对应串

有几种语言,就的分别编辑生成几个po文件

1.6 调用linux系统得msgfmt把1.3中的1.5中的po文件生成后缀为mo的 二进制文件

msgfmt -o $package.mo $package.po

1.7 建立locale目录,要与1.1 中的bindtextdomain($package, '/var/locale');设置一样

以1.1中的为例,首先在/var/( 已有的)目录下建立locale目录,locale的结构为

|-- en_US|   `-- LC_MESSAGES||-- $package.mo
||-- zh_CN|   `-- LC_MESSAGES||-- $package.mo
|
`-- zh_TW`-- LC_MESSAGES|-- $package.mo

其中的***层目录是按1.1 中的$language_code的定义设的,必须这样,否则找不到,第二层目录LC_MESSAGES是固定的,里面存放1.6 中生成的mo文件

二、由于是网站用的是Smaty,我们可以把模板中的文字都提取出来,集中放到语言文件中
通过smarty的config_load来加载,前提把语言文件放到$smarty->config_dir所设定的目录中
只要在php中包含 ,如下的代码,

$smarty->config_load( 'chs.lang' );//$lang为通过cookie或session获得的页面语言值switch ($lang) {case 'zh-cn' :   $smarty->config_load( 'chs.lang' );break;     case 'zh-tw' :   header( 'cht.lang' );break;   default:header( 'cht.lang' );break;   }

以上就是PHP Smarty如何通过gettext加强国际化的总结,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

文件 语言 目录 插件 编码 生成 国际 界面 中加 代码 名字 后缀 文件名 更多 标签 模版 目标 知识 篇文章 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 jsonp写进数据库 华为x86服务器和鲲鹏服务器 服务器可以为家庭做什么 软件开发公司 淄博 南岸区网络软件开发流程市场价 工业科技互联网思维 锡山区常见软件开发服务电话 完美对战平台服务器卡怎么办 app软件手机定位软件开发 工业软件开发诚信服务 微信打不开显示无法连接到服务器 虹口区网络技术咨询价格对比 网络安全监控培训心得 德帮互联网科技有限公司 看服务器RAID1镜像 重视网络安全下一句 网络安全宣传周过程 服务器安全策略关闭 天煌网络技术有限公司 国三数据库技术 未来教育 网购网络安全知识 简约互联网网络安全宣传周海报 深圳威隆网络技术有限公司 珠海传媒网络安全 网络安全中完整性的概念 中国电信招聘网络技术 我的世界服务器生存第一题视频 网络安全方面演讲 暴雪服务器服务器检索内容失败 宜兴管理软件开发技术指导
0