Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 8bc23333 by Tony CHEMIT at 2017-07-12T14:04:51+02:00 Ajout d'un traducteur dans l'application (See #788) (consolidation intégrité bundles + intégration des modifications dans l'application) - - - - - 6 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/TranslateAction.java - application-swing/src/main/resources/i18n/application-swing_en_GB.properties - application-swing/src/main/resources/i18n/application-swing_es_ES.properties - application-swing/src/main/resources/i18n/application-swing_fr_FR.properties - pom.xml Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java @@ -380,7 +380,7 @@ public abstract class ObserveRunner extends ApplicationRunner { return config; } - private void initUserDirectories(ObserveSwingApplicationConfig config) throws IOException { + private void initUserDirectories(ObserveSwingApplicationConfig config) throws IOException { // 1 - user data directory @@ -491,6 +491,9 @@ public abstract class ObserveRunner extends ApplicationRunner { @Override protected void createUserI18nLayout(File directory) throws Exception { + if (config.getI18nDefinitionFile().exists()) { + return; + } super.createUserI18nLayout(directory); // add also a archive with all i18n stuff (says i18n bundle + templates) ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/TranslateAction.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/TranslateAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/TranslateAction.java @@ -26,8 +26,12 @@ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ObserveSwingTechnicalException; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.ObserveUICallback; +import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import java.awt.event.ActionEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import java.net.URL; @@ -66,12 +70,29 @@ public class TranslateAction extends AbstractUIAction { ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); File i18nDefinitionFile = config.getI18nDefinitionFile(); -// URL bundles = Project.class.getClassLoader().getResource("META-INF/observe-i18n-definition.properties"); try { URL bundles = i18nDefinitionFile.toURI().toURL(); Objects.requireNonNull(bundles); - ProjectUI projectUI = new ProjectUI(getMainUI(), new Project(bundles)); + Project model = new Project(bundles); + ProjectUI projectUI = new ProjectUI(getMainUI(), model); projectUI.toggleFilter(); + + projectUI.addWindowListener(new WindowAdapter() { + @Override + public void windowClosed(WindowEvent e) { + if (model.getLastExport() != null) { + File i18nDefinitionFileParentFile = i18nDefinitionFile.getParentFile(); + log.info(String.format("Found existing i18n export, will merge it to user i18n data (%s).", i18nDefinitionFileParentFile)); + try { + model.mergeExport(i18nDefinitionFileParentFile); + } catch (IOException e1) { + throw new ObserveSwingTechnicalException("Can't merge i18n export", e1); + } + UIHelper.displayInfo(t("observe.title.reload.i18n"), t("observe.message.reload.i18n")); + ObserveUICallback.application.run(); + } + } + }); } catch (IOException e) { throw new ObserveSwingTechnicalException("can't open i18n editor", e); } ===================================== application-swing/src/main/resources/i18n/application-swing_en_GB.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -417,6 +417,7 @@ observe.common.length.computed.tip=Length was computed observe.common.length.inf=Length (cm inf.) observe.common.length.observed.tip=Length was observed observe.common.length2=Length (cm) +observe.common.lengthMeasureType=Length measure type observe.common.libelles=Labels observe.common.lowerValueUpperValue=Bounds min-max observe.common.mammalsObservation=Mammals observations @@ -1487,6 +1488,7 @@ observe.message.quit.valid.edit=Data are modified and valid\! observe.message.referentiel.editable=Referential is editable. observe.message.referentiel.home=< Referential > observe.message.referentiel.no.editable=You are not allowed to edit referential. +observe.message.reload.i18n=You have modified i18n, application must be restart. observe.message.select.report=Select a report observe.message.server.info=Local database %1$s is ready in server mode. observe.message.show.usage.for.delete=Referential %1$s "%2$s" can be deleted if you choose a replacement. @@ -1703,6 +1705,7 @@ observe.title.load.remote.db=Load remote database observe.title.need.confirm=Need a confirmation... observe.title.need.confirm.to.desactivate.referentiel=Need a confirmation to disable a referentiel data... observe.title.no.local.db.found=No local database found. +observe.title.reload.i18n=Application need to restart... observe.title.save.localDB=Save local storage to a file observe.title.save.remoteDB=Save remote database to a file observe.title.show.usage=Show usages ===================================== application-swing/src/main/resources/i18n/application-swing_es_ES.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -417,6 +417,7 @@ observe.common.length.computed.tip=Longitud calculada observe.common.length.inf=Longitud (cm inf.) observe.common.length.observed.tip=Longitud observada observe.common.length2=Longitud eslora total (cm) \#TODO +observe.common.lengthMeasureType=Type de mensuration \#TODO observe.common.libelles=Textos observe.common.lowerValueUpperValue=Bornes min-max observe.common.mammalsObservation=Mamiferos @@ -498,8 +499,6 @@ observe.config.category.technical=Técnico observe.config.category.technical.description=Información técnica observe.config.category.ui=GUI observe.config.category.ui.description=Configuración GUI -observe.content.action.activity=Crear una nueva actividad -observe.content.action.activity.tip=Crear una nueva actividad para la ruta actual observe.content.action.closeAndCreate=Cerrar y crear observe.content.action.closeAndCreate.activity=Actividad siguiente observe.content.action.closeAndCreate.activity.tip=Cierre de la actividad actual y creación de una nueva @@ -1489,6 +1488,7 @@ observe.message.quit.valid.edit=¡Los datos han sido modificados y son válidos\ observe.message.referentiel.editable=El referencial es editable. observe.message.referentiel.home=< Referencial > observe.message.referentiel.no.editable=No tiene permisos para editar el referencial. +observe.message.reload.i18n=Vous avez modifié des traductions, le redémarrage de l'application est nécessaire pour les prendre en compte. \#TODO observe.message.select.report=Seleccione informe observe.message.server.info=Información modo servidor observe.message.show.usage.for.delete=El referencial %1$s "%2$s" no se puede eliminar sin hacer una sustitución antes. @@ -1705,6 +1705,7 @@ observe.title.load.remote.db=Cargando una base remota observe.title.need.confirm=Una confirmación se necesita... observe.title.need.confirm.to.desactivate.referentiel=Una confirmación se necesita para désactivar un referencial... observe.title.no.local.db.found=Ninguna base local fue encontrada +observe.title.reload.i18n=Rechargement de l'application nécessaire... \#TODO observe.title.save.localDB=Guardar la base local en un archivo observe.title.save.remoteDB=Guardar la base remota en un archivo observe.title.show.usage=Listas de las utilizaciones de un referencial... ===================================== application-swing/src/main/resources/i18n/application-swing_fr_FR.properties ===================================== --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -17,7 +17,6 @@ observe.action.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le cont observe.action.back.to.list=Retour à la liste observe.action.back.to.list.tip=Retour à la liste des données observe.action.cancel=Annuler -observe.action.cancel.create.tip=Annuler la création de l'objet observe.action.change.storage=Changer la source de données observe.action.change.storage.tip=Pour changer la source de données de l'application observe.action.choose.db.dump=Choisir la sauvegarde @@ -68,9 +67,6 @@ observe.action.copyFloatingObjectPartToLeft.tip=Recopier les valeurs du départ observe.action.copyFloatingObjectPartToRight=Recopier les valeurs de l'arrivée vers de départ observe.action.copyFloatingObjectPartToRight.tip=Recopier les valeurs de l'arrivée vers de départ observe.action.create=Créer -observe.action.db.locale.es.tip=Changer la langue du référentiel en espagnol -observe.action.db.locale.fr.tip=Changer la langue du référentiel en français -observe.action.db.locale.uk.tip=Changer la langue du référentiel en anglais observe.action.delete=Supprimer observe.action.delete.activity.tip=Supprimer l'activité observe.action.delete.entry.tip=Supprimer l'entrée en cours d'édition @@ -117,7 +113,6 @@ observe.action.new.entry.tip=Créer une nouvelle entrée observe.action.open.screen=Ouverture de l'écran <%1$s> observe.action.quit=Quitter observe.action.quit.tip=Quitter le gestionnaire -observe.action.quitHelp.tip=Quitter l'écran d'aide observe.action.reload.application=Redémarrer l'application observe.action.reload.storage=Recharger la source de données observe.action.reload.storage.tip=Ferme et rouvre la source de données @@ -433,7 +428,6 @@ observe.common.meanLengthComputed.observed.tip=La taille moyenne a été observà observe.common.meanValues=Valeurs moyennes observe.common.meanWeightComputed.computed.tip=Le poids moyen a été calculé (%s) observe.common.meanWeightComputed.observed.tip=Le poids moyen a été observé -observe.common.measureType=Type de mensuration observe.common.minLength=Taille minimum (en cm) observe.common.minLengthMax=Taille min-max (en cm) observe.common.minWeight=Poids minimum (en Kg) @@ -1494,6 +1488,7 @@ observe.message.quit.valid.edit=Les données ont été modifiées et sont valide observe.message.referentiel.editable=Le référentiel est éditable. observe.message.referentiel.home=< Référentiel > observe.message.referentiel.no.editable=Vous n'êtes pas autorisé à éditer le référentiel. +observe.message.reload.i18n=Vous avez modifié des traductions, le redémarrage de l'application est nécessaire pour les prendre en compte. observe.message.select.report=Choisissez une requête observe.message.server.info=La base locale %1$s est démarrée en mode serveur. observe.message.show.usage.for.delete=Le référentiel %1$s "%2$s" ne peut pas être supprimé sans effectuer au préalable un remplacement. @@ -1710,6 +1705,7 @@ observe.title.load.remote.db=Chargement d'une base distante observe.title.need.confirm=Une confirmation de votre part est requise... observe.title.need.confirm.to.desactivate.referentiel=Une confirmation de votre part est requise pour désactiver un référentiel... observe.title.no.local.db.found=Aucune base locale trouvée +observe.title.reload.i18n=Rechargement de l'application nécessaire... observe.title.save.localDB=Sauver la base locale vers une fichier observe.title.save.remoteDB=Sauver la base distante vers un fichier observe.title.show.usage=Listes des utilisations d'un référentiel... ===================================== pom.xml ===================================== --- a/pom.xml +++ b/pom.xml @@ -174,7 +174,7 @@ <processorPluginVersion>1.3</processorPluginVersion> <jaxxVersion>3.0-alpha-8-SNAPSHOT</jaxxVersion> - <nuitonI18nVersion>4.0-alpha-2</nuitonI18nVersion> + <nuitonI18nVersion>4.0-alpha-3-SNAPSHOT</nuitonI18nVersion> <nuitonConfigVersion>3.2</nuitonConfigVersion> <topiaVersion>3.2.1</topiaVersion> <nuitonValidatorVersion>3.1</nuitonValidatorVersion> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8bc23333a1d7e6f368f2bd88ff8d... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/8bc23333a1d7e6f368f2bd88ff8d... You're receiving this email because of your account on gitlab.com.