--- 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");
}