2012-04-16 1 views
0

Я использую Google переводчик API, чтобы перевести мой сайт в некоторых веб-сайтах:несколько запросов к Google Переводчик API сделать сайт слишком медленно

Я делаю это так:

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; 
} 

Как пояснил translate a PHP $string using google translator API

Wich отлично работает (не фокусируется на качестве перевода), проблема в том, что около 20/30 запросов (или больше) сделают сайт непригодным .. слишком медленно. если вы хотите проверить, просто зайдите на

http://funcook.com/ и тест на французском http://funcook.com/?lan=3 или немецком http://funcook.com/?lan=4

Я также попытался петли все струны моего сайта, перевести их и сохранить переведенные строки, так что я не нужен просить так много раз,

, но они около 300, и он не в процессе (около 50%) я думаю, из-за задержки

так вопрос: мкА лучшая альтернатива?

+0

Для каждой удаленной службы потребуется время, вы должны кэшировать переведенные части, поэтому вам не нужно постоянно звонить в удаленную службу. – hakre

ответ

2

Нет лучшей альтернативы. Что вам нужно сделать, это кешировать результаты, полученные из Google Translate и не загружать из Google Translate каждый раз. Напишите переводы в файл или базу данных и загрузите их оттуда. Если ключевое слово не существует, обратитесь к Google Translate. И время от времени очищайте/перезагружайте кеш, если считаете, что перевод меняется во времени.

Никогда не делайте несколько запросов к внешним службам без их кеширования. Вы в основном тратите свои собственные ресурсы, а также, скорее всего, в конечном итоге блокируются Google.

+0

Знаете ли вы, как это сделать? не могли бы вы привести пример. – Mahesh