web/common.php
changeset 291 db1e6bfaa54e
parent 287 3efe34a87c37
child 294 106c4ec894aa
--- 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__<config_key>"
+    */
+    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<count($archives_list);$i++) {
 		if(($i % 3)==0) {
 			print("			    <div class=\"$box_class\">\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("			    </div>\n");
 		}