2009-07-22 59 views
11

Bản dịch ngôn ngữ được xử lý bằng PHP như thế nào? Tôi cần thay đổi ngôn ngữ của trang web dựa trên tùy chọn của người dùng. Ngoài ra, tôi có thể không có quyền truy cập vào mã nguồn khách hàng. Tối đa, tôi có thể tải lên một thư mục của riêng mình và tự dịch năng động.bản dịch ngôn ngữ trong php

Theo như tôi biết, quy trình cơ bản sẽ là: Gửi đầu ra Ngôn ngữ 1 tới chức năng toàn cục -> dịch -> Xuất sang màn hình.

Tôi cần một người nào đó trợ giúp tôi với các chi tiết cụ thể trong PHP.

Có bất kỳ triển khai chuẩn nào mà tôi không biết không? Có ai đã làm một điều như vậy và nếu có, bạn đã làm như thế nào?

Cảm ơn.

+2

Không có hệ thống dựng sẵn PHP, nhưng có nhiều câu hỏi như thế này trên SO: http://stackoverflow.com/search?q=php+translation – deceze

+0

PHP có phần mở rộng gettext - được tích hợp sẵn chức năng không phải lõi có thể nhận được. – cweiske

Trả lời

3

Tôi cũng đang tìm câu trả lời cho câu hỏi này và mặc dù tôi không thể giải quyết nó bằng php Tôi nghĩ rằng nó có thể được thực hiện bằng ngôn ngữ api của google.

Có vẻ như đây là cách tiêu chuẩn để làm những gì bạn muốn trong php, tôi nghĩ đó là cách wordpress sử dụng http://codex.wordpress.org/Translating_WordPress và nó tương tự như bạn tạo hệ thống dịch năng động của riêng mình, bạn cũng có thể thực hiện điều này với vẻ đẹp zend.

Nhưng quay trở lại google api, bạn có thể yêu cầu người dùng tùy chọn ngôn ngữ và lưu biến đó trong cookie, phiên hoặc cơ sở dữ liệu, sau đó chuyển biến đó tới api và để nó xử lý .

+0

rất tốt +1 Tôi sẽ sử dụng cách dịch WP. –

1

lý do tại sao bạn không sử dụng API Google cho điều này trong PHP. http://code.google.com/p/gtranslate-api-php/

cụ thể cho câu hỏi của bạn, bạn có hai lựa chọn 1. Thay đổi toàn bộ trang web (dịch) Hoặc 2. Dịch chỉ phần cụ thể như dữ liệu người dùng.

Điều thứ hai là quan trọng khi bạn không muốn thay đổi menu, tiêu đề trang, vv

Trong trường hợp này, bạn cần phải lưu trữ các nội dung trong MySQL (như CMS) và hiển thị chúng sau khi dịch từ bản gốc .

4

Khi Google ngừng dịch vụ này nhưng bạn vẫn có thể sử dụng dịch vụ này dưới dạng dịch vụ miễn phí .Đặt mã này vào máy chủ của bạn (www) và chạy tệp này.

<?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> 

Hiện bản dịch tiếng Hin-ddi sang tiếng Anh, tiếng Anh sang tiếng Hin-ddi, tiếng Anh sang tiếng Ả Rập. Nhưng bạn có thể translate any language to any language supported by Google. Bạn chỉ cần làm là goto trang này

https://translate.google.co.in/

Bây giờ mở firebug của bạn hoặc kiểm tra nguyên tố. chọn ngôn ngữ bạn cần dịch sang ngôn ngữ nào. Hãy viết gì đó lên hộp và nhấn nút dịch. Bây giờ, hãy bắt yêu cầu của Google gửi để dịch. Có vẻ như thế này.

'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' 

Bây giờ dán yêu cầu vào chức năng dịch.Và thêm text='.$word.'& sau client=t. Thay đổi https thành http.

Sau đó, bạn cần gọi hàm dịch từ thẻ html. như thế này echo Translate('hii how are you','en_to_ar'); Tham số đầu tiên là những gì bạn muốn dịch.Đặt bạn trên đó. Tham số thứ hai là dạng ngắn của ngôn ngữ mà bạn muốn dịch sang ngôn ngữ nào. Bạn có thể nhận được mẫu ngắn từ request mà bạn nhận được từ google dịch.

kiểm tra điều này client=t&sl=en&tl=ar&hl=en& ..sl & hl = vi (tiếng Anh) và tl = ar (tiếng Ả Rập). Bây giờ bạn đã sẵn sàng gọi chức năng dịch.

Tặng tín dụng cho this. Thưởng thức dịch.

Các vấn đề liên quan