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 相关文章推荐
PHP4中session登录页面的应用
Jul 25 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
php使用反射插入对象示例分享
Mar 11 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
Feb 02 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
PHP实现文件上传功能实例代码
May 18 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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 pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
制作特殊字的脚本
2006/06/26 Javascript
用js+xml自动生成表格的东西
2006/12/21 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
python实现按行切分文本文件的方法
2016/04/18 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
Python类class参数self原理解析
2020/11/19 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
绩效专员岗位职责
2013/12/02 职场文书
餐饮营销方案
2014/02/23 职场文书
行政管理专业求职信
2014/07/06 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
党员转正意见怎么写
2015/06/03 职场文书
售房协议书范本
2015/08/11 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
优质护理心得体会
2016/01/22 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server