This is an automated email from the ASF dual-hosted git repository.
massi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new a35dd0f789 [SYNCOPE-1942] added getString to retrieve the label from
localization properties file (#1278)
a35dd0f789 is described below
commit a35dd0f789c6ca297ecb1ecdb68494786272acd1
Author: Massimiliano Perrone <[email protected]>
AuthorDate: Mon Jan 19 11:33:09 2026 +0100
[SYNCOPE-1942] added getString to retrieve the label from localization
properties file (#1278)
---
.../client/console/topology/Topology.properties | 2 +
.../console/topology/Topology_fr_CA.properties | 2 +
.../client/console/topology/Topology_it.properties | 2 +
.../client/console/topology/Topology_ja.properties | 2 +
.../console/topology/Topology_pt_BR.properties | 2 +
.../client/console/topology/Topology_ru.properties | 3 +-
.../commons/DynamicMenuStringResourceLoader.java | 82 ++++++++++++++++++++++
.../client/console/IdRepoConsoleContext.java | 7 ++
.../client/console/SyncopeConsoleApplication.java | 8 ++-
.../client/console/SyncopeWebApplication.java | 26 ++++++-
.../syncope/client/console/pages/BasePage.java | 7 +-
.../console/SyncopeWebApplication.properties | 1 -
.../console/SyncopeWebApplication_fr_CA.properties | 2 +
.../console/SyncopeWebApplication_it.properties | 1 -
.../console/SyncopeWebApplication_ja.properties | 5 +-
.../console/SyncopeWebApplication_pt_BR.properties | 1 -
.../console/SyncopeWebApplication_ru.properties | 4 +-
.../syncope/client/console/AbstractTest.java | 11 ++-
.../client/enduser/IdRepoEnduserContext.java | 7 ++
.../client/enduser/SyncopeEnduserApplication.java | 7 +-
.../client/enduser/SyncopeWebApplication.java | 26 ++++++-
.../syncope/client/enduser/panels/Sidebar.java | 9 +--
.../syncope/client/enduser/AbstractTest.java | 11 ++-
.../client/console/pages/Flowable.properties | 2 +
...ble_ru.properties => Flowable_fr_CA.properties} | 2 +
.../client/console/pages/Flowable_it.properties | 2 +
.../client/console/pages/Flowable_ja.properties | 2 +
.../client/console/pages/Flowable_pt_BR.properties | 2 +
.../client/console/pages/Flowable_ru.properties | 2 +
.../syncope/client/enduser/pages/Flowable.java | 2 +-
.../client/enduser/pages/Flowable.properties | 2 +
...ble_it.properties => Flowable_fr_CA.properties} | 2 +
.../client/enduser/pages/Flowable_it.properties | 2 +
.../client/enduser/pages/Flowable_ja.properties | 2 +
.../client/enduser/pages/Flowable_pt_BR.properties | 3 +
.../client/enduser/pages/Flowable_ru.properties | 2 +
.../syncope/client/console/pages/OIDCC4UI.java | 2 +-
.../client/console/pages/OIDCC4UI.properties | 2 +
...DCC4UI_it.properties => OIDCC4UI_fr.properties} | 2 +
.../client/console/pages/OIDCC4UI_it.properties | 2 +
...{OIDCC4UI.properties => OIDCC4UI_ja.properties} | 2 +
...DCC4UI_it.properties => OIDCC4UI_pt.properties} | 2 +
.../client/console/pages/OIDCC4UI_ru.properties | 2 +
.../syncope/client/console/pages/SAML2SP4UI.java | 2 +-
.../client/console/pages/SAML2SP4UI.properties | 2 +
...P4UI.properties => SAML2SP4UI_fr_CA.properties} | 2 +
.../client/console/pages/SAML2SP4UI_it.properties | 2 +
...L2SP4UI.properties => SAML2SP4UI_ja.properties} | 2 +
.../console/pages/SAML2SP4UI_pt_BR.properties | 2 +
.../client/console/pages/SAML2SP4UI_ru.properties | 2 +
.../syncope/client/console/pages/SCIMConfPage.java | 2 +-
.../client/console/pages/SCIMConfPage.properties | 2 +
...fPage.properties => SCIMConfPage_fr.properties} | 2 +
.../console/pages/SCIMConfPage_it.properties | 2 +
...fPage.properties => SCIMConfPage_ja.properties} | 2 +
.../console/pages/SCIMConfPage_pt_BR.properties | 2 +
.../console/pages/SCIMConfPage_ru.properties | 3 +
57 files changed, 267 insertions(+), 31 deletions(-)
diff --git
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties
index 14e381db28..7b2a714ee5 100644
---
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties
+++
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
missingEntitlement=MISSING ENTITLEMENT: CONNECTOR_READ
+
+menu.Topology=Topology
diff --git
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties
index dc297fc5ad..796fbdb546 100644
---
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties
+++
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_fr_CA.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
missingEntitlement=DROIT MANQUANT : CONNECTOR_READ
+
+menu.Topology=Topologie
diff --git
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties
index 5a3d4c8d0c..06e80ac5f0 100644
---
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties
+++
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_it.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
missingEntitlement=ENTITLEMENT MANCANTE: CONNECTOR_READ
+
+menu.Topology=Topologia
diff --git
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties
index 932f656acd..5406bef554 100644
---
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties
+++
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ja.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
missingEntitlement=\u6a29\u5229\u4ed8\u4e0e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093:
CONNECTOR_READ
+
+menu.Topology=\u30c8\u30dd\u30ed\u30b8\u30fc
diff --git
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties
index 14e381db28..fc21cf12f1 100644
---
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties
+++
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_pt_BR.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
missingEntitlement=MISSING ENTITLEMENT: CONNECTOR_READ
+
+menu.Topology=Topologia
diff --git
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties
index 7f3248a23b..ed2f267c40 100644
---
a/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties
+++
b/client/idm/console/src/main/resources/org/apache/syncope/client/console/topology/Topology_ru.properties
@@ -14,5 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-# missingEntitlement=Нет прав доступа на просмотр коннектора (CONNECTOR_READ)
missingEntitlement=\u041d\u0435\u0442 \u043f\u0440\u0430\u0432
\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430
\u0447\u0442\u0435\u043d\u0438\u0435
\u043a\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 (CONNECTOR_READ)
+
+menu.Topology=\u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f
diff --git
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DynamicMenuStringResourceLoader.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DynamicMenuStringResourceLoader.java
new file mode 100644
index 0000000000..61a8415724
--- /dev/null
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/DynamicMenuStringResourceLoader.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.ui.commons;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import org.apache.wicket.core.util.resource.locator.IResourceNameIterator;
+import org.apache.wicket.resource.IPropertiesFactory;
+import org.apache.wicket.resource.loader.ClassStringResourceLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DynamicMenuStringResourceLoader extends ClassStringResourceLoader
{
+
+ protected static final Logger LOG =
LoggerFactory.getLogger(DynamicMenuStringResourceLoader.class);
+
+ private final Map<String, Class<?>> keysForPages;
+
+ public DynamicMenuStringResourceLoader() {
+ super(DynamicMenuStringResourceLoader.class);
+ keysForPages = new HashMap<>();
+ }
+
+ @Override
+ public String loadStringResource(
+ final Class<?> clazz,
+ final String key,
+ final Locale locale,
+ final String style,
+ final String variation) {
+ if (key == null || !key.startsWith("menu.")) {
+ return null;
+ }
+
+ final Class<?> pageClass = getPage(key);
+ if (pageClass == null) {
+ return null;
+ }
+
+ final String path = pageClass.getName().replace('.', '/');
+ final IResourceNameIterator resourceNameIterator =
newResourceNameIterator(path, locale, style, variation);
+ final IPropertiesFactory propertiesFactory = getPropertiesFactory();
+
+ while (resourceNameIterator.hasNext()) {
+ final var props = propertiesFactory.load(pageClass,
resourceNameIterator.next());
+ if (props == null) {
+ continue;
+ }
+
+ final String localeLabel = props.getString(key);
+ LOG.debug("Found label \"{}\" for key: {}", localeLabel, key);
+ return localeLabel;
+ }
+
+ return null;
+ }
+
+ private Class<?> getPage(final String key) {
+ return keysForPages.get(key);
+ }
+
+ public void register(final String key, final Class<?> pageClass) {
+ keysForPages.put(key, pageClass);
+ }
+}
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java
index 0f85093b9e..b1a3c8fb91 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/IdRepoConsoleContext.java
@@ -69,6 +69,7 @@ import
org.apache.syncope.client.console.rest.SyncopeRestClient;
import org.apache.syncope.client.console.rest.TaskRestClient;
import org.apache.syncope.client.console.rest.UserRestClient;
import org.apache.syncope.client.console.rest.UserSelfRestClient;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.client.ui.commons.MIMETypesLoader;
import org.apache.syncope.client.ui.commons.PreviewUtils;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -334,4 +335,10 @@ public class IdRepoConsoleContext {
public UserSelfRestClient userSelfRestClient() {
return new UserSelfRestClient();
}
+
+ @ConditionalOnMissingBean
+ @Bean
+ public DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader() {
+ return new DynamicMenuStringResourceLoader();
+ }
}
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
index 74bb1be384..a92b9227f4 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
@@ -33,6 +33,7 @@ import
org.apache.syncope.client.console.commons.PolicyTabProvider;
import org.apache.syncope.client.console.commons.StatusProvider;
import
org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
import org.apache.syncope.client.console.wizards.any.UserFormFinalizer;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.client.ui.commons.actuate.SyncopeCoreHealthIndicator;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
@@ -87,7 +88,9 @@ public class SyncopeConsoleApplication extends
SpringBootServletInitializer {
@Qualifier(SyncopeWebApplication.LOGGEDOUT_SESSIONID_CACHE)
final Cache<String, OffsetDateTime> loggedoutSessionIdCache,
@Qualifier(SyncopeWebApplication.DESTROYED_SESSIONID_CACHE)
- final Cache<String, OffsetDateTime> destroyedSessionIdCache) {
+ final Cache<String, OffsetDateTime> destroyedSessionIdCache,
+ final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader
+ ) {
return new SyncopeWebApplication(
props,
@@ -103,7 +106,8 @@ public class SyncopeConsoleApplication extends
SpringBootServletInitializer {
userFormFinalizers,
resources,
loggedoutSessionIdCache,
- destroyedSessionIdCache);
+ destroyedSessionIdCache,
+ dynamicMenuStringResourceLoader);
}
@ConditionalOnMissingBean
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
index 9d32acacfa..8dae943ce0 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
@@ -40,6 +40,7 @@ import
org.apache.syncope.client.console.commons.PolicyTabProvider;
import org.apache.syncope.client.console.commons.RealmsUtils;
import org.apache.syncope.client.console.commons.StatusProvider;
import
org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
+import org.apache.syncope.client.console.pages.BaseExtPage;
import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.pages.Dashboard;
import org.apache.syncope.client.console.pages.Login;
@@ -52,7 +53,9 @@ import org.apache.syncope.client.ui.commons.BaseLogin;
import org.apache.syncope.client.ui.commons.BaseSession;
import org.apache.syncope.client.ui.commons.BaseWebApplication;
import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener;
+import org.apache.syncope.client.ui.commons.annotations.ExtPage;
import org.apache.syncope.client.ui.commons.annotations.Resource;
import org.apache.syncope.client.ui.commons.themes.AdminLTE;
import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
@@ -125,6 +128,8 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication imple
protected final Cache<String, OffsetDateTime> destroyedSessionIdCache;
+ protected final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader;
+
public SyncopeWebApplication(
final ConsoleProperties props,
final ClassPathScanImplementationLookup lookup,
@@ -140,7 +145,8 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication imple
final List<UserFormFinalizer> userFormFinalizers,
final List<IResource> resources,
final Cache<String, OffsetDateTime> loggedoutSessionIdCache,
- final Cache<String, OffsetDateTime> destroyedSessionIdCache) {
+ final Cache<String, OffsetDateTime> destroyedSessionIdCache,
+ final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader) {
this.props = props;
this.lookup = lookup;
@@ -157,6 +163,7 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication imple
this.resources = resources;
this.loggedoutSessionIdCache = loggedoutSessionIdCache;
this.destroyedSessionIdCache = destroyedSessionIdCache;
+ this.dynamicMenuStringResourceLoader = dynamicMenuStringResourceLoader;
}
protected SyncopeUIRequestCycleListener
buildSyncopeUIRequestCycleListener() {
@@ -240,6 +247,23 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication imple
mountPage("/login", getSignInPageClass());
+ final List<Class<? extends BasePage>> amPageClasses =
lookup.getAMPageClasses();
+ amPageClasses.forEach(claz -> {
+ dynamicMenuStringResourceLoader.register("menu." +
claz.getSimpleName(), claz);
+ });
+
+ final List<Class<? extends BasePage>> idmPageClasses =
lookup.getIdMPageClasses();
+ idmPageClasses.forEach(claz -> {
+ dynamicMenuStringResourceLoader.register("menu." +
claz.getSimpleName(), claz);
+ });
+
+ final List<Class<? extends BaseExtPage>> extPageClasses =
lookup.getClasses(BaseExtPage.class);
+ extPageClasses.stream().filter(claz ->
(claz.isAnnotationPresent(ExtPage.class))).forEach(claz -> {
+ dynamicMenuStringResourceLoader.register("menu." +
claz.getSimpleName(), claz);
+ });
+
+
getResourceSettings().getStringResourceLoaders().add(dynamicMenuStringResourceLoader);
+
for (IResource resource : resources) {
Class<?> resourceClass = AopUtils.getTargetClass(resource);
Resource annotation = resourceClass.getAnnotation(Resource.class);
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index a77b56ad17..a2ceee3406 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -187,7 +187,7 @@ public class BasePage extends BaseWebPage {
IdMPage ann =
item.getModelObject().getAnnotation(IdMPage.class);
BookmarkablePageLink<Page> link = new
BookmarkablePageLink<>("idmPage", item.getModelObject());
- link.add(new Label("idmPageLabel", ann.label()));
+ link.add(new Label("idmPageLabel", getString("menu." +
ann.label(), null, ann.label())));
if (StringUtils.isNotBlank(ann.listEntitlement())) {
MetaDataRoleAuthorizationStrategy.authorize(link,
WebPage.RENDER, ann.listEntitlement());
}
@@ -226,7 +226,8 @@ public class BasePage extends BaseWebPage {
AMPage ann = item.getModelObject().getAnnotation(AMPage.class);
BookmarkablePageLink<Page> link = new
BookmarkablePageLink<>("amPage", item.getModelObject());
- link.add(new Label("amPageLabel", ann.label()));
+ link.add(new Label("amPageLabel", getString("menu." +
ann.label(), null, ann.label())));
+
if (StringUtils.isNotBlank(ann.listEntitlement())) {
MetaDataRoleAuthorizationStrategy.authorize(link,
WebPage.RENDER, ann.listEntitlement());
}
@@ -521,7 +522,7 @@ public class BasePage extends BaseWebPage {
ExtPage ann =
item.getModelObject().getAnnotation(ExtPage.class);
BookmarkablePageLink<Page> link = new
BookmarkablePageLink<>("extPage", item.getModelObject());
- link.add(new Label("extPageLabel", ann.label()));
+ link.add(new Label("extPageLabel", getString("menu." +
ann.label(), null, ann.label())));
if (StringUtils.isNotBlank(ann.listEntitlement())) {
MetaDataRoleAuthorizationStrategy.authorize(link,
WebPage.RENDER, ann.listEntitlement());
}
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication.properties
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication.properties
index d42b8e7ab2..26a10800ed 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication.properties
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication.properties
@@ -78,7 +78,6 @@ domains=Domains
nomatch=No matches found
tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB}
bytes (${maxUploadSizeMB} MB).
confirmDelegation=Do you really want to switch user?
-topology=Topology
engagements=Engagements
confirmProvisionMembers=Do you really want to provision all group members?
confirmDeprovisionMembers=Do you really want to deprovision all group members?
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_fr_CA.properties
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_fr_CA.properties
index 7c7556c35d..1a46ab4fa2 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_fr_CA.properties
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_fr_CA.properties
@@ -30,6 +30,7 @@ confirmDelete=Voulez-vous vraiment supprimer le(s) article(s)
s\u00e9lectionn\u0
confirmUnlink=Voulez-vous vraiment supprimer le lien entre le(s) article(s)
s\u00e9lectionn\u00e9(s) et la ressource?
confirmUnassign=Souhaitez-vous vraiment supprimer l'affectation entre le(s)
article(s) s\u00e9lectionn\u00e9(s) et la ressource?
confirmClone=Voulez-vous vraiment cloner le(s) article(s)
s\u00e9lectionn\u00e9(s)?
+
dropDownChoiceField.nullValid=Faire un choix
DateTimeField$HoursValidator=La valeur horaire doit \u00eatre dans la gamme
(1, 12)
error=Erreur
@@ -66,6 +67,7 @@ audit=Audit
connectors.confirm.reload=Cette demande est potentiellement dangereuse pour le
d\u00e9roulement des op\u00e9rations, continuer?
intAttrNameInfo.help=En plus des attributs auto-compl\u00e9t\u00e9s, vous
pouvez \u00e9galement faire r\u00e9f\u00e9rence \u00e0 des groupes, des objets
ou des appartenances, par exemple:
confirmGlobalLogout=Voulez-vous vraiment effectuer une d\u00e9connexion
compl\u00e8te?
+
implementations=Impl\u00e9mentations
timeout=L'op\u00e9ration prend trop de temps: elle sera ex\u00e9cut\u00e9e en
arri\u00e8re-plan. Veuillez v\u00e9rifier plus tard le r\u00e9sultat (les
erreurs ne seront pas d\u00e9tect\u00e9es).
security=S\u00e9curit\u00e9
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_it.properties
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_it.properties
index 4eb410e933..18ad328a65 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_it.properties
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_it.properties
@@ -78,7 +78,6 @@ domains=Domini
nomatch=Nessun risultato trovato
tooLargeFile=File troppo grande, la dimensione massima ammessa \u00e8
${maxUploadSizeB} bytes (${maxUploadSizeMB} MB).
confirmDelegation=Vuoi davvero cambiare utenza?
-topology=Topologia
engagements=Impegni
confirmProvisionMembers=Vuoi davvero procedere con il provisioning di tutti i
membri del gruppo?
confirmDeprovisionMembers=Vuoi davvero procedere con il deprovisioning di
tutti i membri del gruppo?
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties
index 0b7a5ab741..db22123820 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ja.properties
@@ -30,6 +30,7 @@
confirmDelete=\u9078\u629e\u3057\u305f\u30a2\u30a4\u30c6\u30e0\u3092\u524a\u9664
confirmUnlink=\u9078\u629e\u3057\u305f\u30a2\u30a4\u30c6\u30e0\u3068\u30ea\u30bd\u30fc\u30b9\u306e\u9593\u306e\u30ea\u30f3\u30af\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?
confirmUnassign=\u9078\u629e\u3057\u305f\u30a2\u30a4\u30c6\u30e0\u3068\u30ea\u30bd\u30fc\u30b9\u306e\u9593\u306e\u5272\u308a\u5f53\u3066\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?
confirmClone=\u9078\u629e\u3057\u305f\u30a2\u30a4\u30c6\u30e0\u3092\u8907\u88fd\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?
+
dropDownChoiceField.nullValid=\uff11\u3064\u9078\u629e
DateTimeField$HoursValidator=\u6642\u9593\u306e\u5024\u306f 1\uff5e12
\u306e\u7bc4\u56f2
error=\u30a8\u30e9\u30fc
@@ -66,6 +67,7 @@
connectors.confirm.reload=\u3053\u306e\u8981\u6c42\u306f\u3001\u5b9f\u884c\u4e2d
intAttrNameInfo.help=\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u306e\u5c5e\u6027\u4ee5\u5916\u306b\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u30e1\u30f3\u30d0\u30fc\u30b7\u30c3\u30d7\u3082\u53c2\u7167\u53ef\u80fd\u3067\u3059
(\u8a72\u5f53\u3059\u308b\u5834\u5408)\u3002\u4f8b\:
confirmGlobalLogout=\u30b0\u30ed\u30fc\u30d0\u30eb\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?
implementations=\u5c0e\u5165
+
timeout=\u64cd\u4f5c\u306b\u9577\u6642\u9593\u304b\u304b\u3063\u3066\u3044\u307e\u3059\:
\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u7d50\u679c\u3092\u5f8c\u3067\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044
(\u30a8\u30e9\u30fc\u306f\u5f15\u304d\u8d77\u3053\u3057\u307e\u305b\u3093)\u3002
security=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3
before=\u524d
@@ -76,7 +78,6 @@ domains=\u30c9\u30e1\u30a4\u30f3
nomatch=No matches found
tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB}
bytes (${maxUploadSizeMB} MB).
confirmDelegation=Do you really want to switch user?
-topology=Topology
-engagements=Engagements
+engagements=\u5a5a\u7d04
confirmProvisionMembers=Do you really want to provision all group members?
confirmDeprovisionMembers=Do you really want to deprovision all group members?
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties
index 3cac8cb746..217839b66f 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_pt_BR.properties
@@ -78,7 +78,6 @@ domains=Dom\u00ednios
nomatch=Nenhuma correspond\u00eancia encontrada
tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB}
bytes (${maxUploadSizeMB} MB).
confirmDelegation=Voc\u00ea realmente deseja mudar de usu\u00e1rio?
-topology=Topology
engagements=Engagements
confirmProvisionMembers=Voc\u00ea realmente deseja provisionar todos os
membros do grupo?
confirmDeprovisionMembers=Voc\u00ea realmente deseja desprovisionar todos os
membros do grupo?
diff --git
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties
index f0af199476..2affea016e 100644
---
a/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties
+++
b/client/idrepo/console/src/main/resources/org/apache/syncope/client/console/SyncopeWebApplication_ru.properties
@@ -30,6 +30,7 @@ confirmDelete=\u0412\u044b
\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u043
confirmUnlink=\u0412\u044b
\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e
\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c
\u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443
\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438
\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438
\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c?
confirmUnassign=\u0412\u044b
\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e
\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c
\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435
\u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0434\u043b\u044f
\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445
\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432?
confirmClone=\u0412\u044b
\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e
\u0445\u043e\u0442\u0438\u0442\u0435
\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c
\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435
\u043e\u0431\u044a\u0435\u043a\u0442\u044b?
+
dropDownChoiceField.nullValid=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435
\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435
DateTimeField$HoursValidator=\u0427\u0430\u0441\u044b
\u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c
\u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432
\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 (1, 12)
error=\u041e\u0448\u0438\u0431\u043a\u0430
@@ -77,7 +78,6 @@ domains=Domains
nomatch=No matches found
tooLargeFile=File is too large, max upload file size is ${maxUploadSizeB}
bytes (${maxUploadSizeMB} MB).
confirmDelegation=Do you really want to switch user?
-topology=Topology
-engagements=Engagements
+engagements=\u043f\u043e\u043c\u043e\u043b\u0432\u043a\u0438
confirmProvisionMembers=Do you really want to provision all group members?
confirmDeprovisionMembers=Do you really want to deprovision all group members?
diff --git
a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
index 217c3268a9..17f968ad08 100644
---
a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
+++
b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
@@ -52,6 +52,7 @@ import org.apache.syncope.client.lib.AuthenticationHandler;
import org.apache.syncope.client.lib.SyncopeAnonymousClient;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.common.keymaster.client.api.DomainOps;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.JPADomain;
@@ -145,6 +146,11 @@ public abstract class AbstractTest {
when(cacheManager.createCache(anyString(), any())).thenAnswer(ic
-> mock(Cache.class));
return cacheManager;
}
+
+ @Bean
+ public DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader() {
+ return new DynamicMenuStringResourceLoader();
+ }
}
public static class TestSyncopeWebApplication extends
SyncopeWebApplication {
@@ -164,12 +170,13 @@ public abstract class AbstractTest {
final List<UserFormFinalizer> userFormFinalizers,
final List<IResource> resources,
final Cache<String, OffsetDateTime> loggedoutSessionIdCache,
- final Cache<String, OffsetDateTime> destroyedSessionIdCache) {
+ final Cache<String, OffsetDateTime> destroyedSessionIdCache,
+ final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader) {
super(props, lookup, serviceOps, resourceProvider,
anyDirectoryPanelAdditionalActionsProvider,
anyDirectoryPanelAdditionalActionLinksProvider,
anyWizardBuilderAdditionalSteps, statusProvider,
implementationInfoProvider, accessPolicyConfProvider,
policyTabProviders, userFormFinalizers,
- resources, loggedoutSessionIdCache,
destroyedSessionIdCache);
+ resources, loggedoutSessionIdCache,
destroyedSessionIdCache, dynamicMenuStringResourceLoader);
}
public interface SyncopeServiceClient extends SyncopeService, Client {
diff --git
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java
index 4cbe7b47be..6db50844ab 100644
---
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java
+++
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/IdRepoEnduserContext.java
@@ -25,6 +25,7 @@ import
org.apache.syncope.client.enduser.rest.SchemaRestClient;
import org.apache.syncope.client.enduser.rest.SecurityQuestionRestClient;
import org.apache.syncope.client.enduser.rest.SyncopeRestClient;
import org.apache.syncope.client.enduser.rest.UserSelfRestClient;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.client.ui.commons.MIMETypesLoader;
import org.apache.syncope.client.ui.commons.PreviewUtils;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -91,4 +92,10 @@ public class IdRepoEnduserContext {
public UserSelfRestClient userSelfRestClient() {
return new UserSelfRestClient();
}
+
+ @ConditionalOnMissingBean
+ @Bean
+ public DynamicMenuStringResourceLoader dynamicMenuStringResourceLoader() {
+ return new DynamicMenuStringResourceLoader();
+ }
}
diff --git
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
index 96c0f065f7..21ef0d75c1 100644
---
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
+++
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
@@ -22,6 +22,7 @@ import
com.giffing.wicket.spring.boot.starter.web.config.WicketWebInitializerAut
import java.util.List;
import java.util.Map;
import
org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.client.ui.commons.actuate.SyncopeCoreHealthIndicator;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
@@ -62,9 +63,11 @@ public class SyncopeEnduserApplication extends
SpringBootServletInitializer {
final EnduserProperties props,
final ClassPathScanImplementationLookup lookup,
final ServiceOps serviceOps,
- final List<IResource> resources) {
+ final List<IResource> resources,
+ final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader) {
- return new SyncopeWebApplication(resourceLoader, props, lookup,
serviceOps, resources);
+ return new SyncopeWebApplication(
+ resourceLoader, props, lookup, serviceOps, resources,
dynamicMenuStringResourceLoader);
}
@ConditionalOnMissingBean
diff --git
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
index e21b847534..97dcf13ccb 100644
---
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
+++
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
@@ -41,7 +41,9 @@ import org.apache.syncope.client.lib.SyncopeAnonymousClient;
import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
import org.apache.syncope.client.ui.commons.BaseLogin;
import org.apache.syncope.client.ui.commons.BaseWebApplication;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener;
+import org.apache.syncope.client.ui.commons.annotations.ExtPage;
import org.apache.syncope.client.ui.commons.annotations.Resource;
import org.apache.syncope.client.ui.commons.themes.AdminLTE;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
@@ -91,18 +93,23 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication imple
protected UserFormLayoutInfo customFormLayout;
+ protected final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader;
+
public SyncopeWebApplication(
final ResourceLoader resourceLoader,
final EnduserProperties props,
final ClassPathScanImplementationLookup lookup,
final ServiceOps serviceOps,
- final List<IResource> resources) {
+ final List<IResource> resources,
+ final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader
+ ) {
this.resourceLoader = resourceLoader;
this.props = props;
this.lookup = lookup;
this.serviceOps = serviceOps;
this.resources = resources;
+ this.dynamicMenuStringResourceLoader = dynamicMenuStringResourceLoader;
}
protected SyncopeUIRequestCycleListener
buildSyncopeUIRequestCycleListener() {
@@ -203,6 +210,23 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication imple
}
}
+ final List<Class<? extends BasePage>> amPageClasses =
lookup.getAMPageClasses();
+ amPageClasses.forEach(claz -> {
+ dynamicMenuStringResourceLoader.register("menu." +
claz.getSimpleName(), claz);
+ });
+
+ final List<Class<? extends BasePage>> idmPageClasses =
lookup.getIdMPageClasses();
+ idmPageClasses.forEach(claz -> {
+ dynamicMenuStringResourceLoader.register("menu." +
claz.getSimpleName(), claz);
+ });
+
+ final List<Class<? extends BasePage>> extPageClasses =
lookup.getExtPageClasses();
+ extPageClasses.stream().filter(claz ->
(claz.isAnnotationPresent(ExtPage.class))).forEach(claz -> {
+ dynamicMenuStringResourceLoader.register("menu." +
claz.getSimpleName(), claz);
+ });
+
+
getResourceSettings().getStringResourceLoaders().add(dynamicMenuStringResourceLoader);
+
try (InputStream is =
resourceLoader.getResource(props.getCustomFormLayout()).getInputStream()) {
customFormLayout = MAPPER.readValue(is, new TypeReference<>() {
});
diff --git
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
index 647ae087d9..48fd029c5a 100644
---
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
+++
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
@@ -141,8 +141,7 @@ public class Sidebar extends Panel {
IdMPage ann =
item.getModelObject().getAnnotation(IdMPage.class);
BookmarkablePageLink<Page> link = new
BookmarkablePageLink<>("idmPage", item.getModelObject());
-
- link.add(new Label("idmPageLabel", ann.label()));
+ link.add(new Label("idmPageLabel", getString("menu." +
ann.label(), null, ann.label())));
if
(item.getModelObject().equals(pageRef.getPage().getClass())) {
link.add(new Behavior() {
@@ -177,8 +176,7 @@ public class Sidebar extends Panel {
AMPage ann = item.getModelObject().getAnnotation(AMPage.class);
BookmarkablePageLink<Page> link = new
BookmarkablePageLink<>("amPage", item.getModelObject());
-
- link.add(new Label("amPageLabel", ann.label()));
+ link.add(new Label("amPageLabel", getString("menu." +
ann.label(), null, ann.label())));
if
(item.getModelObject().equals(pageRef.getPage().getClass())) {
link.add(new Behavior() {
@@ -216,8 +214,7 @@ public class Sidebar extends Panel {
ExtPage ann =
item.getModelObject().getAnnotation(ExtPage.class);
BookmarkablePageLink<Page> link = new
BookmarkablePageLink<>("extPage", item.getModelObject());
-
- link.add(new Label("extPageLabel", ann.label()));
+ link.add(new Label("extPageLabel", getString("menu." +
ann.label(), null, ann.label())));
if
(item.getModelObject().equals(pageRef.getPage().getClass())) {
link.add(new Behavior() {
diff --git
a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
index 3016d1af58..64ac9d197f 100644
---
a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
+++
b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
@@ -40,6 +40,7 @@ import org.apache.syncope.client.lib.AuthenticationHandler;
import org.apache.syncope.client.lib.SyncopeAnonymousClient;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.client.ui.commons.DynamicMenuStringResourceLoader;
import org.apache.syncope.common.keymaster.client.api.DomainOps;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.JPADomain;
@@ -126,6 +127,11 @@ public abstract class AbstractTest {
lookup.load();
return lookup;
}
+
+ @Bean
+ public DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader() {
+ return new DynamicMenuStringResourceLoader();
+ }
}
public static class TestSyncopeWebApplication extends
SyncopeWebApplication {
@@ -135,9 +141,10 @@ public abstract class AbstractTest {
final EnduserProperties props,
final ClassPathScanImplementationLookup lookup,
final ServiceOps serviceOps,
- final List<IResource> resources) {
+ final List<IResource> resources,
+ final DynamicMenuStringResourceLoader
dynamicMenuStringResourceLoader) {
- super(resourceLoader, props, lookup, serviceOps, resources);
+ super(resourceLoader, props, lookup, serviceOps, resources,
dynamicMenuStringResourceLoader);
}
public interface SyncopeServiceClient extends SyncopeService, Client {
diff --git
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties
index 5b088d6d6c..208b8c3ae0 100644
---
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties
+++
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable.properties
@@ -17,3 +17,5 @@
xmlEditorTitle=Workflow XML Editor
userWorkflow=User workflow
external_editor.title=Flowable Modeler
+
+menu.Flowable=Flowable
diff --git
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_fr_CA.properties
similarity index 97%
copy from
ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
copy to
ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_fr_CA.properties
index 515fa3ae72..f970823aef 100644
---
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
+++
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_fr_CA.properties
@@ -17,3 +17,5 @@
xmlEditorTitle=XML \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440
\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430
\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f
userWorkflow=User workflow
external_editor.title=Flowable Modeler
+
+menu.Flowable=Flowable
diff --git
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties
index 37fd8593b3..a76f4dbd3f 100644
---
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties
+++
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_it.properties
@@ -17,3 +17,5 @@
xmlEditorTitle=Workflow XML Editor
userWorkflow=Workflow utenti
external_editor.title=Flowable Modeler
+
+menu.Flowable=Flowable
diff --git
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties
index 45b48142e2..8328db6857 100644
---
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties
+++
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ja.properties
@@ -17,3 +17,5 @@
xmlEditorTitle=\u30ef\u30fc\u30af\u30d5\u30ed\u30fc XML
\u30a8\u30c7\u30a3\u30bf\u30fc
userWorkflow=\u30e6\u30fc\u30b6\u30fc\u30ef\u30fc\u30af\u30d5\u30ed\u30fc
external_editor.title=Flowable \u30e2\u30c7\u30e9\u30fc
+
+menu.Flowable=Flowable
diff --git
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties
index 5b088d6d6c..208b8c3ae0 100644
---
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties
+++
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_pt_BR.properties
@@ -17,3 +17,5 @@
xmlEditorTitle=Workflow XML Editor
userWorkflow=User workflow
external_editor.title=Flowable Modeler
+
+menu.Flowable=Flowable
diff --git
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
index 515fa3ae72..f970823aef 100644
---
a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
+++
b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/pages/Flowable_ru.properties
@@ -17,3 +17,5 @@
xmlEditorTitle=XML \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440
\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430
\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f
userWorkflow=User workflow
external_editor.title=Flowable Modeler
+
+menu.Flowable=Flowable
diff --git
a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java
b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java
index 30d9cd2827..f4d6345807 100644
---
a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java
+++
b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/pages/Flowable.java
@@ -48,7 +48,7 @@ import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
-@ExtPage(label = "User Requests", icon = "fa fa-briefcase", listEntitlement =
"")
+@ExtPage(label = "Flowable", icon = "fa fa-briefcase", listEntitlement = "")
public class Flowable extends BaseExtPage {
private static final long serialVersionUID = -8781434495150074529L;
diff --git
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties
index 17cc65dccf..0462c18517 100644
---
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties
+++
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable.properties
@@ -23,3 +23,5 @@ delete=Delete
start=Start
requests.to.be.approved=Your active requests
activityId=Activity Id
+
+menu.Flowable=User Requests
diff --git
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_fr_CA.properties
similarity index 96%
copy from
ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
copy to
ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_fr_CA.properties
index aba7051a6d..3fb74cc04c 100644
---
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
+++
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_fr_CA.properties
@@ -23,3 +23,5 @@ delete=Cancella
start=Esegui
requests.to.be.approved=Richieste in lavorazione
activityId=Id attivit\u00e0
+
+menu.Flowable=Demandes des utilisateurs
diff --git
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
index aba7051a6d..f52e354375 100644
---
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
+++
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_it.properties
@@ -23,3 +23,5 @@ delete=Cancella
start=Esegui
requests.to.be.approved=Richieste in lavorazione
activityId=Id attivit\u00e0
+
+menu.Flowable=Richieste utente
diff --git
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties
index 2a8e4033b7..235838f236 100644
---
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties
+++
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ja.properties
@@ -23,3 +23,5 @@ delete=\u30af\u30ea\u30a2
start=\u958b\u59cb
requests.to.be.approved=\u3042\u306a\u305f\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30ea\u30af\u30a8\u30b9\u30c8
activityId=Activity Id
+
+menu.Flowable=\u30e6\u30fc\u30b6\u30fc\u8981\u8acb
diff --git
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties
index 57b7d62683..29c98da459 100644
---
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties
+++
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_pt_BR.properties
@@ -23,3 +23,6 @@ delete=Limpa
start=Come\u00e7ar
requests.to.be.approved=Seus pedidos ativos
activityId=Activity Id
+
+menu.Flowable=Solicita\u00e7\u00f5es dos usu\u00e1rios
+
diff --git
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties
index 87cfaccc4a..1471ccd533 100644
---
a/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties
+++
b/ext/flowable/client-enduser/src/main/resources/org/apache/syncope/client/enduser/pages/Flowable_ru.properties
@@ -23,3 +23,5 @@ delete=\u0440\u0430\u0441\u0441\u0435\u0435\u0442\u0441\u044f
start=\u041d\u0430\u0447\u043d\u0438\u0442\u0435
requests.to.be.approved=\u0412\u0430\u0448\u0438
\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435
\u0437\u0430\u043f\u0440\u043e\u0441\u044b
activityId=Activity Id
+
+menu.Flowable=\u0417\u0430\u043f\u0440\u043e\u0441\u044b
\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
diff --git
a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java
b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java
index afa8fbec4a..a1924650ff 100644
---
a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java
+++
b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/OIDCC4UI.java
@@ -34,7 +34,7 @@ import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
-@ExtPage(label = "OIDC 1.0 C4UI", icon = "fab fa-openid",
+@ExtPage(label = "OIDCC4UI", icon = "fab fa-openid",
listEntitlement = OIDCC4UIEntitlement.OP_READ, priority = 300)
public class OIDCC4UI extends BaseExtPage {
diff --git
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
index b34f11c366..5712591ae5 100644
---
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
+++
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
op=OIDC Providers
+
+menu.OIDCC4UI=OIDC 1.0 C4UI
diff --git
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_fr.properties
similarity index 96%
copy from
ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
copy to
ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_fr.properties
index e78fe314b3..51e437f0f7 100644
---
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
+++
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_fr.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
op=Provider OIDC
+
+menu.OIDCC4UI=OIDC 1.0 C4UI
diff --git
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
index e78fe314b3..51e437f0f7 100644
---
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
+++
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
op=Provider OIDC
+
+menu.OIDCC4UI=OIDC 1.0 C4UI
diff --git
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ja.properties
similarity index 96%
copy from
ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
copy to
ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ja.properties
index b34f11c366..5712591ae5 100644
---
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI.properties
+++
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ja.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
op=OIDC Providers
+
+menu.OIDCC4UI=OIDC 1.0 C4UI
diff --git
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_pt.properties
similarity index 96%
copy from
ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
copy to
ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_pt.properties
index e78fe314b3..51e437f0f7 100644
---
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_it.properties
+++
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_pt.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
op=Provider OIDC
+
+menu.OIDCC4UI=OIDC 1.0 C4UI
diff --git
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties
index b34f11c366..5712591ae5 100644
---
a/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties
+++
b/ext/oidcc4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/OIDCC4UI_ru.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
op=OIDC Providers
+
+menu.OIDCC4UI=OIDC 1.0 C4UI
diff --git
a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
index 9bffc91379..28431bf9ea 100644
---
a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
+++
b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
@@ -36,7 +36,7 @@ import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
-@ExtPage(label = "SAML 2.0 SP4UI", icon = "fas fa-sign-in-alt",
+@ExtPage(label = "SAML2SP4UI", icon = "fas fa-sign-in-alt",
listEntitlement = SAML2SP4UIEntitlement.IDP_READ, priority = 400)
public class SAML2SP4UI extends BaseExtPage {
diff --git
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
index ead24e7b81..734c6a71db 100644
---
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
+++
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
@@ -16,3 +16,5 @@
# under the License.
idps=Identity Providers
sp=Service Provider
+
+menu.SAML2SP4UI=SAML 2.0 SP4UI
diff --git
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_fr_CA.properties
similarity index 96%
copy from
ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
copy to
ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_fr_CA.properties
index ead24e7b81..734c6a71db 100644
---
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
+++
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_fr_CA.properties
@@ -16,3 +16,5 @@
# under the License.
idps=Identity Providers
sp=Service Provider
+
+menu.SAML2SP4UI=SAML 2.0 SP4UI
diff --git
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties
index ead24e7b81..734c6a71db 100644
---
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties
+++
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_it.properties
@@ -16,3 +16,5 @@
# under the License.
idps=Identity Providers
sp=Service Provider
+
+menu.SAML2SP4UI=SAML 2.0 SP4UI
diff --git
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ja.properties
similarity index 96%
copy from
ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
copy to
ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ja.properties
index ead24e7b81..734c6a71db 100644
---
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI.properties
+++
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ja.properties
@@ -16,3 +16,5 @@
# under the License.
idps=Identity Providers
sp=Service Provider
+
+menu.SAML2SP4UI=SAML 2.0 SP4UI
diff --git
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties
index ead24e7b81..734c6a71db 100644
---
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties
+++
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_pt_BR.properties
@@ -16,3 +16,5 @@
# under the License.
idps=Identity Providers
sp=Service Provider
+
+menu.SAML2SP4UI=SAML 2.0 SP4UI
diff --git
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties
index ead24e7b81..734c6a71db 100644
---
a/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties
+++
b/ext/saml2sp4ui/client-console/src/main/resources/org/apache/syncope/client/console/pages/SAML2SP4UI_ru.properties
@@ -16,3 +16,5 @@
# under the License.
idps=Identity Providers
sp=Service Provider
+
+menu.SAML2SP4UI=SAML 2.0 SP4UI
diff --git
a/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java
b/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java
index 798d95161b..73c08db918 100644
---
a/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java
+++
b/ext/scimv2/client-console/src/main/java/org/apache/syncope/client/console/pages/SCIMConfPage.java
@@ -28,7 +28,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
-@ExtPage(label = "SCIM 2.0", icon = "fa fa-cloud", listEntitlement =
SCIMEntitlement.SCIM_CONF_GET, priority = 500)
+@ExtPage(label = "SCIMConfPage", icon = "fa fa-cloud", listEntitlement =
SCIMEntitlement.SCIM_CONF_GET, priority = 500)
public class SCIMConfPage extends BaseExtPage {
private static final long serialVersionUID = -8156063343062111770L;
diff --git
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
index cbcf4a3254..a82bf5e4df 100644
---
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
+++
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
scimConfGeneral=General
+
+menu.SCIMConfPage=SCIM 2.0
diff --git
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_fr.properties
similarity index 96%
copy from
ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
copy to
ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_fr.properties
index cbcf4a3254..a82bf5e4df 100644
---
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
+++
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_fr.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
scimConfGeneral=General
+
+menu.SCIMConfPage=SCIM 2.0
diff --git
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties
index cbcf4a3254..a82bf5e4df 100644
---
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties
+++
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_it.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
scimConfGeneral=General
+
+menu.SCIMConfPage=SCIM 2.0
diff --git
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ja.properties
similarity index 96%
copy from
ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
copy to
ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ja.properties
index cbcf4a3254..a82bf5e4df 100644
---
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage.properties
+++
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ja.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
scimConfGeneral=General
+
+menu.SCIMConfPage=SCIM 2.0
diff --git
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties
index cbcf4a3254..a82bf5e4df 100644
---
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties
+++
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_pt_BR.properties
@@ -15,3 +15,5 @@
# specific language governing permissions and limitations
# under the License.
scimConfGeneral=General
+
+menu.SCIMConfPage=SCIM 2.0
diff --git
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties
index cbcf4a3254..66cff14474 100644
---
a/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties
+++
b/ext/scimv2/client-console/src/main/resources/org/apache/syncope/client/console/pages/SCIMConfPage_ru.properties
@@ -15,3 +15,6 @@
# specific language governing permissions and limitations
# under the License.
scimConfGeneral=General
+
+menu.SCIMConfPage=SCIM 2.0
+