• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 中英文语言转换类_php技巧

php 搞代码 4年前 (2022-01-26) 31次浏览 已收录 0个评论

起初想到制成XML文@本文9来源gao($daima.com搞@代@#码8网^搞代gaodaima码档形式,这样操作也起来很容易。只是看到说XML效率不怎样
再者就是不同的模板,可这样也有个小问题,有些词汇比如时间提示是不确定,与可能是minute ,day。也有可能复数加 s
那好吧,做成数组,可数组就得做成在php文件的变量,很难做些扩展(我所知道所认为的是这样)
最后做成txt文本文件的形式,同样也为这样的效率担心,打开文件,搜索字符串,截取字符串这些,所幸最后运行了一下,一般机子大概0.0004秒,这让我很惊奇原以为会很慢,毕竟要调用多次。
好吧,上代码

 <BR>class language <BR>{ <BR>static $lanObject; <BR>public $type; // unit , dashboard , menu ,other <BR>public $lan; // language <BR>private $special; // The common in the file <BR>private function __construct() <BR>{ <BR>if( isset($_GET['hl']) || isset($_POST['hl']) ) <BR>{ <BR>switch( isset($_GET['hl'])?$_GET['hl']:$_POST['hl'] ) <BR>{ <BR>case 'en': <BR>$this->lan = 'en'; <BR>case 'zh': <BR>$this->lan = 'zh'; <BR>case 'all': <BR>$this->lan = 'all'; <BR>default: <BR>$this->error(); <BR>} <BR>} <BR>else <BR>$this->lan = isset($_COOKIE['hl']) ? $_COOKIE['hl']:'zh'; <BR>} <BR>public static function getObject() <BR>{ <BR>if( !(self::$lanObject instanceof self) ) <BR>self::$lanObject = new language(); <BR>return self::$lanObject; <BR>} <BR>public function lto($key) //$key is English <BR>{ <BR>if( $this->lan !== 'zh' ) <BR>return $key; <BR>if( empty($this->special) ) // if the $special is null <BR>{ <BR>if( isset($this->type) ) <BR>$this->special = file_get_contents($this->type.'.txt'); <BR>else <BR>return $key; <BR>} <BR>echo $this->search($key); <BR>} <BR>private function search($searchTozh) // PHP String <BR>{ <BR>$key_start = strpos($this->special,$searchTozh); <BR>$key_end = strpos($this->special,' ',$key_start); <BR>$len_str = strlen($searchTozh); <BR>$for_sub = $key_start + $len_str + 1; <BR>return substr($this->special, $for_sub, $key_end - $for_sub); <BR>} <BR>} <BR>


strpos(); 是找到字符串第一次出现的位置 比如 ‘wo’ 在 ‘hello world’ 中,返回值为 6
substr();是截取字符串的一部分  
接下来是调试时加上的代码

 <BR>$la = language::getObject(); <BR>$la->type = 'unit'; <BR>$la->lto('min'); <BR>echo '<br />'; <BR>$la->lto('hello'); <BR>


lto(这里面要翻译的英文); 
unit.txt 文件的内容格式是
hello-你好 min-小 minute-分钟 minutes-分钟
 
$special设计为全局也是想到不止一次会调用lto() ,如果反复加载文件太浪费性能了。
$type设计为公有是考虑到加载的文件的效率问题,有的时候并不需要显示几天前这些,所以不如把这些按使用类型分开,比如有专门负责菜单翻译的menu.txt ,也有专门为操作,比如删除,收藏 翻译的txt文本。这样可以自由设定要加载的文本
语言也可以自由设定。
好吧,程序还可以改进,我没有按http请求中的客户端语言来设置$lan,


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 中英文语言转换类_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址