19 declare(strict_types=1);
45 public function __construct(?array $a_data,
int $a_id,
bool $a_call_by_reference)
49 $this->
lng->loadLanguageModule(
"lng");
52 $here_uri = $this->df->uri($this->request->getUri()->__toString());
54 $query_params_namespace = [
'language_folder'];
57 $query_params_namespace,
63 $this->action_token = $action_parameter_token;
64 $this->id_token = $row_id_token;
68 $this->languageFolderTable =
new ilLanguageFolderTable($folder, $url_builder, $action_parameter_token, $row_id_token);
78 $table = $this->languageFolderTable->getTable();
87 'lang_refresh_confirm_selected',
88 "lang_refresh_confirm_info" 90 $refresh = $this->ui_factory->button()->standard(
91 $this->
lng->txt(
"refresh_languages"),
93 )->withOnClick($modal->getShowSignal());
95 $this->
toolbar->addComponent($modal);
96 $this->
toolbar->addComponent($refresh);
99 $check = $this->ui_factory->button()->standard(
100 $this->
lng->txt(
"check_languages"),
101 $this->
getUrl(
"checkLanguage")
106 $ilClientIniFile = $DIC[
"ilClientIniFile"];
107 if ($ilClientIniFile->variableExists(
"system",
"LANGUAGE_LOG")) {
108 $download = $this->ui_factory->button()->standard(
109 $this->
lng->txt(
"lng_download_deprecated"),
110 $this->
ctrl->getLinkTarget($this,
"listDeprecated")
112 $this->
toolbar->addComponent($download);
116 $modal_on = $this->ui_factory->modal()->interruptive(
118 $this->
lng->txt(
"lng_enable_language_detection"),
119 $this->
ctrl->getFormActionByClass(self::class,
"enableLanguageDetection")
121 ->withActionButtonLabel($this->
lng->txt(
'ok'));
122 $modal_off = $this->ui_factory->modal()->interruptive(
124 $this->
lng->txt(
"lng_disable_language_detection"),
125 $this->
ctrl->getFormActionByClass(self::class,
"disableLanguageDetection")
127 ->withActionButtonLabel($this->
lng->txt(
'ok'));
128 $toggleButton = $this->ui_factory->button()->toggle(
129 $this->
lng->txt(
"language_detection"),
130 $modal_on->getShowSignal(),
131 $modal_off->getShowSignal(),
132 (bool) ($this->
settings->get(
"lang_detection"))
134 ->withAriaLabel($this->
lng->txt(
"lng_switch_language_detection"));
135 $this->
toolbar->addComponent($modal_on);
136 $this->
toolbar->addComponent($modal_off);
137 $this->
toolbar->addComponent($toggleButton);
140 $this->tpl->setContent($this->ui_renderer->render($table->withRequest($this->request)));
146 $title = $this->
lng->txt($title);
150 $message = $this->
lng->txt($text);
152 $some_changed =
false;
153 foreach ($ids as
$id) {
155 $lang_title = $this->
lng->txt(
"meta_l_" . $lang_key);
157 if (!empty($last_change)) {
158 $some_changed =
true;
159 $lang_title .=
" (" . $this->
lng->txt(
"last_change") .
" " 166 $items[] =
$f->modal()->interruptiveItem()->standard($id, $lang_title);
171 $message .=
"<br />" . $this->
lng->txt($add_text);
174 $message = $this->
lng->txt(
"no_checkbox");
177 $modal =
$f->modal()->interruptive(
182 if (!empty($items)) {
183 $modal = $modal->withAffectedItems($items)
184 ->withActionButtonLabel($title);
186 $modal = $modal->withActionButtonLabel($this->
lng->txt(
'ok'));
197 $this->
lng->loadLanguageModule(
"meta");
201 $key = $langObj->install();
204 $lang_installed[] = $key;
210 if (isset($lang_installed)) {
211 if (count($lang_installed) === 1) {
212 $this->data = $this->
lng->txt(
"meta_l_" . $lang_installed[0]) .
" " . strtolower($this->
lng->txt(
"installed")) .
".";
215 foreach ($lang_installed as $lang_key) {
216 $langnames[] = $this->
lng->txt(
"meta_l_" . $lang_key);
218 $this->data = implode(
", ", $langnames) .
" " . strtolower($this->
lng->txt(
"installed")) .
".";
221 $this->data = $this->
lng->txt(
"languages_already_installed");
234 $this->
lng->loadLanguageModule(
"meta");
238 $key = $langObj->install();
241 $lang_installed[] = $key;
247 $key = $langObj->install(
"local");
250 $local_installed[] = $key;
256 if (isset($lang_installed)) {
257 if (count($lang_installed) === 1) {
258 $this->data = $this->
lng->txt(
"meta_l_" . $lang_installed[0]) .
" " . strtolower($this->
lng->txt(
"installed")) .
".";
261 foreach ($lang_installed as $lang_key) {
262 $langnames[] = $this->
lng->txt(
"meta_l_" . $lang_key);
264 $this->data = implode(
", ", $langnames) .
" " . strtolower($this->
lng->txt(
"installed")) .
".";
268 if (isset($local_installed)) {
269 if (count($local_installed) === 1) {
270 $this->data .=
" " . $this->
lng->txt(
"meta_l_" . $local_installed[0]) .
" " . $this->
lng->txt(
"local_language_file") .
" " . strtolower($this->
lng->txt(
"installed")) .
".";
273 foreach ($local_installed as $lang_key) {
274 $langnames[] = $this->
lng->txt(
"meta_l_" . $lang_key);
276 $this->data .=
" " . implode(
", ", $langnames) .
" " . $this->
lng->txt(
"local_language_files") .
" " . strtolower($this->
lng->txt(
"installed")) .
".";
279 $this->data .=
" " . $this->
lng->txt(
"local_languages_already_installed");
292 $this->
lng->loadLanguageModule(
"meta");
300 if (!($sys_lang = $langObj->isSystemLanguage()) && !($usr_lang = $langObj->isUserLanguage())) {
301 $key = $langObj->uninstall();
303 $lang_uninstalled[] = $key;
310 if (isset($lang_uninstalled)) {
311 if (count($lang_uninstalled) === 1) {
312 $this->data = $this->
lng->txt(
"meta_l_" . $lang_uninstalled[0]) .
" " . $this->
lng->txt(
"uninstalled");
315 foreach ($lang_uninstalled as $lang_key) {
316 $langnames[] = $this->
lng->txt(
"meta_l_" . $lang_key);
319 $this->data = implode(
", ", $langnames) .
" " . $this->
lng->txt(
"uninstalled");
321 } elseif ($sys_lang) {
322 $this->data = $this->
lng->txt(
"cannot_uninstall_systemlanguage");
323 } elseif ($usr_lang) {
324 $this->data = $this->
lng->txt(
"cannot_uninstall_language_in_use");
326 $this->data = $this->
lng->txt(
"languages_already_uninstalled");
340 $this->data = $this->
lng->txt(
"selected_languages_updated");
341 $this->
lng->loadLanguageModule(
"meta");
344 foreach ($ids as
$id) {
347 if ($langObj->isInstalled()) {
348 if ($langObj->check()) {
349 $langObj->flush(
"all");
351 $langObj->setTitle($langObj->getKey());
352 $langObj->setDescription(
"installed");
354 $refreshed[] = $langObj->getKey();
356 $this->data .=
"<br />" . $this->
lng->txt(
"meta_l_" . $langObj->getKey());
373 $this->data = $this->
lng->txt(
"languages_updated");
383 $this->data = $this->
lng->txt(
"selected_languages_updated");
384 $this->
lng->loadLanguageModule(
"meta");
387 foreach ($ids as
$id) {
389 if ($langObj->refresh()) {
390 $refreshed[] = $langObj->getKey();
391 $this->data .=
"<br />" . $this->
lng->txt(
"meta_l_" . $langObj->getKey());
406 $ilUser = $DIC->user();
409 $this->
lng->loadLanguageModule(
"meta");
411 #require_once "./Services/User/classes/class.ilObjUser.php"; 414 if (count($ids) !== 1) {
415 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"choose_only_one_language") .
"<br/>" . $this->
lng->txt(
"action_aborted"),
true);
416 $this->
ctrl->redirect($this,
"view");
423 if ($newUserLangObj->isUserLanguage()) {
424 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"meta_l_" . $newUserLangObj->getKey()) .
" " . $this->
lng->txt(
"is_already_your") .
" " . $this->
lng->txt(
"user_language") .
"<br/>" . $this->
lng->txt(
"action_aborted"),
true);
425 $this->
ctrl->redirect($this,
"view");
428 if (!$newUserLangObj->isInstalled()) {
429 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"meta_l_" . $newUserLangObj->getKey()) .
" " . $this->
lng->txt(
"language_not_installed") .
"<br/>" . $this->
lng->txt(
"action_aborted"),
true);
430 $this->
ctrl->redirect($this,
"view");
433 $curUser =
new ilObjUser($ilUser->getId());
434 $curUser->setLanguage($newUserLangObj->getKey());
437 $this->data = $this->
lng->txt(
"user_language") .
" " . $this->
lng->txt(
"changed_to") .
" " . $this->
lng->txt(
"meta_l_" . $newUserLangObj->getKey()) .
".";
449 $this->
lng->loadLanguageModule(
"meta");
452 if (count($ids) !== 1) {
453 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"choose_only_one_language") .
"<br/>" . $this->
lng->txt(
"action_aborted"),
true);
454 $this->
ctrl->redirect($this,
"view");
461 if ($newSysLangObj->isSystemLanguage()) {
462 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"meta_l_" . $newSysLangObj->getKey()) .
" " . $this->
lng->txt(
"is_already_your") .
" " . $this->
lng->txt(
"system_language") .
"<br/>" . $this->
lng->txt(
"action_aborted"),
true);
463 $this->
ctrl->redirect($this,
"view");
466 if (!$newSysLangObj->isInstalled()) {
467 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"meta_l_" . $newSysLangObj->getKey()) .
" " . $this->
lng->txt(
"language_not_installed") .
"<br/>" . $this->
lng->txt(
"action_aborted"),
true);
468 $this->
ctrl->redirect($this,
"view");
471 $this->
ilias->setSetting(
"language", $newSysLangObj->getKey());
474 $this->
ilias->ini->setVariable(
"language",
"default", $newSysLangObj->getKey());
475 $this->
ilias->ini->write();
477 $this->data = $this->
lng->txt(
"system_language") .
" " . $this->
lng->txt(
"changed_to") .
" " . $this->
lng->txt(
"meta_l_" . $newSysLangObj->getKey()) .
".";
488 $this->data = $this->
object->checkAllLanguages();
492 public function out(): void
494 $this->tpl->setOnScreenMessage(
'info', $this->data,
true);
495 $this->
ctrl->redirect($this,
"view");
509 $this->tabs_gui->addTab(
"settings", $this->
lng->txt(
"settings"), $this->
ctrl->getLinkTarget($this,
"view"));
513 $this->tabs_gui->addTab(
"perm_settings", $this->
lng->txt(
"perm_settings"), $this->
ctrl->getLinkTargetByClass(array(self::class,
"ilpermissiongui"),
"perm"));
522 $next_class = $this->
ctrl->getNextClass($this);
523 $cmd = $this->
ctrl->getCmd();
526 switch ($next_class) {
527 case "ilpermissiongui":
529 $this->tabs_gui->activateTab(
"perm_settings");
530 $this->
ctrl->forwardCommand($perm_gui);
534 $this->tabs_gui->activateTab(
"settings");
538 $this->
lng->loadLanguageModule(
"meta");
542 case 'confirmRefresh':
546 case 'checkLanguage':
551 if (current($ids) ===
'ALL_OBJECTS') {
554 foreach ($languages as $lang) {
556 if ($langObj->isInstalled()) {
557 $ids[] = (string) $lang[
"obj_id"];
565 'lang_refresh_confirm_selected',
566 "lang_refresh_confirm_info" 568 echo(
$r->renderAsync([$modal]));
570 case 'refreshConfirmed':
576 if (current($ids) ===
'ALL_OBJECTS') {
579 foreach ($languages as $lang) {
581 if ($langObj->isInstalled()) {
582 $ids[] = (string) $lang[
"obj_id"];
589 'uninstallConfirmed',
590 'lang_uninstall_confirm' 592 echo(
$r->renderAsync([$modal]));
594 case 'uninstallConfirmed':
600 if (current($ids) ===
'ALL_OBJECTS') {
603 foreach ($languages as $lang) {
605 if (!$langObj->isInstalled()) {
606 $ids[] = (string) $lang[
"obj_id"];
612 case 'install_local':
614 if (current($ids) ===
'ALL_OBJECTS') {
617 foreach ($languages as $lang) {
618 $ids[] = (string) $lang[
"obj_id"];
623 case 'lang_uninstall_changes':
625 if (current($ids) ===
'ALL_OBJECTS') {
628 foreach ($languages as $lang) {
630 if ($langObj->isInstalled()) {
631 $ids[] = (string) $lang[
"obj_id"];
639 'lang_uninstall_changes_confirm' 641 echo(
$r->renderAsync([$modal]));
643 case 'uninstallChanges':
647 case 'setSystemLanguage':
651 case 'setUserLanguage':
673 if (!$this->request_wrapper->has($param)) {
676 $trafo = $this->
refinery->byTrying([
677 $this->
refinery->kindlyTo()->null(),
678 $this->
refinery->kindlyTo()->string()
680 return $this->request_wrapper->retrieve($param, $trafo);
690 foreach ($languages as $lang) {
692 if ($langObj->isInstalled()) {
693 $ids[] = (string) $lang[
"obj_id"];
706 'confirmRefreshSelected' =>
$f->table()->action()->standard(
707 $this->
lng->txt(
"refresh"),
708 $this->url_builder->withParameter($this->action_token,
"confirmRefreshSelected"),
711 'install' =>
$f->table()->action()->standard(
712 $this->
lng->txt(
"install"),
713 $this->url_builder->withParameter($this->action_token,
"install"),
716 'installLocal' =>
$f->table()->action()->standard(
717 $this->
lng->txt(
"install_local"),
718 $this->url_builder->withParameter($this->action_token,
"installLocal"),
721 'confirmUninstall' =>
$f->table()->action()->standard(
722 $this->
lng->txt(
"uninstall"),
723 $this->url_builder->withParameter($this->action_token,
"confirmUninstall"),
726 'confirmUninstallChanges' =>
$f->table()->action()->standard(
727 $this->
lng->txt(
"lang_uninstall_changes"),
728 $this->url_builder->withParameter($this->action_token,
"confirmUninstallChanges"),
731 'setSystemLanguage' =>
$f->table()->action()->single(
732 $this->
lng->txt(
"setSystemLanguage"),
733 $this->url_builder->withParameter($this->action_token,
"setSystemLanguage"),
736 'setUserLanguage' =>
$f->table()->action()->single(
737 $this->
lng->txt(
"setUserLanguage"),
738 $this->url_builder->withParameter($this->action_token,
"setUserLanguage"),
741 'editFolder' =>
$f->table()->action()->single(
742 $this->
lng->txt(
"edit"),
743 $this->url_builder->withParameter($this->action_token,
"editFolder"),
751 $this->
ctrl->setParameterByClass(
"ilobjlanguageextgui",
"obj_id", current($ids));
752 $this->
ctrl->redirectByClass(
"ilobjlanguageextgui");
760 $this->
settings->set(
"lang_detection",
'0');
761 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"saved_successfully"));
770 $this->
settings->set(
"lang_detection",
'1');
771 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"saved_successfully"));
780 $button = $this->ui_factory->button()->standard(
781 $this->
lng->txt(
"download"),
782 $this->
ctrl->getLinkTarget($this,
"downloadDeprecated")
784 $this->
toolbar->addComponent($button);
788 foreach (
$d->getDeprecatedLangVars() as $key => $mod) {
789 $res .= $mod .
"," . $key .
"\n";
792 $this->tpl->setContent(
"<pre>" .
$res .
"</pre>");
802 foreach (
$d->getDeprecatedLangVars() as $key => $mod) {
803 $res .= $mod .
"," . $key .
"\n";
809 protected function getUrl(
string $action, array $lang_ids = null): string
811 $url_builder = $this->url_builder->
withParameter($this->action_token, $action);
813 $url_builder = $url_builder->
withParameter($this->id_token, $lang_ids);
815 return $url_builder->
buildURI()->__toString();
821 if ($this->request_wrapper->has($this->id_token->getName())) {
822 $ids = $this->request_wrapper->retrieve(
823 $this->id_token->getName(),
824 $this->
refinery->custom()->transformation(fn($v) => $v)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ilObjUser $user=null,)
editFolderObject(array $ids)
getTabs()
Retrieves and adds tabs based on user permissions.
buildURI()
Get a URI representation of the full URL including query string and fragment/hash.
static refreshPlugins(array $a_lang_keys=null)
Refresh languages of activated plugins $a_lang_keys keys of languages to be refreshed (not yet suppor...
prepareOutput(bool $show_sub_objects=true)
refreshObject()
update all installed languages
refreshSelectedObject(array $ids)
update selected languages
Interface Observer Contains several chained tasks and infos about them.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
installLocalObject(array $ids)
Install local language modifications.
acquireParameters(array $namespace, string ... $names)
listDeprecatedObject()
Download deprecated lang entries.
URLBuilderToken $id_token
static deliverData(string $a_data, string $a_filename, string $mime="application/octet-stream")
static _getObjectsByType(string $obj_type="", int $owner=null)
uninstallChangesObject(array $ids)
Uninstall local changes in the database.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupTitle(int $obj_id)
getUrl(string $action, array $lang_ids=null)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilObjectGUI Basic methods of all Output classes.
Class ilObjForumAdministration.
ilLanguageFolderTable $languageFolderTable
downloadDeprecatedObject()
Download deprecated lang entries.
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
enableLanguageDetectionObject()
Enable language detection.
viewObject()
show installed languages
withParameter(URLBuilderToken $token, string|array $value)
Change an acquired parameter's value if the supplied token is valid.
__construct(Container $dic, ilPlugin $plugin)
buildConfirmModal(array $ids, string $title, string $action, string $text, string $add_text='')
installObject(array $ids)
install languages
disableLanguageDetectionObject()
Disable language detection.
static refreshAll()
Refresh all installed languages.
uninstallObject(array $ids)
uninstall language
getCommandFromQueryToken(string $param)
static _getLastLocalChange(string $a_key)
get the date of the last local change $a_key language key Return change_date "yyyy-mm-dd hh:mm:ss" ...
URLBuilderToken $action_token
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
setSystemLanguageObject(array $ids)
set the system language
checkLanguageObject()
check all languages
Class ilObjLanguageFolderGUI.
setUserLanguageObject(array $ids)
set user language