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 相关文章推荐
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
php实现转换ubb代码的方法
Jun 18 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
php封装的表单验证类完整实例
Oct 19 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
Laravel 自带的Auth验证登录方法
Sep 30 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 PHP
PHP中SESSION过期设置
Mar 09 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设置允许大文件上传示例代码
2014/03/10 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
javascript 网页跳转的方法
2008/12/24 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
Vue实现本地购物车功能
2018/12/05 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Python2与Python3的区别实例总结
2019/04/17 Python
使用Python构造hive insert语句说明
2020/06/06 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
顺丰快递Java软件工程师面试题
2015/07/31 面试题
工商管理专业职业生涯规划
2014/01/01 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
2014年医院工作总结
2014/11/20 职场文书
团拜会主持词
2015/07/04 职场文书
python执行js代码的方法
2021/05/13 Python
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS