Archiv pro štítek: Google

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.

GeoGuessr – detektivem se Street View

Narazil jsem na velmi jednoduchou, ale geniálně vymyšlenou hru. Nachází se na portále geoguessr.com a spouští se přímo v prostředí webového prohlížeče. Bez nutnosti registrace se zkrátka jde přímo na věc. Objeví se před vámi místo náhodně vybrané z obrazových podkladů, kterými disponuje Street View do Google. Cíl je prostý – musíte zjistit, kde se momentálně nacházíte. Na malé mapě světa označíte svůj tip a dozvíte se, o kolik kilometrů jste cílovou destinaci minuli. Čím přesněji se přiblížíte ke správnému bodu, tím více poroste skóre. O jeho navýšení se postará celkem 5 kol s rozdílnými polohami. Svým výsledkem se následně můžete pochlubit a vyzvat své přátele, aby vás překonali.

GeoGuessr

Z centra města do poklidného lesa

Vybírané lokace se od sebe výrazně odlišují. Poměrně jednoduchou práci máte v případě přítomnosti známek lidské činnosti. Na ulici s největší pravděpodobností narazíte na ceduli nebo reklamu. Po přepsání textu do Google překladače dojde k rozpoznání jazyka a rázem pásmo připadající v úvahu zmenšuje svoji rozlohu. Protože neběží žádný časový limit, lze s pomocí Google dohledat některé podniky. Stačí se zaměřit na názvy ulic nebo telefonní čísla. Omezeně se z pozice virtuálního chodce ve Street View kolem přiděleného místa porozhlédnete, hra vám však významně cestovat nedovolí. Nyní si přitom představte, že vás GeoGuessr vysadí na opuštěné cestě, kterou lemují stromy. Pak teprve začíná pravá detektivní práce, kdy mnohdy ze zoufalosti uvažujete nad identifikací typické oblasti růstu okolní flóry. Nebo kdyby alespoň ta nečitelná šmouha v dáli nebyla tak rozmazaná. Co když skrývá nějaké vodítko?

Zábavné využití Google Maps

Hře nelze upřít originální myšlenku. Ta spoléhá na Google Maps, respektive API vztahující se k této službě. Koncept pochopíte během několika vteřin a už se věnujete pouze dedukci a hádání. Nejedná se sice o zábavu na celé odpoledne, myslím si však, že chvíli na portále s radostí strávíte.

Ubuntu: Vyčištění (flush) DNS cache jediným příkazem

DNSDNS slouží k překladu doménového jména na IP adresu. Tento princip nám tedy umožňuje si pamatovat přijatelnější jméno (např. seznam.cz) namísto číselné adresy (77.75.72.3). Aby se snížila zátěž na příslušné servery, zavádí se na různých úrovních cachování (ukládání výsledků překladu s dočasnou platností). V některých případech se hodí vědět, jak zmíněné záznamy vymazat a nahradit je aktuálními údaji. Typicky tuto činnost provádím po obměně nameserverů u domény a přeji si, aby se tato změna co nejdříve projevila. Docílit toho lze mnoha rozdílnými způsoby, které zahrnují právě i vyčištění zmíněné lokální cache.

Mnoho webů doporučuje dosáhnout zmíněného cíle s pomocí instalace balíčku nscd (name service cache daemon) a následným restartem běžící služby.

sudo aptitude install nscd
sudo /etc/init.d/nscd restart

Po chvíli hledání jsem však narazil na mnohem přímočařejší řešení, které osobně používám.

sudo /etc/init.d/dns-clean start

Pokud ani po vyčištění cache nezaznamenáte změnu, můžete vyzkoušet ještě následující dva tipy.

Google DNS server a anonymní režim v Chrome

DNS serveru vašeho ISP může určitou chvíli trvat, než dojde k jeho aktualizaci a projevení upraveného zónového souboru. Lze však využít bezplatné služby pod hlavičkou Google, která zajišťuje provoz dvou rychlých DNS: 8.8.8.8 (primární) a 8.8.4.4 (sekundární). V Ubuntu stačí otevřít okno Připojení k síti, zvolit aktivní připojení a kliknout na Upravit. Vyberte Nastavení IPv4 a specifikujte Pouze automatické adresy DHCP, pokud je vám IP v lokální síti dynamicky přidělována. V opačném případě ponechte volbu Ruční. Nyní již jen stačí do Servery DNS vložit následující řádek a vše potvrdit.

8.8.8.8, 8.8.4.4

Jestliže preferujete prohlížeč Google Chrome, může se vám hodit následující rada. I tento program obsahuje svoji vlastní cache DNS záznamů. K vyčištění se používá adresa chrome://net-internals/#dns a tlačítko Clear host cache. O něco pohodlnější však je otevření nového okna v anonymním režimu (CTRL+SHIFT+N), kde nejsou interní údaje potřebné k překladu používány s ohledem na zajištění soukromí.