Giter VIP home page Giter VIP logo

flll's Introduction

Fluid Powered TYPO3: LLL File Writer

Build Status Coverage Status

A development-only tool to automatically create and update locallang.xml and locallang.xlf to add any missing labels. Every method of translation is covered - in Extbase, Fluid, TCA, FlexForms, TypoScript; litterally every method. When used, for example f:translate can be used without the need for a language file. FLLL then creates the file and starts adding all your labels with default values.

WARNING! Not for use in production!

This extension updates extension files on-the-fly and as such it should never, ever be installed in production sites. Ignore this advise at your own peril - remember: broken language files can break entire TYPO3 sites and it is never completely risk-free to use automation tools such as this one.

What does it do?

FLLL makes it extremely easy to work with translatable labels in TCA, Fluid, Extbase, TypoScript, FlexForms etc.

FLLL creates and updates TYPO3 translation files in xml or xliff format, adding any label that you attempt to use but which does not exist. Simply put, it automatically generates default translation file values on-the-fly which you can later translate.

It triggers on every type of translation that TYPO3 can perform, from the oldest ways all the way to the very latest such as the f:translate ViewHelper. This means that, for example, you can create Fluid templates which use translated labels without caring about the contents of the translation file. When you're ready to start translating, the file will be ready for you - filled with default label values.

Note: because the writing happens immediately after you attempt to use a missing label, FLLL cannot sort out if you make a typo or misspell a label name. If this happens, and you already translated the label, you must fix it manually - just like you would do if FLLL was not installed: edit the file(s), rename label in every language, save.

How does it work?

Technically: FLLL replaces the original TYPO3 LocalizationFactory class special and instead of arrays, this new class returns proxy-type object (implementing ArrayAccess) which will always return TRUE from offsetExists and when reading a non-existing label, adds this label with a default value. On request termination each proxy object then writes any new labels to language files which are created if missing.

FLLL also adds new language nodes and translation files for every (active) language on your site. And naturally it preserves all existing labels from being overwritten - it will only add labels which are truly missing.

FLLL does not write LLL labels for system extensions but it does write labels for globally installed extensions. If you need to exclude a globally installed extension, use the white- and blacklisting feature.

Note: FLLL will also alphabetically sort the labels it adds - this fits very well with the prefix.labelName syntax that Extbase encourages, to logically group your labels.

Note: Translation files are cached in TYPO3 - you will need to clear caches to actually see the added labels. However, FLLL will not write duplicates to your files so you do not need to continually clear caches. Once in a while will suffice.

Note: FLLL only triggers when your language files have been cached initially; this is done to prevent problems when rebuilding the language cache contents.

How do I use it?

Simply install it - and if you wish, through Extension Manager configure FLLL to white- or blacklist LLL writing for individual extension keys. FLLL then immediately starts updating your language files whenever TYPO3 tries to render a translated label which does not exist in files.

flll's People

Contributors

namelesscoder avatar xf- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

xf- htuscher tiwden

flll's Issues

Error

The latest version of the following error:

Uncaught TYPO3 Exception
#1: PHP Catchable Fatal Error: Argument 1 passed to TYPO3\CMS\Core\Utility\GeneralUtility::array_merge_recursive_overrule() must be an array, null given, called in /var/www/typo3_src-6.1.7.1/typo3/sysext/lang/Classes/LanguageService.php on line 460 and defined in /var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Utility/GeneralUtility.php line 1629 (More information)

TYPO3\CMS\Core\Error\Exception thrown in file
/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Error/ErrorHandler.php in line 108.

11 TYPO3\CMS\Core\Error\ErrorHandler::handleError(4096, "Argument 1 passed to TYPO3\CMS\Core\Utility\Genera…lasses/LanguageService.php on line 460 and defined", "/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Utility/GeneralUtility.php", 1629, array)

