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+MySQL的聊天室设计
Oct 09 PHP
PHP的中问验证码
Nov 25 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
php中动态变量用法实例
Jun 10 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
如何在PHP中读写文件
Sep 07 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
一个改进的UBB类
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
PHP内核探索:变量概述
2014/01/30 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
Python with的用法
2014/08/22 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
任课老师推荐信范文
2013/11/24 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
信息总监管理职责范本
2014/03/08 职场文书
初中生期末评语大全
2014/04/24 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
医德医风学习心得体会
2016/01/25 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Python实现归一化算法详情
2022/03/18 Python