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在线打包程序源码
Jul 27 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php使用curl模拟登录后采集页面的例子
Nov 04 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 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的引用原因分析
2012/09/06 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
使用jquery实现简单的ajax
2013/07/08 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python获取豆瓣电影简介代码分享
2014/01/16 Python
Python写的一个简单监控系统
2015/06/19 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python机器学习库常用汇总
2017/11/15 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
set在python里的含义和用法
2019/06/24 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Python中函数的返回值示例浅析
2019/08/28 Python
python2 对excel表格操作完整示例
2020/02/23 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
应届生自荐书
2014/06/23 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
自我工作评价范文
2015/03/06 职场文书
大学生支教感言
2015/08/01 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python