如何在PHP中处理语言翻译?我需要根据用户偏好更改网站的语言。此外,我可能无法访问客户端源代码。最多,我可以上传自己的文件夹并自己进行动态翻译。
据我所知,基本流程如下: 将语言1输出发送到全局功能 - >翻译 - >输出到屏幕。
我需要有人帮助我解决PHP中的细节问题。
是否有任何我不知道的标准实现? 有没有人做过这样的事情,如果有的话,你是怎么做到的?
感谢。
答案 0 :(得分:4)
谷歌停止此服务,但你仍然可以将此服务用作免费服务。将此代码放在服务器(www)中并运行此文件。
<?php
function curl($url,$params = array(),$is_coockie_set = false)
{
if(!$is_coockie_set){
/* STEP 1. let’s create a cookie file */
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
/* STEP 2. visit the homepage to set the cookie properly */
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
}
$str = ''; $str_arr= array();
foreach($params as $key => $value)
{
$str_arr[] = urlencode($key)."=".urlencode($value);
}
if(!empty($str_arr))
$str = '?'.implode('&',$str_arr);
/* STEP 3. visit cookiepage.php */
$Url = $url.$str;
$ch = curl_init ($Url);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
return $output;
}
function Translate($word,$conversion = 'hi_to_en')
{
$word = urlencode($word);
// dutch to english
if($conversion == 'nl_to_en')
$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=en&sl=nl&tl=en&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1';
//english to arabic
if($conversion=='en_to_ar')
{
$url = 'http://translate.google.co.in/translate_a/t?client=t&text='.$word.'&sl=en&tl=ar&hl=en&sc=2&ie=UTF-8&oe=UTF-8&prev=btn&ssel=3&tsel=4&q=free%20translate%20api';
}
// english to hindi
if($conversion == 'en_to_hi')
$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=en&sl=en&tl=hi&ie=UTF-8&oe=UTF-8&multires=1&otf=1&ssel=3&tsel=3&sc=1';
// hindi to english
if($conversion == 'hi_to_en')
$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=en&sl=hi&tl=en&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&trs=1&ssel=3&tsel=6&sc=1';
//$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=en&sl=nl&tl=en&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1';
$name_en = curl($url);
$name_en = explode('"',$name_en);
return $name_en[1];
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<?php
echo "<br><br> Hindi To English <br>";
echo Translate('कानूनी नोटिस: यह गूगल के अनुवादक सेवाओं की एक दुरुपयोग है, आप इस के लिए भुगतान करना होगा.');
echo "<br><br> English To Hindi <br> ";
echo Translate('legal notice: This is an abuse of google translator services , you must pay for this.','en_to_hi');
echo "<br><br> Dutch To English <br>";
echo Translate('Disclaimer: Dit is een misbruik van Google Translator diensten, moet u betalen.','nl_to_en');
echo "<br><br> English To Arabic<br>";
echo 'hii how are you<br>';
echo Translate('hii how are you','en_to_ar');
echo "<br><br> Just Kidding ....... <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g' alt=':)' class='wp-smiley'> ";
?>
</body>
</html>
目前将印地语翻译成英语,英语翻译成印度语,英语翻译成阿拉伯语。
但你可以translate any language to any language supported by Google
。
你只需要做这个转到这个页面
https://translate.google.co.in/
现在打开你的萤火虫或检查元素。 选择您需要翻译哪种语言的语言。在框中写一些内容并点击翻译按钮。 现在抓住谷歌发送到翻译的请求。它看起来像这样。
'https://translate.google.co.in/translate_a/t?client=t&sl=en&tl=ar&hl=en&sc=2&ie=UTF-8&oe=UTF-8&oc=1&otf=1&ssel=0&tsel=0&q=d'
现在将请求粘贴到翻译功能中。并在text='.$word.'&
之后添加client=t
。
将https更改为http。
之后你需要从html标签调用translate函数。
像这样echo Translate('hii how are you','en_to_ar');
第一个参数是你要翻译的内容。请在那边发表声明。
第二个参数是您要翻译的语言的简短形式。
您可以从谷歌翻译的request
获得简短表格。
检查client=t&sl=en&tl=ar&hl=en&
.. sl&amp; hl = en(英语)和tl = ar(阿拉伯语)。
现在您已准备好调用translate函数。
将信用额度归功于this。享受翻译。
答案 1 :(得分:3)
我一直在寻找这个问题的答案,即使我无法用php解决它,我认为可以用google的语言api来完成。
似乎有一种标准的方式在php中执行你想做的事情,我认为它是wordpress使用http://codex.wordpress.org/Translating_WordPress并且它与你创建自己的动态翻译系统非常相似,你也可以用{ {3}}显然。
但回到zend,您可以做的是询问用户他们的偏好语言并将该变量保存在cookie,会话或数据库中,然后将该变量传递给api并让它处理翻译。
答案 2 :(得分:1)
答案 3 :(得分:1)
为什么不在PHP中使用谷歌API。 http://code.google.com/p/gtranslate-api-php/
具体到您的问题,您有两种选择 1.更改整个网页(翻译) 要么 2.仅翻译用户数据等特定部分。
当您不想更改菜单,页面标题等时,第二个很重要。
在这种情况下,您需要将内容存储在MySQL(如CMS)中,并在翻译完原始内容后显示它们。
答案 4 :(得分:0)
试试http://www.phptranslator.com 它可以使用Google API在后台翻译您的网站。