diff --git a/phpgwapi/inc/class.translation.inc.php b/phpgwapi/inc/class.translation.inc.php
index 17584b9704..5da462ef05 100644
--- a/phpgwapi/inc/class.translation.inc.php
+++ b/phpgwapi/inc/class.translation.inc.php
@@ -226,7 +226,7 @@ class translation
// to cope with $vars[0] containing '%2' (eg. an urlencoded path like a referer),
// we first replace '%2' in $ret with '|%2|' and then use that as 2. placeholder
// we do that for %3 as well, ...
- $vars = array_merge(array('|%3|','|%2|'),$vars); // push '|%2|' (and such) as first replacement on $vars
+ array_unshift($vars,array('|%3|','|%2|')); // push '|%2|' (and such) as first replacement on $vars
$ret = str_replace($placeholders,$vars,$ret);
}
else
@@ -430,6 +430,37 @@ class translation
return $languages;
}
+ /**
+ * provides centralization and compatibility to locate the lang files
+ *
+ * @param string $app application name
+ * @param string $lang language code
+ * @return the full path of the filename for the requested app and language
+ */
+ static function get_lang_file($app,$lang)
+ {
+ // Visit each lang file dir, look for a corresponding ${prefix}_lang file
+ $langprefix=EGW_SERVER_ROOT . SEP ;
+ $langsuffix=strtolower($lang) . '.lang';
+ $new_appfile = $langprefix . $app . SEP . 'lang' . SEP . self::LANGFILE_PREFIX . $langsuffix;
+ $cur_appfile = $langprefix . $app . SEP . 'setup' . SEP . self::LANGFILE_PREFIX . $langsuffix;
+ $old_appfile = $langprefix . $app . SEP . 'setup' . SEP . self::OLD_LANGFILE_PREFIX . $langsuffix;
+ // Note there's no chance for 'lang/phpgw_' files
+ if (file_exists($new_appfile))
+ {
+ $appfile=$new_appfile;
+ }
+ elseif (file_exists($cur_appfile))
+ {
+ $appfile=$cur_appfile;
+ }
+ else
+ {
+ $appfile=$old_appfile;
+ }
+ return $appfile;
+ }
+
/**
* returns a list of installed charsets
*
@@ -641,13 +672,11 @@ class translation
$setup_info = $GLOBALS['egw_setup']->detection->get_db_versions($setup_info);
$raw = array();
$apps = $only_app ? array($only_app) : array_keys($setup_info);
- // Visit each app/setup dir, look for a egw_lang file
foreach($apps as $app)
{
- $appfile = EGW_SERVER_ROOT . SEP . $app . SEP . 'setup' . SEP . self::LANGFILE_PREFIX . strtolower($lang) . '.lang';
- $old_appfile = EGW_SERVER_ROOT . SEP . $app . SEP . 'setup' . SEP . self::OLD_LANGFILE_PREFIX . strtolower($lang) . '.lang';
+ $appfile=self::get_lang_file($app,$lang);
//echo '
Checking in: ' . $app;
- if($GLOBALS['egw_setup']->app_registered($app) && (file_exists($appfile) || file_exists($appfile=$old_appfile)))
+ if($GLOBALS['egw_setup']->app_registered($app) && (file_exists($appfile)))
{
//echo '
Including: ' . $appfile;
$lines = file($appfile);
@@ -786,7 +815,7 @@ class translation
$apps['phpgwapi'] = True; // check the api too
foreach($apps as $app => $data)
{
- $fname = EGW_SERVER_ROOT . "/$app/setup/" . self::LANGFILE_PREFIX . "$lang.lang";
+ $fname=self::get_lang_file($app,$lang);
$old_fname = EGW_SERVER_ROOT . "/$app/setup/" . self::OLD_LANGFILE_PREFIX . "$lang.lang";
if (file_exists($fname) || file_exists($fname = $old_fname))
@@ -1198,8 +1227,3 @@ class translation
}
}
}
-/*
-$msg = 'Bitte %1hier%2 clicken!';
-$replace = array('','');
-echo "
".htmlspecialchars(translation::translate($msg,$replace))."
\n"; -*/ \ No newline at end of file