20 declare(strict_types=1);
27 require_once(
"./Services/Object/classes/class.ilObjectGUI.php");
28 require_once(
"Services/Language/classes/class.ilObjLanguageAccess.php");
62 public function __construct($a_data,
int $a_id = 0,
bool $a_call_by_reference =
false)
65 $ilClientIniFile = $DIC->clientIni();
66 $ilCtrl = $DIC->ctrl();
67 $lng = $DIC->language();
68 $this->
http = $DIC->http();
76 $ilCtrl->saveParameter($this,
"view_mode");
81 if ($this->
http->wrapper()->query()->has(
"obj_id")) {
82 $obj_id_get = $this->
http->wrapper()->query()->retrieve(
"obj_id", $this->
refinery->kindlyTo()->int());
84 if (!$this->
id = $obj_id_get) {
98 $this->langmode = $ilClientIniFile->readVariable(
"system",
"LANGMODE");
109 require_once(
"Services/Language/classes/class.ilObjLanguageExt.php");
128 $ilHelp = $DIC->help();
131 $this->error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
135 $cmd = $this->
ctrl->getCmd(
"view") .
"Object";
138 $ilHelp->setScreenIdComponent(
"lng");
155 include_once
"./Services/Language/classes/class.ilLanguageExtTableGUI.php";
157 "langmode" => $this->langmode,
158 "lang_key" => $this->
object->key,
167 public function viewObject(
int $changesSuccessBool = 0): void
176 $comments = $this->
object->getAllRemarks();
178 $compare_comments = [];
179 $missing_entries = [];
183 $compare = $table_gui->getFilterItemByPostVar(
"compare")->getValue();
184 if ($compare == $this->
object->key) {
185 $compare_object = $this->
object->getGlobalLanguageFile();
186 $compare_content = $compare_object->getAllValues();
187 $compare_comments = $compare_object->getAllComments();
197 $reset_offset_get =
false;
198 if ($this->
http->wrapper()->query()->has(
"reset_offset")) {
199 $reset_offset_get = $this->
http->wrapper()->query()->retrieve(
206 if ($reset_offset_get) {
207 $table_gui->resetOffset();
210 if (!isset($compare_content)) {
228 foreach ($translations as $name => $translation) {
229 $keys = explode($this->
lng->separator, $name);
230 $db_found[] = $keys[1];
232 $missing_entries = array_diff($topics, $db_found);
235 $filter_mode = $table_gui->getFilterItemByPostVar(
"mode")->getValue();
236 $filter_pattern = $table_gui->getFilterItemByPostVar(
"pattern")->getValue();
237 $filter_module = $table_gui->getFilterItemByPostVar(
"module")->getValue();
238 $filter_module = $filter_module ===
"all" ?
"" : $filter_module;
239 $filter_modules = $filter_module ? array($filter_module) : array();
240 $filter_identifier = $table_gui->getFilterItemByPostVar(
"identifier")->getValue();
241 $filter_topics = $filter_identifier ? array($filter_identifier) : array();
243 if (!isset($compare_content)) {
253 switch ($filter_mode) {
255 $translations = $this->
object->getChangedValues(
263 $translations = $this->
object->getAddedValues(
271 $translations = $this->
object->getUnchangedValues(
279 $translations = $this->
object->getCommentedValues(
287 $translations = $this->
object->getAllValues(
293 $translations = array_intersect_key($translations,
$comments);
297 $translations = $this->
object->getAllValues(
303 $translations = array_intersect_assoc($translations, $compare_content);
307 $translations = $this->
object->getAllValues(
313 $translations = array_diff_assoc($translations, $compare_content);
317 $former_file = $this->
object->getDataPath() .
"/ilias_" . $this->
object->key .
".lang";
318 if (!is_readable($former_file)) {
319 $this->tpl->setOnScreenMessage(
'failure', sprintf($this->
lng->txt(
"language_former_file_missing"), $former_file)
320 .
'<br />' . $this->
lng->txt(
"language_former_file_description"),
false);
321 $translations = array();
324 $global_file_obj = $this->
object->getGlobalLanguageFile();
326 $former_file_obj->read();
327 $global_changes = array_diff_assoc(
328 $global_file_obj->getAllValues(),
329 $former_file_obj->getAllValues()
331 if (!count($global_changes)) {
332 $this->tpl->setOnScreenMessage(
'info', sprintf($this->
lng->txt(
"language_former_file_equal"), $former_file)
333 .
'<br />' . $this->
lng->txt(
"language_former_file_description"),
false);
334 $translations = array();
337 $translations = $this->
object->getChangedValues(
343 $translations = array_intersect_key($translations, $global_changes);
348 $translations = $this->
object->getAllValues(
358 foreach ($translations as $name => $translation) {
359 $keys = explode($this->
lng->separator, $name);
362 $row[
"module"] = $keys[0];
363 $row[
"topic"] = $keys[1];
364 $row[
"name"] = $name;
365 $row[
"translation"] = $translation;
366 $row[
"comment"] =
$comments[$name] ??
"";
367 $row[
"default"] = $compare_content[$name] ??
"";
368 $row[
"default_comment"] = $compare_comments[$name] ??
"";
373 if ($changesSuccessBool) {
378 $table_gui->setData(
$data);
388 $table_gui->writeFilterToSession();
389 $table_gui->resetOffset();
399 $table_gui->resetOffset();
400 $table_gui->resetFilter();
410 $changesSuccessBool = 0;
412 $save_array = array();
413 $remarks_array = array();
414 $post = (array) ($this->
http->request()->getParsedBody() ?? []);
419 $key = str_replace([
"_POSTDOT_",
"_POSTSPACE_"], [
".",
" "],
$key);
425 if (count($keys) === 2) {
427 $value = preg_replace(
"/(\015\012)|(\015)|(\012)/",
"<br />", $value);
428 $value = str_replace(
"<<",
"«", $value);
429 $value =
ilUtil::stripSlashes($value,
true,
"<strong><em><u><strike><ol><li><ul><p><div><i><b><code><sup><pre><gap><a><img><bdo><br><span>");
430 $save_array[
$key] = $value;
433 $remarks_array[
$key] =
$post[$orginal_key . $this->
lng->separator .
"comment"];
441 $changesSuccessBool = 1;
453 $this->tpl->setContent($form->getHTML());
458 require_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
460 $form->setFormAction($this->
ctrl->getFormAction($this));
461 $form->setTitle($this->
lng->txt(
"language_import_file"));
462 $form->addCommandButton(
"upload", $this->
lng->txt(
"upload"));
469 $ro =
new ilRadioOption($this->
lng->txt(
"language_mode_existing_keepall"),
"keepall");
470 $ro->
setInfo($this->
lng->txt(
"language_mode_existing_keepall_info"));
472 $ro =
new ilRadioOption($this->
lng->txt(
"language_mode_existing_keepnew"),
"keepnew");
473 $ro->
setInfo($this->
lng->txt(
"language_mode_existing_keepnew_info"));
475 $ro =
new ilRadioOption($this->
lng->txt(
"language_mode_existing_replace"),
"replace");
476 $ro->
setInfo($this->
lng->txt(
"language_mode_existing_replace_info"));
478 $ro =
new ilRadioOption($this->
lng->txt(
"language_mode_existing_delete"),
"delete");
479 $ro->
setInfo($this->
lng->txt(
"language_mode_existing_delete_info"));
481 $rg->setValue($this->
getSession()[
"import"][
"mode_existing"] ??
"keepall");
495 if ($form->checkInput()) {
496 $post_mode_existing = $this->
http->request()->getParsedBody()[
'mode_existing'] ??
"";
501 $upload = $DIC->upload();
503 if (!$upload->hasBeenProcessed()) {
508 if (!$upload->hasUploads()) {
509 throw new ilException($DIC->language()->txt(
"upload_error_file_not_found"));
511 $UploadResult = $upload->getResults()[$_FILES[
"userfile"][
"tmp_name"]];
513 $ProcessingStatus = $UploadResult->getStatus();
514 if ($ProcessingStatus->getCode() === ProcessingStatus::REJECTED) {
515 throw new ilException($ProcessingStatus->getMessage());
520 $upload->moveOneFileTo($UploadResult,
'', Location::TEMPORARY, basename($tempfile),
true);
521 $this->
object->importLanguageFile($tempfile, $post_mode_existing);
523 $tempfs = $DIC->filesystem()->temp();
524 $tempfs->delete(basename($tempfile));
526 $this->tpl->setOnScreenMessage(
'failure', $e->getMessage(),
true);
527 $this->
ctrl->redirect($this,
'import');
530 $this->tpl->setOnScreenMessage(
532 sprintf($this->
lng->txt(
"language_file_imported"), $_FILES[
"userfile"][
"name"]),
535 $this->
ctrl->redirect($this,
"import");
538 $form->setValuesByPost();
539 $this->tpl->setContent($form->getHTML());
547 require_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
549 $form->setFormAction($this->
ctrl->getFormAction($this));
550 $form->setTitle($this->
lng->txt(
"language_export_file"));
551 $form->setPreventDoubleSubmission(
false);
552 $form->addCommandButton(
"download", $this->
lng->txt(
"download"));
555 $ro =
new ilRadioOption($this->
lng->txt(
"language_scope_global"),
"global");
556 $ro->
setInfo($this->
lng->txt(
"language_scope_global_info"));
559 $ro->
setInfo($this->
lng->txt(
"language_scope_local_info"));
561 if ($this->langmode) {
563 $ro->
setInfo($this->
lng->txt(
"language_scope_added_info"));
566 $ro =
new ilRadioOption($this->
lng->txt(
"language_scope_unchanged"),
"unchanged");
567 $ro->
setInfo($this->
lng->txt(
"language_scope_unchanged_info"));
569 if ($this->langmode) {
570 $ro =
new ilRadioOption($this->
lng->txt(
"language_scope_merged"),
"merged");
571 $ro->
setInfo($this->
lng->txt(
"language_scope_merged_info"));
575 $rg->setValue($this->
getSession()[
"export"][
"scope"] ??
"global");
578 $this->tpl->setContent($form->getHTML());
586 $post_scope = $this->
http->request()->getParsedBody()[
'scope'] ??
"";
591 $filename =
"ilias_" . $this->
object->key .
'_' 593 .
"-" . date(
"Y-m-d")
594 .
".lang." . $this->
getSession()[
"export"][
"scope"];
596 $global_file_obj = $this->
object->getGlobalLanguageFile();
599 if ($post_scope ===
"global") {
600 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
"author"));
601 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
"version"));
602 $local_file_obj->setAllValues($this->
object->getAllValues());
603 if ($this->langmode) {
604 $local_file_obj->setAllComments($this->
object->getAllRemarks());
606 } elseif ($post_scope ===
"local") {
607 $local_file_obj->setParam(
"based_on", $global_file_obj->getParam(
"version"));
608 $local_file_obj->setAllValues($this->
object->getChangedValues());
609 if ($this->langmode) {
610 $local_file_obj->setAllComments($this->
object->getAllRemarks());
612 } elseif ($post_scope ===
"added") {
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->getAddedValues());
616 $local_file_obj->setAllComments($this->
object->getAllRemarks());
617 } elseif ($post_scope ===
"unchanged") {
618 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
"author"));
619 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
"version"));
620 $local_file_obj->setAllValues($this->
object->getUnchangedValues());
621 if ($this->langmode) {
622 $local_file_obj->setAllComments($this->
object->getAllRemarks());
624 } elseif ($post_scope ===
"merged") {
625 $local_file_obj->setParam(
"author", $global_file_obj->getParam(
"author"));
626 $local_file_obj->setParam(
"version", $global_file_obj->getParam(
"version"));
627 $local_file_obj->setAllValues($this->
object->getMergedValues());
628 $local_file_obj->setAllComments($this->
object->getMergedRemarks());
639 require_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
641 $form->setFormAction($this->
ctrl->getFormAction($this));
642 $form->setTitle($this->
lng->txt(
"language_maintenance"));
643 $form->setPreventDoubleSubmission(
false);
644 $form->addCommandButton(
"maintainExecute", $this->
lng->txt(
"language_process_maintenance"));
647 $ro =
new ilRadioOption($this->
lng->txt(
"language_load_local_changes"),
"load");
648 $ro->
setInfo(sprintf($this->
lng->txt(
"language_load_local_changes_info"), $this->
object->key));
650 $ro =
new ilRadioOption($this->
lng->txt(
"language_clear_local_changes"),
"clear");
651 $ro->
setInfo(sprintf($this->
lng->txt(
"language_clear_local_changes_info"), $this->
object->key));
653 if ($this->langmode) {
654 $ro =
new ilRadioOption($this->
lng->txt(
"language_delete_local_additions"),
"delete_added");
655 $ro->
setInfo(sprintf($this->
lng->txt(
"language_delete_local_additions_info"), $this->
object->key));
657 $ro =
new ilRadioOption($this->
lng->txt(
"language_remove_local_file"),
"remove_local_file");
658 $ro->
setInfo(sprintf($this->
lng->txt(
"language_remove_local_file_info"), $this->
object->key));
660 $ro =
new ilRadioOption($this->
lng->txt(
"language_merge_local_changes"),
"merge");
661 $ro->
setInfo(sprintf($this->
lng->txt(
"language_merge_local_changes_info"), $this->
object->key));
664 $ro =
new ilRadioOption($this->
lng->txt(
"language_save_dist"),
"save_dist");
665 $ro->
setInfo(sprintf($this->
lng->txt(
"language_save_dist_info"), $this->
object->key));
667 $rg->setValue($this->
getSession()[
"maintain"] ??
"load");
670 $this->tpl->setContent($form->getHTML());
675 $post_maintain = $this->
http->request()->getParsedBody()[
'maintain'] ??
"";
676 if (isset($post_maintain)) {
681 switch ($post_maintain) {
685 $orig_file = $this->
object->getLangPath() .
"/ilias_" . $this->
object->key .
".lang";
686 $copy_file = $this->
object->getDataPath() .
"/ilias_" . $this->
object->key .
".lang";
687 if (@copy($orig_file, $copy_file)) {
688 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"language_saved_dist"),
true);
690 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"language_save_dist_failed"),
true);
696 $lang_file = $this->
object->getCustLangPath() .
"/ilias_" . $this->
object->key .
".lang.local";
697 if (is_file($lang_file) and is_readable($lang_file)) {
698 $this->
object->importLanguageFile($lang_file,
"replace");
699 $this->
object->setLocal(
true);
700 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"language_loaded_local"),
true);
702 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"language_error_read_local"),
true);
708 $lang_file = $this->
object->getLangPath() .
"/ilias_" . $this->
object->key .
".lang";
709 if (is_file($lang_file) and is_readable($lang_file)) {
710 $this->
object->importLanguageFile($lang_file,
"replace");
711 $this->
object->setLocal(
false);
712 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"language_cleared_local"),
true);
714 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"language_error_clear_local"),
true);
725 $orig_file = $this->
object->getLangPath() .
"/ilias_" . $this->
object->key .
".lang";
726 $copy_file = $this->
object->getCustLangPath() .
"/ilias_" . $this->
object->key .
".lang";
728 if (is_file($orig_file) and is_writable($orig_file)) {
730 @copy($orig_file, $copy_file);
733 $global_file_obj = $this->
object->getGlobalLanguageFile();
734 $global_file_obj->setAllValues($this->
object->getMergedValues());
735 $global_file_obj->setAllComments($this->
object->getMergedRemarks());
736 $global_file_obj->write();
737 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"language_merged_global"),
true);
739 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"language_error_write_global"),
true);
744 case "remove_local_file":
745 $lang_file = $this->
object->getCustLangPath() .
"/ilias_" . $this->
object->key .
".lang.local";
747 if (!is_file($lang_file)) {
748 $this->
object->setLocal(
false);
749 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"language_error_local_missed"),
true);
750 } elseif (@unlink($lang_file)) {
751 $this->
object->setLocal(
false);
752 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"language_local_file_deleted"),
true);
754 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"language_error_delete_local"),
true);
759 $this->
ctrl->redirect($this,
"maintain");
768 $this->tpl->setContent($form->getHTML());
779 $translate_key =
"lang_translate_" . $this->
object->key;
781 $post_translation = $this->
http->request()->getParsedBody()[
'translation'] ??
"";
783 $translate =
$ilSetting->get($translate_key,
'0');
784 if (!is_null($post_translation) && $post_translation != $translate) {
785 $ilSetting->set($translate_key, $post_translation);
786 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"));
790 $this->tpl->setContent($form->getHTML());
797 $translate_key =
"lang_translate_" . $this->
object->key;
798 $translate = (bool)
$ilSetting->get($translate_key,
'0');
800 require_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
802 $form->setFormAction($this->
ctrl->getFormAction($this));
803 $form->setTitle($this->
lng->txt(
"language_settings"));
804 $form->setPreventDoubleSubmission(
false);
805 $form->addCommandButton(
'saveSettings', $this->
lng->txt(
"language_change_settings"));
808 $ci->setChecked($translate);
809 $ci->setInfo($this->
lng->txt(
"language_note_translation"));
824 foreach ($modules as $module) {
826 $row[
"module"] = $module;
827 $row[
"all"] = count($this->
object->getAllValues(array($module)));
828 $row[
"changed"] = count($this->
object->getChangedValues(array($module)));
829 $row[
"unchanged"] = $row[
"all"] - $row[
"changed"];
830 isset($total[
"all"]) ? $total[
"all"] += $row[
"all"] : $total[
"all"] = $row[
"all"];
831 isset($total[
"changed"]) ? $total[
"changed"] += $row[
"changed"] : $total[
"changed"] = $row[
"changed"];
832 isset($total[
"unchanged"]) ? $total[
"unchanged"] += $row[
"unchanged"] : $total[
"unchanged"] = $row[
"unchanged"];
835 $total[
"module"] =
"<b>" . $this->
lng->txt(
"language_all_modules") .
"</b>";
836 $total[
"all"] =
"<b>" . $total[
"all"] .
"</b>";
837 $total[
"changed"] =
"<b>" . $total[
"changed"] .
"</b>";
838 $total[
"unchanged"] =
"<b>" . $total[
"unchanged"] .
"</b>";
842 include_once
"Services/Table/classes/class.ilTable2GUI.php";
844 $table_gui->setRowTemplate(
"tpl.lang_statistics_row.html",
"Services/Language");
845 $table_gui->setEnableTitle(
false);
846 $table_gui->setEnableNumInfo(
false);
847 $table_gui->setLimit(count(
$data));
850 $table_gui->addColumn(ucfirst($this->
lng->txt(
"module")),
"",
"25%");
851 $table_gui->addColumn($this->
lng->txt(
"language_scope_global"),
"",
"25%");
852 $table_gui->addColumn($this->
lng->txt(
"language_scope_local"),
"",
"25%");
853 $table_gui->addColumn($this->
lng->txt(
"language_scope_unchanged"),
"",
"25%");
855 $table_gui->setData(
$data);
857 $this->tpl->setContent($table_gui->getHTML());
867 $ilCtrl = $DIC->ctrl();
868 $cmd = $ilCtrl->getCmd();
871 $this->tabs_gui->setBackTarget(
872 $this->
lng->txt(
"back"),
873 $this->
ctrl->getLinkTargetByClass(
"ilObjLanguageFolderGUI")
876 $this->tabs_gui->addTab(
878 $this->
lng->txt(
"edit"),
879 $this->
ctrl->getLinkTarget($this,
"view")
882 $this->tabs_gui->addTab(
884 $this->
lng->txt(
'export'),
885 $this->
ctrl->getLinkTarget($this,
"export")
888 $this->tabs_gui->addTab(
890 $this->
lng->txt(
"import"),
891 $this->
ctrl->getLinkTarget($this,
"import")
894 $this->tabs_gui->addTab(
896 $this->
lng->txt(
"language_maintain"),
897 $this->
ctrl->getLinkTarget($this,
"maintain")
900 $this->tabs_gui->addTab(
902 $this->
lng->txt(
"settings"),
903 $this->
ctrl->getLinkTarget($this,
"settings")
906 $this->tabs_gui->addTab(
908 $this->
lng->txt(
"language_statistics"),
909 $this->
ctrl->getLinkTarget($this,
"statistics")
918 $this->tabs_gui->activateTab(
"edit");
921 $this->tabs_gui->activateTab($cmd);
933 $ilLocator = $DIC[
"ilLocator"];
936 parent::addAdminLocatorItems(
true);
939 $this->
lng->txt(
"languages"),
940 $this->
ctrl->getLinkTargetByClass(
"ilobjlanguagefoldergui",
"")
944 $this->
lng->txt(
"meta_l_" . $this->object->getTitle()),
945 $this->
ctrl->getLinkTarget($this,
"view")
957 $this->tpl->setHeaderPageTitle($this->
lng->txt(
"translation"));
958 $this->tpl->setTitle($this->
lng->txt(
"translation") .
" " . $this->
lng->txt(
"meta_l_" . $this->
object->key));
960 $this->tpl->setTitle($this->
lng->txt(
"meta_l_" . $this->object->key));
962 $this->tpl->setTitleIcon(
ilUtil::getImagePath(
"standard/icon_lngf.svg"), $this->
lng->txt(
"obj_" . $this->object->getType()));
973 $ilCtrl = $DIC->ctrl();
975 if (!count($a_missing)) {
979 $res = array(
"<h3>" . $this->
lng->txt(
"adm_missing_entries") .
"</h3>",
"<ul>");
981 foreach ($a_missing as $entry) {
982 $ilCtrl->setParameter($this,
"eid", $entry);
983 $res[] =
'<li>' . $entry .
984 ' <a href="' . $ilCtrl->getLinkTarget($this,
"addNewEntry") .
985 '">' . $this->
lng->txt(
"adm_missing_entry_add_action") .
'</a></li>';
986 $ilCtrl->setParameter($this,
"eid",
"");
991 return implode(
"\n",
$res);
1000 if ($this->
http->wrapper()->query()->has(
"eid")) {
1001 $id = trim($this->
http->wrapper()->query()->retrieve(
"eid", $this->
refinery->kindlyTo()->string()));
1013 $ilCtrl = $DIC->ctrl();
1016 $a_id = $this->
http->request()->getParsedBody()[
'id'] ??
"";
1021 $ilCtrl->redirect($this,
"view");
1024 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
1026 $form->setFormAction($ilCtrl->getFormAction($this,
"saveNewEntry"));
1027 $form->setTitle($this->
lng->txt(
"adm_missing_entry_add"));
1030 $options = array_combine($mods, $mods);
1033 $mod->setOptions(array(
"" => $this->
lng->txt(
"please_select")) + $options);
1034 $mod->setRequired(
true);
1035 $form->addItem($mod);
1038 $id->setValue($a_id);
1039 $id->setDisabled(
true);
1040 $form->addItem(
$id);
1042 foreach ($this->
lng->getInstalledLanguages() as $lang_key) {
1043 $trans =
new ilTextInputGUI($this->
lng->txt(
"meta_l_" . $lang_key),
"trans_" . $lang_key);
1044 if (in_array($lang_key, array(
"de",
"en"))) {
1045 $trans->setRequired(
true);
1047 $form->addItem($trans);
1050 $form->addCommandButton(
"saveNewEntry", $this->
lng->txt(
"save"));
1051 $form->addCommandButton(
"view", $this->
lng->txt(
"cancel"));
1059 $ilDB = $DIC->database();
1060 $ilCtrl = $DIC->ctrl();
1061 $ilUser = $DIC->user();
1064 if ($form->checkInput()) {
1065 $mod = $form->getInput(
"mod");
1066 $id = $form->getInput(
"id");
1069 foreach ($this->
lng->getInstalledLanguages() as $lang_key) {
1070 $trans = trim($form->getInput(
"trans_" . $lang_key));
1078 date(
"Y-m-d H:i:s"),
1083 $set =
$ilDB->query(
"SELECT lang_array FROM lng_modules" .
1084 " WHERE lang_key = " .
$ilDB->quote($lang_key,
"text") .
1085 " AND module = " .
$ilDB->quote($mod,
"text"));
1086 $row =
$ilDB->fetchAssoc($set);
1087 $entries = unserialize($row[
"lang_array"], [
"allowed_classes" =>
false]);
1088 if (is_array($entries)) {
1089 $entries[
$id] = $trans;
1090 ilObjLanguage::replaceLangModule($lang_key, $mod, $entries);
1095 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1096 $ilCtrl->redirect($this,
"view");
1099 $form->setValuesByPost();
1109 $f = $DIC->ui()->factory();
1110 $renderer = $DIC->ui()->renderer();
1112 return $renderer->render(
$f->messageBox()->success($this->
lng->txt(
"language_variables_saved")));
downloadObject()
Download a language file.
static get(string $a_var)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
executeCommand()
execute command
assignObject()
Assign the extended language object.
getSuccessMessage()
Get success message after variables were saved.
uploadObject()
Process an uploaded language file.
applyFilterObject()
Apply filter.
getUserLanguage()
Return language of user.
static _isPageTranslation()
Check if the current request is a page translation.
static _getSavedModules()
Get the stored modules from the user session.
initAddNewEntryForm(string $a_id=null)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
getViewTable()
Get the table to view language entries.
static _lookupId(string $a_key)
Lookup the object ID for a language key.
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
cancelObject()
Cancel the current action.
loadLanguageModule(string $a_module)
Load language module.
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions" ...
setVariable(string $variable, $value='')
Sets the given variable to the given value.
Class ilObjLanguageExtGUI.
resetFilterObject()
Reset filter.
static deliverData(string $a_data, string $a_filename, string $mime="application/octet-stream")
exportObject()
Show the screen to export a language file.
static _checkMaintenance()
Permission check for language maintenance (import/export)
const ILIAS_LANGUAGE_MODULE
saveSettingsObject()
Set the language settings.
addAdminLocatorItems(bool $do_not_add_object=false)
Set the locator for admin mode (Overwritten from ilObjectGUI, called by prepareOutput) ...
importObject()
Show the screen to import a language file.
static _getValues(string $a_lang_key, array $a_modules=array(), array $a_topics=array(), string $a_pattern='', string $a_state='')
Get the translations of specified topics.
static http()
Fetches the global http state from ILIAS.
ilGlobalTemplateInterface $tpl
__construct($a_data, int $a_id=0, bool $a_call_by_reference=false)
Constructor.
setContent(string $a_html)
Sets content for standard template.
Class ilObjectGUI Basic methods of all Output classes.
getAdminTabs()
Get tabs for admin mode (Overwritten from ilObjectGUI, called by prepareOutput)
static _getModules(string $a_lang_key)
Get all modules of a language.
static _deleteValues(string $a_lang_key, array $a_values=array())
Delete a set of translation in the database.
buildMissingEntries(array $a_missing=null)
statisticsObject()
Print out statistics about the language.
settingsObject()
View the language settings.
setTitleAndDescription()
Set the Title and the description (Overwritten from ilObjectGUI, called by prepareOutput) ...
static _getSavedTopics()
Get the stored topics from the user session.
saveObject()
Save the changed translations.
static replaceLangEntry(string $a_module, string $a_identifier, string $a_lang_key, string $a_value, string $a_local_change=null, string $a_remarks=null)
Replace lang entry.
static ilTempnam(?string $a_temp_path=null)
Returns a unique and non existing Path for e temporary file or directory.
static _getRemarks(string $a_lang_key, bool $a_all_changed=false)
Get all remarks of a language.
addNewEntryObject(ilPropertyFormGUI $a_form=null)
viewObject(int $changesSuccessBool=0)
Show the edit screen.
maintainObject()
Process the language maintenance.
getId()
get the language object id (needed for filter serialization) Return language object id ...
static set(string $a_var, $a_val)
Set a value.
static _saveValues(string $a_lang_key, array $a_values=array(), array $a_remarks=array())
Save a set of translation in the database.