2 namespace TYPO3\CMS\Lang\Controller;
100 $this->prepareDocHeaderMenu();
103 $languages = $this->languageRepository->findAll();
104 $this->view->assign(
'languages', $languages);
114 $this->prepareDocHeaderMenu();
116 $languages = $this->languageRepository->findSelected();
117 $this->view->assign(
'languages', $languages);
127 $this->view->assign(
'extensions', $this->extensionRepository->findAll());
128 $this->view->assign(
'languages', $this->languageRepository->findSelected());
139 $numberOfExtensionsToUpdate = 10;
144 if (!empty($data[
'locale'])) {
146 for ($i = 0; $i < $numberOfExtensionsToUpdate; $i++) {
147 $offset = (int)$data[
'count'] * $numberOfExtensionsToUpdate + $i;
148 $extension = $this->extensionRepository->findOneByOffset($offset);
149 if (empty($extension)) {
153 if ($allCount === 0) {
154 $allCount = (int)$this->extensionRepository->countAll();
156 $extensionKey = $extension->getKey();
157 $result = $this->translationService->updateTranslation($extensionKey, $data[
'locale']);
158 $progress = round((($offset + 1) * 100) / $allCount, 2);
159 $response[
'result'][$data[
'locale']][$extensionKey] = $result[$data[
'locale']];
160 if (empty($result[$extensionKey][$data[
'locale']][
'error'])) {
170 $this->registryService->set($data[
'locale'],
$GLOBALS[
'EXEC_TIME']);
172 $response[
'progress'] = $progress > 100 ? 100 : $progress;
174 $this->view->assign(
'response',
$response);
186 if (!empty($data[
'extension']) && !empty($data[
'locale'])) {
187 $result = $this->translationService->updateTranslation($data[
'extension'], $data[
'locale']);
188 if (empty($result[$data[
'extension']][$data[
'locale']][
'error'])) {
195 $this->view->assign(
'response',
$response);
207 if (!empty($data[
'locale'])) {
208 $response = $this->languageRepository->activateByLocale($data[
'locale']);
210 $this->view->assign(
'response',
$response);
222 if (!empty($data[
'locale'])) {
223 $response = $this->languageRepository->deactivateByLocale($data[
'locale']);
225 $this->view->assign(
'response',
$response);
231 protected function prepareDocHeaderMenu()
233 $this->view->getModuleTemplate()->setModuleName(
'typo3-module-lang');
234 $this->view->getModuleTemplate()->setModuleId(
'typo3-module-lang');
236 $this->view->getModuleTemplate()->getPageRenderer()->loadRequireJsModule(
'TYPO3/CMS/Lang/LanguageModule');
238 $extensionKey =
'lang';
239 $addJsInlineLabels = [
240 'flashmessage.error',
241 'flashmessage.information',
242 'flashmessage.success',
243 'flashmessage.multipleErrors',
244 'flashmessage.updateComplete',
245 'flashmessage.canceled',
246 'flashmessage.languageActivated',
247 'flashmessage.languageDeactivated',
248 'flashmessage.errorOccurred',
251 'table.loadingRecords',
256 foreach ($addJsInlineLabels as $key) {
258 $this->view->getModuleTemplate()->getPageRenderer()->addInlineLanguageLabel($key, $label);
261 $uriBuilder = $this->objectManager->get(UriBuilder::class);
266 $menu->setIdentifier(
'_languageMenu');
267 $menu->setLabel($this->
getLanguageService()->sL(
'LLL:EXT:lang/locallang_general.xlf:LGL.language', TRUE));
271 $action =
'listLanguages';
272 $isActive = $this->request->getControllerActionName() === $action ? TRUE : FALSE;
273 $languageListMenuItem->setTitle($this->
getLanguageService()->sL(
'LLL:EXT:lang/Resources/Private/Language/locallang.xlf:header.languages'));
274 $uri =
$uriBuilder->reset()->uriFor(
'listLanguages', array(),
'Language');
275 $languageListMenuItem->setHref($uri)->setActive($isActive);
279 $action =
'listTranslations';
280 $isActive = $this->request->getControllerActionName() === $action ? TRUE : FALSE;
281 $translationMenuItem->setTitle($this->
getLanguageService()->sL(
'LLL:EXT:lang/Resources/Private/Language/locallang.xlf:header.translations'));
282 $uri =
$uriBuilder->reset()->uriFor(
'listTranslations', array(),
'Language');
283 $translationMenuItem->setHref($uri)->setActive($isActive);
285 $menu->addMenuItem($languageListMenuItem);
286 $menu->addMenuItem($translationMenuItem);
287 $this->view->getModuleTemplate()->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
288 $this->view->getModuleTemplate()->setFlashMessageQueue($this->controllerContext->getFlashMessageQueue());
309 $downloadAllButton = $this->view->getModuleTemplate()->getDocHeaderComponent()->getButtonBar()->makeLinkButton()
310 ->setIcon($this->view->getModuleTemplate()->getIconFactory()->getIcon(
'actions-system-extension-download',
Icon::SIZE_SMALL))
311 ->setTitle($this->
getLanguageService()->sL(
'LLL:EXT:lang/Resources/Private/Language/locallang.xlf:button.downloadAll'))
312 ->setClasses(
'menuItem updateItem t3js-button-update')
313 ->setDataAttributes([
'action' =>
'updateActiveLanguages'])
317 $cancelButton = $this->view->getModuleTemplate()->getDocHeaderComponent()->getButtonBar()->makeLinkButton()
318 ->setIcon($this->view->getModuleTemplate()->getIconFactory()->getIcon(
'actions-document-close',
Icon::SIZE_SMALL))
319 ->setTitle($this->
getLanguageService()->sL(
'LLL:EXT:lang/Resources/Private/Language/locallang.xlf:button.cancel'))
320 ->setClasses(
'menuItem cancelItem disabled t3js-button-cancel')
321 ->setDataAttributes([
'action' =>
'cancelLanguageUpdate'])