手机
当前位置:查字典教程网 >编程开发 >php教程 >php 中英文语言转换类
php 中英文语言转换类
摘要:起初想到制成XML文档形式,这样操作也起来很容易。只是看到说XML效率不怎样再者就是不同的模板,可这样也有个小问题,有些词汇比如时间提示是不...

起初想到制成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 eval函数一句话木马代码

php curl 上传文件代码实例

一个php作的文本留言本的例子(四)

php的控制语句

PHP 中执行系统外部命令

php实现图片转换成ASCII码的方法

将PHP作为Shell脚本语言使用

一个php作的文本留言本的例子(二)

php.ini中文版

自动跳转中英文页面

精品推荐
分类导航