/** * @ApiDoc( * section="Language Editor", * description="Gets a overview of translated messages" * ) * * @Rest\QueryParam(name="bundle", requirements=".+", strict=true, description="The bundle name") * @Rest\QueryParam(name="lang", requirements="[a-z]{2,3}", strict=true, description="The language code") * * @Rest\Get("/admin/system/bundle/editor/language/overview") * * @param ParamFetcher $paramFetcher * * @return array[count => int, countTranslated => int] */ public function getOverviewExtractAction(ParamFetcher $paramFetcher) { $bundle = $paramFetcher->get('bundle'); $lang = $paramFetcher->get('lang'); $utils = $this->translator->getUtils(); $extract = $utils->extractLanguage($bundle); $translated = $this->getLanguage($bundle, $lang); $p100 = count($extract); $cTranslated = 0; foreach ($extract as $id => $translation) { if (isset($translated['translations'][$id]) && $translated['translations'][$id] != '') { $cTranslated++; } } return array('count' => $p100, 'countTranslated' => $cTranslated); }
/** * @ApiDoc( * section="Interface i18n", * description="Prints all language messages" * ) * * @Rest\QueryParam(name="lang", requirements="[a-z]{2,3}", strict=true, description="The language code") * @Rest\QueryParam(name="javascript", requirements=".+", default=false, description="If it should be printed as javascript") * * @Rest\Get("/admin/ui/language") * * @param ParamFetcher $paramFetcher * * @return array|string depends on javascript param */ public function getLanguageAction(ParamFetcher $paramFetcher) { $lang = $paramFetcher->get('lang'); $javascript = $paramFetcher->get('javascript'); if (!$this->translator->isValidLanguage($lang)) { $lang = 'en'; } $this->pageStack->getSession()->set('admin_language', $lang); $messages = $this->translator->loadMessages($lang); if ($javascript) { $response = new Response(); $response->headers->set('Content-Type', 'text/javascript'); $content = "if( typeof(jarves)=='undefined') window.jarves = {}; jarves.lang = " . json_encode($messages, JSON_PRETTY_PRINT); $content .= "\nLocale.define('en-US', 'Date', " . $this->templating->render('JarvesBundle:Default:javascript-locales.js.twig') . ");"; $response->setContent($content); return $response; } else { $messages['mootools'] = $this->templating->render('JarvesBundle:Default:javascript-locales.js.twig'); return $messages; } }
/** * @param $field */ public function translate(&$field) { if (is_string($field) && substr($field, 0, 2) == '[[' && substr($field, -2) == ']]') { $field = $this->translator->t(substr($field, 2, -2)); } }