Použití Google Translate API v PHP

Když se v současné době setkáte s požadavkem na vytvoření aplikace, která bude spoléhat na dostupné služby k překladu textu, zpravidla myšlenky směřují k využití Google Translate nebo Bing Translator. API u Google Translate není zdarma, platíte 20 dolarů za milión přeložených znaků. Bing Translator každý měsíc přeloží bezplatně 2 milióny znaků. Pokud potřebujete více, podívejte se na ceník. I když by mohlo nasazení služby Bing Translator vzhledem k provozním nákladům symbolizovat jasnou volbu, nezapomeňte si nejprve porovnat kvalitu překladu do cílového jazyka.

V mém případě se překlad textu svěřil vyhledávacímu gigantovi Google. I když dokumentace popisuje nasazení API v mnoha programovacích jazycích, nenašel jsem kontaktování služby v PHP s parametry, které jsem požadoval. Dozajista se proto bude hodit, když ukáži, jakým způsobem text překládám.

require_once './google-api-php-client/src/Google_Client.php';
require_once './google-api-php-client/src/contrib/Google_TranslateService.php';

function translate($from, $to, $what)
{
$client = new Google_Client();
$client->setApplicationName('JmenoAplikace');  
$client->setDeveloperKey('123456789');
$service = new Google_TranslateService($client);

$translations = $service->translations->listTranslations($what, $to, array(
                "source" => $from,
                "format" => "html"
));
            
return $translations["translations"][0]["translatedText"];
}

Pro snadnější práci využívám knihovnu pojmenovanou Google API Client Library. Tu stačí stáhnout a rozbalit do zvoleného umístění. Ve zdrojovém kódu následně připojíte soubor Google_Client.php a zvolenou službu, kterou budete používat. Já chci překládat text, a proto se poohlédnu po Google_TranslateService.php ze složky contrib. Nasleduje vložení vývojářského klíče. Ten se dozvíte po přihlášení do Google API Console pod záložkou API Access konkrétního projektu. Zde hledejte část Simple API Access.

Nyní je na čase zavolat metodu, která obstará získání překladu. Já přitom znám původní jazyk i ten překládaný. Nepotřebuji proto, aby se jej Google snažil detekovat, v čemž ostatně u velmi krátkého překladu skládajícího se z jednoho slova ne vždy uspěje. Do parametrů $to a $from se jednoduše vloží ISO zkratka dle standardu 639-1, která má 2 znaky. Dále chci, aby Google přeložil text obsahující i HTML tagy tím způsobem, že je zachová. K tomu stačí specifikovat formát. Dle dokumentace se jako výchozí automaticky nastaví HTML, tento parametr tedy není nutno explicitně uvádět, alespoň ale budete mít představu kam sáhnout, když se rozhodnete chování překladu změnit.

Pokud dojde k chybě, vyhodí se výjimka Google_ServiceException. Já raději počítám i s Google_AuthException, Google_CacheException, Google_Exception a Google_IOException. Dále v případě reálného produkčního nasazení kontroluji, zda skutečně v polích existují příslušné indexy. K podobné opatrnosti mě poprvé donutilo API od Facebooku, kdy odpověď serveru ne vždy odpovídala tomu, co bylo uvedeno v dokumentaci.

2 komentáře u „Použití Google Translate API v PHP

  1. korem

    Ahoj,

    díky za tento návod, něco takového jsem přesně nějakou chvíli hledal :-) Jinak v PHP jsem zatím ne nijak zvlášť pokročilý, ale myslím že je to celkem v pohodě jazyk s dobrým uplatněním. Ještě chtěl bych se zeptat, hledal jsem si práci abych získal i také praktické zkušenost a narazil jsem na stránku http://timone.cz/, nemáte někdo nějaké reference na tyto stránku, resp. na tu společnost? Díky :)

    1. Joan

      Steph, I've been reading Dooce for at least five years, so I am familiar with her tone and her humor. The point is not what her readers or &qqoo;folltwers&uuot; do, or that anyone considers them "sheep." The point is HER actions. It seems your comment is looking at #26 as nothing more than a title, when in reality being #26 means she yields a HUGE amount of power on the internet. It is my opinion that she handled that remarkably irresponsibly today.

Napsat komentář