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中iconv函数使用方法
May 24 PHP
PHP 在线翻译函数代码
May 07 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
PHP扩展开发入门教程
Feb 26 PHP
php-msf源码详解
Dec 25 PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python 使用office365邮箱的示例
2020/10/29 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
如何强制垃圾回收
2015/10/06 面试题
小学语文教学经验交流材料
2014/06/02 职场文书
教师自我剖析材料
2014/09/29 职场文书
2016年春节问候语
2015/11/11 职场文书
导游词之青岛崂山
2019/12/27 职场文书
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技