/** * Translate selector items array * * @param array $items: array of value/label pairs * @param string $tableName: name of static info tables * @return array array of value/translated label pairs */ protected function translateSelectorItems($items, $tableName) { $translatedItems = $items; if (isset($translatedItems) && is_array($translatedItems)) { foreach ($translatedItems as $key => $item) { if ($translatedItems[$key][1]) { //Get isocode if present $code = strstr($item[0], '('); $code2 = strstr(substr($code, 1), '('); $code = $code2 ? $code2 : $code; // Translate $translatedItems[$key][0] = LocalizationUtility::translate(array('uid' => $item[1]), $tableName); // Re-append isocode, if present $translatedItems[$key][0] = $translatedItems[$key][0] . ($code ? ' ' . $code : ''); } } $currentLocale = setlocale(LC_COLLATE, '0'); $locale = LocalizationUtility::setCollatingLocale(); if ($locale !== FALSE) { uasort($translatedItems, array($this, 'strcollOnLabels')); } setlocale(LC_COLLATE, $currentLocale); } $items = $translatedItems; return $items; }
/** * Sort entities by the localized name * * @param \TYPO3\CMS\Extbase\Persistence\QueryResultInterface $entities to be sorted * @param string $orderDirection may be "asc" or "desc". Default is "asc". * @return array entities ordered by localized name */ public function localizedSort(\TYPO3\CMS\Extbase\Persistence\QueryResultInterface $entities, $orderDirection = 'asc') { $result = $entities->toArray(); $locale = \SJBR\StaticInfoTables\Utility\LocalizationUtility::setCollatingLocale(); if ($locale !== FALSE) { if ($orderDirection === 'asc') { uasort($result, array($this, 'strcollOnLocalizedName')); } else { uasort($result, array($this, 'strcollOnLocalizedNameDesc')); } } return $result; }