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采集相关教程之一 CURL函数库
Feb 15 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
使用php实现从身份证中提取生日
May 09 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
PHP count()函数讲解
Feb 03 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 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数据库开发知多少
2006/10/09 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP连接access数据库
2015/03/27 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
php实现可运算的验证码
2015/11/10 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Python语言异常处理测试过程解析
2020/01/08 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
10张动图学会python循环与递归问题
2021/02/06 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
Python读写Excel表格的方法
2021/03/02 Python
网络技术支持面试题
2013/04/22 面试题
四种会话跟踪技术
2015/05/20 面试题
人事主管岗位职责范本
2013/12/04 职场文书
料理师求职信
2014/01/30 职场文书
职工运动会感言
2014/02/07 职场文书
大学生毕业求职信
2014/06/12 职场文书
走进毛泽东观后感
2015/06/04 职场文书
利用python做表格数据处理
2021/04/13 Python
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL