4 define(
"ILIAS_LANGUAGE_MODULE",
"Services/Language");
6 require_once(
"./Services/Object/classes/class.ilObjectGUI.php");
7 require_once(
"Services/Language/classes/class.ilObjLanguageAccess.php");
49 $lng->loadLanguageModule(
"administration");
50 $lng->loadLanguageModule(
"meta");
53 $ilCtrl->saveParameter($this,
"view_mode");
57 if (! $this->
id =
$_GET[
'obj_id'])
63 $this->
ilObjectGUI($a_data, $this->
id,
false,
true);
66 if (!is_array(
$_SESSION[get_class($this)]))
70 $this->session =&
$_SESSION[get_class($this)];
74 $this->langmode = $ilClientIniFile->readVariable(
"system",
"LANGMODE");
86 require_once(
"Services/Language/classes/class.ilObjLanguageExt.php");
100 $this->ilErr->raiseError($this->lng->txt(
"permission_denied"),$this->ilErr->MESSAGE);
104 $cmd = $this->ctrl->getCmd(
"view").
"Object";
107 $ilHelp->setScreenIdComponent(
"lng");
127 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.lang_edit_items.html",
"Services/Language");
130 $compare = $this->
getPar(
'compare', $this->lng->getDefaultLanguage());
133 if ($compare == $this->object->key)
135 $compare_object = $this->
object->getGlobalLanguageFile();
136 $compare_content = $compare_object->getAllValues();
137 $compare_comments = $compare_object->getAllComments();
138 $compare_note =
" ". $this->lng->txt(
"language_default_entries");
142 $remarks = $this->
object->getAllRemarks();
152 $modules = $this->
getPar(
"page_modules", array());
153 $topics = $this->
getPar(
"page_topics", array());
155 if (!isset($compare_content))
158 $compare, $modules, $topics);
164 $this->object->key, $modules, $topics);
172 $offset = $this->
getPar(
'offset',
'0');
173 $limit = $ilUser->getPref(
"hits_per_page");
175 $filter_mode = $this->
getPar(
'filter_mode',
'all');
176 $filter_pattern = $this->
getPar(
'filter_pattern',
'');
177 $filter_module = $this->
getPar(
'filter_module',
'administration');
178 $filter_modules = $filter_module ? array($filter_module) : array();
180 if (!isset($compare_content))
183 $compare, $filter_modules);
188 switch ($filter_mode)
191 $translations = $this->
object->getChangedValues(
192 $filter_modules, $filter_pattern);
196 $translations = $this->
object->getAddedValues(
197 $filter_modules, $filter_pattern);
201 $translations = $this->
object->getUnchangedValues(
202 $filter_modules, $filter_pattern);
206 $translations = $this->
object->getCommentedValues(
207 $filter_modules, $filter_pattern);
211 $translations = $this->
object->getAllValues(
212 $filter_modules, $filter_pattern);
214 $translations = array_intersect_key($translations, $remarks);
218 $translations = $this->
object->getAllValues(
219 $filter_modules, $filter_pattern);
221 $translations = array_intersect_assoc($translations, $compare_content);
225 $translations = $this->
object->getAllValues(
226 $filter_modules, $filter_pattern);
228 $translations = array_diff_assoc($translations, $compare_content);
232 $former_file = $this->
object->getCustLangPath() .
'/ilias_' . $this->
object->key .
'.lang';
233 if (!is_readable($former_file))
236 .
'<br />'. $this->lng->txt(
"language_former_file_description") ,
false);
237 $translations = array();
240 $global_file_obj = $this->
object->getGlobalLanguageFile();
242 $former_file_obj->read();
243 $global_changes = array_diff_assoc(
244 $global_file_obj->getAllValues(),
245 $former_file_obj->getAllValues());
246 if (!count($global_changes))
248 ilUtil::sendInfo(sprintf($this->lng->txt(
"language_former_file_equal"), $former_file)
249 .
'<br />'. $this->lng->txt(
"language_former_file_description") ,
false);
250 $translations = array();
253 $translations = $this->
object->getChangedValues(
254 $filter_modules, $filter_pattern);
256 $translations = array_intersect_key($translations, $global_changes);
261 $translations = $this->
object->getAllValues(
262 $filter_modules, $filter_pattern);
266 $this->tpl->setCurrentBlock(
"filter");
270 $options[
""] = $this->lng->txt(
"language_all_modules");
272 foreach ($modules as $mod)
276 $this->tpl->setVariable(
"SELECT_MODULE",
281 $options[
"all"] = $this->lng->txt(
"language_scope_global");
282 $options[
"changed"] = $this->lng->txt(
"language_scope_local");
285 $options[
"added"] = $this->lng->txt(
"language_scope_added");
287 $options[
"unchanged"] = $this->lng->txt(
"language_scope_unchanged");
288 $options[
"equal"] = $this->lng->txt(
"language_scope_equal");
289 $options[
"different"] = $this->lng->txt(
"language_scope_different");
290 $options[
"commented"] = $this->lng->txt(
"language_scope_commented");
293 $options[
"dbremarks"] = $this->lng->txt(
"language_scope_dbremarks");
295 $options[
"conflicts"] = $this->lng->txt(
"language_scope_conflicts");
296 $this->tpl->setVariable(
"SELECT_MODE",
300 $this->tpl->setVariable(
"PATTERN_NAME",
"filter_pattern");
304 $this->tpl->setVariable(
"FILTER_ACTION", $this->ctrl->getFormAction($this));
305 $this->tpl->setVariable(
"TXT_FILTER", $this->lng->txt(
"filter"));
306 $this->tpl->setVariable(
"OFFSET_NAME",
"offset");
307 $this->tpl->setVariable(
"OFFSET_VALUE",
"0");
308 $this->tpl->setVariable(
"TXT_APPLY_FILTER", $this->lng->txt(
"apply_filter"));
309 $this->tpl->setVariable(
"CMD_FILTER",
"view");
310 $this->tpl->parseCurrentBlock();
314 $this->tpl->setCurrentBlock(
"compare");
315 $this->tpl->setVariable(
"COMPARE_ACTION", $this->ctrl->getFormAction($this));
316 $this->tpl->setVariable(
"TXT_COMPARE", $this->lng->txt(
"language_compare"));
317 $this->tpl->setVariable(
"TXT_CHANGE", $this->lng->txt(
"change"));
319 $langlist = $this->lng->getInstalledLanguages();
320 foreach ($langlist as $lang_key)
322 $options[$lang_key] = $this->lng->txt(
"meta_l_".$lang_key);
324 $this->tpl->setVariable(
"SELECT_COMPARE",
326 $this->tpl->setVariable(
"CMD_COMPARE",
"view");
327 $this->tpl->parseCurrentBlock();
330 $sort_by = $this->
getPar(
'sort_by',
'translation');
331 $sort_order = $this->
getPar(
'sort_order',
'asc');
334 foreach($translations as $name => $translation)
336 $keys = explode($this->lng->separator, $name);
339 $data[
"module"] = $keys[0];
340 $data[
"topic"] = $keys[1];
341 $data[
"name"] = $name;
342 $data[
"translation"] = $translation;
343 $data[
"default"] = $compare_content[$name];
344 $data[
"default_comment"] = $compare_comments[$name];
351 $list = array_slice($list, $offset, $limit);
355 include_once
'Services/Table/classes/class.ilTableGUI.php';
358 $tbl->disable(
'title');
360 $tbl->setHeaderNames(array($this->lng->txt(
"module"),
361 $this->lng->txt(
"identifier"),
362 $this->lng->txt(
"meta_l_".$this->object->key),
363 $this->lng->txt(
"meta_l_".$compare).$compare_note));
365 $tbl->setHeaderVars(array(
"module",
369 $this->ctrl->getParameterArray($this));
372 $tbl->setColumnWidth(array(
"10%",
377 $tbl->setOrderColumn($sort_by);
378 $tbl->setOrderDirection($sort_order);
379 $tbl->setLimit($limit);
380 $tbl->setOffset($offset);
381 $tbl->setMaxCount(count($translations));
386 $tpl->setCurrentBlock(
"tbl_form_header");
387 $tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
388 $tpl->parseCurrentBlock();
390 $tpl->setCurrentBlock(
"tbl_action_btn");
391 $tpl->setVariable(
"BTN_NAME",
'save');
392 $tpl->setVariable(
"BTN_VALUE",$this->lng->txt(
'save'));
393 $tpl->parseCurrentBlock();
395 $tpl->setCurrentBlock(
"tbl_action_row");
396 $tpl->setVariable(
"COLUMN_COUNTS",
"4");
397 $tpl->parseCurrentBlock();
400 $tpl->addBlockfile(
"TBL_CONTENT",
"tbl_content",
"tpl.lang_items_row.html",
"Services/Language");
401 foreach ($list as
$data)
405 $tpl->setCurrentBlock(
'comment');
409 $tpl->setVariable(
"COM_SIZE", $this->commentsize);
410 $tpl->setVariable(
"COM_MAX", 250);
411 $tpl->setVariable(
"TXT_COMMENT", $this->lng->txt(
'comment'));
412 $tpl->parseCurrentBlock();
416 $tpl->setCurrentBlock(
'hidden_comment');
419 $tpl->parseCurrentBlock();
422 $tpl->setCurrentBlock(
"row");
423 $tpl->setVariable(
"T_ROWS", ceil(strlen($data[
"translation"]) / $this->inputsize));
424 $tpl->setVariable(
"T_SIZE", $this->inputsize);
432 $tpl->parseCurrentBlock();
436 $tbl->setTemplate(
$tpl);
438 $this->tpl->setVariable(
"TRANSLATION_TABLE",
$tpl->get());
449 $save_array = array();
450 $remarks_array = array();
451 foreach (
$_POST as $key => $value)
455 if (count($keys) == 2)
458 $value = preg_replace(
"/(\015\012)|(\015)|(\012)/",
"<br />",$value);
460 $save_array[$key] = $value;
462 $remarks_array[$key] =
$_POST[$key.$this->lng->separator.
"comment"];
479 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.lang_file_import.html",
"Services/Language");
481 $this->tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
482 $this->tpl->setVariable(
"TXT_HEADER",$this->lng->txt(
"language_import_file"));
483 $this->tpl->setVariable(
"TXT_FILE",$this->lng->txt(
"file"));
485 $this->tpl->setVariable(
"TXT_MODE",$this->lng->txt(
"language_mode_existing"));
486 $this->tpl->setVariable(
"TXT_MODE_KEEPALL",$this->lng->txt(
"language_mode_existing_keepall"));
487 $this->tpl->setVariable(
"TXT_MODE_KEEPNEW",$this->lng->txt(
"language_mode_existing_keepnew"));
488 $this->tpl->setVariable(
"TXT_MODE_REPLACE",$this->lng->txt(
"language_mode_existing_replace"));
489 $this->tpl->setVariable(
"TXT_MODE_DELETE",$this->lng->txt(
"language_mode_existing_delete"));
491 $this->tpl->setVariable(
"TXT_UPLOAD",$this->lng->txt(
"upload"));
492 $this->tpl->setVariable(
"CMD_UPLOAD",
"upload");
502 if (
$_POST[
'cmd'][
'upload'])
504 $file = $_FILES[
'userfile'][
'tmp_name'].
'x';
507 $_FILES[
'userfile'][
'name'],
510 $this->
object->importLanguageFile(
$file,
$_POST[
'mode_existing']);
511 ilUtil::sendSuccess(sprintf($this->lng->txt(
"language_file_imported"), $_FILES[
'userfile'][
'name']) ,
false);
533 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.lang_file_export.html",
"Services/Language");
535 $this->tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
536 $this->tpl->setVariable(
"TXT_HEADER",$this->lng->txt(
"language_export_file"));
538 $this->tpl->setVariable(
"TXT_SCOPE",$this->lng->txt(
"language_file_scope"));
539 $this->tpl->setVariable(
"TXT_SCOPE_GLOBAL",$this->lng->txt(
"language_scope_global"));
540 $this->tpl->setVariable(
"TXT_SCOPE_LOCAL",$this->lng->txt(
"language_scope_local"));
541 $this->tpl->setVariable(
"TXT_SCOPE_UNCHANGED",$this->lng->txt(
"language_scope_unchanged"));
543 $this->tpl->setVariable(
"CHECKED_GLOBAL",$scope ==
'global' ?
'checked="checked"' :
'');
544 $this->tpl->setVariable(
"CHECKED_LOCAL",$scope ==
'local' ?
'checked="checked"' :
'');
545 $this->tpl->setVariable(
"CHECKED_UNCHANGED",$scope ==
'unchanged' ?
'checked="checked"' :
'');
549 $this->tpl->setVariable(
"TXT_SCOPE_ADDED",$this->lng->txt(
"language_scope_added"));
550 $this->tpl->setVariable(
"CHECKED_ADDED",$scope ==
'added' ?
'checked="checked"' :
'');
552 $this->tpl->setVariable(
"TXT_SCOPE_MERGED",$this->lng->txt(
"language_scope_merged"));
553 $this->tpl->setVariable(
"CHECKED_MERGED",$scope ==
'merged' ?
'checked="checked"' :
'');
556 $this->tpl->setVariable(
"TXT_DOWNLOAD",$this->lng->txt(
"download"));
557 $this->tpl->setVariable(
"CMD_DOWNLOAD",
"download");
567 $filename =
'ilias_' . $this->
object->key .
'_'
569 .
"-" . date(
'Y-m-d')
570 .
".lang.".$_POST[
"scope"];
572 $global_file_obj = $this->
object->getGlobalLanguageFile();
575 if (
$_POST[
"scope"] ==
'global')
577 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
'author'));
578 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
'version'));
579 $local_file_obj->setAllValues($this->object->getAllValues());
582 $local_file_obj->setAllComments($this->object->getAllRemarks());
585 elseif (
$_POST[
"scope"] ==
'local')
587 $local_file_obj->setParam(
"based_on", $global_file_obj->getParam(
'version'));
588 $local_file_obj->setAllValues($this->object->getChangedValues());
591 $local_file_obj->setAllComments($this->object->getAllRemarks());
594 elseif (
$_POST[
"scope"] ==
'added')
596 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
'author'));
597 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
'version'));
598 $local_file_obj->setAllValues($this->object->getAddedValues());
599 $local_file_obj->setAllComments($this->object->getAllRemarks());
601 elseif (
$_POST[
"scope"] ==
'unchanged')
603 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
'author'));
604 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
'version'));
605 $local_file_obj->setAllValues($this->object->getUnchangedValues());
608 $local_file_obj->setAllComments($this->object->getAllRemarks());
611 elseif (
$_POST[
"scope"] ==
'merged')
613 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
'author'));
614 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
'version'));
615 $local_file_obj->setAllValues($this->object->getMergedValues());
616 $local_file_obj->setAllComments($this->object->getMergedRemarks());
630 switch (
$_POST[
"maintain"])
634 $lang_file = $this->
object->getCustLangPath() .
'/ilias_' . $this->
object->key .
'.lang.local';
636 if ((is_file($lang_file) and is_writable($lang_file))
637 or (!file_exists($lang_file) and is_writable($this->object->getCustLangPath())))
640 $orig_file = $this->
object->getLangPath() .
'/ilias_' . $this->
object->key .
'.lang';
641 $copy_file = $this->
object->getCustLangPath() .
'/ilias_' . $this->
object->key .
'.lang';
642 @copy($orig_file, $copy_file);
645 @rename($lang_file, $lang_file.
".bak");
648 $global_file_obj = $this->
object->getGlobalLanguageFile();
649 $local_file_obj =
new ilLanguageFile($lang_file, $this->object->key,
'local');
650 $local_file_obj->setParam(
'based_on', $global_file_obj->getParam(
'version'));
651 $local_file_obj->setAllValues($this->object->getChangedValues());
654 $local_file_obj->setAllComments($this->object->getAllRemarks());
656 $local_file_obj->write();
658 $this->
object->setLocal(
true);
669 $lang_file = $this->
object->getCustLangPath() .
'/ilias_' . $this->
object->key .
'.lang.local';
670 if (is_file($lang_file) and is_readable($lang_file))
672 $this->
object->importLanguageFile($lang_file,
'replace');
673 $this->
object->setLocal(
true);
684 $lang_file = $this->
object->getLangPath() .
'/ilias_' . $this->
object->key .
'.lang';
685 if (is_file($lang_file) and is_readable($lang_file))
687 $this->
object->importLanguageFile($lang_file,
'delete');
688 $this->
object->setLocal(
false);
705 $orig_file = $this->
object->getLangPath() .
'/ilias_' . $this->
object->key .
'.lang';
706 $copy_file = $this->
object->getCustLangPath() .
'/ilias_' . $this->
object->key .
'.lang';
708 if (is_file($orig_file) and is_writable($orig_file))
711 @copy($orig_file, $copy_file);
714 $global_file_obj = $this->
object->getGlobalLanguageFile();
715 $global_file_obj->setAllValues($this->object->getMergedValues());
716 $global_file_obj->setAllComments($this->object->getMergedRemarks());
717 $global_file_obj->write();
727 case "remove_local_file":
728 $lang_file = $this->
object->getCustLangPath() .
'/ilias_' . $this->
object->key .
'.lang.local';
730 if (!is_file($lang_file))
732 $this->
object->setLocal(
false);
735 elseif (@unlink($lang_file))
737 $this->
object->setLocal(
false);
748 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.lang_maintenance.html",
"Services/Language");
749 $this->tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
750 $this->tpl->setVariable(
"TXT_MAINTENANCE",$this->lng->txt(
"language_maintenance"));
751 $this->tpl->setVariable(
"TXT_MAINTAIN_LOCAL",$this->lng->txt(
"language_maintain_local_changes"));
752 $this->tpl->setVariable(
"TXT_SELECT",$this->lng->txt(
"please_select"));
753 $this->tpl->setVariable(
"TXT_SAVE",$this->lng->txt(
"language_save_local_changes"));
754 $this->tpl->setVariable(
"TXT_LOAD",$this->lng->txt(
"language_load_local_changes"));
755 $this->tpl->setVariable(
"TXT_CLEAR",$this->lng->txt(
"language_clear_local_changes"));
758 $this->tpl->setVariable(
"TXT_DELETE_ADDED",$this->lng->txt(
"language_delete_local_additions"));
759 $this->tpl->setVariable(
"TXT_MERGE",$this->lng->txt(
"language_merge_local_changes"));
760 $this->tpl->setVariable(
"TXT_REMOVE_LOCAL_FILE",$this->lng->txt(
"language_remove_local_file"));
762 $this->tpl->setVariable(
"TXT_NOTE_SAVE",$this->lng->txt(
"language_note_save_local"));
763 $this->tpl->setVariable(
"TXT_MAINTAIN",$this->lng->txt(
"language_process_maintenance"));
764 $this->tpl->setVariable(
"VAR_MAINTAIN",
"maintain");
765 $this->tpl->setVariable(
"CMD_MAINTAIN",
"maintain");
776 $translate_key =
"lang_translate_". $this->
object->key;
779 switch (
$_POST[
"translation"])
782 $ilSetting->set($translate_key,
true);
785 $ilSetting->set($translate_key,
false);
787 $translate = $ilSetting->get($translate_key,
false);
789 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.lang_settings.html",
"Services/Language");
791 $this->tpl->setVariable(
"FORMACTION",$this->ctrl->getFormAction($this));
792 $this->tpl->setVariable(
"TXT_SETTINGS",$this->lng->txt(
"language_settings"));
793 $this->tpl->setVariable(
"TXT_TRANSLATION",$this->lng->txt(
"language_translation_mode"));
794 $this->tpl->setVariable(
"TXT_TRANSLATION_ENABLED",$this->lng->txt(
"language_translation_enabled"));
795 $this->tpl->setVariable(
"TXT_TRANSLATION_DISABLED",$this->lng->txt(
"language_translation_disabled"));
796 $this->tpl->setVariable(
"CHECKED_ENABLE", $translate ?
'checked="checked"':
'');
797 $this->tpl->setVariable(
"CHECKED_DISABLE", $translate ?
'' :
'checked="checked"');
798 $this->tpl->setVariable(
"TXT_NOTE_TRANSLATION",$this->lng->txt(
"language_note_translation"));
799 $this->tpl->setVariable(
"TXT_CHANGE_SETTINGS",$this->lng->txt(
"language_change_settings"));
800 $this->tpl->setVariable(
"CMD_SETTINGS",
"settings");
813 foreach($modules as $module)
817 $row[1] = count($this->object->getAllValues(array($module)));
818 $row[2] = count($this->object->getChangedValues(array($module)));
819 $row[3] = $row[1]-$row[2];
825 $total[0] =
"<b>".$this->lng->txt(
"language_all_modules").
"</b>";
826 $total[1] =
"<b>".$total[1].
"</b>";
827 $total[2] =
"<b>".$total[2].
"</b>";
828 $total[3] =
"<b>".$total[3].
"</b>";
832 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.lang_statistics.html",
"Services/Language");
833 $this->tpl->addBlockFile(
"TABLE_STATISTICS",
"table_statistics",
"tpl.table.html");
834 $this->tpl->addBlockFile(
"TBL_CONTENT",
"tbl_content",
"tpl.obj_tbl_rows.html");
837 include_once
'Services/Table/classes/class.ilTableGUI.php';
839 $tbl->disable(
'title');
840 $tbl->disable(
'sort');
841 $tbl->disable(
'numinfo');
843 $tbl->setHeaderNames(array($this->lng->txt(
"module"),
844 $this->lng->txt(
"language_scope_global"),
845 $this->lng->txt(
"language_scope_local"),
846 $this->lng->txt(
"language_scope_unchanged")));
847 $tbl->setColumnWidth(array(
"25%",
"25%",
"25%",
"25%"));
848 $tbl->setLimit(count(
$data));
849 $tbl->setData(
$data);
866 function getPar($a_request_name, $a_default_value)
869 if (isset(
$_GET[$a_request_name]))
871 $param =
$_GET[$a_request_name];
872 $from_request =
true;
874 elseif (isset(
$_POST[$a_request_name]))
876 $param =
$_POST[$a_request_name];
877 $from_request =
true;
879 elseif (isset($this->session[$a_request_name]))
881 $param = $this->session[$a_request_name];
882 $from_request =
false;
886 $param = $a_default_value;
887 $from_request =
false;
893 if (is_array($param))
895 foreach ($param as $key => $value)
907 $this->session[$a_request_name] = $param;
920 $tabs_gui->addTarget(
"edit",
921 $this->ctrl->getLinkTarget($this,
"view"),
922 array(
"",
"view",
"cancel",
"save"));
924 $tabs_gui->addTarget(
"export",
925 $this->ctrl->getLinkTarget($this,
"export"),
926 array(
"export",
"download"));
928 $tabs_gui->addTarget(
"import",
929 $this->ctrl->getLinkTarget($this,
"import"),
930 array(
"import",
"upload"));
932 $tabs_gui->addTarget(
"language_maintain",
933 $this->ctrl->getLinkTarget($this,
"maintain"),
936 $tabs_gui->addTarget(
"settings",
937 $this->ctrl->getLinkTarget($this,
"settings"),
940 $tabs_gui->addTarget(
"language_statistics",
941 $this->ctrl->getLinkTarget($this,
"statistics"),
942 array(
"statistics"));
955 $this->tpl->addBlockFile(
"CONTENT",
"content",
"tpl.adm_translate.html",
"Services/Language");
956 $this->tpl->setHeaderPageTitle($this->lng->txt(
"translation"));
957 $this->tpl->setTitle($this->lng->txt(
"translation").
" "
958 .$this->lng->txt(
"meta_l_".$this->object->key));
960 $this->lng->txt(
"obj_" . $this->object->getType()));
976 global $ilLocator,
$tpl;
978 $ilLocator->addItem($this->lng->txt(
"administration"),
979 $this->ctrl->getLinkTargetByClass(
"iladministrationgui",
"frameset"),
982 $ilLocator->addItem($this->lng->txt(
"languages"),
983 $this->ctrl->getLinkTargetByClass(
"ilobjlanguagefoldergui",
""));
985 $ilLocator->addItem($this->lng->txt(
"meta_l_". $this->object->getTitle()),
986 $this->ctrl->getLinkTarget($this,
"view"));
996 $this->tpl->setTitle($this->lng->txt(
"meta_l_".$this->object->getTitle()));
998 $this->tpl->setTitleIcon(
ilUtil::getImagePath(
"icon_".$this->object->getType().
"_b.png"), $this->lng->txt(
"obj_" . $this->object->getType()));
1020 return (
$_GET[
'view_mode'] ==
"translate");
1038 if (self::_isPageTranslation()
1039 or !$ilSetting->get(
"lang_translate_".$lng->getLangKey()))
1046 $action =
"ilias.php"
1047 .
"?ref_id=".ilobjLanguageAccess::_lookupLangFolderRefId()
1048 .
"&baseClass=ilAdministrationGUI"
1049 .
"&cmdClass=ilobjlanguageextgui"
1050 .
"&view_mode=translate";
1052 $tpl =
new ilTemplate(
"tpl.translation_link.html",
true,
true,
"Services/Language");
1054 foreach($lng->getUsedModules() as $module => $dummy)
1056 $tpl->setCurrentBlock(
"hidden");
1057 $tpl->setVariable(
"NAME",
"page_modules[]");
1059 $tpl->parseCurrentBlock();
1062 foreach($lng->getUsedTopics() as $topic => $dummy)
1064 $tpl->setCurrentBlock(
"hidden");
1065 $tpl->setVariable(
"NAME",
"page_topics[]");
1067 $tpl->parseCurrentBlock();
1070 $tpl->setVariable(
"ACTION", $action);
1071 $tpl->setVariable(
"TXT_TRANSLATE",$lng->txt(
"translation"));