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在字符串中查找另一个字符串
Nov 19 PHP
php xml实例 留言本
Mar 20 PHP
php高级编程-函数-郑阿奇
Jul 04 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
Jul 29 PHP
php使用反射插入对象示例分享
Mar 11 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
分享一则PHP定义函数代码
Feb 26 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
详解 PHP加密解密字符串函数附源码下载
Dec 18 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
深入PHP异步执行的详解
2013/06/03 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
php精度计算的问题解析
2019/06/21 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
python私有属性和方法实例分析
2015/01/15 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
python监控进程脚本
2018/04/12 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
python-str,list,set间的转换实例
2018/06/27 Python
Python向excel中写入数据的方法
2019/05/05 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
python 绘制国旗的示例
2020/09/27 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
上学迟到的检讨书
2014/01/11 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
长城导游词400字
2015/01/30 职场文书
保险内勤岗位职责
2015/04/13 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
七年级作文之英语老师
2019/10/28 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
Django框架模板用法详解
2022/06/10 Python