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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
第四节--构造函数和析构函数
Nov 16 PHP
phpMyAdmin下载、安装和使用入门教程
May 31 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
Laravel5中Cookie的使用详解
May 03 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
php微信公众号开发之简答题
Oct 20 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 文件上传代码(限制jpg文件)
2010/01/05 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
对numpy中数组元素的统一赋值实例
2018/04/04 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
python虚拟环境迁移方法
2019/01/03 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
初中校园之声广播稿
2014/01/15 职场文书
面试后的感谢信范文
2014/02/01 职场文书
个人担保书范文
2014/05/20 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
财务管理制度范本
2015/08/04 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书