diff --git a/smp-angular/src/assets/i18n/en.json b/smp-angular/src/assets/i18n/en.json index 8be9a6cef33d92e25ec9cb6a828a4740f77d39b6..7bfe7457df00ca6b7d8069686c391095489fb21e 100644 --- a/smp-angular/src/assets/i18n/en.json +++ b/smp-angular/src/assets/i18n/en.json @@ -844,7 +844,7 @@ "navigation.label.user.settings.profile": "Profile", "navigation.label.user.settings.access.tokens": "Access Tokens", "navigation.label.user.settings.certificates": "Certificate", - "navigation.label.user.settings.alerts": "Alerts", + "navigation.label.user.settings.alerts": "My alerts", "navigation.label.user.settings.membership": "Membership", "navigation.tooltip.search.resources": "Search registered resources", "navigation.tooltip.search.tools": "Search tools", diff --git a/smp-angular/src/assets/i18n/ro.json b/smp-angular/src/assets/i18n/ro.json index 17c97748a65d90dfd128473f2501fef9dd54d9a3..4a13325cd221ad51b80f83e611b3f6123abd1288 100644 --- a/smp-angular/src/assets/i18n/ro.json +++ b/smp-angular/src/assets/i18n/ro.json @@ -844,7 +844,7 @@ "navigation.label.user.settings.profile": "Profil", "navigation.label.user.settings.access.tokens": "Token-uri de Acces", "navigation.label.user.settings.certificates": "Certificate", - "navigation.label.user.settings.alerts": "Alerte", + "navigation.label.user.settings.alerts": "Alertele mele", "navigation.label.user.settings.membership": "Calitate de Membru", "navigation.tooltip.search.resources": "Cauta resurse inregistrate", "navigation.tooltip.search.tools": "Cauta resurse inregistrate", diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/init/SMPLocaleFileSystemInitializer.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/init/SMPLocaleFileSystemInitializer.java index 57210621057fe32bcd1d5bb1f238141bc030ef4b..418096284c9741705248d420f930eeadbbd27e05 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/init/SMPLocaleFileSystemInitializer.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/init/SMPLocaleFileSystemInitializer.java @@ -21,12 +21,9 @@ public class SMPLocaleFileSystemInitializer { private static final SMPLogger LOG = SMPLoggerFactory.getLogger(SMPLocaleFileSystemInitializer.class); - private final ConfigurationService configurationService; - private final SMPLocaleService smpLocaleService; - public SMPLocaleFileSystemInitializer(ConfigurationService configurationService, SMPLocaleService smpLocaleService) { - this.configurationService = configurationService; + public SMPLocaleFileSystemInitializer(SMPLocaleService smpLocaleService) { this.smpLocaleService = smpLocaleService; } diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/SMPLocaleService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/SMPLocaleService.java index a754c43fd2ce1ae554921129f0a48be3b28fadb7..3605bb2c08667087bc162a235a26f8b81414d77c 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/SMPLocaleService.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/SMPLocaleService.java @@ -1,5 +1,6 @@ package eu.europa.ec.edelivery.smp.services; +import eu.europa.ec.edelivery.smp.config.enums.SMPEnvPropertyEnum; import eu.europa.ec.edelivery.smp.i18n.SMPLocale; import eu.europa.ec.edelivery.smp.logging.SMPLogger; import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; @@ -11,6 +12,7 @@ import java.io.File; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.StandardCopyOption; import java.util.EnumSet; /** @@ -32,6 +34,10 @@ public class SMPLocaleService { public Path getLocaleFile(SMPLocale locale) { File localeFolder = configurationService.getLocaleFolder(); + if (!localeFolder.exists() && !localeFolder.mkdirs()) { + LOG.error("Failed to create locale folder [{}]", localeFolder); + return null; + } return new File(localeFolder, locale.getCode() + ".json").toPath().toAbsolutePath(); } @@ -47,10 +53,16 @@ public class SMPLocaleService { Resource resource = getLocaleResource(locale); if (resource.exists()) { Path localeFile = getLocaleFile(locale); - + if (localeFile == null) { + LOG.warn("Can not generate 'locale/language' file [{}]! Check if local folder defined in property [{}] " + + "has writing permissions and the folder exists", localeFile, SMPEnvPropertyEnum.LOCALE_FOLDER.getProperty()); + return; + } + if (Files.exists(localeFile)) { + LOG.warn("Language file [{}] already exists, and it will be replaced with up-to-date translations", localeFile); + } try(InputStream inputStream = resource.getInputStream()) { - Files.deleteIfExists(localeFile); - Files.copy(inputStream, localeFile); + Files.copy(inputStream, localeFile, StandardCopyOption.REPLACE_EXISTING); } catch (Exception e) { LOG.error("An error occurred while updating locale file [{}]", localeFile, e); } diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/LocaleController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/LocaleController.java index 1407ba358c5de5f51f677621c59156f406a07e9d..4b30c98101458624c8ec987b218e05a5c8e6e437 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/LocaleController.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/LocaleController.java @@ -35,12 +35,11 @@ public class LocaleController { @ResponseBody public Resource getLocale(@PathVariable("code") String code) { Path langResourcePath = smpLocaleService.getLocaleFile(SMPLocale.fromCodeDefaultingToEnglish(code)); - if (langResourcePath.toFile().exists()) { + if (langResourcePath != null && langResourcePath.toFile().exists()) { LOG.debug("Returning locale file [{}]", langResourcePath.toAbsolutePath()); return new FileSystemResource(langResourcePath); } else { LOG.warn("Locale file [{}] does not exist. Return default translation!", langResourcePath.toAbsolutePath()); - ClassPathResource defResource = new ClassPathResource(DEFAULT_LOCALE_RESOURCE); if (defResource.exists()) { return defResource;