/** * Translations in the database will be merged with the other translations in language.php. Note that after writing translations to language.php they are removed from the database. * @param $input * @return language.php file */ function action_write_to_language_php($input) { //check preference Services_Exception_Disabled::check('lang_use_db'); //check permissions $perms = Perms::get('tiki'); if (!$perms->tiki_p_edit_languages) { throw new Services_Exception_Denied(tr('Permission denied')); } //get language from input $language = $input->language->text(); //prepare language list -> seems useless... $langLib = TikiLib::lib('language'); $db_languages = $langLib->getDbTranslatedLanguages(); $db_languages = $langLib->format_language_list($db_languages); //TODO: get count of available translations in the database //$db_translation_count = $this->getDbTranslationCount($language); //check if lang directory is writable for the selected language $langIsWritable = $this->checkLangIsWritable($language); if ($langIsWritable === false) { throw new Services_Exception_Denied(tr('lang/$language directory is not writable')); } $confirm = $input->confirm->int(); if ($confirm) { //set export language $export_language = new LanguageTranslations($language); //write to language.php try { $stats = $export_language->writeLanguageFile(); } catch (Exception $e) { //TODO: this is messy $smarty->assign('msg', $e->getMessage()); $smarty->display('error.tpl'); die; } //TODO: expose expmsg properly $expmsg = sprintf(tra('Wrote %d new strings and updated %d to lang/%s/language.php'), $stats['new'], $stats['modif'], $export_language->lang); } return array('title' => tr('Write to language.php'), 'db_languages' => $db_languages, 'db_translation_count' => $db_translation_count, 'langIsWritable' => $langIsWritable); }
public function testWriteLanguage_shouldRaiseExceptionForInvalidLanguagePhp() { $this->setExpectedException('Language_Exception'); copy(dirname(__FILE__) . '/fixtures/language_invalid.php', $this->langDir . '/language.php'); $this->obj->writeLanguageFile(); }
<?php /** * Script to export translations from the database * to language.php files. */ die("REMOVE THIS LINE TO USE THE SCRIPT.\n"); if (!isset($argv[1])) { echo "\nUsage: php export_translations_to_file.php langCode\n"; echo "Example: php export_translations_to_file.php de\n"; die; } require_once 'tiki-setup.php'; require_once 'lang/langmapping.php'; require_once 'lib/language/Language.php'; require_once 'lib/language/LanguageTranslations.php'; $langCode = $argv[1]; if (!array_key_exists($langCode, $langmapping)) { die("Invalid language code.\n"); } $language = new LanguageTranslations($langCode); try { $stats = $language->writeLanguageFile(); } catch (Exception $e) { die("{$e->getMessage()}\n"); } echo sprintf("Wrote %d new strings and updated %d to lang/%s/language.php\n", $stats['new'], $stats['modif'], $language->lang);
// Export if (isset($_REQUEST['downloadFile'])) { check_ticket('edit-languages'); $data = $export_language->createCustomFile(); header("Content-type: application/unknown"); header("Content-Disposition: inline; filename=language.php"); header("Content-encoding: UTF-8"); echo $data; exit (0); } // Write to language.php if (isset($_REQUEST['exportToLanguage']) && $tiki_p_admin == 'y') { try { $stats = $export_language->writeLanguageFile(); } catch (Exception $e) { $smarty->assign('msg', $e->getMessage()); $smarty->display('error.tpl'); die; } $expmsg = sprintf(tra('Wrote %d new strings and updated %d to lang/%s/language.php'), $stats['new'], $stats['modif'], $export_language->lang); $smarty->assign('expmsg', $expmsg); } $db_languages = Language::getDbTranslatedLanguages(); $db_languages = $tikilib->format_language_list($db_languages); $smarty->assign_by_ref('db_languages', $db_languages); ask_ticket('edit-languages');