[TASK] Language handling: splitLabels and locallang.php should be removed
authorBenjamin Mack <benni@typo3.org>
Wed, 6 Jul 2011 16:37:12 +0000 (18:37 +0200)
committerOliver Hader <oliver@typo3.org>
Tue, 12 Jul 2011 14:47:07 +0000 (16:47 +0200)
The TYPO3 core currently handles three types of language labels:
* splitlabels (very very old): Based on the constant TYPO3_languages, a
  string is split by |. The only use was the loginLabels but this was
  changed in 4.3, so they only act as fallback right now.
* locallang.php (very old): An array for each language in a .php file.
* locallang.xml (currently used): An XML file with labels.

Change-Id: Idd6905776af755cf54258fe6723ca1226816655d
Resolves: #26519
Reviewed-on: http://review.typo3.org/3058
Reviewed-by: Stefan Neufeind
Reviewed-by: Oliver Hader
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
Tested-by: Oliver Hader
t3lib/config_default.php
typo3/index.php
typo3/sysext/cms/tslib/class.tslib_fe.php
typo3/sysext/lang/lang.php

index 9540a7d..d78be73 100644 (file)
@@ -475,7 +475,6 @@ $TYPO3_CONF_VARS = array(
                'fileDenyPattern' => FILE_DENY_PATTERN_DEFAULT ,        // A perl-compatible regular expression (without delimiters!) that - if it matches a filename - will deny the file upload/rename or whatever in the webspace. For security reasons, files with multiple extensions have to be denied on an Apache environment with mod_alias, if the filename contains a valid php handler in an arbitary position. Also, ".htaccess" files have to be denied. Matching is done case-insensitive. Default value is stored in constant FILE_DENY_PATTERN_DEFAULT
                'interfaces' => 'backend',                                      // This determines which interface options is available in the login prompt and in which order (All options: ",backend,frontend")
                'useOnContextMenuHandler' => TRUE,              // Boolean: If set, the context menus (clickmenus) in the backend are activated on right-click - although this is not a XHTML attribute!
-               'loginLabels' => 'Username|Password|Interface|Log In|Log Out|Backend,Front End,Traditional Backend|Administration Login on ###SITENAME###|(Note: Cookies and JavaScript must be enabled!)|Important Messages:|Your login attempt did not succeed. Make sure to spell your username and password correctly, including upper/lowercase characters.',              // Language labels of the login prompt, separated with a pipe symbol (|). These should not be used anymore to change the labels since TYPO3 4.3, furthermore overload the labels with , see EXT:lang/locallang_login.xml for the used labels.
                'loginNews' => array(),                                         // In this array you can define news-items for the login screen. To this array, add arrays with assoc keys 'date', 'header', 'content' (HTML content) and for those appropriate value pairs
                'loginNewsTitle' => '',                                 // Define alternative header message for the LoginNews. If this var is empty, the default header "Important messages:" is displayed.
                'notificationPrefix' => '[TYPO3 Note]', // String: Used to prefix the subject of mails sent in the taskcenter
index b262222..3419c69 100644 (file)
@@ -752,11 +752,13 @@ class SC_index {
         * using the llxml extension
         *
         * @return      void
+        * @deprecated since TYPO3 4.6, remove in TYPO3 4.8
         */
        protected function mergeOldLoginLabels() {
                        // Getting login labels
                $oldLoginLabels = trim($GLOBALS['TYPO3_CONF_VARS']['BE']['loginLabels']);
                if ($oldLoginLabels != '') {
+                       t3lib_div::deprecationLog('The use of $GLOBALS[\'TYPO3_CONF_VARS\'][\'BE\'][\'loginLabels\'] has been deprecated as of TYPO3 4.3, please use the according locallang.xml file.');
                                // md5 hash of the default loginLabels string
                        $defaultOldLoginLabelsHash = 'bcf0d32e58c6454ea50c6c956f1f18f0';
                                // compare loginLabels from TYPO3_CONF_VARS to default value
index 58558e6..d5a47cd 100644 (file)
 
                // LANG:
        var $lang='';                                           // Set to the system language key (used on the site)
-       var $langSplitIndex=0;                          // Set to the index number of the language key
        var $LL_labels_cache=array();
        var $LL_files_cache=array();
 
@@ -4484,26 +4483,23 @@ if (version == "n3") {
         * @return      string          Label value, if any.
         */
        function sL($input)     {
-               if (strcmp(substr($input,0,4),'LLL:'))  {
-                       $t = explode('|',$input);
-                       return $t[$this->langSplitIndex] ? $t[$this->langSplitIndex] : $t[0];
-               } else {
-                       if (!isset($this->LL_labels_cache[$this->lang][$input])) {      // If cached label
-                               $restStr = trim(substr($input,4));
-                               $extPrfx='';
-                               if (!strcmp(substr($restStr,0,4),'EXT:'))       {
-                                       $restStr = trim(substr($restStr,4));
-                                       $extPrfx='EXT:';
-                               }
-                               $parts = explode(':',$restStr);
-                               $parts[0] = $extPrfx.$parts[0];
-                               if (!isset($this->LL_files_cache[$parts[0]]))   {       // Getting data if not cached
-                                       $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
-                               }
-                               $this->LL_labels_cache[$this->lang][$input] = $this->getLLL($parts[1],$this->LL_files_cache[$parts[0]]);
+                       // If cached label
+               if (!isset($this->LL_labels_cache[$this->lang][$input])) {
+                       $restStr = trim(substr($input,4));
+                       $extPrfx='';
+                       if (!strcmp(substr($restStr,0,4),'EXT:'))       {
+                               $restStr = trim(substr($restStr,4));
+                               $extPrfx='EXT:';
+                       }
+                       $parts = explode(':',$restStr);
+                       $parts[0] = $extPrfx.$parts[0];
+                               // Getting data if not cached
+                       if (!isset($this->LL_files_cache[$parts[0]])) {
+                               $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
                        }
-                       return $this->LL_labels_cache[$this->lang][$input];
+                       $this->LL_labels_cache[$this->lang][$input] = $this->getLLL($parts[1],$this->LL_files_cache[$parts[0]]);
                }
+               return $this->LL_labels_cache[$this->lang][$input];
        }
 
        /**
@@ -4535,7 +4531,6 @@ if (version == "n3") {
 
        /**
         * Initializing the getLL variables needed.
-        * Sets $this->langSplitIndex based on $this->config['config']['language']
         *
         * @return      void
         */
@@ -4545,14 +4540,6 @@ if (version == "n3") {
                $this->lang = $this->config['config']['language'] ? $this->config['config']['language'] : 'default';
                $this->getPageRenderer()->setLanguage($this->lang);
 
-               $ls = explode('|',TYPO3_languages);
-               foreach ($ls as $i => $v) {
-                       if ($v == $this->lang) {
-                               $this->langSplitIndex = $i;
-                               break;
-                       }
-               }
-
                        // Setting charsets:
                $this->renderCharset = $this->csConvObj->parse_charset($this->config['config']['renderCharset'] ? $this->config['config']['renderCharset'] : ($this->TYPO3_CONF_VARS['BE']['forceCharset'] ? $this->TYPO3_CONF_VARS['BE']['forceCharset'] : $this->defaultCharSet));    // Rendering charset of HTML page.
                $this->metaCharset = $this->csConvObj->parse_charset($this->config['config']['metaCharset'] ? $this->config['config']['metaCharset'] : $this->renderCharset);   // Output charset of HTML page.
index 6975e42..4d76e4e 100755 (executable)
@@ -54,15 +54,6 @@ class language {
        public $lang = 'default';
 
        /**
-        * Values like the labels in the tables.php-document are split by '|'.
-        * This values defines which language is represented by which position
-        * in the resulting array after splitting a value. (NOTICE: Obsolete concept!)
-        *
-        * @var string
-        */
-       public $langSplit = 'default';
-
-       /**
         * Default charset in backend
         *
         * @var string
@@ -99,12 +90,6 @@ class language {
        public $moduleLabels = array();
 
        /**
-        * Internal, Points to the position of the current language key as found in constant TYPO3_languages
-        * @var int
-        */
-       public $langSplitIndex = 0;
-
-       /**
         * Internal cache for read LL-files
         *
         * @var array
@@ -152,24 +137,17 @@ class language {
                        // Initialize the parser factory object
                $this->parserFactory = t3lib_div::makeInstance('t3lib_l10n_Factory');
 
-                       // Internally setting the list of TYPO3 backend languages.
-               $this->langSplit = TYPO3_languages;
-
                        // Finding the requested language in this list based
                        // on the $lang key being inputted to this function.
-               $ls = explode('|', $this->langSplit);
-
-               foreach ($ls as $i => $v) {
-                               // Language is found. Configure it:
-                       if ($v == $lang) {
-                                       // The index of the language as found in the TYPO3_languages list
-                               $this->langSplitIndex = $i;
-                                       // The current language key
-                               $this->lang = $lang;
-                               if ($this->charSetArray[$this->lang]) {
-                                               // The charset if different from the default.
-                                       $this->charSet = $this->charSetArray[$this->lang];
-                               }
+               $ls = explode('|', TYPO3_languages);
+
+                       // Language is found. Configure it:
+               if (in_array($lang, $ls)) {
+                               // The current language key
+                       $this->lang = $lang;
+                       if ($this->charSetArray[$this->lang]) {
+                                       // The charset if different from the default.
+                               $this->charSet = $this->charSetArray[$this->lang];
                        }
                }
 
@@ -366,51 +344,40 @@ class language {
         * @access      public
         */
        public function sL($input, $hsc = FALSE) {
-               // Using obsolete 'language-splitted' labels:
-               if (strcmp(substr($input, 0, 4), 'LLL:')) {
-                       $t = explode('|', $input);
-                       $out = $t[$this->langSplitIndex] ? $t[$this->langSplitIndex] : $t[0];
-                       if ($hsc) {
-                               $out = htmlspecialchars($out);
+                       // If cached label
+               if (!isset($this->LL_labels_cache[$this->lang][$input])) {
+                       $restStr = trim(substr($input, 4));
+                       $extPrfx = '';
+
+                               // ll-file refered to is found in an extension.
+                       if (!strcmp(substr($restStr, 0, 4), 'EXT:')) {
+                               $restStr = trim(substr($restStr, 4));
+                               $extPrfx = 'EXT:';
                        }
-                       return $out;
-                       // LOCAL_LANG:
-               } else {
-                               // If cached label
-                       if (!isset($this->LL_labels_cache[$this->lang][$input])) {
-                               $restStr = trim(substr($input, 4));
-                               $extPrfx = '';
-
-                                       // ll-file refered to is found in an extension.
-                               if (!strcmp(substr($restStr, 0, 4), 'EXT:')) {
-                                       $restStr = trim(substr($restStr, 4));
-                                       $extPrfx = 'EXT:';
-                               }
-                               $parts = explode(':', $restStr);
-                               $parts[0] = $extPrfx . $parts[0];
-
-                                       // Getting data if not cached
-                               if (!isset($this->LL_files_cache[$parts[0]])) {
-                                       $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
-
-                                               // If the current language is found in another file, load that as well:
-                                       $lFileRef = $this->localizedFileRef($parts[0]);
-                                       if ($lFileRef && is_string($this->LL_files_cache[$parts[0]][$this->lang])
-                                                       && $this->LL_files_cache[$parts[0]][$this->lang] == 'EXT') {
-                                               $tempLL = $this->readLLfile($lFileRef);
-                                               $this->LL_files_cache[$parts[0]][$this->lang] = $tempLL[$this->lang];
-                                       }
+                       $parts = explode(':', $restStr);
+                       $parts[0] = $extPrfx . $parts[0];
+
+                               // Getting data if not cached
+                       if (!isset($this->LL_files_cache[$parts[0]])) {
+                               $this->LL_files_cache[$parts[0]] = $this->readLLfile($parts[0]);
+
+                                       // If the current language is found in another file, load that as well:
+                               $lFileRef = $this->localizedFileRef($parts[0]);
+                               if ($lFileRef && is_string($this->LL_files_cache[$parts[0]][$this->lang])
+                                               && $this->LL_files_cache[$parts[0]][$this->lang] == 'EXT') {
+                                       $tempLL = $this->readLLfile($lFileRef);
+                                       $this->LL_files_cache[$parts[0]][$this->lang] = $tempLL[$this->lang];
                                }
-                               $this->LL_labels_cache[$this->lang][$input] = $this->getLLL($parts[1], $this->LL_files_cache[$parts[0]]);
-                       }
-                               // For the cached output charset conversion has already happened!
-                               // So perform HSC right here.
-                       $output = $this->LL_labels_cache[$this->lang][$input];
-                       if ($hsc) {
-                               $output = t3lib_div::deHSCentities(htmlspecialchars($output));
                        }
-                       return $output . $this->debugLL($input);
+                       $this->LL_labels_cache[$this->lang][$input] = $this->getLLL($parts[1], $this->LL_files_cache[$parts[0]]);
+               }
+                       // For the cached output charset conversion has already happened!
+                       // So perform HSC right here.
+               $output = $this->LL_labels_cache[$this->lang][$input];
+               if ($hsc) {
+                       $output = t3lib_div::deHSCentities(htmlspecialchars($output));
                }
+               return $output . $this->debugLL($input);
        }
 
        /**