php 中英文语言转换类代码


Posted in PHP onAugust 11, 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 相关文章推荐
PHP+javascript液晶时钟
Oct 09 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
php实现多城市切换特效
Aug 09 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 #PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 #PHP
php的urlencode()URL编码函数浅析
Aug 09 #PHP
php简单的会话类代码
Aug 08 #PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 #PHP
兼容firefox,chrome的网页灰度效果
Aug 08 #PHP
用php解析html的实现代码
Aug 08 #PHP
You might like
Syphon 秘笈
2021/03/03 冲泡冲煮
一个改进的UBB类
2006/10/09 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
PHP可变函数学习小结
2015/11/29 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
jquery 学习之二 属性(类)
2010/11/25 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
在Python中使用gRPC的方法示例
2018/08/08 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
英语系毕业生求职信
2014/07/13 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
四风对照检查材料范文
2014/09/27 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
python单元测试之pytest的使用
2021/06/07 Python