2011-01-09 30 views
12

được google'ing một thời gian như thế nào là cách tốt nhất để dịch với google dịch trong PHP, tìm cách rất khác nhau chuyển đổi URL, hoặc sử dụng Js nhưng tôi muốn làm điều đó chỉ với php (hoặc với một giải pháp rất đơn giản JS/jQuery)

dụ:

//hopefully with $from_lan and $to_lan being like 'en','de', .. or similar 
function translate($from_lan, $to_lan, $text){ 

// do 

return $translated_text; 

} 

bạn có thể cho tôi một đầu mối? hoặc có thể bạn đã có chức năng này ..

ý định của tôi là sử dụng nó chỉ cho các ngôn ngữ tôi chưa xác định (hoặc các phím tôi chưa xác định), đó là lý do tại sao tôi rất đơn giản, ..

EDIT

nhờ trả lời của bạn bây giờ chúng tôi đang cố gắng soulutions này:

function auto_translate($from_lan, $to_lan, $text){ 
// do 


$json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan)); 
$translated_text = $json->responseData->translatedText; 


return $translated_text; 

}

(đã có một phụ 'g' trên var iables cho lang ... anyway)

nó sẽ trả về: Công việc bây giờ :)

tôi không thực sự hiểu nhiều chức năng, vì vậy bất kỳ ý tưởng tại sao không acepting đối tượng? (Bây giờ tôi làm)

OR:

function auto_translate($from_lan, $to_lan, $text){ 
    // do 

// $json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan)); 
// $translated_text = $json['responseData']['translatedText']; 
    error_reporting(1); 
    require_once('GTranslate.php'); 
    try{ 
     $gt = new Gtranslate(); 
     $translated_text = $gt->english_to_german($text); 

    } catch (GTranslateException $ge) 
    { 
      $translated_text= $ge->getMessage(); 
    } 


    return $translated_text; 
} 

Và một điều này có vẻ tuyệt vời, nhưng nó thậm chí không mang lại cho tôi một lỗi, trang sẽ không tải (error_report (1): S)

cảm ơn trước!

+0

json_decode trả về một đối tượng chứ không phải mảng. Vì vậy, bạn phải thực hiện '$ json-> responseData-> translateText' thay vì' $ json ['responseData'] ['translateText'] ', mà bây giờ tôi thấy rằng bạn nhận được dưới đây. – Phoenix

Trả lời

11

tôi đã không kiểm tra này, nhưng thử:

function translate($from_lan, $to_lan, $text){ 
    $json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan)); 
    $translated_text = $json->responseData->translatedText; 

    return $translated_text; 
} 

EDIT: Cố định, thử nghiệm và công trình.

+0

cảm ơn bạn rất nhiều! cập nhật các câu hỏi với mã của bạn (có một lỗi rác) và giải thích các lỗi: (nhưng nó chúng tôi có thể làm cho nó hoạt động nó chính xác những gì tôi cần! và chắc chắn là hữu ích cho nhiều người khác –

+0

tôi sửa nó và chỉnh sửa mã của tôi. – Savetheinternet

+0

Tôi nhận được một lỗi Cảnh báo: file_get_contents() [function.file-get-nội dung]: Không thể tìm thấy các wrapper "https" - bạn đã quên để kích hoạt nó khi bạn cấu hình PHP? trong D: \ translate.php trên dòng 166 Cảnh báo: file_get_contents (https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=Translate&langpair=auto|es) [function.file-get-contents]: không mở được luồng: Không có tệp hoặc thư mục nào trong D: \ translate.php trên dòng 166 Lưu ý: Cố gắng lấy thuộc tính không đối tượng trong D: \ translate.php trên dòng 167 Lưu ý: Cố gắng lấy thuộc tính không đối tượng trong D: \ translate.php trên dòng 167 – Smith

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