示例#1
0
 /**
  * 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');