12

PHP如何处理语言翻译?我需要根据用户偏好更改网站的语言。另外,我可能无法访问客户端源代码。最多可以上传一个自己的文件夹,自己做动态翻译。

据我所知,基本过程是:将语言 1 输出发送到全局函数 -> 翻译 -> 输出到屏幕。

我需要有人帮助我了解 PHP 的细节。

有没有我不知道的标准实现?有没有人做过这样的事情,如果有,你是怎么做到的?

谢谢。

4

5 回答 5

3

我也一直在寻找这个问题的答案,即使我无法用 php 解决它,我认为它可以用谷歌的语言 api 来完成。

似乎有一种标准的方式可以在 php 中做你想做的事,我认为这是 wordpress 使用http://codex.wordpress.org/Translating_WordPress的方式,它与你制作自己的动态翻译系统非常相似,你也可以这样做这显然与zend 。

但是回到google api,您可以做的是询问用户他们的偏好语言并将该变量保存在 cookie、会话或数据库中,然后将该变量传递给 api 并让它处理翻译。

于 2009-07-29T18:34:36.843 回答
3

由于谷歌停止了这项服务,但您仍然可以将此服务作为免费服务使用。将此代码放入您的服务器(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 & hl= en(english) 和 tl=ar(arabic)。现在您可以调用翻译功能了。

将此归功于。享受翻译。

于 2013-11-01T12:33:15.733 回答
1

你可以使用这个想法:http ://www.phpcollection.com/spell-check-php-yahoo-api.html

于 2009-07-29T19:35:50.080 回答
1

你为什么不在 PHP 中使用谷歌 API。 http://code.google.com/p/gtranslate-api-php/

具体到您的问题,您有两个选择 1. 更改整个网页(翻译)或 2. 仅翻译特定部分,如用户数据。

当您不想更改菜单、页面标题等时,第二个很重要。

在这种情况下,您需要将内容存储在 MySQL(如 CMS)中,并在从原始内容翻译后显示它们。

于 2011-05-03T09:52:24.773 回答
0

试试http://www.phptranslator.com 它可以使用 Google API 在后台翻译您的网站。

于 2010-04-09T16:15:37.803 回答