/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Utility/GeneralUtility.php:
01627:   * @return array Resulting array where $arr1 values has overruled $arr0 values
01628:   */
01629:  static public function array_merge_recursive_overrule(array $arr0, array $arr1, $notAddKeys = FALSE, $includeEmptyValues = TRUE, $enableUnsetFeature = TRUE) {
01630:   foreach ($arr1 as $key => $val) {
01631:    if ($enableUnsetFeature && $val === '__UNSET') {

10 TYPO3\CMS\Core\Utility\GeneralUtility::array_merge_recursive_overrule(NULL, FluidTYPO3\Flll\LanguageFile\DynamicLabelAccessor, boolean, boolean)

/var/www/typo3_src-6.1.7.1/typo3/sysext/lang/Classes/LanguageService.php:
00458:      // Merge current language labels onto labels from previous language
00459:      // This way we have a labels with fall back applied
00460:     $localLanguage[$this->lang] = \TYPO3\CMS\Core\Utility\GeneralUtility::array_merge_recursive_overrule($localLanguage[$this->lang], $tempLL[$language], FALSE, FALSE);
00461:    }
00462:   }

9 TYPO3\CMS\Lang\LanguageService::readLLfile("EXT:lang/locallang_mod_web.xlf")

/var/www/typo3_src-6.1.7.1/typo3/sysext/lang/Classes/LanguageService.php:
00304:     // Getting data if not cached
00305:    if (!isset($this->LL_files_cache[$parts[0]])) {
00306:     $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
00307:      // If the current language is found in another file, load that as well:
00308:     $lFileRef = $this->localizedFileRef($parts[0]);

8 TYPO3\CMS\Lang\LanguageService::sL("LLL:EXT:lang/locallang_mod_web.xlf:mlang_labels_tablabel")

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/Module/ModuleLoader.php:
00285:      if ($MLANG['default']['ll_ref']) {
00286:       // Now the 'default' key is loaded with the CURRENT language - not the english translation...
00287:       $MLANG['default']['labels']['tablabel'] = $GLOBALS['LANG']->sL($MLANG['default']['ll_ref'] . ':mlang_labels_tablabel');
00288:       $MLANG['default']['labels']['tabdescr'] = $GLOBALS['LANG']->sL($MLANG['default']['ll_ref'] . ':mlang_labels_tabdescr');
00289:       $MLANG['default']['tabs']['tab'] = $GLOBALS['LANG']->sL($MLANG['default']['ll_ref'] . ':mlang_tabs_tab');

7 TYPO3\CMS\Backend\Module\ModuleLoader::checkMod("web", "/var/www/typo3/data/www/gep-art.com/typo3/mod/web")

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/Module/ModuleLoader.php:
00150:     // 'CLASSIC' module
00151:     // Checking for typo3/mod/ module existence...
00152:     $theMainMod = $this->checkMod($mods, $paths['defMods'] . $mods);
00153:     if (is_array($theMainMod) || $theMainMod != 'notFound') {
00154:      $path = $paths['defMods'];

6 TYPO3\CMS\Backend\Module\ModuleLoader::load(array)

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/View/ModuleMenuView.php:
00057:   $this->moduleLoader = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Module\\ModuleLoader');
00058:   $this->moduleLoader->observeWorkspaces = TRUE;
00059:   $this->moduleLoader->load($GLOBALS['TBE_MODULES']);
00060:   $this->loadedModules = $this->moduleLoader->modules;
00061:  }

5 TYPO3\CMS\Backend\View\ModuleMenuView::__construct()

/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Utility/GeneralUtility.php:
04112:   } else {
04113:    $fullyQualifiedClassName = '\\' . $finalClassName;
04114:    $instance = new $fullyQualifiedClassName();
04115:   }
04116:   // Create alias if not present

4 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\CMS\Backend\View\ModuleMenuView")

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/Module/ModuleController.php:
00062:   if (count($this->moduleMenu->getEntries()) === 0) {
00063:    /** @var $moduleMenu \TYPO3\CMS\Backend\View\ModuleMenuView */
00064:    $moduleMenu = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\View\\ModuleMenuView');
00065:    $rawData = $moduleMenu->getRawModuleData();
00066:    $this->convertRawModuleDataToModuleMenuObject($rawData);

3 TYPO3\CMS\Backend\Module\ModuleController::createModuleMenu()

/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Core/Bootstrap.php:
01020:   /** @var $moduleMenuUtility \TYPO3\CMS\Backend\Module\ModuleController */
01021:   $moduleMenuUtility = Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Module\\ModuleController');
01022:   $moduleMenuUtility->createModuleMenu();
01023:   return $this;
01024:  }

2 TYPO3\CMS\Core\Core\Bootstrap::initializeModuleMenuObject()

/var/www/typo3_src-6.1.7.1/typo3/init.php:
00072:  ->initializeBackendUserMounts()
00073:  ->initializeLanguageObject()
00074:  ->initializeModuleMenuObject()
00075:  ->initializeBackendTemplate()
00076:  ->endOutputBufferingAndCleanPreviousOutput()

1 require_once("/var/www/typo3_src-6.1.7.1/typo3/init.php")

/var/www/typo3_src-6.1.7.1/typo3/backend.php:
00025:  *  This copyright notice MUST APPEAR in all copies of the script!
00026:  ***************************************************************/
00027: require_once 'init.php';
00028: $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_misc.xlf');
00029: /*

Does not work, the error: Could not analyse class:FluidTYPO3\Flll\LanguageFile\LanguageFile maybe not loaded or no autoloader?

TYPO3 6.1.7.1
Extension does not work.
After installation error

#1289386765: Could not analyse class:FluidTYPO3\Flll\LanguageFile\LanguageFile maybe not loaded or no autoloader? (More information)

TYPO3\CMS\Extbase\Object\Container\Exception\UnknownObjectException thrown in file
/var/www/typo3_src-6.1.7.1/typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php in line 48.

18 TYPO3\CMS\Extbase\Object\Container\ClassInfoFactory::buildClassInfoFromClassName("FluidTYPO3\Flll\LanguageFile\LanguageFile")

/var/www/typo3_src-6.1.7.1/typo3/sysext/extbase/Classes/Object/Container/Container.php:
00323:   $classInfo = $this->getClassInfoCache()->get($classNameHash);
00324:   if (!$classInfo instanceof \TYPO3\CMS\Extbase\Object\Container\ClassInfo) {
00325:    $classInfo = $this->getClassInfoFactory()->buildClassInfoFromClassName($className);
00326:    $this->getClassInfoCache()->set($classNameHash, $classInfo);
00327:   }

17 TYPO3\CMS\Extbase\Object\Container\Container::getClassInfo("FluidTYPO3\Flll\LanguageFile\LanguageFile")

/var/www/typo3_src-6.1.7.1/typo3/sysext/extbase/Classes/Object/Container/Container.php:
00158:    return $this->singletonInstances[$className];
00159:   }
00160:   $classInfo = $this->getClassInfo($className);
00161:   $classIsSingleton = $classInfo->getIsSingleton();
00162:   if (!$classIsSingleton) {

16 TYPO3\CMS\Extbase\Object\Container\Container::getInstanceInternal("FluidTYPO3\Flll\LanguageFile\LanguageFile", array)

/var/www/typo3_src-6.1.7.1/typo3/sysext/extbase/Classes/Object/Container/Container.php:
00116:  public function getInstance($className, $givenConstructorArguments = array()) {
00117:   $this->prototypeObjectsWhichAreCurrentlyInstanciated = array();
00118:   return $this->getInstanceInternal($className, $givenConstructorArguments);
00119:  }
00120: 

15 TYPO3\CMS\Extbase\Object\Container\Container::getInstance("FluidTYPO3\Flll\LanguageFile\LanguageFile", array)

/var/www/typo3_src-6.1.7.1/typo3/sysext/extbase/Classes/Object/ObjectManager.php:
00103:    $instance = call_user_func_array(array('TYPO3\\CMS\\Core\\Utility\\GeneralUtility', 'makeInstance'), $arguments);
00104:   } else {
00105:    $instance = $this->objectContainer->getInstance($objectName, $arguments);
00106:   }
00107:   return $instance;

14 TYPO3\CMS\Extbase\Object\ObjectManager::get("FluidTYPO3\Flll\LanguageFile\LanguageFile")

/var/www/typo3/data/www/gep-art.com/typo3conf/ext/flll/Classes/Service/LanguageFileService.php:
00110:   $className = 'FluidTYPO3\Flll\LanguageFile\\' . $type . 'LanguageFile';
00111:   /** @var LanguageFileInterface $fileInstance */
00112:   $fileInstance = $this->objectManager->get($className);
00113:   $fileInstance->setFilename($filePathAndFilename);
00114:   return $fileInstance;

13 FluidTYPO3\Flll\Service\LanguageFileService::getLanguageFile("EXT:t3quixplorer/mod1/locallang_mod.php")

/var/www/typo3/data/www/gep-art.com/typo3conf/ext/flll/Classes/Utility/LanguageFileUtility.php:
00054:   /** @var LanguageFileService $fileService */
00055:   $fileService = $objectManager->get('FluidTYPO3\Flll\Service\LanguageFileService');
00056:   $fileInstance = $fileService->getLanguageFile($filePathAndFilename);
00057:   /** @var DynamicLabelAccessor $proxy */
00058:   $proxy = $objectManager->get('FluidTYPO3\Flll\LanguageFile\DynamicLabelAccessor');

12 FluidTYPO3\Flll\Utility\LanguageFileUtility::createProxyForFile("EXT:t3quixplorer/mod1/locallang_mod.php", "default", array)

/var/www/typo3/data/www/gep-art.com/typo3conf/ext/flll/Classes/Localization/LocalizationFactory.php:
00059:    if ($data !== FALSE) {
00060:     $this->store->setData($fileReference, $languageKey, $data);
00061:     $proxy = LanguageFileUtility::createProxyForFile($fileReference, $languageKey, $data);
00062:     return array($languageKey => $proxy);
00063:    }

11 FluidTYPO3\Flll\Localization\LocalizationFactory::getParsedData("EXT:t3quixplorer/mod1/locallang_mod.php", "default", "utf-8", 0)

/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Utility/GeneralUtility.php:
03766:   /** @var $languageFactory \TYPO3\CMS\Core\Localization\LocalizationFactory */
03767:   $languageFactory = self::makeInstance('TYPO3\\CMS\\Core\\Localization\\LocalizationFactory');
03768:   return $languageFactory->getParsedData($fileRef, $langKey, $charset, $errorMode);
03769:  }
03770: 

10 TYPO3\CMS\Core\Utility\GeneralUtility::readLLfile("EXT:t3quixplorer/mod1/locallang_mod.php", "default", "utf-8")

/var/www/typo3_src-6.1.7.1/typo3/sysext/lang/Classes/LanguageService.php:
00450:   $localLanguage = array();
00451:   foreach ($languages as $language) {
00452:    $tempLL = \TYPO3\CMS\Core\Utility\GeneralUtility::readLLfile($fileRef, $language, $this->charSet);
00453:    $localLanguage['default'] = $tempLL['default'];
00454:    if (!isset($localLanguage[$this->lang])) {

9 TYPO3\CMS\Lang\LanguageService::readLLfile("EXT:t3quixplorer/mod1/locallang_mod.php")

/var/www/typo3_src-6.1.7.1/typo3/sysext/lang/Classes/LanguageService.php:
00304:     // Getting data if not cached
00305:    if (!isset($this->LL_files_cache[$parts[0]])) {
00306:     $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
00307:      // If the current language is found in another file, load that as well:
00308:     $lFileRef = $this->localizedFileRef($parts[0]);

8 TYPO3\CMS\Lang\LanguageService::sL("LLL:EXT:t3quixplorer/mod1/locallang_mod.php:mlang_labels_tablabel")

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/Module/ModuleLoader.php:
00285:      if ($MLANG['default']['ll_ref']) {
00286:       // Now the 'default' key is loaded with the CURRENT language - not the english translation...
00287:       $MLANG['default']['labels']['tablabel'] = $GLOBALS['LANG']->sL($MLANG['default']['ll_ref'] . ':mlang_labels_tablabel');
00288:       $MLANG['default']['labels']['tabdescr'] = $GLOBALS['LANG']->sL($MLANG['default']['ll_ref'] . ':mlang_labels_tabdescr');
00289:       $MLANG['default']['tabs']['tab'] = $GLOBALS['LANG']->sL($MLANG['default']['ll_ref'] . ':mlang_tabs_tab');

7 TYPO3\CMS\Backend\Module\ModuleLoader::checkMod("tools_txt3quixplorerM1", "/var/www/typo3/data/www/gep-art.com/typo3conf/ext/t3quixplorer/mod1")

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/Module/ModuleLoader.php:
00170:       if ($extModRelPath) {
00171:        // EXTENSION submodule:
00172:        $theTempSubMod = $this->checkMod($mods . '_' . $valsub, PATH_site . $extModRelPath);
00173:        // Default sub-module in either main-module-path, be it the default or the userdefined.
00174:        if (is_array($theTempSubMod)) {

6 TYPO3\CMS\Backend\Module\ModuleLoader::load(array)

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/View/ModuleMenuView.php:
00057:   $this->moduleLoader = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Module\\ModuleLoader');
00058:   $this->moduleLoader->observeWorkspaces = TRUE;
00059:   $this->moduleLoader->load($GLOBALS['TBE_MODULES']);
00060:   $this->loadedModules = $this->moduleLoader->modules;
00061:  }

5 TYPO3\CMS\Backend\View\ModuleMenuView::__construct()

/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Utility/GeneralUtility.php:
04112:   } else {
04113:    $fullyQualifiedClassName = '\\' . $finalClassName;
04114:    $instance = new $fullyQualifiedClassName();
04115:   }
04116:   // Create alias if not present

4 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\CMS\Backend\View\ModuleMenuView")

/var/www/typo3_src-6.1.7.1/typo3/sysext/backend/Classes/Module/ModuleController.php:
00062:   if (count($this->moduleMenu->getEntries()) === 0) {
00063:    /** @var $moduleMenu \TYPO3\CMS\Backend\View\ModuleMenuView */
00064:    $moduleMenu = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\View\\ModuleMenuView');
00065:    $rawData = $moduleMenu->getRawModuleData();
00066:    $this->convertRawModuleDataToModuleMenuObject($rawData);

3 TYPO3\CMS\Backend\Module\ModuleController::createModuleMenu()

/var/www/typo3_src-6.1.7.1/typo3/sysext/core/Classes/Core/Bootstrap.php:
01020:   /** @var $moduleMenuUtility \TYPO3\CMS\Backend\Module\ModuleController */
01021:   $moduleMenuUtility = Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Module\\ModuleController');
01022:   $moduleMenuUtility->createModuleMenu();
01023:   return $this;
01024:  }

2 TYPO3\CMS\Core\Core\Bootstrap::initializeModuleMenuObject()

/var/www/typo3_src-6.1.7.1/typo3/init.php:
00072:  ->initializeBackendUserMounts()
00073:  ->initializeLanguageObject()
00074:  ->initializeModuleMenuObject()
00075:  ->initializeBackendTemplate()
00076:  ->endOutputBufferingAndCleanPreviousOutput()

1 require_once("/var/www/typo3_src-6.1.7.1/typo3/init.php")

/var/www/typo3_src-6.1.7.1/typo3/backend.php:
00025:  *  This copyright notice MUST APPEAR in all copies of the script!
00026:  ***************************************************************/
00027: require_once 'init.php';
00028: $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_misc.xlf');
00029: /*

Check extension name before saving

If i added a typo or mix something up and save, i will only get a exception in extension manager and can"t change it back without edit LocalConfiguration manually.

Weird values

locallang.xlf file is populated with weird ids

flux.oneColumnPage.row55b67f0b58ab99.98900696

Typo 9.5 compatiblity

I think there were some changes within typos management of xsl files. At least for me flll was not creating entries correctly.

I created a fix for myself. Not sure if this is the best way, but it might help out others and/or be a start for fixing the issue.

This is a patch with the changes I made flll-typo3-9-5.txt

Existing labels get overwritten

I discovered, that the error handling of DOM objects in PHP is pretty stupid:

If eg. during the buildSourceForXlfFile method an error occurs, the resource pointer of the DOMDocument gets an empty body without any Exception to be thrown.
It's even worse: as prepareDomDocument stores the resourcePointer to the DOMDocument in a local static variable, the LanguageFileService continues working on an empty body and just appends the new labels into it and writes the file afterwards. So the old labels are lost.

So one possible solution is to always re-read the file (bad for I/O) and do some integrity checks, like cloning the DOMDocument and comparing the count of the trans-unit nodes before and after insertion:

        $dom = $this->prepareDomDocument($translationPathAndFilename);
        $initialLanguageNodeCount = $dom->getElementsByTagName('trans-unit')->length;
        $dateNode = $dom->createAttribute('date');
        $dateNode->nodeValue = date('c');
        $dom->getElementsByTagName('file')->item(0)->appendChild($dateNode);
        $body = $dom->getElementsByTagName('body')->item(0);

        $tmpDoc = new \DOMDocument();
        $cloned = $body->cloneNode(TRUE);
        $tmpDoc->appendChild($tmpDoc->importNode($cloned,TRUE));

        foreach ($dom->getElementsByTagName('trans-unit') as $node) {
            if ($node->getAttribute('id') === $identifier) {
                return TRUE;
            }
        }
        $this->createXlfLanguageNode($dom, $body, $identifier);
        $newLanguageNodeCount = $dom->getElementsByTagName('trans-unit')->length;
        if ($newLanguageNodeCount < $initialLanguageNodeCount) {
            /** @var \DOMDocument $initialDom */
            $initialDom = self::$documents[$translationPathAndFilename];
            $xml = $initialDom->saveXml();
        } else {
            $xml = $dom->saveXML();
            self::$documents[$translationPathAndFilename] = $dom;
        }

But I'm not happy with that solution as it looks pretty hacky. Any suggestions on that?

Using flll in provider extension throws exception

In frontend, I get an exception when using flll (development or master) with my provider extension. I have whitelisted the key of my provider extension (con_myextension) to rule out any other influences. It also does not help to delete the default xlf file or any of the field names.

#1: PHP Catchable Fatal Error: Argument 1 passed to TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule() must be of the type array, object given, called in /var/www/web/htdocs/development/typo3_src-6.2.13/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php on line 4838 and defined in /var/www/web/htdocs/development/typo3_src-6.2.13/typo3/sysext/core/Classes/Utility/ArrayUtility.php line 517

Stack trace:

15 TYPO3\CMS\Core\Error\ErrorHandler::handleError(4096, "Argument 1 passed to TYPO3\CMS\Core\Utility\ArrayU…iptFrontendController.php on line 4838 and defined", "/var/www/web/htdocs/development/typo3_src-6.2.13/typo3/sysext/core/Classes/Utility/ArrayUtility.php", 517, array)

14 TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(FluidTYPO3\Flll\LanguageFile\DynamicLabelAccessor, FluidTYPO3\Flll\LanguageFile\DynamicLabelAccessor, boolean, boolean)

13 TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::readLLfile("EXT:con_myprovider/Resources/Private/Language/locallang.xlf")

12 TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController::sL("LLL:EXT:con_myprovider/Resources/Private/Language/locallang.xlf:flux.example.description")

11 TYPO3\CMS\Extbase\Utility\LocalizationUtility::translateFileReference("LLL:EXT:con_myprovider/Resources/Private/Language/locallang.xlf:flux.example.description")

10 TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate("LLL:EXT:con_myprovider/Resources/Private/Language/locallang.xlf:flux.example.description", "con_myprovider")

9 FluidTYPO3\Flux\Form::getDescription()

8 FluidTYPO3\Fluidcontent\Service\ConfigurationService::buildWizardTabItem("Content", "Constructiva_ConMyprovider_Example_html", FluidTYPO3\Flux\Form, "Constructiva.ConMyprovider:Example.html")

[...]

Caching is configured in the following way:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_phpcode']['backend'] = 'TYPO3\CMS\Core\Cache\Backend\FileBackend'; $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = 'TYPO3\\CMS\\Core\\Cache\\Backend\\FileBackend';

Extensions:

  • TYPO3 6.2.14
  • fluidpages 3.3.1
  • flux 7.2.1
  • fresh provider extension named "Constructiva.ConMyprovider" built via builder 0.20 (vendor/namespaced)

Exception before the first run

Exception

Fatal error: Uncaught exception 'FluidTYPO3\Flll\LanguageFile\Exception' with message 'Cowardly refusing to create an invalid LLL reference called "Whitelist: CSV list of extension keys for which LLL rewriting is ALLLOWED, all keys not in this list will be forbidden." - it contains invalid characters.' in /var/www/typo3conf/ext/flll/Classes/Service/LanguageFileService.php on line 136
( ! ) FluidTYPO3\Flll\LanguageFile\Exception: Cowardly refusing to create an invalid LLL reference called "Whitelist: CSV list of extension keys for which LLL rewriting is ALLLOWED, all keys not in this list will be forbidden." - it contains invalid characters. in /var/www/typo3conf/ext/flll/Classes/Service/LanguageFileService.php on line 136

LocalConfiguration

    'EXT' => array(
        'extConf' => array(
            'flll' => 'a:0:{}',

T3 v7

After first update the error is gone.

[ERROR] mergeRecursiveWithOverrule() must be of the type array, null given

[Tue Apr 08 11:06:28 2014] [error] [client 192.168.56.6] FastCGI: server "/php-fpm-handler-koch" stderr: PHP message: http://***/ - Core: Exception handler (WEB): Uncaught TYPO3 Exception: #1: PHP Catchable Fatal Error: Argument 1 passed to TYPO3\\CMS\\Core\\Utility\\ArrayUtility::mergeRecursiveWithOverrule() must be of the type array, null given, called in /home/shared_typo3/typo3_source/typo3_src-6.2.0/typo3/sysext/lang/Classes/LanguageService.php on line 463 and defined in /home/shared_typo3/typo3_source/typo3_src-6.2.0/typo3/sysext/core/Classes/Utility/ArrayUtility.php line 531 | TYPO3\\CMS\\Core\\Error\\Exception thrown in file /home/shared_typo3/typo3_source/typo3_src-6.2.0/typo3/sysext/core/Classes/Error/ErrorHandler.php in line 108. Requested URL: http://***/typo3/backend.php

Any Ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.