diff -r 2ddd11ec2da2 -r db1e6bfaa54e web/common.php --- a/web/common.php Wed Oct 05 13:39:57 2011 +0200 +++ b/web/common.php Wed Oct 05 18:11:31 2011 +0200 @@ -10,6 +10,39 @@ . PATH_SEPARATOR . get_include_path() ); +function get_config_translations($config) { + + $fr = array(); + $en = array(); + $jp = array(); + + $array_loop = array("fr"=>&$fr,"en"=>&$en,"jp"=>&$jp); + /** + * add all config key as translation. + * translation key is "config__" + */ + foreach ($config as $key => $value) { + $translation_key = "config__$key"; + + foreach ($array_loop as $lang => &$lang_array) { + if(is_array($value) && count(array_intersect_key($value,$array_loop)) > 0 ) { + if (array_key_exists($lang, $value)) { + $lang_array[$translation_key] = $value[$lang]; + } + elseif (array_key_exists('fr', $value)) { + $lang_array[$translation_key] = $value['fr']; + } + } + else { + $lang_array[$translation_key] = $value; + } + } + } + + return $array_loop; + +} + /** * Base configuration */ @@ -69,17 +102,27 @@ **/ -Zend_Loader::loadClass('Zend_Translate'); -Zend_Loader::loadClass('Zend_Http_Cookie'); +Zend_Loader::loadClass('Zend_Translate'); +Zend_Loader::loadClass('Zend_Http_Cookie'); $client = new Zend_Http_Client(); $translate = new Zend_Translate('array', $init, 'fr'); + $translate->addTranslation($english, 'en'); $translate->addTranslation($japan, 'ja_JP'); $translate->addTranslation($french, 'fr'); +if(isset($config)) { + $config_translations = get_config_translations($config); + + + $translate->addTranslation($config_translations['en'], 'en'); + $translate->addTranslation($config_translations['jp'], 'ja_JP'); + $translate->addTranslation($config_translations['fr'], 'fr'); +} + $actual = $translate->getLocale(); //$translate->setLocale("en"); @@ -199,21 +242,34 @@ } -function get_archive_box($rep, $metadata, $url_root, $basepath) { +function get_archive_box($rep, $metadata, $url_root, $basepath, &$translate) { include("$basepath$rep/config.php"); - + + + $config_translations = get_config_translations($config); + + // save the locale because it gets changed when adding translations + $locale = $translate->getLocale(); + + $translate->addTranslation($config_translations['en'], 'en'); + $translate->addTranslation($config_translations['jp'], 'ja_JP'); + $translate->addTranslation($config_translations['fr'], 'fr'); + + // set the locale back + $translate->setLocale($locale); + $id = "abox_$rep".(($metadata!=null)?"_$metadata":""); $hash = ($metadata!=null)?"#metadata=$metadata":""; - $tail_img = $config['archive_img']; + $tail_img = $translate->_('config__archive_img'); if(is_array($tail_img)) { $tail_img = $tail_img[$metadata]; } - $archive_title = $config['archive_title']; + $archive_title = $translate->_('config__archive_title'); if(is_array($archive_title)) { $archive_title = $archive_title[$metadata]; } - $archive_description = $config['archive_description']; + $archive_description = $translate->_('config__archive_description'); if(is_array($archive_description)) { $archive_description = $archive_description[$metadata]; } @@ -233,7 +289,9 @@ } -function display_archives_list($archives_list, $box_class, $url_root, $basepath) { +function display_archives_list($archives_list, $box_class, $url_root, $basepath, &$translate) { + + for($i=0;$i\n"); @@ -246,7 +304,7 @@ $archive_name = $archive_ref[0]; $metadata = $archive_ref[1]; } - print(get_archive_box($archive_name,$metadata, $url_root, $basepath)); + print(get_archive_box($archive_name,$metadata, $url_root, $basepath, $translate)); if(($i % 3)==2 || $i == (count($archives_list)-1)) { print(" \n"); }