27 $lang =
$app->_conf[
'lang'];
30 if ( !is_array($instance) ){
34 if ( !isset($instance[$lang]) ){
37 return $instance[$lang];
48 return self::getInstance($this->app->_conf[
'default_language'])->loadRealm($name);
53 public static function addRealm($name, $dictionary=null){
72 public static function translate($__translation_id, $__defaultText=null, $params=array(), $lang=null){
73 return self::getInstance($lang)->translate($__translation_id, $__defaultText, $params, $lang);
134 if ( is_array($conf) and isset($conf[
'lang']) ) $this->lang = $conf[
'lang'];
146 if ( !isset($this->realms[$name]) ){
148 if ( $this->lang != $this->app->_conf[
'default_language'] ){
157 if ( !
$lang )
$lang = $this->app->_conf[
'lang'];
158 if ( file_exists($name.
'.'.
$lang.
'.ini') ){
168 unset($this->realms[$name]);
176 $oldLang =
$app->_conf[
'lang'];
178 $query =&
$app->getQuery();
179 import(
'Dataface/ConfigTool.php');
181 $dictionary = $configTool->loadConfig(
'lang', null);
182 if ( isset($query[
'-table']) ) {
183 $tableDictionary = $configTool->loadConfig(
'lang', $query[
'-table']);
184 if (is_array($tableDictionary) ){
188 $app->_conf[
'lang'] = $oldLang;
194 function translate($__translation_id, $__defaultText=null, $params=array(),
$lang=null){
195 if ( isset($this) and is_a($this,
'Dataface_LanguageTool') and $this->lang ==
$lang ) $tool =& $this;
198 $__found_text = null;
199 foreach ( array_reverse(array_keys($tool->realms)) as $realmName ){
200 if ( isset($tool->realms[$realmName][$__translation_id]) ){
201 $__found_text = $tool->realms[$realmName][$__translation_id];
205 if ( !isset($__found_text) and isset($tool->dictionary[$__translation_id]) ){
206 $__found_text = $tool->dictionary[$__translation_id];
208 if ( isset($__found_text) ) {
211 if ( isset($params[
'__translation_id']) ) unset($params[
'__translation_id']);
212 if ( isset($params[
'tool']) ) unset($params[
'tool']);
213 if (isset($params[
'__defaultText']) ) unset($params[
'__defaultText']);
214 if ( isset($params[
'params'])) unset($params[
'params']);
215 if ( isset($params[
'__found_text']) ) unset($params[
'__found_text']);
218 @eval(
'$parsed = <<<END'.
"\n".$__found_text.
"\nEND\n;");
219 if ( !isset($parsed) ){
220 return $__defaultText;
225 if ( $tool->lang != $tool->app->_conf[
'default_language'] ){
226 return $tool->translate(
227 $__translation_id, $__defaultText, $params, $tool->app->_conf[
'default_language']
231 return $__defaultText;
249 if ( !isset($params[
'use_flags']) ) $params[
'use_flags'] =
true;
250 import(
'I18Nv2/Language.php');
251 $langcode = ( isset($params[
'lang']) ? $params[
'lang'] : $this->app->_conf[
'lang']);
252 $languageCodes =
new I18Nv2_Language($langcode);
253 $currentLanguage = $languageCodes->getName( $this->app->_conf[
'lang']);
254 $name = (isset($params[
'name']) ? $params[
'name'] :
'language');
256 $var = (isset($params[
'var']) ? $params[
'var'] :
'-lang');
257 $selected = (isset($params[
'selected']) ? $params[
'selected'] : $this->app->_conf[
'lang']);
258 $selectedValue = $languageCodes->getName($selected);
259 $autosubmit = isset($params[
'autosubmit']) and $params[
'autosubmit'];
260 $type = ( isset($params[
'type']) ? $params[
'type'] :
'select');
262 if ( isset($params[
'table']) ){
264 $languages = array_keys(
$table->getTranslations());
266 $languages = $this->app->_conf[
'languages'];
268 if ( !is_array($languages) )
return '';
271 $onchange =
'javascript:window.location=this.options[this.selectedIndex].value;';
272 foreach ( $languages as
$lang ){
273 $curri18n =
new I18Nv2_Language($langCode);
274 $langname = $curri18n->getName($lang);
275 $options[$this->app->url($var.
'='.$lang)] = array(
'code'=>$lang,
'name'=>$langname);
279 foreach ($languages as
$lang ){
280 $curri18n =
new I18Nv2_Language($langCode);
281 $langname = $curri18n->getName($lang);
282 $options[
$lang] = array(
'code'=>$lang,
'name'=>$langname);
286 if (count($options) <= 1)
return '';
288 if ( $type ==
'select' ){
290 echo
'<select name="'.$name.
'" '.($onchange ?
'onchange="'.$onchange.
'"' :
'').
'>
292 foreach ($options as $code => $value ){
293 echo
'<option value="'.$code.
'"'. ( ($value[
'code'] == $selected) ?
' selected' :
'').
'>'.$value[
'name'].
'</option>
298 echo
'<ul id="'.$name.
'" class="language-selection-list">
300 foreach ( $languages as $code ){
301 if ( !isset($params[
'lang']) and $this->app->_conf[
'language_labels'][$code] != $code ){
302 $languageName = $this->app->_conf[
'language_labels'][$code];
304 $languageName = $languageCodes->getName($code);
307 echo
'<li class="language-selection-item '.( ($code == $this->app->_conf[
'lang']) ?
' selected-language' :
'').
'">
308 <a href="'.$this->app->url($var.
'='.$code).
'">';
309 if ( $params[
'use_flags'] ){
310 echo
'<img src="'.DATAFACE_URL.
'/images/flags/'.$code.
'_small.gif" alt="'.$languageName.
'" />';
318 $out = ob_get_contents();
326 import(
'I18Nv2/Language.php');
328 $langcode = $this->app->_conf[
'lang'];
329 $languageCodes =
new I18Nv2_Language($langcode);
330 $languageName = null;
331 if ( @$this->app->_conf[
'language_labels'][$code] and $this->app->_conf[
'language_labels'][$code] != $code ){
332 $languageName = $this->app->_conf[
'language_labels'][$code];
335 $languageName = $languageCodes->getName($code);
337 return $languageName;
342 return DATAFACE_URL.
'/images/flags/'.$code.
'_small.gif';