Archiv pro rubriku: Programování

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.

Proměnné v MySQL aneb používáme alias v SELECT dotazu

Narazil jsem na výbornou syntaktickou pomůcku v MySQL, která mi okamžitě začala zjednodušovat život. Stává se mi totiž, že potřebuji s hodnotou jednoho sloupce pracovat v jiném sloupci. Při použití standardních aliasů vytvořených s pomocí AS však narážím na problém.

Následující metoda představuje přímočarý postup, který však není funkční.

SELECT (1 + 1) as soucet, soucet + 1

Databáze u druhého sloupce ukončí provádění dotazu s tím, že nezná soucet, i když se jedná o alias předcházejícího sloupce.

Kýženého efektu dosáhneme díky proměnným. Těm se přiřazují hodnoty zápisem @jmeno:=hodnota. Aktuálně uchovávaný údaj vrátí @jmeno. Výše uvedený příklad by po nasazení proměnných vypadal takto:

SELECT @soucet:=(1 + 1) as soucet, @soucet + 1

Rázem získáváme číslo 2 a v druhém sloupci správný součet 3.

MySQL - proměnné

Pencil: Wireframe na Linuxu

Pod pojmem wireframe se skrývá velmi hrubý náčrt vzhledu budoucího programu či webu. Umožňuje uvědomit si rozmístění jednotlivých prvků a představit si, v jakém sledu je spatří uživatel. Pokud používáte operační systém založený na Linuxu, pomůže vám s vytvořením dotyčného náhledu program Pencil. Ten navíc spustíte i na Windows nebo Max OS X.

Samotná instalace je velmi jednoduchá, stačí stáhnout patřičný balík. Aplikace obsahuje mnoho předpřipravených prvků. Nabídka čítá součásti webových stránek, programů i mobilních aplikací. Připraveny jsou dále i základní elementy známé z vývojových diagramů. Ty sice nevytvářím, jednoduché geometrické tvary a šipky však usnadňují znázornění binárních vyhledávacích stromů.

Pencil má relativně intuitivní ovládání až na několik výjimek. Zpočátku mě velmi zaskočila nutnost jednotlivé prvky přetahovat. Čekal jsem, že k umístění bude potřeba využít kliknutí myši nebo kontextovou nabídku. Po chvíli se mi však metoda drag & drop dostala do krve. Dále jsem velmi dlouho hledal volbu k importu vlastního obrázku, například ve formátu PNG. Nakonec jsem vše vyřešil přetažením souboru z plochy přímo do pracovního prostředí. Až na tyto vady na kráse mě Pencil nezklamal a zmíněné nedostatky jsem proto aplikaci nakonec odpustil.

Pencil