动态内容国际化,数据库设计

一个系统同时可以支持多种文字,简单说,同一个网站,既有中文版,英文版,法文版......
那么这里就存在一个语言选择的问题,软件本身的语言选择就是我们耳熟能详的“国际化”,根据用户的区域,或者设置选择对应的语言。但是软件中有很多内容是靠用户维护进去的,比如网站首页的“公司新闻”,这样的“内容”要做到选择相应的语言显示就不是前面说的软件“国际化”可以做到的了。

 

根据各位兄弟的意见,我总结了一下,主要分两类解决方法:
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

Java代码  

  1. <?php  
  2. header("Content-Type:text/html; charset=gb2312");  
  3. class Google_API_translator{  
  4.     public $opts = array("text" => "", "language_pair" => "en|it");  
  5.     public $out = "";  
  6.     function setOpts($opts) {  
  7.         if($opts["text"] != "") $this->opts["text"] = $opts["text"];  
  8.         if($opts["language_pair"] != "") $this->opts["language_pair"] = $opts["language_pair"];  
  9.     }  
  10.   
  11.     function translate() {  
  12.         $this->out = "";  
  13.         $google_translator_data ='';  
  14.         $google_translator_url = "http://translate.google.com/translate_t?langpair=".($this->opts["language_pair"])."&";  
  15.         $google_translator_data .= "text=".($this->opts["text"]);  
  16.   
  17.         $gphtml = $this->postPage(array("url" => $google_translator_url, "data" => $google_translator_data));  
  18.         $out = substr($gphtml, strpos($gphtml, "<span id=result_box class=\"short_text\">"));  
  19.         $out = substr($out, 29);  
  20.         $out = substr($out, 0, strpos($out, "</span>"));  
  21.         $this->out = str_replace("ort_text\">","",strip_tags(utf8_encode($out)));  
  22.         return ($this->out);  
  23.     }  
  24.   
  25.     function postPage($opts) {  
  26.         $html ='';  
  27.         if($opts["url"] != ""&&$opts["data"]!= "") {  
  28.             $ch = curl_init($opts["url"]);  
  29.             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  30.             curl_setopt($ch, CURLOPT_HEADER, 1);  
  31.             curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
  32.             curl_setopt($ch, CURLOPT_TIMEOUT, 15);  
  33.             curl_setopt($ch, CURLOPT_POST, 1);  
  34.             curl_setopt($ch, CURLOPT_POSTFIELDS, $opts["data"]);  
  35.             $html = curl_exec($ch);  
  36.             if(curl_errno($ch)) $html = "";  
  37.             curl_close ($ch);  
  38.         }  
  39.         return $html;  
  40.     }  
  41. }  
  42. $g = new Google_API_translator();  
  43. $g->setOpts(array("text" => "这是一个测试", "language_pair" => "zh-CN|en"));  
  44. $g->translate();  
  45. print_r($g->out);  
  46. ?>  
时间: 2024-09-17 04:41:16

动态内容国际化,数据库设计的相关文章

用于动态内容和数据库交互的最优秀的语言:PHP

Joe Brockmeier 简要介绍了 PHP 脚本语言,讨论了 PHP 的起源.性能和适用的平台.一个简单的 PHP 脚本示例则着重说明了其基本语法和用法. 如果您从事基于 Web 的开发工作,那么可能已经听说过 PHP.您也许不太确切地知道 PHP 是什么.如何工作或者为什么如此热门,但现在该是进一步了解 PHP 的时候了.因此本文简要介绍了关于 PHP 基础的基本概念. 一点背景知识 PHP 是作为一个小开放源码,随着越来越多的人意识到它的实用性从而逐渐发展起来.Rasmus Lerdo

基于 AOP 的动态数据国际化框架的设计与实现

互联网的发展推动了全世界的交流,需要开发出满足不同地区语言.文化.生活习惯要求的 Web 应用,因此,软件的国 际化已成为必须要解决的问题.国内外目前采用的国际化方法存在以下一些不足: 已存在的动态数据国际化解决方法不易于移植和复用. 没有现成的动态数据国际化解决方案或框架. 针对以上问题,需要提出一个动态数据国际化的解决方案. 为了在短时间内,规范高效的构建出国际化的 Web 应用,需要设计一种易于理解和维护的国际化开发框架.作者旨在将国际化相关的共性操作抽取出来进行一致性处理,生成 一种基于

