Překlady – Využití Google Translate pro překlady [n: 0.9.7]

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
snipi
Člen | 20
+
0
-

Tak jsem se trochu pohrál s různymi třídamy a „vyplul“ jsem takovej mini translator, který pro překlad využívá třídu GTranslate, která volá překlad hodnoty přes curl, nebo i přes nativní funkci.

Kroky pro implementaci:

  1. Do libs/Nette/Utils vytvořte soubor MyTranslator:
class NMyTranslator implements ITranslator
{

    public  function translate($message,$count = null)
     {
         $langArray = NEnvironment::getVariable('lang');
         foreach($langArray['lang'] as $langVars => $langVals) {
               $lang[$langVars] = $langVals;
         }
         if($lang[$message] != '') {
               $message = $lang[$message];
         } else {

               $gt = new GTranslate();
               $gt->setRequestType('curl');
               $langCode = NEnvironment::getVariable('langCode');
               Switch($langCode) {

                    default:
                    // defaultne vrátíme hodnotu stringu
                    $translated = $message;
                    break;

                    case 'en':
		    // vráti hodnotu z google translate (EN)
                    $translated = $gt->slovak_to_english($message);
                    break;

                    case 'ru':
                    $translated = $gt->slovak_to_russian($message);
                    break;

                    case 'fr':
                    $translated = $gt->slovak_to_french($message);
                    break;

                    case 'pl':
                    $translated = $gt->slovak_to_polish($message);
                    break;

                    case 'hu':
                    $translated = $gt->slovak_to_hungarian($message);
                    break;

                    case 'cz':
                    $translated = $gt->slovak_to_czech($message);
                    break;

                    case 'de':
                    $translated = $gt->slovak_to_german($message);
                    break;

               }

               $message = $translated;
         }

         return $message;
     }
}
  1. Do Nette/Utils stáhněte i GTranslate třídu
  2. Vytvořte v BasePresenteru funkci, která přeparsuje Váš langfile do srozumitelného pole
private function getActualLangfile($presenter,$code) {
/******
 * $code = language code
 * $presenter = presenter
 **/
      $langVars = parse_ini_file(APP_DIR.DIRECTORY_SEPARATOR.'langs'.DIRECTORY_SEPARATOR.$code.'_'.$presenter.'.ini',true);
      NEnvironment::setVariable('lang',$langVars);
}
  1. Vytvořte si soubory s překladmi (jestli se Vám nelíbi to, jak to přeložil google) php.ini formát
; lang for detail
lang['Hledaný string'] = "Překlad stringu z Translate!"
lang['Další string'] = "Opět string z Translate"
...
...
  1. Nastavte si v presenteru tenhle translator
	$translator = new NMyTranslator();
$this->template->setTranslator($translator);