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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
php后门URL的防范
Nov 12 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
yii的CURD操作实例详解
Dec 04 PHP
Yii分页用法实例详解
Dec 04 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 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作的文本留言本的例子(五)
2006/10/09 PHP
PHP的全局错误处理详解
2016/04/25 PHP
js window.event对象详尽解析
2009/02/17 Javascript
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
python使用scrapy解析js示例
2014/01/23 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python调用服务接口的实例
2019/01/03 Python
Python可迭代对象操作示例
2019/05/07 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
社团文化节邀请函
2014/01/10 职场文书
中国梦口号
2014/06/13 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书