/** * returns list of all available translations * * @return array list of all available translations */ public function getAvailableTranslations() { $availableTranslations = Tinebase_Translation::getAvailableTranslations(); foreach ($availableTranslations as &$info) { unset($info['path']); } return array('results' => array_values($availableTranslations), 'totalcount' => count($availableTranslations)); }
public function testCustomTranslations() { $lang = 'en_GB'; $translationPath = Tinebase_Core::getTempDir() . "/tine20/translations"; Tinebase_Config::getInstance()->translations = $translationPath; $translationDir = "{$translationPath}/{$lang}/Tinebase/translations"; @mkdir($translationDir, 0777, TRUE); $poFile = "{$translationDir}/{$lang}.po"; $poData = 'msgid "" msgstr "" "Project-Id-Version: Tine 2.0 - Tinebase\\n" "POT-Creation-Date: 2008-05-17 22:12+0100\\n" "PO-Revision-Date: 2008-07-29 21:14+0100\\n" "Last-Translator: Cornelius Weiss <*****@*****.**>\\n" "Language-Team: Tine 2.0 Translators\\n" "MIME-Version: 1.0\\n" "Content-Type: text/plain; charset=UTF-8\\n" "Content-Transfer-Encoding: 8bit\\n" "X-Poedit-Language: en\\n" "X-Poedit-Country: US\\n" "X-Poedit-SourceCharset: utf-8\\n" "Plural-Forms: nplurals=2; plural=n != 1;\\n" "X-Tine20-Language: My Language\\n" "X-Tine20-Country: MY REGION\\n" #: Acl/Rights/Abstract.php:75 msgid "run" msgstr "изпълни" '; file_put_contents($poFile, $poData); $availableTranslations = Tinebase_Translation::getAvailableTranslations(); foreach ($availableTranslations as $langInfo) { if ($langInfo['locale'] == $lang) { $customInfo = $langInfo; } } // assert cutom lang is available $this->assertTrue(isset($customInfo), 'custom translation not in list of available translations'); $this->assertEquals('My Language', $customInfo['language'], 'custom language param missing'); $this->assertEquals('MY REGION', $customInfo['region'], 'custom region param missing'); // test the translation $translation = Tinebase_Translation::getTranslation('Tinebase', new Zend_Locale($lang)); // NOTE: Zent_Translate does not work with .po files //$this->assertEquals("изпълни", $translation->_('run')); $jsTranslations = Tinebase_Translation::getJsTranslations($lang, 'Tinebase'); $this->assertEquals(1, preg_match('/изпълни/', $jsTranslations)); Tinebase_Core::setupUserLocale(); }
/** * overwrite this to add more special options for other apps * * - result array has to have the following format: * array( * array('value1', 'label1'), * array('value2', 'label2'), * ... * ) * * @param string $_value * @return array * * @todo add application title translations? */ protected function _getSpecialOptions($_value) { $result = array(); switch ($_value) { case Tinebase_Preference::TIMEZONE: $locale = Tinebase_Core::get(Tinebase_Core::LOCALE); $availableTimezonesTranslations = Zend_Locale::getTranslationList('citytotimezone', $locale); $availableTimezones = DateTimeZone::listIdentifiers(); foreach ($availableTimezones as $timezone) { $result[] = array($timezone, $timezone); } break; case Tinebase_Preference::LOCALE: $availableTranslations = Tinebase_Translation::getAvailableTranslations(); foreach ($availableTranslations as $lang) { $region = !empty($lang['region']) ? ' / ' . $lang['region'] : ''; $result[] = array($lang['locale'], $lang['language'] . $region); } break; case Tinebase_Preference::DEFAULT_APP: $applications = Tinebase_Application::getInstance()->getApplications(); foreach ($applications as $app) { if ($app->status == 'enabled' && $app->name != 'Tinebase' && Tinebase_Core::getUser()->hasRight($app->name, Tinebase_Acl_Rights_Abstract::RUN)) { $result[] = array($app->name, $app->name); } } break; default: $result = parent::_getSpecialOptions($_value); break; } return $result; }