php 中英文语言转换类代码
2015-01-24信息快讯网
再者就是不同的模板,可这样也有个小问题,有些词汇比如时间提示是不确定,与可能是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多文件上传功能实现原理及代码
ajax完美实现两个网页 分页功能的实例代码
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
简单的php数据库操作类代码(增,删,改,查)
PHP插入排序实现代码
使用php判断浏览器的类型和语言的函数代码
php语言流程控制中的主动与被动
PHP语言中global和$GLOBALS[]的分析 之二
选择PHP作为网站开发语言的原因分享
php 中英文语言转换类
php 广告调用类代码(支持Flash调用)
php中计算中文字符串长度、截取中文字符串的函数代码
php简单的会话类代码
php中将时间差转换为字符串提示的实现代码
用php解析html的实现代码
PHP中将数组转成XML格式的实现代码
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
PHP中使用gettext来支持多语言的方法