可动态扩展的数据库模型设计

在通常的数据库设计中,我们定义了每个实体有多少个属性,每个属性的数据类型是什么,有多长,是否允许为空,有什么约束条件等,这些定义是完全静态的,系统创建时就全部定义好,不能动态修改.但是对于实体的属性变化很快,或者实体和属性由用户在系统中自行定义的情况下,那么就需要一个可以动态扩展的数据库模型,以保存各种动态产生的数据. 比如我们要做一个电子商务网站,需要建立一个商品表以保存各种要卖出的商品的属性.但是商品的属性各种各样,不同类别的商品在属性上千差万别,不可能建立一个静态的商品表来存储所有的属性.

AOP基于J2EE架构的Web应用动态数据国际化框架

该方案已成功应用,可以实现规范.高效的国际化软件开发,减少软件开发所需要的时间和精力. 互联网的发展推动了全世界的交流,需要开发出满足不同地区语言.文化.生活习惯要求的 Web 应用,因此,软件的国际化已成为必须要解决的问题.国内外目前采用的国际化方法存在以下一些不足: 已存在的动态数据国际化解决方法不易于移植和复用. 没有现成的动态数据国际化解决方案或框架. 针对以上问题,需要提出一个动态数据国际化的解决方案. 为了在短时间内,规范高效的构建出国际化的 Web 应用,需要设计一种易于理解和维护

asp.net开发类似于qq空间中我的动态,好友动态 的数据库设计

问题描述 asp.net开发类似于qq空间中我的动态,好友动态的数据库设计,比如好友动态中,有好友发表了心情,日志,分享了某某日志,照片,转载了某某日志,心情,相片,好友与某某成为好友关系,好友参加某某活动等 解决方案 解决方案二:该回复于2011-11-07 10:22:51被版主删除解决方案三:首先用户产生了动态,放到动态表feed里,里面有动态的产生者,动态的内容,动态的APPID等.同时,把这条动态的ID放入队列queue里,也就是我们常说的消息队列,队列可以是memory表,可以是me

营销数据库是隐藏在动态内容背后的大脑

用个性化的营销邮件吗?本文将告诉读者如何让企业的网站和社交网络更具个性化. 许多公司多年来一直在让自己的营销电子邮件显得更具个性,而且理由似乎也很充分.据Jupiter Research显示,与营销内容相关的个性化邮件,比普通广播发送的邮件给企业带来的收入多十八倍,并且,如果针对特定用户群而制定邮件发送内容,那么销售机会还会增加20%. 然而,个性化大多只停留在邮件的领域,当收件人点击邮件之时,邮件的生命周期就会在通用网页上戛然而止.出现这种情况,部分原因是由于技术的限制,但是随着越来越多的网络

select-MS SQL 复杂数据库设计,行和列都是动态的。最终生成一个SELECT

问题描述 MS SQL 复杂数据库设计,行和列都是动态的.最终生成一个SELECT 想要实现上图中的效果,尺码与颜色都是动态的. 我自己设计的数据表 尺码db_cm 尺码ID 订单ID 尺码名称 颜色DB_YS 颜色ID 订单ID 颜色名称 数量DB_SL 数量ID 订单ID 尺码 颜色 数量 备注 3个表有个共同的关键字 订单ID 现在想实现图片中的效果,SQL应该怎么写?我用的是MS SQL2000 如果数据表设计不合理,那应该怎么设计? 解决方案 那个复杂标题行的问题不用管,我用DBGRI

数据库-网站新闻动态后台要如何设计,如何获取更新状况

问题描述 网站新闻动态后台要如何设计,如何获取更新状况 解决方案 push.页面ajax异步请求后台数据

求高手指导,引用母版页的子页里的Title标题怎么能动态连接到数据库里的内容呢??

问题描述 我做了一个母版页,然后子页引用了母版页,但是子页的<Title="UntitledPage">,我想实现的功能是把该子页的标题改成该页显示的引用了数据库中的文章标题,更进一步想能够把该子页的<meta>标签内容也能够存取数据库里,求高手指导. 解决方案 解决方案二:人工顶一顶,求高手指教解决方案三:既然是asp页面,那你这样试试页面内容<title><%=strTitle%></title>后台代码publicstr