一个系统同时可以支持多种文字,简单说,同一个网站,既有中文版,英文版,法文版......
那么这里就存在一个语言选择的问题,软件本身的语言选择就是我们耳熟能详的“国际化”,根据用户的区域,或者设置选择对应的语言。但是软件中有很多内容是靠用户维护进去的,比如网站首页的“公司新闻”,这样的“内容”要做到选择相应的语言显示就不是前面说的软件“国际化”可以做到的了。
根据各位兄弟的意见,我总结了一下,主要分两类解决方法:
1。 使用智能翻译。根据用户的设置,把内容翻译成对应的语言,即内容只需输入一次,如输入中文,当日文用户浏览的时候,显示对应日文内容;当英文用户浏览时,对应显示英文内容。
Google Translate API For PHP是一个基于Google Translate开发的翻译类,可以帮助PHP程序员实现多国文字的翻译。本类使用到了Google的AJAX Translate API和Snoopy类,以模拟HTTP请求的方式实现数据的翻译。
2。 为每个语种设计一套数据库,维护“内容”时,每种语言都维护进去,table_cn, table _en
3。 设计一套适用多种语言的数据库。例如使用一个数据字典来定义每一种语言,然后在维护每一种语言进去,建立两张表,Language和Content,Language相当于一个数据字典,列出系统用到的所有语种。Content表就是维护的内容——也就是我们想解决的多语种显示的东西。两张表表样如下:
Language
id----|---langeuage-----|---description----
1-----|---------zh--------|------中文---------
2-----|---------en--------|------英文---------
3-----|---------fr---------|------法文---------
Content
id----|---content----------------|---languageId------
1-----|----你好!----------------|------1------------
2-----|----How are you!---------|------2------------
3-----|----fa wen bu hui---------|------3------------
这样Content表中就保存了需要语种的所有的语言信息(当然要维护进去),然后再根据用户的需要,对应Language表选择出对应语种的Content内容。
开启curl, charset=gb2312
<?php header("Content-Type:text/html; charset=gb2312"); class Google_API_translator{ public $opts = array("text" => "", "language_pair" => "en|it"); public $out = ""; function setOpts($opts) { if($opts["text"] != "") $this->opts["text"] = $opts["text"]; if($opts["language_pair"] != "") $this->opts["language_pair"] = $opts["language_pair"]; } function translate() { $this->out = ""; $google_translator_data =''; $google_translator_url = "http://translate.google.com/translate_t?langpair=".($this->opts["language_pair"])."&"; $google_translator_data .= "text=".($this->opts["text"]); $gphtml = $this->postPage(array("url" => $google_translator_url, "data" => $google_translator_data)); $out = substr($gphtml, strpos($gphtml, "<span id=result_box class=\"short_text\">")); $out = substr($out, 29); $out = substr($out, 0, strpos($out, "</span>")); $this->out = str_replace("ort_text\">","",strip_tags(utf8_encode($out))); return ($this->out); } function postPage($opts) { $html =''; if($opts["url"] != ""&&$opts["data"]!= "") { $ch = curl_init($opts["url"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $opts["data"]); $html = curl_exec($ch); if(curl_errno($ch)) $html = ""; curl_close ($ch); } return $html; } } $g = new Google_API_translator(); $g->setOpts(array("text" => "这是一个测试", "language_pair" => "zh-CN|en")); $g->translate(); print_r($g->out); ?>