php 中英文语言转换类


Posted in PHP onSeptember 07, 2011

起初想到制成XML文档形式,这样操作也起来很容易。只是看到说XML效率不怎样
再者就是不同的模板,可这样也有个小问题,有些词汇比如时间提示是不确定,与可能是minute ,day。也有可能复数加 s
那好吧,做成数组,可数组就得做成在php文件的变量,很难做些扩展(我所知道所认为的是这样)
最后做成txt文本文件的形式,同样也为这样的效率担心,打开文件,搜索字符串,截取字符串这些,所幸最后运行了一下,一般机子大概0.0004秒,这让我很惊奇原以为会很慢,毕竟要调用多次。
好吧,上代码

class language 
{ 
static $lanObject; 
public $type; // unit , dashboard , menu ,other 
public $lan; // language 
private $special; // The common in the file 
private function __construct() 
{ 
if( isset($_GET['hl']) || isset($_POST['hl']) ) 
{ 
switch( isset($_GET['hl'])?$_GET['hl']:$_POST['hl'] ) 
{ 
case 'en': 
$this->lan = 'en'; 
case 'zh': 
$this->lan = 'zh'; 
case 'all': 
$this->lan = 'all'; 
default: 
$this->error(); 
} 
} 
else 
$this->lan = isset($_COOKIE['hl']) ? $_COOKIE['hl']:'zh'; 
} 
public static function getObject() 
{ 
if( !(self::$lanObject instanceof self) ) 
self::$lanObject = new language(); 
return self::$lanObject; 
} 
public function lto($key) //$key is English 
{ 
if( $this->lan !== 'zh' ) 
return $key; 
if( empty($this->special) ) // if the $special is null 
{ 
if( isset($this->type) ) 
$this->special = file_get_contents($this->type.'.txt'); 
else 
return $key; 
} 
echo $this->search($key); 
} 
private function search($searchTozh) // PHP String 
{ 
$key_start = strpos($this->special,$searchTozh); 
$key_end = strpos($this->special,' ',$key_start); 
$len_str = strlen($searchTozh); 
$for_sub = $key_start + $len_str + 1; 
return substr($this->special, $for_sub, $key_end - $for_sub); 
} 
}

strpos(); 是找到字符串第一次出现的位置 比如 ‘wo' 在 ‘hello world' 中,返回值为 6
substr();是截取字符串的一部分


接下来是调试时加上的代码

$la = language::getObject(); 
$la->type = 'unit'; 
$la->lto('min'); 
echo '<br/>'; 
$la->lto('hello');

lto(这里面要翻译的英文); 
unit.txt 文件的内容格式是
hello-你好 min-小 minute-分钟 minutes-分钟
 
$special设计为全局也是想到不止一次会调用lto() ,如果反复加载文件太浪费性能了。
$type设计为公有是考虑到加载的文件的效率问题,有的时候并不需要显示几天前这些,所以不如把这些按使用类型分开,比如有专门负责菜单翻译的menu.txt ,也有专门为操作,比如删除,收藏 翻译的txt文本。这样可以自由设定要加载的文本
语言也可以自由设定。
好吧,程序还可以改进,我没有按http请求中的客户端语言来设置$lan,
PHP 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
Fatal error: Call to undefined function curl_init()解决方法
Apr 09 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php的sso单点登录实现方法
Jan 08 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
php + nginx项目中的权限详解
May 23 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
php继承的一个应用
Sep 06 #PHP
php 抽象类的简单应用
Sep 06 #PHP
PHP中PDO基础教程 入门级
Sep 04 #PHP
PHP中PDO的错误处理
Sep 04 #PHP
php中将网址转换为超链接的函数
Sep 02 #PHP
php ajax 静态分页过程形式
Sep 02 #PHP
php中防止伪造跨站请求的小招式
Sep 02 #PHP
You might like
大师制作的中短波矿石收音机
2020/04/02 无线电
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python占用的内存优化教程
2019/07/28 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python实现udp传输图片功能
2020/03/20 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
土木工程个人自荐信范文
2013/11/30 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书
服务员岗位职责
2014/01/29 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
大专护理专业自荐信
2015/03/25 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
webpack的移动端适配方案小结
2021/07/25 Javascript