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扩展函数
Oct 09 PHP
用PHP连接Oracle数据库
Oct 09 PHP
php开发文档 会员收费1期
Aug 14 PHP
php模板原理讲解
Nov 13 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
PHP模块memcached使用指南
Dec 08 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
实现PHP搜索加分页
2016/10/12 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
python中查看变量内存地址的方法
2015/05/05 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python子类继承父类构造函数详解
2019/02/19 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
外出培训学习心得体会
2016/01/18 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技