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 相关文章推荐
linux实现php定时执行cron任务详解
Dec 24 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
php的ZipArchive类用法实例
Oct 20 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
PHP类的封装与继承详解
Sep 29 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
php面向对象重点知识分享
Sep 27 PHP
Yii框架应用组件用法实例分析
May 15 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
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
EasyUI布局 高度自适应
2016/06/04 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python数据类型详解(一)字符串
2016/05/08 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
linux安装python修改默认python版本方法
2019/03/31 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
2014年会演讲稿范文
2014/01/06 职场文书
战略合作协议书范本
2014/04/18 职场文书
财务部绩效考核方案
2014/05/04 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
旅行社计调工作总结
2015/08/12 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS