<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[如何设计一个能用google翻译多语言的站点]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Mon, 06 Apr 2009 07:30:16 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	很多时候，我们需要做一个多语言的站点，cosbeta认为目前多语言网站的解决方案比较多，比如：<br/><br/>做几个不同的分站，通过用户第一次的选择将用户定位到相应语言的分站； <br/>编辑网站内容的时候，添加多种语言，然后通过用户的选择从数据库中获取对应的语言； <br/>添加一个google翻译按钮，用户自行选择google翻译查看不同语言的版本； <br/>利用google 翻译接口，通过js实时翻译网页文字，cosbeta今天打算要介绍的就是这种方法； <br/>上面4种方法的优缺点我这里就不多描述了，相信大家都很清楚了。应客户的要求，再加上翻译方便和翻译的通用性的需求，cosbeta决定用第4种方法为客户解决多语言的问题。<br/><br/>最开始cosbeta的解决办法是想通过程序模拟客户端去直接读取google对当前页面翻译的内容，从而实现页面的多语言版本。比如用户访问<a href="http://storyday.com?p=1" target="_blank">http://storyday.com?p=1</a>，当用户需要访问日语版时，cosbeta就将此页面通过php发送给google的网页翻译接口，然后将翻译的结果读取出来，显示在当前的页面上。然而后来cosbeta发现这种方式是不可取的，一方面google对客户端的限制比较严格，用php模拟客户端可能会导致数据获取的失败，另外一方面，google并没有推荐这种方式，所以很容易导致翻译失效。<br/><br/>后来cosbeta就转向了google的翻译API，配上jquery对Dom灵活的操作，很容易就解决了这个问题。<br/><br/>首先制作页面的时候，我将所有需要翻译的tag都添加了一个css，名为multilang,比如<a href=”#” class=”multilang”>关于我们</a>，在网页的末尾用jquery遍历dom，逐一翻译然后替代原来的文本，按照下面的步骤操作，展示一个例子给大家：<br/><br/>添加google ajax api到网页的顶端,<br/><br/><div class="code"><br/><br/>&lt;script src=&quot;http://www.google.com/jsapi?key=GOOGLEAPI&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; <br/>&lt;script language=&quot;Javascript&quot; type=&quot;text/javascript&quot;&gt; <br/>//&lt;!&#91;CDATA&#91; <br/>google.load(&quot;jquery&quot;, &quot;1.2.6&quot;); <br/>google.load(&quot;language&quot;, &quot;1&quot;); <br/>//&#93;&#93;&gt; <br/><br/>&lt;/script&gt;<br/><br/></div><br/><br/>这段代码同时将google的翻译接口和jquery js库引入了网页当中。代码中的GOOGLEAPI需要在这里申请。 <br/>给所有需要翻译的标签添加class=”multilang”，若是标签里面已经有class=”xxx”只需要变成 class=”xxx multilang”即可; <br/>添加读写cookie的JS代码，目的是为了记住当前用户语言的选择：<br/><br/>(show/hide)plain text<br/><br/><div class="code"><br/><br/>这段代码同时将google的翻译接口和jquery js库引入了网页当中。代码中的GOOGLEAPI需要在这里申请。 <br/>给所有需要翻译的标签添加class=”multilang”，若是标签里面已经有class=”xxx”只需要变成 class=”xxx multilang”即可; <br/>添加读写cookie的JS代码，目的是为了记住当前用户语言的选择：<br/><br/><br/>&#91;code&#93;<br/><br/>var aCookie = document.cookie.split(&quot;; &quot;); <br/>function createCookie(name,value,days) &#123; <br/>if (days) &#123; <br/>var date = new Date(); <br/>date.setTime(date.getTime()+(days*24*60*60*1000)); <br/>var expires = &quot;; expires=&quot;+date.toGMTString(); <br/>&#125; <br/>else var expires = &quot;&quot;; <br/>document.cookie = name+&quot;=&quot;+value+expires+&quot;; path=/&quot;; <br/>&#125; <br/>function readCookie(CookieEleName) <br/>&#123; <br/>var cookieValue = &quot;&quot;; <br/>if( aCookie ==null ) return cookieValue; <br/>for (var i=0; i &lt; aCookie.length; i++)&#123; <br/>var CookieArray = aCookie&#91;i&#93;.split(&quot;=&quot;); <br/>if (CookieEleName == CookieArray&#91;0&#93;)&#123; <br/>cookieValue = unescape(decodeURI(CookieArray&#91;1&#93;)); <br/>&#125; <br/>&#125; <br/>return cookieValue; <br/>&#125;<br/><br/></div><br/><br/>撰写google翻译函数<br/><br/><div class="code"><br/><br/>function trans(obj,lang)&#123;//调用google 翻译 <br/>google.language.translate(obj.html(), &quot;&quot;, lang, function(result) &#123; <br/>if (!result.error) &#123; <br/>var container = document.getElementById(&quot;translation&quot;); <br/>obj.html( result.translation ); <br/>&#125; <br/>&#125;); <br/>&#125; <br/>function transMe(lang)&#123;//遍历dom，翻译整个页面 <br/>$(&quot;.multilang&quot;).each(function(i)&#123; <br/>trans($(this),lang);&nbsp;&nbsp;&nbsp;&nbsp;&#125;); <br/>&#125; <br/>function initLang()&#123;//定义初始化翻译，在页面调用的时候翻译 <br/>var lang=readCookie(&#039;lang&#039;); <br/>if( lang.length &gt; 1)&#123; <br/>transMe(lang); <br/>&#125;&#125; <br/>function Sl(l)&#123;createCookie(&#039;lang&#039;,l,1000);transMe(l);&#125;//定义函数sl=switchlanguage翻译本页，在需要翻译的地方调用这个js函数即可<br/><br/></div><br/><br/>引入上面的js，在页面最顶端<br/><br/><div class="code"><br/>&lt;script&gt;window.onload=initLang;&lt;/script&gt;<br/></div><br/><br/>至此，便可以随心所欲翻译页面了。其实原理很简单：1.引入jquery和google 翻译库 2.编写翻译函数，用户点击对应语言的时候翻译当前页，并且记录当前的lang到cookie 3.初始化页面的时候根据cookie选择性的翻译当前页面。<br/><br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/google%25E7%25BF%25BB%25E8%25AF%2591/" rel="tag">google翻译</a> , <a href="http://www.dzhope.com/tags/google%25E7%25BF%25BB%25E8%25AF%2591%25E6%258E%25A5%25E5%258F%25A3/" rel="tag">google翻译接口</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 如何设计一个能用google翻译多语言的站点]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>