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 相关文章推荐
PHP.MVC的模板标签系统(二)
Sep 05 PHP
在windows iis5下安装php4.0+mysql之我见
Oct 09 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
浅析PHP绘图技术
Jul 03 PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
python命令行参数用法实例分析
2019/06/25 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Python更换pip源方法过程解析
2020/05/19 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
2015年酒店工作总结
2015/04/28 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
python保存图片的四个常用方法
2022/02/28 Python