/** * Displays the backend interface * * @param NodeInterface $node The node that will be displayed on the first tab * @return void */ public function indexAction(NodeInterface $node = null) { $this->contentCache->flush(); $this->session->start(); $this->session->putData('__cheEnabled__', true); if ($user = $this->userService->getBackendUser()) { $workspaceName = $this->userService->getPersonalWorkspaceName(); $contentContext = $this->createContext($workspaceName); $contentContext->getWorkspace(); $this->persistenceManager->persistAll(); $siteNode = $contentContext->getCurrentSiteNode(); if ($node === null) { $node = $siteNode; } $this->view->assign('user', $user); $this->view->assign('documentNode', $node); $this->view->assign('site', $node); $this->view->assign('translations', $this->xliffService->getCachedJson(new Locale($this->userService->getInterfaceLanguage()))); return; } $this->redirectToUri($this->uriBuilder->uriFor('index', array(), 'Login', 'TYPO3.Neos')); }
/** * Renders the translated label. * * Replaces all placeholders with corresponding values if they exist in the * translated label. * * @param string $id Id to use for finding translation (trans-unit id in XLIFF) * @param string $value If $key is not specified or could not be resolved, this value is used. If this argument is not set, child nodes will be used to render the default * @param array $arguments Numerically indexed array of values to be inserted into placeholders * @param string $source Name of file with translations * @param string $package Target package key. If not set, the current package key will be used * @param mixed $quantity A number to find plural form for (float or int), NULL to not use plural forms * @param string $languageIdentifier An identifier of a language to use (NULL for using the default language) * @return string Translated label or source label / ID key * @throws ViewHelper\Exception */ public function render($id = null, $value = null, array $arguments = array(), $source = 'Main', $package = null, $quantity = null, $languageIdentifier = null) { if (preg_match(TranslationHelper::I18N_LABEL_ID_PATTERN, $id) === 1) { // In the longer run, this "extended ID" format should directly be resolved in the localization service list($package, $source, $id) = explode(':', $id, 3); $source = str_replace('.', '/', $source); } if ($languageIdentifier === null) { $languageIdentifier = $this->userService->getInterfaceLanguage(); } // Catch exception in case the translation file doesn't exist, should be fixed in Flow 3.1 try { $translation = parent::render($id, $value, $arguments, $source, $package, $quantity, $languageIdentifier); // Fallback to english label if label was not available in specific language if ($translation === $id && $languageIdentifier !== 'en') { $translation = parent::render($id, $value, $arguments, $source, $package, $quantity, 'en'); } return $translation; } catch (Exception $exception) { return $value ?: $id; } }
/** * Returns the cached json array with the xliff labels * * @return string */ public function getXliffAsJsonAction() { $this->response->setHeader('Content-Type', 'application/json'); $locale = new Locale($this->userService->getInterfaceLanguage()); return $this->xliffService->getCachedJson($locale); }
/** * @return string The current backend users interface language */ public function render() { return $this->userService->getInterfaceLanguage(); }
/** * Set the locale according to the user settings * * @return void */ protected function initializeObject() { $this->_localizationService->getConfiguration()->setCurrentLocale(new \TYPO3\Flow\I18n\Locale($this->_userService->getInterfaceLanguage())); }