php 中英文语言转换类

 更新时间:2011年09月07日 00:32:50   作者:  
想做个中英文的功能试一下,只是把一些常用且有规律的词汇比如 ‘评论’ ,时间单位(几秒几小时前这些)可以自由的转化。
起初想到制成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析构函数destruct与垃圾回收机制的讲解

    PHP析构函数destruct与垃圾回收机制的讲解

    今天小编就为大家分享一篇关于PHP析构函数destruct与垃圾回收机制的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • php实现登录页面的简单实例

    php实现登录页面的简单实例

    在本篇文章里小编给大家分享的是关于php实现登录页面的简单实例以及相关知识点,有需要的朋友们学习下。
    2019-09-09
  • PHP中copy on write写时复制机制介绍

    PHP中copy on write写时复制机制介绍

    这篇文章主要介绍了PHP中copy on write写时复制机制介绍,需要的朋友可以参考下
    2014-05-05
  • php轻松实现文件上传功能

    php轻松实现文件上传功能

    这篇文章主要介绍了php轻松实现文件上传功能的全部代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • php实现压缩合并js的方法【附demo源码下载】

    php实现压缩合并js的方法【附demo源码下载】

    这篇文章主要介绍了php实现压缩合并js的方法,涉及php压缩文件类JSMin的相关调用与使用技巧,并附带了完整的demo源码供读者下载参考,需要的朋友可以参考下
    2016-09-09
  • PHP数组操作类实例

    PHP数组操作类实例

    这篇文章主要介绍了PHP数组操作类,涉及php针对数组的删除、转换、分组、排序等相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • php简单压缩css样式示例

    php简单压缩css样式示例

    这篇文章主要介绍了php简单压缩css样式的方法,涉及文件读取及字符替换等相关操作技巧,需要的朋友可以参考下
    2016-09-09
  • PHP使用mysqldump命令导出数据库

    PHP使用mysqldump命令导出数据库

    最近用php写一个数据备份的功能。做法是使用php的system函数执行mysqldump命令,进行备份,这里分享给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • 同台服务器使用缓存APC效率高于Memcached的演示代码

    同台服务器使用缓存APC效率高于Memcached的演示代码

    之前看到有文章说同台服务器上APC的效率是Memcached的7倍,APC效率比Memcached高是肯定的,至于倒底快多少,我写了个小程序测试了下。
    2010-02-02
  • PHP针对中英文混合字符串长度判断及截取方法示例

    PHP针对中英文混合字符串长度判断及截取方法示例

    这篇文章主要介绍了PHP针对中英文混合字符串长度判断及截取方法,结合实例形式分析了php中英文字符串的遍历、转换、截取、计算等相关操作技巧,需要的朋友可以参考下
    2017-03-03

最新评论