14
cze

Google Translate: Blokowanie tłumaczenia elementów na stronie internetowej.

Myślę, że nie popełnię dużego błędu, jeśli powiem, że każdy, kto kiedykolwiek potrzebował tłumaczenia pewnych informacji z nieznanego języka na „swój”, na pewno trafił kiedyś na narzędzie Google Translate. Jest to bezsprzecznie jeden z najlepszych translatorów na rynku, także trudno się dziwić, że jest tak powszechnie wykorzystywany. Także my, twórcy stron internetowych często korzystamy z niego, ponieważ udostępnia bez większego problemu możliwość dynamicznego tłumaczenia tekstu na stronie. Czasem jednak jest to zachowanie niepożądane, a więc wypada wiedzieć, jak to zablokować. Zapraszam do lektury dzisiejszego wpisu.

Fotografia: brionv, CC-BY-SA.

Google Translate: Blokowanie tłumaczenia elementów na stronie internetowej.

Co prawda na niniejszym blogu jeszcze nie było żadnego artykułu o tym, jak rzeczoną stronę przetłumaczyć na żądany język, aczkolwiek wyjątkowo pozwolę sobie skupić się dzisiaj wyłącznie na samym blokowaniu tłumaczenia.

Pierwsza kwestia – kiedy tłumaczenie jest „zbędne”? Rozważmy następujący przypadek – wstawiam w treść wpisu fragment kodu, np taki:

$nazwa = 'trzy małe świnki';
for($numer = 0; $numer < 10; $numer++)
	{
	echo $nazwa.$numer."\n";
	}

Co się stanie, jeśli przetłumaczę treść wpisu na angielski? Oczywiście treść artykułu zostanie zmieniona, to jest oczywiste i pożądane. Problem polega na tym, że kod, który napisałem, będzie teraz wyglądał następująco:

Oczywiście sytuacja, z jaką się faktycznie zmierzymy jest dokładnie odwrotna. Ze względu na to, że nasz kod będzie napisany po angielsku [a przynajmniej powinien być] zostanie przetłumaczony na język docelowy, będzie zupełnie nieczytelny. Jak można zobaczyć na obrazku, jest on także błędny – wstawione spacje między znakiem dolara a nazwą zmiennej na pewno nie pomogą interpreterowi PHP w wykonaniu tego kodu.

Jest to proces w pełni zautomatyzowany – mechanizm tłumaczący po prostu podmienia całą treść strony nie dając nad tym żadnej kontroli. Ogólnie rzecz biorąc, nie istnieje żaden sposób pozwalający aktywnie wpłynąć na jego działanie i zabronić edycji poszczególnych elementów.

Okazuje się jednak, że istnieje możliwość poinformowania tego mechanizmu o tym, żeby pominął cały element i nie zmieniał go. Aby to zrobić, należy do tego elementu dodać klasę „notranslate”. Tym razem kod zostanie opakowany w kontener <span class=”notranslate”></span>:

$nazwa = 'trzy małe świnki';
for($numer = 0; $numer < 10; $numer++)
	{
	echo $nazwa.$numer."\n";
	}

Proste? Zobaczmy moje rozwiązanie sprawuje się w praktyce:

Od razu lepiej, prawda?

Co do samej wtyczki SyntaxHighlighter Evolved – to rozwiązanie nie jest idealne, ponieważ opakowanie całości kodu w element <span> spowoduje, że powstaną zbędne odstępy w pionie. Na szczęście w ustawieniach wtyczki mamy taką pozycję, jak „Additional CSS Classes”. Dodajmy tam wpis „notranslate” [bez cudzysłowów, oczywiście] i możemy cieszyć się już rozwiązaniem poprawnym, a do tego automatycznym. W tym momencie wiemy już, jak skutecznie obronić nasze „wrażliwe na tłumaczenie” fragmenty strony, także Google Translate już nam nie straszne. ;]

Dziękuję za uwagę i zapraszam do dyskusji w komentarzach.

Warto przeczytać.

Trwa ładowanie…

Subscribe without commenting

© Copyright 2010-2013 Tomasz Kowalczyk. All rights reserved. Created by Dream-Theme — premium wordpress themes. Proudly powered by WordPress.