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

php 中英文语言转换类详解

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

多语言网站开发,重点的还是在解决语言之间的问题。
那如何解决这个问题呢?大概就分三步走:

1.页面多语言
2.数据库多语言
3.用户访问语言统一

1.页面多语言
需要考虑的问题:
A.用户登陆时候,自动识别字符,调用不同的语言包?
B.用户切换不同语言时候,调用不同的语言包?
C.增加多语言后的目录结构?

页面多语言也就是外观的多语言化,这里可以采用静态的语言包的方式。
设计时候就应该包括language的目录,针对不同语言有独立的子目录。
如英文language/en ,简体中文language/gb,繁体中文language/b5 (可以扩展其他语言)
每个目录下就包含了对每个页面的语言版本。选择语言版本时候就可以调用相应版本的语言包。

下面是实例代码

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(这里面要翻<p style="color:transparent">。本文来源gao!%daima.com搞$代*!码网1</p><cite>搞代gaodaima码</cite>译的英文);  <br />unit.txt 文件的内容格式是 <br />hello-你好 min-小 minute-分钟 minutes-分钟 <br />  <br />$special设计为全局也是想到不止一次会调用lto() ,如果反复加载文件太浪费性能了。 <br />$type设计为公有是考虑到加载的文件的效率问题,有的时候并不需要显示几天前这些,所以不如把这些按使用类型分开,比如有专门负责菜单翻译的menu.txt ,也有专门为操作,比如删除,收藏 翻译的txt文本。这样可以自由设定要加载的文本 <br />语言也可以自由设定。<p>以上就是php 中英文语言转换类详解的详细内容,更多请关注<a href="http://www.gaodaima.com">搞代码gaodaima</a>其它相关文章!

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

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

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

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