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
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:
- 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;
}
}
- Do Nette/Utils stáhněte i GTranslate třídu
- 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);
}
- 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"
...
...
- Nastavte si v presenteru tenhle translator
$translator = new NMyTranslator();
$this->template->setTranslator($translator);