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网站在线人数统计
Apr 09 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
php实现水印文字和缩略图的方法示例
Dec 29 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
Laravel配置全局公共函数的方法步骤
May 09 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 XML操作类DOMDocument
2009/12/16 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
网站用php实现paypal整合方法
2010/11/28 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
Mac下安装vue
2018/04/11 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
十分钟教你上手ES2020新特性
2020/02/12 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
Python Gitlab Api 使用方法
2019/08/28 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
关于赌博的检讨书
2014/01/08 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
党性分析材料格式
2014/12/19 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
海弦WR-800F
2022/04/05 无线电