Index: typo3/sysext/lang/lang.php =================================================================== --- typo3/sysext/lang/lang.php (revision 10275) +++ typo3/sysext/lang/lang.php (working copy) @@ -409,24 +409,34 @@ // 1 => type from (alttitle, description, details, syntax, image_descr,image,seeAlso), // 2 => special instruction, see switch construct $kParts = explode('.', $lkey); + $kPartsCount = count($kParts); + $specialInstruction = ($kParts[$kPartsCount - 1] == '+') ? TRUE : FALSE; + if ($specialInstruction) { + array_pop($kParts); + } + if ($kPartsCount > 2) { + $type = array_pop($kParts); + $fieldName = implode('.', $kParts); + } else { + $fieldName = $kParts[0]; + $type = $kParts[1]; + } + // Detecting 'hidden' labels, converting to normal fieldname - if ($kParts[0] == '_') { - $kParts[0] = ''; + if ($fieldName == '_') { + $fieldName = ''; } - if (substr($kParts[0], 0, 1) == '_') { - $kParts[0] = substr($kParts[0], 1); + if (substr($fieldName, 0, 1) == '_') { + $fieldName = substr($fieldName, 1); } // Add label: - switch ((string)$kParts[2]) { - // adding - case '+': - $TCA_DESCR[$table]['columns'][$kParts[0]][$kParts[1]] .= LF . $lVal; - break; + if ($specialInstruction) { + $TCA_DESCR[$table]['columns'][$fieldName][$type] .= LF . $lVal; + } else { // Substituting: - default: - $TCA_DESCR[$table]['columns'][$kParts[0]][$kParts[1]] = $lVal; + $TCA_DESCR[$table]['columns'][$fieldName][$type] = $lVal; } } }