diff --git a/app/credentials-management/src/main/resources/org/phoebus/applications/credentialsmanagement/messages_fr.properties b/app/credentials-management/src/main/resources/org/phoebus/applications/credentialsmanagement/messages_fr.properties index 0ca6aa5fab..3d2bed7274 100644 --- a/app/credentials-management/src/main/resources/org/phoebus/applications/credentialsmanagement/messages_fr.properties +++ b/app/credentials-management/src/main/resources/org/phoebus/applications/credentialsmanagement/messages_fr.properties @@ -11,3 +11,4 @@ Scope=Périmètre SecureStoreErrorTitle=Échec du lancement de l'application SecureStoreErrorBody=Échec de l'initialisation du stockage sécurisé Title=Gestion des identifiants +UserName=Nom d'utilisateur diff --git a/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages_fr.properties b/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages_fr.properties index d37daf4923..971f28737a 100644 --- a/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages_fr.properties +++ b/app/databrowser/src/main/resources/org/csstudio/trends/databrowser3/messages_fr.properties @@ -170,6 +170,7 @@ FormulaTabVariable=Variable FormulaTabTT=Double-cliquez sur l'entrée pour l'ajouter à la formule, ou modifier le nom de la variable Grid=Grille GridLbl=Grille : +HideAll=Tout masquer HideTraceWarning=Masquer la courbe ? HideTraceWarningDetail=Masquer une courbe peut être utile pour...\na) réduire temporairement le nombre de courbes sur le graphique\nb) masquer les PV d'entrée de la formule où vous êtes intéressé par la formule,\n mais pas par les entrées individuelles\n\nNotez cependant que le Navigateur de données échantillonnera toujours les données pour la courbe masquée et demandera des données archivées pour elle afin qu'elle soit "prête" lorsque vous voudrez la montrer à nouveau.\n\nSi vous n'avez pas besoin de cet élément, vous devriez le supprimer au lieu de le masquer.\n\nMasquer la courbe ? ImportActionLabelFmt=Importer {0} @@ -249,6 +250,7 @@ SearchTT=Démarrer la recherche de nom de canal SelectTrace=Séléctionner la courbe pour voir les sources de données SeverityColumn=Gravité SeverityStatusFmt={0} / {1} +ShowAll=Tout afficher StartEndDialogBtn=... StartEndDialogTT=Ouvrir la boîte de dialogue de l'heure de début/fin StartTimeLbl=Heure de début : @@ -293,6 +295,7 @@ WaveformIndex=Indice de la forme d'onde WaveformIndexCol=Indice WaveformIndexColTT=Indice de la forme d'onde WaveformStatus=Gravité/Statut : -WaveformTimeSelector=Séléctionner la forme d'onde par temps +WaveformTimeSelector=Sélectionner la forme d'onde par temps WaveformTimestamp=Horodatage : WaveformView=Vue de la forme d'onde +WaveformViewSelect=Sélectionner un élément... diff --git a/app/display/model/src/main/resources/org/csstudio/display/builder/model/messages_fr.properties b/app/display/model/src/main/resources/org/csstudio/display/builder/model/messages_fr.properties index 94d5a0f405..b4155e7828 100644 --- a/app/display/model/src/main/resources/org/csstudio/display/builder/model/messages_fr.properties +++ b/app/display/model/src/main/resources/org/csstudio/display/builder/model/messages_fr.properties @@ -1,9 +1,3 @@ -ActionExecuteCommand=Exécuter la commande -ActionExecuteScript=Exécuter le script -ActionOpenDisplay=Ouvrir l'affichage -ActionOpenFile=Ouvrir le fichier -ActionOpenWebPage=Ouvrir la page Web -ActionWritePV=Écrire PV Actions_N_Fmt={0,choice,0#Aucune action|1#1 action|1<{0,number,integer} actions} ActiveTab=Onglet actif ArrayWidget_Name=Tableau diff --git a/app/display/representation-javafx/src/main/resources/org/csstudio/display/builder/representation/javafx/messages_fr.properties b/app/display/representation-javafx/src/main/resources/org/csstudio/display/builder/representation/javafx/messages_fr.properties index 26c1c15dd2..cc6654bd47 100644 --- a/app/display/representation-javafx/src/main/resources/org/csstudio/display/builder/representation/javafx/messages_fr.properties +++ b/app/display/representation-javafx/src/main/resources/org/csstudio/display/builder/representation/javafx/messages_fr.properties @@ -2,8 +2,6 @@ ActionButton_N_ActionsAsOneFmt={0} actions ActionButton_N_ActionsFmt=Choisissez 1 parmi {0} ActionButton_NoActions=VIDE ActionsDialog_Actions=Actions : -ActionsDialog_Command=Commande : -ActionsDialog_Description=Description : ActionsDialog_Detail=Détail de l'action : ActionsDialog_DisplayPath=Chemin de l'affichage : ActionsDialog_ExecuteAll=Exécuter toutes les actions en une seule fois @@ -13,8 +11,6 @@ ActionsDialog_PVName=Nom du PV : ActionsDialog_ScriptPath=Fichier de script : ActionsDialog_ScriptText=Texte du script intégré : ActionsDialog_Title=Actions -ActionsDialog_URL=URL : -ActionsDialog_Value=Valeur : Add=Ajouter AddEmbeddedJavaScript=Ajouter JavaScript intégré\u2026 AddEmbeddedPython=Ajouter Python intégré\u2026 diff --git a/app/display/runtime/src/main/resources/org/csstudio/display/builder/runtime/messages_fr.properties b/app/display/runtime/src/main/resources/org/csstudio/display/builder/runtime/messages_fr.properties index 0971e6a4aa..226085eb08 100644 --- a/app/display/runtime/src/main/resources/org/csstudio/display/builder/runtime/messages_fr.properties +++ b/app/display/runtime/src/main/resources/org/csstudio/display/builder/runtime/messages_fr.properties @@ -1,3 +1,4 @@ +AppendPVNameToClipboard=Copier: Ajout PV au presse-papier NavigateBack_TT=Ouvrir l'affichage précédent NavigateForward_TT=Ouvrir l'affichage suivant OpenDataBrowser=Ouvrir le navigateur de données diff --git a/app/filebrowser/src/main/resources/org/phoebus/applications/filebrowser/messages_fr.properties b/app/filebrowser/src/main/resources/org/phoebus/applications/filebrowser/messages_fr.properties index 3a648314c0..9013087aec 100644 --- a/app/filebrowser/src/main/resources/org/phoebus/applications/filebrowser/messages_fr.properties +++ b/app/filebrowser/src/main/resources/org/phoebus/applications/filebrowser/messages_fr.properties @@ -44,3 +44,4 @@ Refresh=Rafraîchir Rename=Renommer RenameHdr=Entrez le nouveau nom : RenameJobName=Renommer +SetBaseDirectory=Positionner le chemin dans le navigateur diff --git a/app/logbook/olog/ui/src/main/resources/org/phoebus/logbook/olog/ui/messages_fr.properties b/app/logbook/olog/ui/src/main/resources/org/phoebus/logbook/olog/ui/messages_fr.properties index a4ad147c15..76dc2eb6df 100644 --- a/app/logbook/olog/ui/src/main/resources/org/phoebus/logbook/olog/ui/messages_fr.properties +++ b/app/logbook/olog/ui/src/main/resources/org/phoebus/logbook/olog/ui/messages_fr.properties @@ -7,11 +7,16 @@ AllTypes=Tous types Apply=Appliquer ArchivedDownloadFailed=Échec du téléchargement des entrées de journal archivées ArchivedNoEntriesFound=Aucune entrée de journal archivée associée à l''ID {0} +AttachmentsDirectoryNotWritable=La pièce jointe du répertoire {0} n'est pas modifiable ArchivedSaveFailed=Échec de l'enregistrement des entrées de journal archivées dans le fichier +AttachmentsNoStorage=Pas de disque pour les pièces jointes ArchivedLaunchExternalAppFailed=Impossible de lancer l''application externe pour afficher le fichier "{0}". Veuillez vérifier vos paramètres. Author=Auteur : Attachments=Pièces jointes +AttachmentsDirectoryFailedCreate=Echec de création de répertoire {0} pour pièce jointe +AttachmentsFileNotDirectory=Le fichier {0} existe mais ce n'est pas un répertoire AttachmentsSearchProperty=Pièces jointes : +Back=Retour BrowseButton=Parcourir Cancel=Annuler CancelTooltip=Annuler l'entrée en cours. @@ -30,6 +35,7 @@ CurrentDate=Date actuelle Date=Date : DownloadSelected=Télécharger les éléments sélectionnés DownloadingAttachments=Téléchargement des pièces jointes +EditLogEntry=Editer la log d'entrée EmbedImage=Intégrer une nouvelle image EmbedImageTooltip=Intégrer une image à partir d'un fichier ou du presse-papiers dans le corps de l'entrée de journal EmbedSelected=Intégrer les éléments sélectionnés @@ -40,6 +46,7 @@ File=Fichier FileSave=Enregistrer la pièce jointe FileSaveFailed=Échec de l'enregistrement de la pièce jointe. FileTooLarge=Le fichier {0} est trop grand, les fichiers sélectionnés n''ont pas été ajoutés. +Forward=Suivant GoToFirstPage=Aller à la première page GoToLastPage=Aller à la dernière page GroupingFailed=Échec de la création du groupe, les entrées de journal sont déjà contenues dans différents groupes. @@ -49,7 +56,9 @@ HitsPerPage=Résultats par page : ImageWidth=Largeur ImageHeight=Hauteur Level=Niveau +Logbook=Journal Logbooks=Journaux : +LogbookNotSupported=Pas de journal supporté LogbookServiceUnavailableTitle=Impossible de créer une entrée de journal LogbookServiceHasNoLogbooks=Le service de journal "{0}" n''a pas de journaux ou n''est pas disponible. LogbooksSearchFailTitle=Erreur de recherche de journal @@ -75,6 +84,7 @@ Remove=Supprimer Remove_Tooltip=Supprimer les éléments sélectionnés. RequestTooLarge=La taille totale des fichiers dépasse la limite, les fichiers sélectionnés n'ont pas été ajoutés. Reply=Répondre +ReplyToLogEntry=Répondre à la log d'entrée ScalingFactor=Facteur d'échelle SearchButtonText=Rechercher : Search=Rechercher disponible : diff --git a/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages_fr.properties b/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages_fr.properties index a68ef8ca64..bbf0308d28 100644 --- a/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages_fr.properties +++ b/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages_fr.properties @@ -1,12 +1,20 @@ +actionDescription=Description: +actionOpenFilterDescription=Ouvrir le filtre SaR +actionOpenNodeDescription=Ouvrir le noeud SaR +actionOpenFilterId=id du filtre: +actionOpenNodeId=id du noeud: add=Ajouter alertContinue=Souhaitez-vous continuer ? alertAddingPVsToConfiguration=Ajout de PV à la configuration +archiver=Archivage authenticationFailed=Authentification échouée baseSetpoint=Consigne de base browseForLocation=Parcourir pour sélectionner l'emplacement buttonSearch=Ouvrir la fenêtre de recherche de capture instantanée/étiquette +cancel=Annuler cannotCompareHeader=Aucune donnée de capture instantanée disponible pour la comparaison. cannotCompareTitle=Impossible de comparer +choose=Choisir closeConfigurationWarning=Configuration modifiée, mais non enregistrée. Souhaitez-vous continuer ? closeCompositeSnapshotWarning=Capture instantanée composite modifiée, mais non enregistrée. Souhaitez-vous continuer ? closeTabPrompt=Fermer l'onglet ? @@ -25,6 +33,7 @@ contextMenuAddTag=Ajouter une étiquette contextMenuAddTagWithComment=Ajouter une étiquette avec commentaire contextMenuCreateSnapshot=Créer une capture instantanée contextMenuCompareSnapshots=Comparer les captures instantanées +contextMenuCompareSnapshotWithArchiverData=Comparer avec les données archivées contextMenuDelete=Supprimer Edit=Modifier contextMenuNewFolder=Nouveau dossier @@ -38,9 +47,10 @@ contextMenuRemoveGoldenTag=Supprimer l'étiquette dorée contextMenuTagAsGolden=Ajouter l'étiquette dorée contextMenuTags=Étiquettes contextMenuTagsWithComment=Étiquettes avec commentaire -copyOrMoveNotAllowedBody=La sélection ne peut pas être déplacée/copier vers le n?ud cible spécifié. +copyOrMoveNotAllowedBody=La sélection ne peut pas être déplacée/copier vers le noeud cible spécifié. copyOrMoveNotAllowedHeader=Impossible de déplacer ou copier la sélection. copyUniqueIdToClipboard=Copier l'identifiant unique dans le presse-papiers +copyUniqueIdAsResourceToClipboard=Copy l'identifiant en tant que URL dans le presse-papiers createdBy=Créé par createCompositeSnapshotFailed=Échec de la création de la capture instantanée composite createConfigurationFailed=Échec de la création de la configuration @@ -51,6 +61,7 @@ currentPVValue=Valeur actuelle du PV currentReadbackValue=Valeur actuelle de retour PV currentSetpointValue=Valeur actuelle de consigne cut=Couper +dateTimePickerTitle=Selectionner une date et une heure deleteFilter=Supprimer le filtre deleteFilterFailed=Échec de la suppression du filtre description=Description @@ -70,7 +81,8 @@ errorUnableToRetrieveData=Impossible de récupérer les données exportConfigurationLabel=Exporter la configuration en CSV exportSnapshotLabel=Exporter la capture instantanée en CSV exportSnapshotFailed=Échec de l'exportation de la capture instantanée -faildDeleteFilter=Échec de la suppression du filtre +failedDeleteFilter=Échec de la suppression du filtre +failedGetFilters=Échec de récupération des filters failedSaveFilter=Échec de l'enregistrement du filtre failedToPasteObjects=Échec du collage des objets filter=Filtre @@ -85,6 +97,7 @@ filterEditorStartTime=Heure de début filterEditorEndTime=Heure de fin filterEditorUser=Utilisateur filterName=Nom du filtre +filterNotFound=Filtre "{0}" non trouvé filterQueryColumn=Requête filterLastUpdatedColumn=Dernière mise à jour filterUserColumn=Utilisateur @@ -103,6 +116,8 @@ labelThreshold=\u0394 Seuil (%) lastModifiedDate=Dernière modification liveReadbackVsSetpoint=Retour en direct\n(? Consigne en direct) liveSetpoint=Consigne en direct +logAction=Créer une nouvelle entrée +logActionTooltip=Créer automatiquement une entrée après sauvegarde et restauration comlète login=Se connecter loggingFailedTitle=Échec de la journalisation loggingFailed=Impossible de créer une entrée de journal @@ -143,6 +158,8 @@ pvNameReadbackTooltip=Une liste de noms de retour PV séparés par des espaces o pvReadOnly=Lecture seule query=Requête : readbackPVName=Retour\nNom PV +readSnapshotFromArchiver=Lire depuis l'archivage +readSnapshotFromPVs=Lire depuis les PVs restore=Restaurer restoreAndLog=Restaurer et journaliser restoreErrorTitle=Erreur de restauration @@ -183,6 +200,8 @@ setpointPVWhen=Valeur de consigne du PV lorsque la capture instantanée {0} a é severity=Gravité snapshot=Capture instantanée snapshotDescription=Description +snapshotFromArchiver=Depuis l'archivage +snapshotFromPvs=Lire depuis les PVs snapshotList=Liste des captures instantanées snapshotLocation=Emplacement snapshotName=Nom @@ -213,6 +232,7 @@ tagCommentLabel=Commentaire tagRemoveConfirmationTitle=Supprimer l'étiquette tagRemoveConfirmationContent=Êtes-vous sûr de vouloir supprimer l'étiquette des captures instantanées sélectionnées ? takeSnapshot=Prendre une capture instantanée +takeSnapshotFailed=Échec lors de la capture instantanée timestamp=Horodatage Time=Heure StartTime=Heure de début diff --git a/core/framework/src/test/java/org/phoebus/framework/nls/NLSMessagesTest.java b/core/framework/src/test/java/org/phoebus/framework/nls/NLSMessagesTest.java index 6ef6900935..9d6ac07e69 100644 --- a/core/framework/src/test/java/org/phoebus/framework/nls/NLSMessagesTest.java +++ b/core/framework/src/test/java/org/phoebus/framework/nls/NLSMessagesTest.java @@ -7,14 +7,22 @@ ******************************************************************************/ package org.phoebus.framework.nls; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import java.io.File; +import java.io.FileInputStream; +import java.io.FilenameFilter; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; import java.util.Locale; +import java.util.Properties; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; /** JUnit test of the {@link NLS} message initialization @@ -28,15 +36,16 @@ public class NLSMessagesTest public static String Bye; public static String HowAreYou; public static String MissingMessage; - + public static String AppVersion; private static Locale original; + private static final String MESSAGE = "messages"; // They are initialized from a "messages*.properties" file in the same package, // typically using 'static' code like this: // // static // { - // NLS.initializeMessages(NLSMessagesTest.class); + // NLS.initializeMessages(NLSMessagesTest.class); // } // // For the test, we call NLS.initializeMessages with various locates @@ -89,10 +98,203 @@ public void testMissingMessages() System.out.println("Message missing from all localizations: " + MissingMessage); assertThat(MissingMessage, equalTo("")); } + + /** Check if all the messages file are synchronized with the default one */ + @Test + public void testUpdateMessages() { + System.out.println("**compare messages.properties files***"); + URL resource = NLSMessagesTest.class.getResource(MESSAGE + ".properties"); + List difference = NLSMessagesTest.checkMessageFilesDifferences(resource.getFile()); + System.out.println("**There is " + (difference != null ? difference.size() : 0) + " difference(s) found**"); + boolean appversionFound = false; + if (difference != null && !difference.isEmpty()) { + for (String dif : difference) { + System.out.println(dif); + appversionFound = !appversionFound && dif.contains("AppVersion"); + } + } + + assertThat("Env variable value is ignored", !appversionFound); + assertThat("Differences between properties", difference.size() == 3); + } + + @Test + public void checkAllMessagesResources() { + List differences = NLSMessagesTest.checkAllMessageFilesDifferences(); + if (differences != null && !differences.isEmpty()) { + System.out.println("WARNING ! there is " + differences.size() + " difference(s) detected in Messages_{LOCAL}.properties files"); + } + //assertThat("All resources are synchronize ", differences.isEmpty()); + } @AfterAll - public static void restoreLocale() - { + public static void restoreLocale() { Locale.setDefault(original); } + + + /** + * Use for unit test only + * Check if all the existing messages_{LOCALE}.properties are synchronized on default messages.propertiesresource in the project + * + * @return the list of difference between the default resources , null or empty if it is synchronized + */ + public static List checkAllMessageFilesDifferences(){ + List differences = new ArrayList<>(); + URL resource = NLSMessagesTest.class.getResource(MESSAGE + ".properties"); + if (resource != null) { + String filePath = resource.getFile(); + System.out.println(filePath); + String[] split = filePath.split("/core/framework/"); + //First part is the parent folder + String parentFolder = split != null && split.length > 0 ? split[0] : null; + System.out.println("parentFolder=" + parentFolder); + File parentFile = new File(parentFolder); + List fileList = listMessagesFiles(parentFile); + + for (File file : fileList) { + List diff = NLSMessagesTest.checkMessageFilesDifferences(file.getAbsolutePath()); + if (diff != null && !diff.isEmpty()) { + differences.addAll(diff); + } + } + + if(differences.isEmpty()) { + System.out.println("All the "+ MESSAGE+ "_{LOCALE}.properties files are syncronized "); + } + else { + System.out.println("**There is " + differences.size() + " difference(s) found**"); + for (String dif : differences) { + System.out.println(dif); + } + } + } + return differences; + } + + /** + * Use for unit test only + * Check if the existing messages_{LOCALE}.properties are synchronized on default messages.propertiesresource + * + * @param clazz Class relative to which message resources are located + * @return the list of difference between the default ressources , null or empty if it is synchronized + */ + private static List checkMessageFilesDifferences(String resourceFile) { + List differences = new ArrayList<>(); + if (resourceFile != null) { + try { + File defaultFile = new File(resourceFile); + Properties defaultBundle = new Properties(); + defaultBundle.load(new FileInputStream(defaultFile)); + File parent = defaultFile.getParentFile(); + FilenameFilter fileNameFilter = new FilenameFilter() { + + @Override + public boolean accept(File dir, String name) { + return name.startsWith(MESSAGE) && name.endsWith(".properties"); + } + }; + + File[] listFiles = parent.listFiles(fileNameFilter); + if (listFiles != null && listFiles.length > 0) { + // System.out.println("Number of languages found =" + listFiles.length); + String fileName = null; + String countryCode = null; + String countryName = null; + Properties compareBundle = null; + Object key = null; + String value = null; + Locale locale = null; + Enumeration compareKeys = null; + Enumeration defaultKeys = null; + for (File tmpFile : listFiles) { + fileName = tmpFile.getName(); + // Do not compare to itself + if (!fileName.equalsIgnoreCase(defaultFile.getName())) { + // Extract the country code + countryCode = fileName.replaceFirst(MESSAGE + "_", ""); + countryCode = countryCode.replace(".properties", ""); + locale = getLocaleFromCountryCode(countryCode); + if (locale != null) { + countryName = locale.getDisplayCountry(); + compareBundle = new Properties(); + compareBundle.load(new FileInputStream(tmpFile)); + // Check if the key exist in the LOCAL file + // System.out.println("Compare " + tmpFile.getName() + " to " + defaultFile.getName()); + defaultKeys = defaultBundle.keys(); + while (defaultKeys.hasMoreElements()) { + key = defaultKeys.nextElement(); + if (!compareBundle.containsKey(key)) { + // Ignore env variables eg ${revision} + value = String.valueOf(defaultBundle.get(key)); + if (!(value.startsWith("${") && value.endsWith("}"))) { + differences.add("Missing " + key + " in " + countryName + " resource " + + tmpFile.getAbsolutePath()); + } + } + } + + // Check if there are some key to remove in LOCAL file + compareKeys = compareBundle.keys(); + while (compareKeys.hasMoreElements()) { + key = compareKeys.nextElement(); + if (!defaultBundle.containsKey(key)) { + differences.add("Remove " + key + " in " + countryName + " resource " + + tmpFile.getAbsolutePath()); + } + } + } + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + return differences; + } + + private static List listMessagesFiles(File folder) { + String filename = MESSAGE + ".properties"; + List fileList = new ArrayList<>(); + //Ignore target folder from build + if(folder != null && folder.isDirectory() + && !folder.getAbsolutePath().contains("\\target\\") + && !folder.getAbsolutePath().contains("\\test\\")) { + File[] listFiles = folder.listFiles(); + for(File file : listFiles) { + if(file.isDirectory()) { + List list = listMessagesFiles(file); + fileList.addAll(list); + } + else if (file.getName().equals(filename)){ + fileList.add(file); + } + } + } + return fileList; + } + + + /** + * To get Locale from a countryCode + * + * @param countryCode (fr , en ..." + * @return Locale + */ + private static Locale getLocaleFromCountryCode(String countryCode) { + Locale localFound = null; + if (countryCode != null && !countryCode.isEmpty()) { + Locale[] availableLocales = Locale.getAvailableLocales(); + for (Locale locale : availableLocales) { + if (locale.getCountry().toLowerCase().equals(countryCode.toLowerCase())) { + localFound = locale; + break; + } + } + } + return localFound; + } + } diff --git a/core/framework/src/test/resources/org/phoebus/framework/nls/messages.properties b/core/framework/src/test/resources/org/phoebus/framework/nls/messages.properties index 3d058c3f40..da46a2e067 100644 --- a/core/framework/src/test/resources/org/phoebus/framework/nls/messages.properties +++ b/core/framework/src/test/resources/org/phoebus/framework/nls/messages.properties @@ -1,3 +1,5 @@ Hello=Hello Bye=Bye -HowAreYou=How are you? \ No newline at end of file +HowAreYou=How are you? +NewLabel=new label +AppVersion=${version} \ No newline at end of file diff --git a/core/framework/src/test/resources/org/phoebus/framework/nls/messages_de.properties b/core/framework/src/test/resources/org/phoebus/framework/nls/messages_de.properties index 2790ef8a32..daee661e9e 100644 --- a/core/framework/src/test/resources/org/phoebus/framework/nls/messages_de.properties +++ b/core/framework/src/test/resources/org/phoebus/framework/nls/messages_de.properties @@ -2,3 +2,4 @@ # German Umlaut characters need to be represented by Unicode escape "\u1234" Hello=Moin Bye=Tsch\u00FCss +NewLabel=Neues Etikett diff --git a/core/framework/src/test/resources/org/phoebus/framework/nls/messages_fr.properties b/core/framework/src/test/resources/org/phoebus/framework/nls/messages_fr.properties index ffb11f155e..023e577888 100644 --- a/core/framework/src/test/resources/org/phoebus/framework/nls/messages_fr.properties +++ b/core/framework/src/test/resources/org/phoebus/framework/nls/messages_fr.properties @@ -1,3 +1,4 @@ Hello=Bonjour Bye=Au revoir HowAreYou=Comment ça va ? +LabelFrench=Label français