php 中英文语言转换类


Posted in PHP onSeptember 07, 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添加MySQL数据记录代码
Jun 07 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
php图像处理类实例
Jul 28 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
php微信开发之关键词回复功能
Jun 13 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 PHP
php将字符串转换为数组实例讲解
May 05 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 PHP
php继承的一个应用
Sep 06 #PHP
php 抽象类的简单应用
Sep 06 #PHP
PHP中PDO基础教程 入门级
Sep 04 #PHP
PHP中PDO的错误处理
Sep 04 #PHP
php中将网址转换为超链接的函数
Sep 02 #PHP
php ajax 静态分页过程形式
Sep 02 #PHP
php中防止伪造跨站请求的小招式
Sep 02 #PHP
You might like
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
JS功能代码集锦
2016/05/04 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
js闭包用法实例详解
2016/12/13 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
jquery 手势密码插件
2017/03/17 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
后进生转化工作制度
2014/01/17 职场文书
绿色环保口号
2014/06/12 职场文书
毕业大学生自荐信
2014/06/17 职场文书
英语系毕业生求职信
2014/07/13 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
python脚本框架webpy模板赋值实现
2021/11/20 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
Python使用openpyxl模块处理Excel文件
2022/06/05 Python