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也可以?成Shell Script
Oct 09 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
一个PHP针对数字的加密解密类
Mar 20 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
yii用户注册表单验证实例
Dec 26 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 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系统命令函数使用分析
2013/07/05 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
详解Python中的Cookie模块使用
2015/07/06 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
基于python 取余问题(%)详解
2020/06/03 Python
python文件读取失败怎么处理
2020/06/23 Python
酒店人事专员岗位职责
2013/12/19 职场文书
市场部规章制度
2014/01/24 职场文书
企业宣传方案
2014/03/04 职场文书
协议书怎么写
2014/04/21 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
2014年路政工作总结
2014/12/10 职场文书
教师岗位职责范本
2015/04/02 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
2019入党申请书格式
2019/06/25 职场文书