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 相关文章推荐
来自phpguru得Php Cache类源码
Apr 15 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
如何使用php输出时间格式
Aug 31 PHP
PHP操作MySQL事务实例
Nov 05 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
PHP使用MPDF类生成PDF的方法
Dec 08 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
php获取文章内容第一张图片的方法示例
Jul 03 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
php服务器的系统详解
Oct 12 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
详解Swift中属性的声明与作用
2016/06/30 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
详解Flask前后端分离项目案例
2020/07/24 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
纺织工程专业个人求职信范文
2014/01/27 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
施工安全生产承诺书
2014/05/23 职场文书
商场父亲节活动方案
2014/08/27 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
助学金感谢信
2015/01/20 职场文书
大学生学年个人总结
2015/02/15 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js