diff --git a/core/src/main/java/org/jivesoftware/MainWindow.java b/core/src/main/java/org/jivesoftware/MainWindow.java index e4543af00..63eab6a03 100644 --- a/core/src/main/java/org/jivesoftware/MainWindow.java +++ b/core/src/main/java/org/jivesoftware/MainWindow.java @@ -145,12 +145,14 @@ private MainWindow(String title, ImageIcon icon) { public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setMainWindowBounds( getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setMainWindowBounds( getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); diff --git a/core/src/main/java/org/jivesoftware/resource/Default.java b/core/src/main/java/org/jivesoftware/resource/Default.java index ed487de4a..7676d1508 100644 --- a/core/src/main/java/org/jivesoftware/resource/Default.java +++ b/core/src/main/java/org/jivesoftware/resource/Default.java @@ -148,6 +148,13 @@ public class Default { public static final String PROXY_PROTOCOL = "PROXY_PROTOCOL"; public static final String IDLE_LOCK = "IDLE_LOCK"; public static final String IDLE_TIME = "IDLE_TIME"; + public static final String UNFILEDGROUP_DISABLED = "UNFILEDGROUP_DISABLED"; + public static final String ALLOW_NICKNAME_CHANGE_DISABLED = "ALLOW_NICKNAME_CHANGE_DISABLED"; + public static final String CONFERENCE_BUTTON_SETTINGS_DISABLED = "CONFERENCE_BUTTON_SETTINGS_DISABLED"; + public static final String CONFERENCE_BUTTON_REGISTER_DISABLED = "CONFERENCE_BUTTON_REGISTER_DISABLED"; + public static final String SHOW_FULL_JID_ADDRESS = "SHOW_FULL_JID_ADDRESS"; + public static final String EDIT_AVATAR_ONLY = "EDIT_AVATAR_ONLY"; + public static final String DISABLE_LOOKUP_PROFILE = "DISABLE_LOOKUP_PROFILE"; private static final ClassLoader cl = SparkRes.class.getClassLoader(); diff --git a/core/src/main/java/org/jivesoftware/spark/ui/BroadcastHistoryFrame.java b/core/src/main/java/org/jivesoftware/spark/ui/BroadcastHistoryFrame.java index 27d2914ca..6c606e266 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/BroadcastHistoryFrame.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/BroadcastHistoryFrame.java @@ -133,12 +133,14 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setBroadcastHistoryBounds( getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setBroadcastHistoryBounds( getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); } diff --git a/core/src/main/java/org/jivesoftware/spark/ui/ChatFrame.java b/core/src/main/java/org/jivesoftware/spark/ui/ChatFrame.java index b6b62af93..dd35dc2df 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/ChatFrame.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/ChatFrame.java @@ -101,6 +101,7 @@ public void componentResized( ComponentEvent e ) if ( e.getComponent().getClass().getSimpleName().equalsIgnoreCase( "ChatFrame" ) ) { LayoutSettingsManager.getLayoutSettings().setChatFrameBounds( getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } @@ -111,6 +112,7 @@ public void componentMoved( ComponentEvent e ) if ( e.getComponent().getClass().getSimpleName().equalsIgnoreCase( "ChatFrame" ) ) { LayoutSettingsManager.getLayoutSettings().setChatFrameBounds( getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } } ); diff --git a/core/src/main/java/org/jivesoftware/spark/ui/ContactInfoWindow.java b/core/src/main/java/org/jivesoftware/spark/ui/ContactInfoWindow.java index ac6d76626..e807eef91 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/ContactInfoWindow.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/ContactInfoWindow.java @@ -29,6 +29,7 @@ import javax.swing.JTextArea; import javax.swing.JWindow; +import org.jivesoftware.resource.Default; import org.jivesoftware.resource.Res; import org.jivesoftware.resource.SparkRes; import org.jivesoftware.smack.packet.Presence; @@ -39,6 +40,7 @@ import org.jivesoftware.spark.util.GraphicUtils; import org.jivesoftware.spark.util.ModelUtil; import org.jivesoftware.spark.util.log.Log; +import org.jivesoftware.sparkimpl.plugin.manager.Enterprise; import org.jivesoftware.sparkimpl.plugin.gateways.transports.Transport; import org.jivesoftware.sparkimpl.plugin.gateways.transports.TransportUtils; import org.jxmpp.jid.Jid; @@ -270,10 +272,30 @@ public void customizeUI(ContactItem contactItem) { Transport transport = TransportUtils.getTransport(contactItem.getJid().asDomainBareJid()); if (transport != null) { fullJIDLabel.setIcon(transport.getIcon()); - fullJIDLabel.setText(transport.getName() + " - " + contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + //fullJIDLabel.setText(transport.getName() + " - " + contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + //if (Default.getBoolean(Default.SHOW_FULL_JID_ADDRESS) && Enterprise.containsFeature(Enterprise.SHOW_FULL_JID_ADDRESS_FEATURE)) { + // fullJIDLabel.setText(transport.getName() + " - " + contactItem.getJid().asUnescapedString()); + // } else { + // fullJIDLabel.setText(transport.getName() + " - " + contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + // } + if (Default.getBoolean(Default.SHOW_FULL_JID_ADDRESS)) { + fullJIDLabel.setText(transport.getName() + " - " + contactItem.getJid().asUnescapedString()); + } else { + fullJIDLabel.setText(transport.getName() + " - " + contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + } } else { - fullJIDLabel.setText(contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + //fullJIDLabel.setText(contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + //if (Default.getBoolean(Default.SHOW_FULL_JID_ADDRESS) && Enterprise.containsFeature(Enterprise.SHOW_FULL_JID_ADDRESS_FEATURE)) { + // fullJIDLabel.setText(contactItem.getJid().asUnescapedString()); + // } else { + // fullJIDLabel.setText(contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + // } + if (Default.getBoolean(Default.SHOW_FULL_JID_ADDRESS)) { + fullJIDLabel.setText(contactItem.getJid().asUnescapedString()); + } else { + fullJIDLabel.setText(contactItem.getJid().getLocalpartOrThrow().asUnescapedString()); + } fullJIDLabel.setIcon(null); } diff --git a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java index e62e5212c..e048a2e81 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java @@ -197,7 +197,9 @@ public ContactList() { } // Add ActionListener(s) to menus - addContactGroup(unfiledGroup); + //addContactGroup(unfiledGroup); + //if (!Default.getBoolean(Default.UNFILEDGROUP_DISABLED) && Enterprise.containsFeature(Enterprise.UNFILEDGROUP_FEATURE)) addContactGroup(unfiledGroup); + if (!Default.getBoolean(Default.UNFILEDGROUP_DISABLED)) addContactGroup(unfiledGroup); addContactGroup(offlineGroup); showHideMenu.setSelected(false); diff --git a/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java b/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java index c1e90fab6..4474351c6 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/conferences/ConferenceRoomBrowser.java @@ -649,12 +649,14 @@ public void keyPressed(KeyEvent e) { public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setConferenceRoomBrowserBounds( dlg.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setConferenceRoomBrowserBounds( dlg.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); diff --git a/core/src/main/java/org/jivesoftware/spark/ui/conferences/DataFormDialog.java b/core/src/main/java/org/jivesoftware/spark/ui/conferences/DataFormDialog.java index f5ecf0462..0306b8fde 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/conferences/DataFormDialog.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/conferences/DataFormDialog.java @@ -195,7 +195,8 @@ public DataFormDialog(JFrame parent, final MultiUserChat chat, final FillableFor dialog.getContentPane().add(bottomPanel, BorderLayout.SOUTH); dialog.pack(); - dialog.setSize(600, 400); + //dialog.setSize(600, 400); + dialog.setSize(710, 470); GraphicUtils.centerWindowOnScreen(dialog); dialog.setVisible(true); diff --git a/core/src/main/java/org/jivesoftware/spark/ui/conferences/GroupChatParticipantList.java b/core/src/main/java/org/jivesoftware/spark/ui/conferences/GroupChatParticipantList.java index 37fe92e51..6374a1fa9 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/conferences/GroupChatParticipantList.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/conferences/GroupChatParticipantList.java @@ -16,6 +16,7 @@ package org.jivesoftware.spark.ui.conferences; import org.jdesktop.swingx.JXList; +import org.jivesoftware.resource.Default; import org.jivesoftware.resource.Res; import org.jivesoftware.resource.SparkRes; import org.jivesoftware.smack.PresenceListener; @@ -39,6 +40,7 @@ import org.jivesoftware.spark.ui.rooms.GroupChatRoom; import org.jivesoftware.spark.util.ModelUtil; import org.jivesoftware.spark.util.log.Log; +import org.jivesoftware.sparkimpl.plugin.manager.Enterprise; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.SettingsManager; import org.jxmpp.jid.BareJid; @@ -695,7 +697,9 @@ public void actionPerformed(ActionEvent actionEvent) { SparkRes.getImageIcon(SparkRes.TYPING_TRAY)); if (allowNicknameChange) { - popup.add(changeNicknameAction); + //popup.add(changeNicknameAction); + //if (!Default.getBoolean(Default.ALLOW_NICKNAME_CHANGE_DISABLED) && Enterprise.containsFeature(Enterprise.ALLOW_NICKNAME_CHANGE_FEATURE)) popup.add(changeNicknameAction); + if (!Default.getBoolean(Default.ALLOW_NICKNAME_CHANGE_DISABLED)) popup.add(changeNicknameAction); } } @@ -988,7 +992,9 @@ public void actionPerformed(ActionEvent actionEvent) { SparkRes.getImageIcon(SparkRes.CONFERENCE_IMAGE_16x16)); if (index != -1) { - popup.addSeparator(); + //popup.addSeparator(); + //if (!Default.getBoolean(Default.ALLOW_NICKNAME_CHANGE_DISABLED) && Enterprise.containsFeature(Enterprise.ALLOW_NICKNAME_CHANGE_FEATURE)) popup.addSeparator(); + if (!Default.getBoolean(Default.ALLOW_NICKNAME_CHANGE_DISABLED)) popup.addSeparator(); } popup.add(inviteAction); diff --git a/core/src/main/java/org/jivesoftware/spark/ui/conferences/InvitationDialog.java b/core/src/main/java/org/jivesoftware/spark/ui/conferences/InvitationDialog.java index 88ff9eedb..9f758de37 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/conferences/InvitationDialog.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/conferences/InvitationDialog.java @@ -295,7 +295,8 @@ public void inviteUsersToRoom(final DomainBareJid serviceName, Collection { diff --git a/core/src/main/java/org/jivesoftware/spark/ui/conferences/RoomCreationDialog.java b/core/src/main/java/org/jivesoftware/spark/ui/conferences/RoomCreationDialog.java index 1edfd3372..c2d84c7dd 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/conferences/RoomCreationDialog.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/conferences/RoomCreationDialog.java @@ -118,7 +118,8 @@ public MultiUserChat createGroupChat(Component parent, final DomainBareJid servi dlg.pack(); dlg.setSize(400, 350); dlg.setContentPane(mainPanel); - dlg.setLocationRelativeTo(parent); + //dlg.setLocationRelativeTo(parent); + dlg.setLocationRelativeTo(null); PropertyChangeListener changeListener = new PropertyChangeListener() { diff --git a/core/src/main/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java b/core/src/main/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java index 7281cb781..ac7d36120 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/rooms/GroupChatRoom.java @@ -16,6 +16,7 @@ */ package org.jivesoftware.spark.ui.rooms; +import org.jivesoftware.resource.Default; import org.jivesoftware.resource.Res; import org.jivesoftware.resource.SparkRes; import org.jivesoftware.smack.SmackException; @@ -48,6 +49,7 @@ import org.jivesoftware.spark.util.ModelUtil; import org.jivesoftware.spark.util.UIComponentRegistry; import org.jivesoftware.spark.util.log.Log; +import org.jivesoftware.sparkimpl.plugin.manager.Enterprise; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.SettingsManager; import org.jxmpp.jid.*; @@ -278,9 +280,13 @@ public boolean handleDefaultAction( MouseEvent e ) final RolloverButton thema = UIComponentRegistry.getButtonFactory().createTemaButton(); final RolloverButton register = UIComponentRegistry.getButtonFactory().createRegisterButton(); - addControllerButton( settings ); + //addControllerButton( settings ); + //if (!Default.getBoolean(Default.CONFERENCE_BUTTON_SETTINGS_DISABLED) && Enterprise.containsFeature(Enterprise.CONFERENCE_BUTTON_SETTINGS_FEATURE)) addControllerButton( settings ); + if (!Default.getBoolean(Default.CONFERENCE_BUTTON_SETTINGS_DISABLED)) addControllerButton( settings ); addControllerButton( thema ); - addControllerButton( register ); + //addControllerButton( register ); + //if (!Default.getBoolean(Default.CONFERENCE_BUTTON_REGISTER_DISABLED) && Enterprise.containsFeature(Enterprise.CONFERENCE_BUTTON_REGISTER_FEATURE)) addControllerButton( register ); + if (!Default.getBoolean(Default.CONFERENCE_BUTTON_REGISTER_DISABLED)) addControllerButton( register ); settings.addActionListener( new AbstractAction() { diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/alerts/BroadcastDialog.java b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/alerts/BroadcastDialog.java index 524427674..0506f3cc3 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/alerts/BroadcastDialog.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/alerts/BroadcastDialog.java @@ -238,12 +238,14 @@ public void invokeDialog() { public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setBroadcastMessageBounds( dlg.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setBroadcastMessageBounds( dlg.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/bookmarks/BookmarkPlugin.java b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/bookmarks/BookmarkPlugin.java index 7df590e38..a222bce58 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/bookmarks/BookmarkPlugin.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/bookmarks/BookmarkPlugin.java @@ -80,6 +80,9 @@ public void initialize() { if (bookmarkMenu.getMenuComponentCount() > 0) { SparkManager.getMainWindow().getMenu().add(bookmarkMenu, 3); + bookmarkMenu.setVisible(false); + int numberOfBookmark = bookmarkMenu.getItemCount(); + if (numberOfBookmark > 1 ) bookmarkMenu.setVisible(true); } BookmarksUI bookmarksUi = ConferenceServices.getBookmarkedConferences(); @@ -123,6 +126,9 @@ public void rescan(JMenu bookmarkMenu) { SparkManager.getMainWindow().getMenu().invalidate(); SparkManager.getMainWindow().getMenu().validate(); SparkManager.getMainWindow().getMenu().repaint(); + bookmarkMenu.setVisible(false); + int numberOfBookmark = bookmarkMenu.getItemCount(); + if (numberOfBookmark > 1 ) bookmarkMenu.setVisible(true); } catch (XMPPException | SmackException | InterruptedException ex) { Log.error(ex); } diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/manager/Enterprise.java b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/manager/Enterprise.java index 29aee5d76..948672ed6 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/manager/Enterprise.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/manager/Enterprise.java @@ -71,6 +71,13 @@ public class Enterprise { public static final String VERSION_AS_RESOURCE_FEATURE = "version-as-resource"; public static final String PLUGINS_BLACKLIST_NODE = "spark-plugins-blacklist"; public static final String IDLE_FEATURE = "idle"; + public static final String UNFILEDGROUP_FEATURE = "unfiledGroup"; + public static final String ALLOW_NICKNAME_CHANGE_FEATURE = "nickname-change"; + public static final String CONFERENCE_BUTTON_SETTINGS_FEATURE = "conference-settings-button"; + public static final String CONFERENCE_BUTTON_REGISTER_FEATURE = "conference-register-button"; + public static final String SHOW_FULL_JID_ADDRESS_FEATURE = "full-jid-address"; + public static final String EDIT_AVATAR_FEATURE = "edit-avatar-only"; + public static final String DISABLE_LOOKUP_PROFILE_FEATURE = "disable-lookup-profile"; public static final String IBB_FEATURE = "ibb-only"; diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/scratchpad/ScratchPadPlugin.java b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/scratchpad/ScratchPadPlugin.java index 0cfbfc02a..8bd79007a 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/scratchpad/ScratchPadPlugin.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/scratchpad/ScratchPadPlugin.java @@ -306,7 +306,8 @@ public void actionPerformed(ActionEvent e) { frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(pane, BorderLayout.CENTER); frame.pack(); - frame.setSize(400, 400); + //frame.setSize(400, 400); + frame.setSize(600, 400); final Action saveAction = new AbstractAction() { private static final long serialVersionUID = -4287799161421970177L; @@ -465,7 +466,8 @@ public void keyReleased(KeyEvent e) { mainPanel.add(cancelButton, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); frame.pack(); - frame.setSize(400, 400); + //frame.setSize(400, 400); + frame.setSize(600, 400); GraphicUtils.centerWindowOnComponent(frame, SparkManager.getMainWindow()); diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/transcripts/HistoryTranscript.java b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/transcripts/HistoryTranscript.java index 3b42a3a9c..8eb1f008b 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/transcripts/HistoryTranscript.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/transcripts/HistoryTranscript.java @@ -705,7 +705,8 @@ protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirem frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(mainPanel, BorderLayout.CENTER); frame.pack(); - frame.setSize(600, 400); + //frame.setSize(600, 400); + frame.setSize(800, 600); window.setCaretPosition(0); window.requestFocus(); GraphicUtils.centerWindowOnScreen(frame); diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/viewer/PluginViewer.java b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/viewer/PluginViewer.java index 26bb125ae..cddcb5606 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/plugin/viewer/PluginViewer.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/plugin/viewer/PluginViewer.java @@ -259,12 +259,14 @@ private void invokeViewer() public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setPluginViewerBounds( dialog.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setPluginViewerBounds( dialog.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/preference/PreferenceDialog.java b/core/src/main/java/org/jivesoftware/sparkimpl/preference/PreferenceDialog.java index 8587c8dfc..3bd88b427 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/preference/PreferenceDialog.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/preference/PreferenceDialog.java @@ -111,12 +111,14 @@ public void invoke( JFrame parentFrame, PreferencesPanel contentPane ) public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setPreferencesBounds( preferenceDialog.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setPreferencesBounds( preferenceDialog.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); } diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java b/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java index 23cf5c600..a02a41e94 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java @@ -81,14 +81,20 @@ public void editProfile(final VCard vCard, JComponent parent) { // Initialize Panels personalPanel = new PersonalPanel(); + //if (Default.getBoolean(Default.EDIT_AVATAR_ONLY) && Enterprise.containsFeature(Enterprise.EDIT_AVATAR_FEATURE)) personalPanel.allowEditing(false); + if (Default.getBoolean(Default.EDIT_AVATAR_ONLY)) personalPanel.allowEditing(false); personalPanel.showJID(false); tabbedPane.addTab(Res.getString("tab.personal"), personalPanel); businessPanel = new BusinessPanel(); + //if (Default.getBoolean(Default.EDIT_AVATAR_ONLY) && Enterprise.containsFeature(Enterprise.EDIT_AVATAR_FEATURE)) businessPanel.allowEditing(false); + if (Default.getBoolean(Default.EDIT_AVATAR_ONLY)) businessPanel.allowEditing(false); tabbedPane.addTab(Res.getString("tab.business"), businessPanel); homePanel = new HomePanel(); + //if (Default.getBoolean(Default.EDIT_AVATAR_ONLY) && Enterprise.containsFeature(Enterprise.EDIT_AVATAR_FEATURE)) homePanel.allowEditing(false); + if (Default.getBoolean(Default.EDIT_AVATAR_ONLY)) homePanel.allowEditing(false); tabbedPane.addTab(Res.getString("tab.home"), homePanel); // See if we should remove the Avatar tab in profile dialog @@ -152,12 +158,14 @@ public void editProfile(final VCard vCard, JComponent parent) { public void componentResized( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setVCardEditorBounds( dlg.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } @Override public void componentMoved( ComponentEvent e ) { LayoutSettingsManager.getLayoutSettings().setVCardEditorBounds( dlg.getBounds() ); + LayoutSettingsManager.saveLayoutSettings(); } } ); @@ -258,7 +266,8 @@ public void viewFullProfile(final VCard vCard, JComponent parent) { dlg.setSize(600, 400); dlg.setResizable(true); dlg.setContentPane(mainPanel); - dlg.setLocationRelativeTo(parent); + //dlg.setLocationRelativeTo(parent); + dlg.setLocationRelativeTo(null); PropertyChangeListener changeListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent e) { @@ -524,9 +533,19 @@ private void saveVCard() { } catch (XMPPException | SmackException | InterruptedException e) { Log.error(e); UIManager.put("OptionPane.okButtonText", Res.getString("ok")); - JOptionPane.showMessageDialog(SparkManager.getMainWindow(), - Res.getString("message.vcard.not.supported"), - Res.getString("title.error"), JOptionPane.ERROR_MESSAGE); + //JOptionPane.showMessageDialog(SparkManager.getMainWindow(), + // Res.getString("message.vcard.not.supported"), + // Res.getString("title.error"), JOptionPane.ERROR_MESSAGE); + //if (!Default.getBoolean(Default.EDIT_AVATAR_ONLY) && Enterprise.containsFeature(Enterprise.EDIT_AVATAR_FEATURE)) { + // JOptionPane.showMessageDialog(SparkManager.getMainWindow(), + // Res.getString("message.vcard.not.supported"), + // Res.getString("title.error"), JOptionPane.ERROR_MESSAGE); + // } + if (!Default.getBoolean(Default.EDIT_AVATAR_ONLY)) { + JOptionPane.showMessageDialog(SparkManager.getMainWindow(), + Res.getString("message.vcard.not.supported"), + Res.getString("title.error"), JOptionPane.ERROR_MESSAGE); + } } } diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardManager.java b/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardManager.java index b59679a57..fd5d1d997 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardManager.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/profile/VCardManager.java @@ -261,7 +261,9 @@ public void finished() { JMenuItem viewProfileMenu = new JMenuItem("", SparkRes.getImageIcon(SparkRes.FIND_TEXT_IMAGE)); ResourceUtils.resButton(viewProfileMenu, Res.getString("menuitem.lookup.profile")); - contactsMenu.insert(viewProfileMenu, size > 0 ? size - 3 : 0); + //contactsMenu.insert(viewProfileMenu, size > 0 ? size - 3 : 0); + //if (!Default.getBoolean(Default.DISABLE_LOOKUP_PROFILE) && Enterprise.containsFeature(Enterprise.DISABLE_LOOKUP_PROFILE_FEATURE)) contactsMenu.insert(viewProfileMenu, size > 0 ? size - 3 : 0); + if (!Default.getBoolean(Default.DISABLE_LOOKUP_PROFILE)) contactsMenu.insert(viewProfileMenu, size > 0 ? size - 3 : 0); viewProfileMenu.addActionListener( e -> { String jidToView = JOptionPane.showInputDialog(SparkManager.getMainWindow(), Res.getString("message.enter.jabber.id") + ":", Res.getString("title.lookup.profile"), JOptionPane.QUESTION_MESSAGE); if (ModelUtil.hasLength(jidToView) && jidToView.contains( "@" ) && ModelUtil.hasLength( XmppStringUtils.parseDomain(jidToView))) { diff --git a/core/src/main/java/org/jivesoftware/sparkimpl/search/users/UserSearchService.java b/core/src/main/java/org/jivesoftware/sparkimpl/search/users/UserSearchService.java index d80de917e..540a11bc2 100644 --- a/core/src/main/java/org/jivesoftware/sparkimpl/search/users/UserSearchService.java +++ b/core/src/main/java/org/jivesoftware/sparkimpl/search/users/UserSearchService.java @@ -109,7 +109,8 @@ private void processQuery(String query) { final JDialog dialog = new JDialog(frame, Res.getString("title.person.search"), false); dialog.getContentPane().add(searchForm); dialog.pack(); - dialog.setSize(500, 500); + //dialog.setSize(500, 500); + dialog.setSize(700, 500); GraphicUtils.centerWindowOnScreen(dialog); dialog.setVisible(true); diff --git a/core/src/main/resources/default.properties b/core/src/main/resources/default.properties index 23eae9b3a..7abeebb63 100644 --- a/core/src/main/resources/default.properties +++ b/core/src/main/resources/default.properties @@ -165,6 +165,27 @@ IDLE_LOCK = false # Idle time, default value = 5min IDLE_TIME = 5 +# If true, disable Unfiled Group in the contacts list +UNFILEDGROUP_DISABLED = false + +# If true, disable Nickname change in conference +ALLOW_NICKNAME_CHANGE_DISABLED = false + +# If true, disable Room Settings button in conference +CONFERENCE_BUTTON_SETTINGS_DISABLED = false + +# If true, disable Register button in conference +CONFERENCE_BUTTON_REGISTER_DISABLED = false + +# If true, show the full JID address in the Contact Information Window from the Contacts List +SHOW_FULL_JID_ADDRESS = false + +# If true, disable Personal, Business and Home Edit from Edit Profile and enable only the Avatar modification +EDIT_AVATAR_ONLY = false + +# If true, Lookup Profile is desabled from Contacts Menu +DISABLE_LOOKUP_PROFILE = false + ################################################# ################## File Transfer ################ ################################################# diff --git a/core/src/main/resources/i18n/spark_i18n_fr.properties b/core/src/main/resources/i18n/spark_i18n_fr.properties index fa6fc92f6..344e21662 100644 --- a/core/src/main/resources/i18n/spark_i18n_fr.properties +++ b/core/src/main/resources/i18n/spark_i18n_fr.properties @@ -48,8 +48,10 @@ add = Ajouter administrator = Administrateur apply = Appliquer available = Disponible -broadcast = Diffuser un message a tout le monde +broadcast = Diffuser un message à tout le monde cancel = Annuler +delete = Supprimer +details = Détails close = Fermer create = Créer date = Date @@ -69,8 +71,8 @@ participants = Participants reject = Refuser retry = Réessayer room.name = Nom du Salon -save = Sauver -refresh = Refresh +save = Enregistrer +refresh = Actualiser subject = Sujet unfiled = Non classé use.default = Utiliser les valeurs par défaut @@ -84,7 +86,7 @@ action.copy = Copier action.cut = Couper action.paste = Coller action.print = Imprimer -action.save = Sauver +action.save = Enregistrer action.select.all = Tout sélectionner button.accept = &Accepter @@ -101,8 +103,9 @@ button.browse = &Parcourir button.browse2 = P&arcourir button.browse3 = Pa&rcourir button.cancel = &Annuler +button.cert.info = Détails button.clear = &Effacer -button.close = &Fermer +button.close = Fermer button.copy.to.clipboard = Copier vers le presse-papier button.create.account = &Créer un Compte button.create.room = &Créer ou Joindre une Salle de Discussion @@ -118,15 +121,15 @@ button.profile = &Profil button.quit = &Quitter button.re.detect = &Re-détecter button.reconnect = &Reconnecter -button.reconnect2 = &Reconnecter +button.reconnect2 = Reconnecter button.refresh = &Actualiser button.register = &S'enregistrer button.reject = Refuser button.remove.bookmark = Supprimer le Signet button.roster = &Liste de Contacts -button.save = Sauver +button.save = Enregistrer button.save.for.future.use = &Sauvegarder pour plus tard -button.search = &Rechercher +button.search = Rechercher button.send = Envoyer button.send.email = Email button.start.chat = Discuter @@ -137,18 +140,29 @@ button.update = &Mettre à jour button.view.notes = Voir les notes button.view.profile = Voir le profil complet button.view.tasklist = Voir la liste des tâches +button.check.validity = Vérifier la validité +button.show.certificate = Afficher le certificat +button.delete.saved.passwords = Oublier tous les mot de passe de connexion + +table.column.certificate.subject = Sujet +table.column.certificate.validity = Validité +table.column.certificate.exempted = Exempté checkbox.allow.buzz = Autoriser les contacts à vous interpeller checkbox.auto.discover.port = &Détecter automatiquement l'hôte et le port -checkbox.auto.login = &Login Automatique -checkbox.broadcast.hide.offline.user = Cacher les contacts déconnectés +checkbox.auto.login = &Connexion Automatique +checkbox.login.as.invisible = Se connecter en tant qu'&invisible +checkbox.login.anonymously = Se connecter en tant qu'&anonyme +checkbox.broadcast.hide.offline.user = Cacher les utilisateurs hors-ligne checkbox.disable.chat.history = &Désactiver l'Historique de Conversation -checkbox.disable.prev.chat.history = &Désactiver l'afichage des conversations précédentes dans le chat +checkbox.sort.asc.history = Trier les messages dans l'historique des contacts par date en ordre croissant +checkbox.disable.prev.chat.history = &Désactiver l'affichage des conversations précédentes dans la discussion checkbox.enable.emoticons = &Activer les smileys +checkbox.graying.out = Obturation des contacts inactifs (Nécessite de redémarrer Spark) checkbox.idle.enabled = &Mise en Veille Activée checkbox.launch.on.startup = &Lancer au Démarrage checkbox.notify.systemtray = Afficher les nouveaux &messages dans la barre d'état du systeme -checkbox.notify.typing.systemtray = &Affcher l'indicateur de frappe dans la barre d'état du systeme +checkbox.notify.typing.systemtray = &Affcher l'indicateur de saisie dans la barre d'état du systeme checkbox.notify.user.comes.online = Me notifier quand un contact se &connecte checkbox.notify.user.goes.offline = Me ¬ifier quand un contact se déconnecte checkbox.permanent = Le salon est &permanent @@ -163,25 +177,47 @@ checkbox.reconnect.panel.small = Afficher dans le groupe de contact checkbox.reconnect.info = Indiquez le type d'affichage à utiliser pour la reconnexion: checkbox.save.password = &Enregistrer le Mot de Passe checkbox.show.avatars.in.contactlist = Afficher les &avatars +label.broadcast.history.search.date = Date de recherche (année-mois): checkbox.show.notifications.in.conference = &Afficher les Notifications en Conférence checkbox.show.time.in.chat.window = &Afficher l'heure dans la fenêtre de conversation checkbox.show.toaster = Afficher une notification &Popup +checkbox.disable.asterisk.toaster = Désactiver la notification Popup du &téléphone checkbox.split.chat.window = Réduire les &fenêtres (Nécessite de redémarrer Spark) checkbox.start.in.tray = &Démarrer dans la zone d'iconification -checkbox.tabs.on.top = Fenêtre de discussion toujours visible (nécessite de redémarrer) -checkbox.tabs.scroll = Utiliser le défilement pour les onglets de chat (nécessite un redémarrage) +checkbox.tabs.on.top = Afficher les onglets de discussion au dessus de la fenêtre (Nécessite de redémarrer Spark) +checkbox.tabs.scroll = Utiliser le défilement pour les onglets de discussion (Nécessite de redémarrer Spark) +checkbox.click.single.tray = &Utiliser un seul clic dans la barre d'état du système pour afficher Spark checkbox.use.compression = Utiliser la compression checkbox.use.debugger.on.startup = Lancer le débugger au démarrage checkbox.use.proxy.server = &Utiliser un Proxy -checkbox.use.system.look.and.feel = Utiliser l'ergonomie du système (nécessite de redémarrer) +checkbox.use.system.look.and.feel = Utiliser l'ergonomie du système (Nécessite de redémarrer Spark) checkbox.window.to.front = &Mettre la fenêtre en premier plan checkbox.use.krbconf = Utilier krb5.conf ou krb5.ini checkbox.use.krb.dns = Utilier le DNS checkbox.use.specify.below = Indiquer ci-dessous checkbox.use.pki.authentication = Utiliser l'authentification par PKI -checkbox.transport.tab.setting = Montrer les types de transports disponibles dans un onglet (redémarrage nécessaire) -checkbox.conference.tab.setting = Montrer les services de conférence disponibles dans un onglet (redémarrage nécessaire) +checkbox.transport.tab.setting = Montrer les types de transports disponibles dans un onglet (Nécessite de redémarrer Spark) +checkbox.conference.tab.setting = Montrer les services de conférence disponibles dans un onglet (Nécessite de redémarrer Spark) +checkbox.use.hostname.as.resource = Utiliser le nom d'hôte comme ressource +checkbox.use.version.as.resource = Utiliser la version Spark comme ressource +checkbox.accept.all.certificates = Accepter tous les certificats (auto-signés/expirés/non approuvés) +checkbox.disable.hostname.verification = Désactiver la vérification du nom d'hôte du certificat (non recommandé) +checkbox.allow.client.side.authentication = Autoriser l'authentification côté client +checkbox.accept.all = Accepter tout +checkbox.accept.expired = Accepter expiré +checkbox.accept.not.valid.yet = Accepter pas encore valide +checkbox.accept.self.signed = Accepter l'auto-signature +checkbox.accept.revoked = Accepter révoqué +checkbox.check.crl = Vérifier CRL +checkbox.check.ocsp = Vérifier OCSP +checkbox.allow.soft.fail = Autoriser la stratégie d'échec logiciel +checkbox.on.exception.list = Sur la liste des exceptions +checkbox.filetransfer.ibb.only = Uniquement In-Band Bytestreams +checkbox.filetransfer.autoaccept.presence = Accepter automatiquement les transferts de fichiers des contacts connus checkbox.close.unread.message = Demander à la fermeture de la fenêtre s'il y a des messages non lus +radio.encryptionmode.required = Requis +radio.encryptionmode.ifpossible = Si possible +radio.encryptionmode.disabled = Désactivé delete.log.permanently = Effacer les logs définitivement delete.permanently = Effacer définitivement? @@ -190,27 +226,30 @@ gateway.username.password.error = Identifiant et/ou mot de passe requis group.chat.name.match = Votre nom a été prononcé dans une conversation: group.chat.name.notification = Quelqu'un parle de vous... -group.chat.window.information = Infos de la fenêtre de chat +group.chat.window.information = Infos de la fenêtre de discussion group.comma.delimited = Délimité par virgule (CSV) group.conferences.found = Services de conférence group.connection = Connexion group.empty = Il n'y a pas de contact connecté dans ce groupe group.general.information = Infos Générales -group.login.information = Infos Login +group.login.information = Infos Connexion group.notification.options = Options de Notification group.offline = Contacts déconnectés group.search.form = Formulaire de Recherche group.search.results = Resultats de Recherche +group.send_config.error = Une exception s'est produite lors de la tentative d'enregistrement du formulaire mis à jour! +group.encryption_mode = Mode d'encryption label.accounts = &Comptes label.add.conference.service = &Ajouter un Service de Conférence label.add.jid = &Ajouter JID label.add.task = Ajouter une tâche -label.auto.login = &Auto Login +label.auto.login = &Auto Connexion label.audio.device = &Périphérique Audio label.available.users.in.roster = &Contacts disponibles +label.avatar = Avatar: label.cancel = Annuler -label.cell = Cell +label.cell = Mobile label.change.password.to = &Changer le mot de passe label.chatroom.fontsize = Taille de la &police de la fenêtre de discussion: label.chatroom.maxcurrenthistorysize = Taille maximale de l'historique actuel: @@ -220,13 +259,14 @@ label.close = F&ermer label.company = &Société label.confirm.password = &Confirmez le mot de passe label.conflict.error = Impossible de vous connecter: vous êtes déjà connecté -label.contact.to.find = Contact a Rechercher? +label.contact.to.find = Contact à Rechercher? label.contactlist.avatarsize = Taille des avatars dans la liste de contacts: label.contactlist.fontsize = Taille de la police de la liste des contacts: label.country = P&ays label.create.account = Créer un compte label.department = Département label.dial = &Numéroter +label.display.time = Temps d'affichage: label.downloads = Téléchargements label.due = Pour le label.email.address = &Adresse Email @@ -237,16 +277,16 @@ label.enter.password = Entrez le mot de passe label.fax = &Fax label.find = &Rechercher label.first.name = &Prénom -label.frequent.contacts = Frequent Contacts +label.frequent.contacts = Contacts fréquents label.group = &Groupe -label.home = Maison +label.home = Domicile label.host = &Hôte label.invited.users = Utilisateurs Invités label.jabber.address = &Adresse Jabber label.jabber.id = &Jabber ID label.jid = &JID label.job.title = &Fonction -label.keystore.location = Keystore location +label.keystore.location = Emplacement du KeyStore label.krb.kdc = KDC label.krb.realm = Realm label.last.name = &Nom de famille @@ -262,31 +302,34 @@ label.na = sans objet label.name = &Nom label.network = Réseau label.new.nickname = Nouveau Pseudo -label.nickname = &Pseudo +label.nickname = &Nom complet label.number = &Numéro label.ok = OK label.old.ssl = &Utiliser l'ancienne méthode SSL label.os = &Système d'exploitation -label.pager = &Pager +label.pager = &Téléavertisseur label.password = &Mot de Passe label.passwordreset = Réinitialiser le mot de passe label.phone = &Téléphone -label.pkcs.library.file = PKCS#11 library file +label.pkcs.library.file = Fichier de bibliothèque PKCS#11 label.port = &Port label.postal.code = &Code Postal label.presence = &Présence label.priority = P&riorité label.protocol = &Protocole -label.received = Recu +label.received = Reçu label.recent.conversation = Conversations récentes label.rename.to = &Renommer label.resource = &Resource label.response.timeout = &Temps maximal de réponse (sec) +label.reconnect.delay = Délai de reconnexion (sec) (Nécessite de redémarrer Spark) label.room = &Salon label.room.name = &Nom du Salon label.room.topic = &Thème +label.search = Rechercher label.search.service = &Service de Recherche -label.server = Do&maine +label.seconds = Seconde(s) +label.server = &Serveur label.server.address = &Adresse du Serveur label.show = Montrer: label.software = &Logiciel @@ -295,11 +338,11 @@ label.street.address = &Adresse Postale label.time = Heure\: (0) label.time.till.idle = &Temps maximum avant mise en veille (min) label.time.till.idlemessage = Message d'absence automatique -label.timeformat = Utilise {0} +label.timeformat = Utiliser {0} label.transfer.download.directory = &Répertoire de Téléchargement label.transfer.timeout = &Temps d'attente maximal pour un transfert de fichier (min)\: -label.trust.store.password = Trust store password -label.truststore.location = Truststore location +label.trust.store.password = Mot de passe du magasin de confiance +label.truststore.location = Emplacement du magasin de confiance label.unable.to.add.contact = Impossible d'ajouter le contact label.use.default = Utiliser les valeurs par défaut label.user.on.public.network = L'utilisateur est sur un réseau public @@ -311,6 +354,23 @@ label.which.pki.method = Quel type de PKI? label.work = Travail label.x509.certificate = Certificat X.509 label.xmpp.port = &Port XMPP +label.apple.keychain = KeyChain Apple +label.add.to.roster = Ajouter un utilisateur à votre liste +label.certificate.version = Version +label.certificate.serial.number = Numéro de série +label.certificate.signature.value = Valeur de signature +label.certificate.signature.algorithm = Algorithme de signature +label.certificate.issuer = Émetteur +label.certificate.subject = Sujet +label.certificate.not.before = Invalide avant +label.certificate.not.after = Invalide après +label.certificate.public.key = Clé Publique +label.certificate.public.key.algorithm = Algorithme à clé Publique +label.certificate.issuer.unique.id = ID unique de l'émetteur +label.certificate.subject.unique.id = ID unique du sujet +label.certificate.add.certificate.to.truststore = Ajouter un certificat au TrustStore +label.certificate.add.certificate.to.identitystore = Ajouter un certificat à IdentityStore +label.certificate.status = Statut du certificat. lookandfeel.change.now = Changer maintenant lookandfeel.color.blue = Bleu @@ -321,7 +381,7 @@ lookandfeel.color.red = Rouge lookandfeel.color.saved = Couleur enregistrée lookandfeel.select = Choisir l'apparence lookandfeel.tooltip.restart.no = Redémarrage non nécessaire -lookandfeel.tooltip.restart.yes = Pour choisir une apparence, cliquer sur sauver et redémarrer Spark. +lookandfeel.tooltip.restart.yes = Pour choisir une apparence, cliquer sur Enregistrer et redémarrer Spark. menuitem.about = A propos menuitem.actions = Actions @@ -343,17 +403,20 @@ menuitem.ban = Bannir menuitem.ban.user = Bannir l'utilisateur menuitem.block.contact = Bloquer un contact menuitem.block.user = Bloquer l'utilisateur -menuitem.bookmark.room = Ajouter le salon dans les marques pages -menuitem.bookmarks = Marques-pages +menuitem.bookmark.room = Ajouter le salon dans vos Favoris +menuitem.bookmarks = Favoris menuitem.broadcast.to.group = Envoyer un message à tout le groupe menuitem.browse.service = Voir les Services -menuitem.change.nickname = Changer de Nickname +menuitem.change.nickname = Changer de Pseudo menuitem.change.subject = Changer le Sujet menuitem.chat = Conversation menuitem.chatframe.option = Options +menuitem.add.groupchat.invitetobookmark = Inviter automatiquement les utilisateurs dans une pièce réservé +menuitem.certificate.files.filter = Fichiers de certificats (*.cer), (*.crt), (*.der) + menuitem.check.for.updates = Mettre à jour menuitem.collapse.all.groups = Réduire tous les groupes -menuitem.connect = Fichier +menuitem.connect = Spark menuitem.contacts = Contacts menuitem.copy.to = Copier vers menuitem.create.room = Créer ou rejoindre un salon @@ -364,14 +427,14 @@ menuitem.dial = Composer menuitem.edit = Editer menuitem.edit.my.profile = &Editer mon Profil menuitem.edit.status.message = Editer les messages personalisés... -menuitem.enter.login.information = Entre les informations d'identification +menuitem.enter.login.information = Entrer les informations d'identification menuitem.exit = Sortir menuitem.expand.all.groups = Afficher le contenu de tous les groupes -menuitem.grant.admin = Rendre admin -menuitem.grant.member = Rendre membre -menuitem.grant.owner = Rendre propriètaire +menuitem.grant.admin = Rendre Administrateur +menuitem.grant.member = Rendre Membre +menuitem.grant.owner = Rendre Propriètaire menuitem.grant.moderator = Rendre Modérateur -menuitem.grant.voice = Voice +menuitem.grant.voice = Parole menuitem.help = Aide menuitem.hide = Cacher menuitem.invite.again = Inviter de nouveau @@ -379,7 +442,7 @@ menuitem.invite.group.to.conference = Inviter le groupe à cette conférence menuitem.invite.users = Inviter Utilisateurs menuitem.join.on.startup = Rejoindre au Démarrage menuitem.join.room = Rejoindre le Salon -menuitem.kick.user = Kicker l'Utilisateur +menuitem.kick.user = Expulser l'Utilisateur menuitem.languages = Langages menuitem.logout.no.status = Fermer cette Session menuitem.logout.with.status = Fermer cette Session avec un message @@ -398,11 +461,11 @@ menuitem.remove.from.group = Supprimer le Groupe menuitem.remove.from.roster = Retirer des Contacts menuitem.remove.service = Enlever le Service menuitem.rename = Renommer -menuitem.revoke.admin = Révoquer les droits admin -menuitem.revoke.member = Révoquer les droits de membre +menuitem.revoke.admin = Révoquer les droits Admininistrateur +menuitem.revoke.member = Révoquer les droits de Membre menuitem.revoke.moderator = Révoquer les droits de Modérateur -menuitem.revoke.owner = Révoquer les droits propriétaire -menuitem.revoke.voice = Révoquer les droits de Voice +menuitem.revoke.owner = Révoquer les droits Propriétaire +menuitem.revoke.voice = Révoquer les droits de Parole menuitem.save = Enregistrer menuitem.save.as = Enregistrer sous... menuitem.send.a.file = Envoyer un Fichier @@ -428,10 +491,10 @@ menuitem.view.client.version = Voir Version du Client menuitem.view.contact.history = Voir l'Historique de ce Contact menuitem.view.downloads = Voir les Téléchargements menuitem.view.last.activity = Voir la dernière activité -menuitem.view.logs = Consulter les logs +menuitem.view.logs = Consulter les journaux menuitem.view.profile = Voir Profil menuitem.view.room.info = Voir les Infos du Salon -menuitem.voice = Voice +menuitem.voice = Parole message = Message message.account.create = Créer un nouveau compte. @@ -439,11 +502,11 @@ message.account.created = Le nouveau compte a été crée. message.account.error = Spécifiez le serveur sur lequel créer le compte. message.add.a.contact = Ajouter un contact. message.add.conference.service = Ajouter un Service de Conférence -message.add.contact.to.list = Ajouter l'utilisateur a mes Contacts +message.add.contact.to.list = Ajouter l'utilisateur à mes Contacts message.add.favorite.room = Ajouter à mes salon favoris ou rejoindre directement. -message.add.this.user.to.your.roster = Ajouter cet utilisateur a mes Contacts. +message.add.this.user.to.your.roster = Ajouter cet utilisateur à mes Contacts. message.add.to.roster = Ajouter aux Contacts -message.add.user = Ajouter cet utilisateur a vos Contacts? +message.add.user = Ajouter cet utilisateur à vos Contacts? message.alert.notify = Notification d'alerte message.already.exists = Un compte existe déja avec ce nom d'utilisateur. Veuillez réessayer. message.approve.subscription = Permettre à {0} de vous ajouter à ses Contacts? @@ -460,36 +523,38 @@ message.buzz.alert.notification = Solliciter l'attention message.buzz.message = {0} veut votre attention message.buzz.sent = La notification d'alerte a bien été envoyée à l'utilisateur message.calling = Appel de {0} en cours -message.came.online = {0} s''est connecté à {1} +message.came.online = {0} est connecté. message.cannot.add.contact.to.shared.group = Impossible d'ajouter de nouveaux contacts à un Groupe Partagé. -message.chat.session.ended = Session de chat terminée à {0} +message.cert.hostname.verification.failed = Échec de la vérification du nom d'hôte du certificat +message.cert.verification.failed = Impossible de vérifier le certificat +message.chat.session.ended = Session de discussion terminée à {0} message.click.to.open = Cliquez pour ouvrir message.client.information = Infos client de {0} -message.close.other.chats = Fermer les autres chats -message.close.stale.chats = Fermer les chats suspendus -message.close.this.chat = Fermer ce chat +message.close.other.chats = Fermer les autres conversations +message.close.stale.chats = Fermer les conversations suspendus +message.close.this.chat = Fermer cette conversation message.close.unread.window = Vous avez des messages non lus, êtes-vous sûr de vouloir fermer la fenêtre ? -message.conference.info.error = Impossible d'obtenir des infos sur cette conférence. Veuillez réessayer plus tard. +message.conference.info.error = Impossible d'obtenir des informations sur cette conférence. Veuillez réessayer plus tard. message.conference.service.error = Service de conférence introuvable. message.confirm.destruction.of.room = Supprimer le salon en enlève aussi tous ses utilisateurs. Continuer? message.confirmation.password.error = Confirmez le mot de passe. message.connecting.please.wait = Connexion en cours. Veuillez patienter... message.connection.failed = Connexion à {0} a échouée. -message.create.account = Le compte n'a pas pu être crée. +message.create.account = Le compte n'a pas pu être créé. message.create.or.join.room = Créer ou rejoindre un salon -message.current.status = Permettre aux autres de voir votre état ou activité. -message.default.error = Une Erreur a été détectée. Veuillez la transmettre https://discourse.igniterealtime.org, s'il vous plait. +message.current.status = Permettre aux autres de voir votre état ou votre activité. +message.default.error = Une erreur a été détectée. Veuillez la transmettre à https://discourse.igniterealtime.org, s'il vous plait. message.delete.all.history = Effacer toutes les anciennes conversations? message.delete.confirmation = Etes vous sur de vouloir effacer {0}? -message.disable.transport = Voulez-vous désactiver un transport déja actif? -message.disconnected.conflict.error = Votre connexion a été fermée car un autre utilisateur du même nom s'est loggé depuis un autre endroit. +message.disable.transport = Voulez-vous désactiver un transport déjà actif? +message.disconnected.conflict.error = Votre connexion a été fermée car un autre utilisateur du même nom s'est connecté depuis un autre endroit. message.disconnected.error = Votre connexion a été fermée à cause d'une erreur. message.disconnected.group.chat.error = Vous avez été déconnecté suite à une erreur, vous devrez entrer de nouveau dans ce salon de discussion après vous être reconnecté message.disconnected.shutdown = Vous avez été déconnecté car le serveur vient de s'arrêter message.downloading = Téléchargement de {0} en cours message.downloading.spark.plug = Téléchargement du Spark-Plug -message.end.chat = Voulez-vous en finir avec ce chat? -message.end.conversation = Voulez-vous en finir avec cette session? +message.end.chat = Voulez-vous terminer cette conversation? +message.end.conversation = Voulez-vous terminer cette session? message.enter.aim = Entrez votre nom d'utilisateur et mot de passe AIM. message.enter.broadcast.message = Entrez le message groupé à envoyer aux utilisateurs selectionnés. message.enter.facebook = Indiquez votre identifiant et mot de passe Facebook ci-dessous @@ -497,7 +562,7 @@ message.enter.gadugadu = Indiquez votre identifiant et mot de passe GaduGadu ci- message.enter.gtalk = Indiquez votre identifiant et mot de passe GTalk ci-dessous message.enter.icq = Entrez votre nom d'utilisateur ICQ et votre mot de passe. message.enter.irc = Indiquez votre identifiant et mot de passe IRC ci-dessous -message.enter.jabber.id = Entrez votre Jabber ID +message.enter.jabber.id = Entrez l'ID Jabber message.enter.message.to.broadcast = Entrez le message groupé qui sera envoyé à tous vos Contacts. message.enter.msn = Entrez votre nom d'utilisateur et mot de passe MSN. message.enter.myspace = Indiquez votre identifiant et mot de passe MySpace ci-dessous @@ -509,16 +574,39 @@ message.enter.simple = Indiquez votre identifiant et mot de passe SIMPLE ci-dess message.enter.valid.jid = Entrez un JID valide message.enter.xmpp = Indiquez votre identifiant et mot de passe XMPP ci-dessous message.enter.yahoo = Entrez votre nom d'utilisateur et mot de passe Yahoo. -message.error.during.file.transfer = Erreur s'est produite durant le transfert de fichier. +message.error.during.file.transfer = Une erreur s'est produite durant le transfert de fichier. +message.error.must.use.reserved.nick = Vous devez utiliser votre pseudo que vous avez réservé pour le salon. +message.error.nickname.in.use = Le pseudo que vous souhaitez est utilisé ou réservé par quelqu'un d'autre. +message.error.no.permission.create.room = Vous n'êtes pas autorisé à créer une salle. +message.error.no.response = Pas de réponse du serveur. +message.error.not.member = Vous n'êtes pas membre de cette salle.\nCette salle nécessite que vous soyez membre pour la rejoindre. +message.error.room.not.exist = La salle dans laquelle vous essayez d'entrer n'existe pas. +message.error.room.password.incorrect = Le mot de passe ne correspond pas au mot de passe de la salle. +message.error.unable.join.room = Impossible de rejoindre la salle. message.file.exists.question = Le fichier existe déjà. Ecrire par dessus? message.file.size = Taille du Fichier\: {0} message.file.transfer.canceled = Vous avez annulé le transfert du fichier. message.file.transfer.chat.window = Demande de transfert de fichier: message.file.transfer.file.too.big.error = Le fichier sélectionné est trop gros.\nLa taille maximale est {0} le fichier sélectionné est de {1} message.file.transfer.file.too.big.warning = Le fichier sélectionné est trop gros.\nProcéder malgré tout? +message.file.transfer.direrror.setdir = Cliquez ici pour changer de répertoire +message.file.transfer.history.request.sent = La demande de transfert du fichier "{0}" ({1}) a été envoyée à {2}. +message.file.transfer.history.send.complete = Le fichier "{0}" a été envoyé avec succès à {1}. +message.file.transfer.history.send.error = L'envoi du fichier "{0}" à {1} a échoué. +message.file.transfer.history.send.canceled = Envoi du fichier "{0}" à {1} annulé. +message.file.transfer.history.contact.rejected = {1} a rejeté la demande de transfert du fichier "{0}". +message.file.transfer.history.request.received = La demande de transfert de fichier "{0}" ({1}) a été reçue de {2}. +message.file.transfer.history.you.rejected = Vous avez rejeté la demande de transfert du fichier "{0}" de {1}. +message.file.transfer.history.you.accepted = Vous avez accepté la demande de transfert du fichier "{0}" de {1}. +message.file.transfer.history.receive.success = Le fichier "{0}" a été reçu avec succès de {1}. +message.file.transfer.history.receive.failed = La réception du fichier "{0}" de {1} a échoué. +message.file.transfer.history.receive.canceled = Réception du fichier "{0}" de {1} annulée. +message.file.transfer.cantwritedir = Impossible d'écrire dans le répertoire pour le transfert de fichiers message.file.transfer.notification = Notification de transfert de fichier -message.file.transfer.rejected = Le fichier n''a pas été accepté par {0}. -message.file.transfer.short.message = vous envoie un fichier appelé\: +message.file.transfer.rejected = Le fichier n'a pas été accepté par {0}. +message.file.transfer.dirnull = Le répertoire de téléchargement pour le transfert de fichiers n'est pas valide +message.file.transfer.nodir = Le répertoire de téléchargement pour le transfert de fichiers n'existe pas +message.file.transfer.short.message = vous envoie un fichier appelé: message.find.conference.services = Rechercher les Services de Conférence message.forbidden.error = Une erreur de type inconnu à été reçue du serveur. message.gateway.nickname.error = Veuillez indiquer un pseudo @@ -529,17 +617,20 @@ message.generic.reconnect.message = Vous avez perdu votre connexion au serveur. message.groupchat.registered.member = Enregistrement réussi avec {0} message.groupchat.require.password = Cette salle de conférence nécessite un mot de passe message.idle.for = Mise en veille de {0} -message.image.too.large = La taille de cette image est trop grosse. Veuillez utiliser une image de 16k ou moins. -message.invalid.jabber.id = Jabber ID invalide +message.image.not.square = L'image doit avoir les proportions identiques en longueur puis en largeur +message.image.small.resolution = La taille de l'image est inférieure à 32x32 pixels +message.image.suggestion = La taille d'image recommandée est de 64x64 pixels. Vous pouvez soit ignorer cet avertissement, soit spécifier une autre image +message.image.too.large = La taille de cette image est trop volumineuse. Veuillez utiliser une image de 16k ou moins. +message.invalid.jabber.id = ID Jabber invalide message.invalid.jid.error = Le JID utilisé est invalide. message.invalid.status = Veuillez entrer un message d'état valide. message.invalid.username.password = Identifiant ou mot de passe invalide message.invite.to.groupchat = {0} vous invite à rejoindre une discussion de groupe message.invite.users.to.conference = Inviter ces utilisateurs dans une salle de conférence. message.is.shared.group = {0} est un groupe partagé. -message.is.typing.a.message = {0} tappe son message... +message.is.typing.a.message = {0} écrit son message... message.join.conference.room = Rejoindre la Salle de Conférence -message.kicked.error = Vous n''avez pas le droit de kicker {0}. +message.kicked.error = Vous n'avez pas le droit d'expulser {0}. message.last.message.received = Dernier message reçu à {0} message.loading.please.wait = Chargement en cours. Veuillez patienter... message.locked.workstation = L'utilisateur a verrouillé sa station de travail. @@ -549,8 +640,9 @@ message.negotiate.file.transfer = Négociation du transfert de fichier en cours. message.negotiate.stream = Négociation du transfert. Veuillez patienter... message.negotiation.file.transfer = Négociation du transfert de fichier avec {0}. Veuillez patienter... message.new.message = Nouveau message de {0}. -message.new.spark.available = {0} est disponible. Souhaitez-vous l''installer? -message.nickname.in.use = Ce nickname est déjà utilisé. Veuillez en choisir un autre. +message.new.spark.available = {0} est disponible. Souhaitez-vous l'installer? +message.nickname.error = Le pseudo doit être défini +message.nickname.in.use = Ce pseudo est déjà utilisé. Veuillez en choisir un autre. message.nickname.not.acceptable = Vous n'êtes pas autorisé à modifier votre pseudo! message.no.avatar.found = Aucun avatar n'a été configuré par l'utilisateur. message.no.caller.id = Aucune info d'appel disponible. @@ -562,118 +654,129 @@ message.no.subject.available = Aucun sujet disponible message.no.updates = Il n'y a pas de mises à jour disponibles message.normal = Message normal message.number.to.call = Indiquez le numéro à composer -message.offline = L'utilisateur est déconnecté et ne recevra ce message qu' à sa prochaine connexion. +message.offline = L'utilisateur est déconnecté et ne recevra ce message qu'à sa prochaine connexion. message.offline.error = L'utilisateur ne recevra hélas aucun message tant qu'il est déconnecté. message.participants.in.room = Participants du Salon message.password.error = Veuillez entrer un mot de passe pour ce compte. -message.password.private.room.error = Veuillez entrer un mot de pass pour ce salon privé +message.password.private.room.error = Veuillez entrer un mot de passe pour ce salon privé message.passwords.no.match = Les mots de passes ne correspondent pas. -message.please.join.in.conference = Rejoins-moi dans cette conférence. Merci. +message.please.join.in.conference = Rejoignez-moi dans cette conférence. Merci. message.plugins.not.available = Le dépôt de plugins n'a pas pu être contacté. message.prompt.plugin.uninstall = Souhaitez-vous désinstaller {0}? message.received.file = Vous avez reçu un fichier de {0}. message.receiving.file = Vous êtes en train de recevoir un ficher de {0} message.reconnect.attempting = Essai... -message.reconnect.failed = Echecc de la reconnexion +message.reconnect.failed = Echec de la reconnexion message.reconnect.wait = Reconnexion dans {0} secondes message.register.transports = S'enregistrer avec ces transports. message.registering = Enregistrement avec {0} en cours. Veuillez patienter... message.registration.transport.failed = Impossible de s'enregistrer avec ce Transport. message.restart.required = Vous devez redémarrer Spark pour que ces changements soient effectifs. Voulez-vous redémarer maintenant? -message.restart.spark = Vous devrez redémarrer votre client pour installer cette nouvelle version. Voulez vous le faire tout de suite? +message.restart.spark = Vous devrez redémarrer votre client pour installer cette nouvelle version. Voulez vous le faire maintenant? message.restart.spark.changes = Ce Plugin sera éliminé lors du prochain redémarrage de Spark. -message.restart.spark.to.install = Vous devez éteindre votre client afin d'installer la derniere version. Souhaitez-vous faire cela tout de suite? +message.restart.spark.to.install = Vous devez éteindre votre client afin d'installer la derniere version. Souhaitez-vous faire cela maintenant? message.room.creation.error = La salle n'a pas pu être créée -message.room.destroyed = Ce salon a été detruit\: {0} +message.room.destroyed = Ce salon a été detruit: {0} message.room.destruction.reason = Raison pour laquelle vous souhaitez détruire ce salon? message.room.information.for = Infos du Salon pour {0} -message.save.profile = Pour enregistrer votre profil, cliquez sur Sauver. +message.save.profile = Pour enregistrer votre profil, cliquez sur Enregistrer. message.search.for.contacts = Recherche de Contacts. +message.search.period.day.one = un jour par page +message.search.period.week.one = une semaine par page +message.search.period.month.one = un mois par page +message.search.period.year.one = une année par page +message.search.period.none = montrer tout sur une seule page +message.search.page.timeperiod = choisir le laps de temps des messages, qui sont affichés par page +message.search.page.counter = l'index actuel de votre page et le nombre de toutes les pages +message.search.page.right = naviguer d'une page en avant +message.search.page.left = naviguer une page en arrière message.search.for.history = Rechercher dans l'historique des conversations message.search.for.other.people = Rechercher les utilisateurs de ce même serveur. message.search.input.short = SVP fournir au moins deux lettres. message.search.service.not.available = Service de Recherche hors service. message.searching.please.wait = Recherche en cours, veuillez patienter... -message.select.add.room.to.add = Veuillez électionner un salon a ajouter à vos favoris. +message.select.add.room.to.add = Veuillez sélectionner un salon à ajouter à vos Favoris. message.select.one.or.more = Sélectionnez un ou plusieurs utilisateurs parmis vos Contacts. message.select.room.to.enter = Indiquez le salon que vous souhaitez rejoindre. message.select.room.to.join = Indiquez le salon que vous souhaitez rejoindre. message.send.a.broadcast = Envoyez un message groupé -message.send.file.to.user = Envoyer des fichiers a cet utilisateur. -message.send.picture = Envoyez un screenshot. +message.send.file.to.user = Envoyer des fichiers à cet utilisateur. +message.send.picture = Envoyez une capture d'écran. message.send.to.these.people = Envoyer à ces personnes message.sending.file.to = Envoyer le fichier à {0}. -message.sent.offline.files = On vous a envoyé un/des fichier(s) offline. -message.server.unavailable = Connexion au serveur impossible: nom de serveur incorrect ou le serveur est hors ligne +message.sent.offline.files = On vous a envoyé un/des fichier(s) hors-ligne. +message.server.unavailable = Connexion au serveur impossible: nom de serveur incorrect ou le serveur est hors-ligne message.service.already.exists = Ce service fait déjà partie de vos services. message.shared.group = Groupe Partagé -message.spark.secure = Spark tourne en mode sécurisé. -message.specify.contact.jid = Veuillez spécifier le JID du contact (ex. ddman@jabber.org) +message.spark.secure = Spark fonctionne en mode sécurisé. +message.spark.insecure = Spark ne fonctionne pas en mode sécurisé (la connexion au serveur n'est pas chiffrée). +message.specify.contact.jid = Veuillez spécifier le JID du contact (ex. 'utilisateur@domain.com') message.specify.group = Indiquez le groupe auquel ajouter ce nouvel utilisateur. message.specify.information.for.conference = Veuillez indiquer les infos de la conférence. message.specify.name.error = Indiquez un nom valide. -message.specify.users.to.join.conference = Indiquez les utilisateurs autorisés a rejoindre la conférence. +message.specify.users.to.join.conference = Indiquez les utilisateurs autorisés à rejoindre la conférence. message.specify.valid.time.error = Veuillez indiquer un timeout et un port valide. message.subject.change.error = Vous ne pouvez pas changer le sujet de ce salon. -message.subject.has.been.changed.to = Le sujet a été changé\: {0}. +message.subject.has.been.changed.to = Le sujet a été changé: {0}. message.supply.resource = Indiquez une resource valide. message.supply.valid.port = Indiquez un port valide. message.supply.valid.timeout = Indiquez une valeur de timeout valide -message.timeout.error = Le temps limite doit être d'au moins 5 secondes ou plus. +message.timeout.error = Le timeout doit être d'au moins 5 secondes ou plus. message.total.downloaded = Total Téléchargé message.transfer.cancelled = Ce transfer a été annulé. -message.transfer.complete = Le transfert de fichier a été complété ({0}) -message.transfer.progressbar.text.received = {0} received @ {1} {2} -message.transfer.progressbar.text.sent = {0} sent @ {1} {2} +message.transfer.complete = Le transfert de fichier a été effectué ({0}) +message.transfer.progressbar.text.received = {0} reçu @ {1} {2} +message.transfer.progressbar.text.sent = {0} envoyé @ {1} {2} message.transfer.rate = Taux de Transfert message.transfer.refused = Ce transfert de fichier a été refusé. -message.transfer.waiting.on.user = En attente de {0} pour qu''il/elle accepte le tranfert. +message.transfer.waiting.on.user = En attente de {0} pour qu'il/elle accepte le tranfert. message.unable.to.load.profile = Aucun profil trouvé pour {0} message.unable.to.retrieve.last.activity = Impossible de déterminer la dernière activité de {0} message.unable.to.save.password = Impossible de changer le mot de passe. Veuillez contacter votre administrateur système. -message.unable.to.send.file = Le transfert a {0} a échoué. +message.unable.to.send.file = Le transfert à {0} à échoué. +message.unable.to.use.hostname.as.resource = Impossible d'utiliser le nom d'hôte comme ressource message.unrecoverable.error = Identifiant ou mot de passe incorrect -message.update.room.list = Mise à Jour de la liste de salons +message.update.room.list = Mise à Jour de la liste des salons message.updating.cancelled = Mise à Jour annulée. message.user.banned = {0} a été banni de ce salon. -message.user.given.voice = {0} a été donné le droit voice dans ce salon. -message.user.granted.admin = {0} a été donné les droits d'Administrateur. -message.user.granted.membership = {0} a été donné les droits de membre. -message.user.granted.moderator = {0} a été donné les droits de modérateur. -message.user.granted.owner = {0} a été donné les droits de propriétaire. +message.user.given.voice = {0} a obtenu(e) le droit de Parole dans ce salon. +message.user.granted.admin = {0} a obtenu(e) les droits d'Administrateur. +message.user.granted.membership = {0} a obtenu(e) les droits de Membre. +message.user.granted.moderator = {0} a obtenu(e) les droits de Modérateur. +message.user.granted.owner = {0} a obtenu(e) les droits de Propriétaire. message.user.is.sending.you.a.file = {0} vous envoie un fichier. message.user.joined.room = {0} a rejoint le salon. -message.user.kicked.from.room = {0} a été kické du salon. -message.user.left.room = {0} a quitté le salon. +message.user.kicked.from.room = {0} a été expulsé(e) du salon. +message.user.left.room = {0} a quitté(e) le salon. message.user.nickname.changed = {0} est maintenant sous le nom {1}. -message.user.now.available.to.chat = {0} est connecté à {1} -message.user.revoked.admin = Les droits d''Administrateurs ont été révoqués de {0}. -message.user.revoked.membership = Les droits de membre ont été révoqués pour {0}. -message.user.revoked.moderator = Les droits de modérateur ont été revoqués pour {0}. -message.user.revoked.owner = Les droits de propriétaire ont été révoqués pour {0}. -message.user.voice.revoked = Le droit Voice a été révoqué pour {0} +message.user.now.available.to.chat = {0} est connecté(e) à {1} +message.user.revoked.admin = Les droits d'Administrateurs ont été révoqués à {0}. +message.user.revoked.membership = Les droits de Membre ont été révoqués à {0}. +message.user.revoked.moderator = Les droits de Modérateur ont été revoqués à {0}. +message.user.revoked.owner = Les droits de Propriétaire ont été révoqués à {0}. +message.user.voice.revoked = Le droit de Parole a été révoqué à {0} message.username.error = Indiquez un nom d'utilisateur pour le compte. message.username.password.error = Le nom d'utilisateur et/ou mot de passe doit etre indique. message.vcard.not.supported = Le Serveur n'est pas en mesure de supporter les VCards. Sauvegarde de votre VCard impossible. message.version = Version\: {0} message.view.information.about.this.user = Voir les information à propos de cet utilisateur message.waiting.for.user.to.join = En attente de {0} -message.went.offline = {0} s''est déconnecté à {1} +message.went.offline = {0} s'est déconnecté(e). message.you.have.been.banned = Vous avez été banni de ce salon -message.you.have.been.kicked = Vous avez été kické de ce salon +message.you.have.been.kicked = Vous avez été expulsé de ce salon message.you.have.sent = Vous avez envoyé un fichier à {0} message.your.admin.granted = Vous avez reçu les droits d'Administrateur message.your.banned = Vous avez été banni de ce salon -message.your.kicked = Vous avez été kické par {0} -message.your.membership.granted = Vous avez reçu les droits de membre. -message.your.membership.revoked = Vos droits de membre ont été révoqués -message.your.moderator.granted = Vous avez reçu les droits de modérateur. -message.your.moderator.revoked = Vos droits de modérateur ont été révoqués -message.your.ownership.granted = Vous avez reçu les droits de propriétaire. -message.your.ownership.revoked = Vos droits de propriétaire ont été révoqués. +message.your.kicked = Vous avez été expulsé par {0} +message.your.membership.granted = Vous avez reçu les droits de Membre. +message.your.membership.revoked = Vos droits de Membre ont été révoqués +message.your.moderator.granted = Vous avez reçu les droits de Modérateur. +message.your.moderator.revoked = Vos droits de Modérateur ont été révoqués +message.your.ownership.granted = Vous avez reçu les droits de Propriétaire. +message.your.ownership.revoked = Vos droits de Propriétaire ont été révoqués. message.your.revoked.granted = Vos droits d'Administrateur ont été révoqués. -message.your.voice.granted = Vous avez la parole dans cette discussion -message.your.voice.revoked = Vos droits Voice ont été révoqués. +message.your.voice.granted = Vous avez la Parole dans cette discussion +message.your.voice.revoked = Vos droits à la Parole ont été révoqués. ##Settings for the privacy plugin privacy.tooltip.preferences = Paramètres de confidentialité @@ -718,29 +821,39 @@ status.free.to.chat = Disponible status.on.phone = Au téléphone status.online = Connecté status.pending = En attente +status.invisible = Invisible +status.offline = Hors-ligne ##Stunfallback in media settings stun.border.label = Serveur de redondance STUN stun.server.addr = Serveur Stun: stun.server.port = Port Stun: +##Text Field Hints +hint.login.username = Saisir le nom d'utilisateur +hint.login.password = Saisir le mot de passe +hint.login.domain = Saisir le domaine + tab.available.plugins = Plugins Disponibles tab.avatar = Avatar -tab.business = Business +tab.business = Professionnel tab.conferences = Conférences tab.contacts = Contacts tab.deactivated.plugins = Plugins désactivés tab.general = Général -tab.home = Home +tab.security = Securité +tab.home = Domicile tab.installed.plugins = Plugins Installés tab.personal = Personnel tab.pki = PKI +tab.certificates = Certificats +tab.mutual.auth = Authentification mutuelle tab.proxy = Proxy tab.sso = SSO title.about = A propos title.account.create.registration = Création des Comptes -title.account.created = Compte Crée +title.account.created = Compte Créé title.add.contact = Ajouter Contact title.add.contact.group = Ajouter Groupe title.add.new.group = Ajouter Nouveau Groupe @@ -752,6 +865,7 @@ title.advanced.connection.sso = Utiliser le Single Sign-On (SSO) title.advanced.connection.sso.account = Ceci utilisera le compte du bureau pour "{0}" à connecter au serveur. title.advanced.connection.sso.noprincipal = Spark est incapable de trouver le principal à utiliser pour le Single Sign-On. Ceci empêche SSO de fonctionner. title.advanced.connection.sso.unable = Impossible de connecter en utilisant le Single Sign-On. SVP vérifiez votre principal et les paramètres du serveur. +title.advanced.connection.sso.smack3compat = Mode de compatibilité Smack 3 title.advanced.connection.usesso = Se connecter via GSSAPI (SSO) title.aim.registration = Compte AIM title.alert = Alerte @@ -759,26 +873,27 @@ title.appearance = Apparence title.appearance.preferences = Personnalisation title.appearance.showVCards = Montrer les &VCards dans la liste de contacts title.available.transports = Transports Disponibles -title.bookmarks = Marques-pages +title.bookmarks = Favoris title.broadcast.message = Message groupé +title.broadcast.history = Historique de diffusion title.browse.conference.services = Voir les services de conférence title.browse.room.service = Voir les salles de conférence title.cancelled = Annulé -title.change.nickname = Changer de nickname +title.change.nickname = Changer de pseudo title.change.subject = Changer de sujet -title.chat = Chat +title.chat = Discussion title.choose.directory = Sélectionnez un répertoire title.choose.incoming.sound = Sélectionnez un fichier d'alerte sonore lors de messages entrants title.choose.offline.sound = Sélectionnez un fichier d'alerte sonore pour les déconnexions title.choose.outgoing.sound = Sélectionnez un fichier d'alerte sonore pour les messages sortants -title.client.logs = Logs client +title.client.logs = Journaux client title.conference.invitation = Invitation à une Conférence title.conference.rooms = Salles de conférence title.configure.chat.room = Configurer le Salon de Discussion title.configure.room = Configurer le Salon title.confirmation = Confirmation title.create.new.account = Créer un nouveau compte -title.create.or.bookmark.room = Rejoindre ou ajouter le salon aux favoris +title.create.or.bookmark.room = Rejoindre ou ajouter le salon aux Favoris title.create.or.join = Créer/Rejoindre title.create.problem = Erreur de création du compte title.delete.file = Voulez-vous vraiment supprimer le fichier? @@ -804,7 +919,7 @@ title.filesize = Taille title.find.conference.service = Rechercher les Services de Conférence title.find.contacts = Rechercher Contacts title.gadugadu.registration = Identifiants GaduGadu -title.general.chat.settings = Paramètres de Chat +title.general.chat.settings = Paramètres de discussion title.general.media = Réglages Multimedia title.group.chat = Conférence title.group.chat.settings = Réglages des groupes de discussion @@ -813,17 +928,17 @@ title.history.for = Historique de conversation de {0} title.icq.registration = Compte ICQ title.incoming.call = Appel Entrant title.input.fileexplorer = Saisissez le nom de votre navigateur: -title.input.newname = Saisissez le nouveau nom\: +title.input.newname = Saisissez le nouveau nom: title.input.openwith = Saisissez le nom de l'application que vous voulez utiliser: title.invite.to.conference = Inviter à une Conférence title.irc.registration = Identifiants IRC title.jabber.browser = Navigateur title.join.conference.room = Rejoindre une Conférence title.last.activity = Dernière Activité -title.login = Login +title.login = Connexion title.login.error = Erreur de connexion title.login.no.account = Impossible de déterminer -title.login.settings = Paramètres de Login +title.login.settings = Paramètres de Connexion title.lookup.profile = Voir Profil title.msn.registration = Compte MSN title.myspace.registration = Identifiants MySpace @@ -843,7 +958,7 @@ title.passwords.no.match = Confirmez le mot de passe. title.person.search = Recherche de Personne title.plugins = Plugins title.preferences = Préférences -title.profile.information = Infos de Profil +title.profile.information = Informations du Profil title.profile.not.found = Profil inexistant title.qq.registration = Identifiants QQ title.register.account = Créer un nouveau compte @@ -873,12 +988,21 @@ title.view.bookmarks = Voir les Favoris title.view.profile.for = Voir le Profil de {0} title.view.room.information = Voir les Infos du Salon title.waiting.to.call = Attente +title.warning = Avertissement title.xmpp.registration = Identifiants XMPP title.yahoo.registration = Compte Yahoo +title.certificate = Certificat + +time.days = j +time.hours = h +time.minutes = min +time.seconds = sec +time.since = depuis +time.less.than.one.minute = moins d'une minute tooltip.appearance = Changer l'apparence des conversations tooltip.file.transfer = Préférences pour le transfert de fichiers -tooltip.notifications = Préférences de Notification pour les chat entrants +tooltip.notifications = Préférences de Notification pour les conversations entrantes tooltip.place.a.call = Appeler cette Personne tooltip.place.voice.call = Appeler cet utilisateur tooltip.send.email = Envoyer un email @@ -886,6 +1010,170 @@ tooltip.start.chat = Démarrer une conversation tooltip.view.changelog = Lire le Change Log tooltip.view.history = Voir l'historique de conversation tooltip.view.readme = Lire le ReadMe +tooltip.encryptionmode.required = Le cryptage est requis pour se connecter. Si le serveur n'offre pas de chiffrement, ou si la négociation du chiffrement échoue, alors la connexion au serveur échouera. +tooltip.encryptionmode.ifpossible = Le cryptage est utilisé chaque fois qu'il est disponible. +tooltip.encryptionmode.disabled = Le cryptage est désactivé et seules les connexions non cryptées seront utilisées. Si le chiffrement est requis par le serveur, alors la connexion échouera. tree.conference.services = Service de Conférence tree.users.in.room = Utilisateurs du Salon + +composing = {0} compose un message... +paused = {0} a terminé(e) la saisie +active = {0} est disponible +inactive = {0} est indisponible +gone = {0} semble avoir quitté(e) la conversation + +#!# +action.viewlog=Visualiser le journal + +dialog.confirm.to.reveal.visibility.title=Etes-vous certains? +dialog.confirm.to.reveal.visibility.msg=Si vous voulez continuer, votre invisibilité sera révélée +dialog.confirm.close.all.conferences.if.invisible.msg=Si vous voulez continuer, toute la salle de conférence sera fermée +dialog.certificate.show = Il s'agit du certificat et de la clé privée que vous essayez d'ajouter au TrustStore.

Après avoir ajouté ce certificat, Spark pourra établir des communications
sécurisées avec les serveurs identifiés par ce certificat.

Si vous êtes sûr de vouloir ajouter ce certificat, cliquez sur le bouton OK. +dialog.id.certificate.show = Il s'agit du certificat que vous essayez d'ajouter à l'IdentityStore

Après avoir ajouté ce certificat, Spark pourra présenter ce certificat au serveur distant lors de l'établissement de la connexion afin de s'authentifier et de chiffrer cette connexion.

Si vous êtes sûr de vouloir ajouter ce certificat, cliquez sur le bouton OK. +dialog.certificate.add.from.connection = Il s'agit du certificat fourni par le serveur auquel vous essayez de vous connecter.
Ce certificat n'est pas dans votre TrustStore, ce qui signifie qu'il n'est pas approuvé
et que vous ne pouvez pas vous connecter à ce serveur.

Voulez-vous lui faire confiance et ajouter ce certificat à votre TrustStore ? +dialog.certificate.unrecognized.server.certificate = Le serveur auquel vous vous connectez s'identifie avec un certificat qui
n'est pas reconnu par Spark. Veuillez consulter les détails ci-dessous. +dialog.certificate.ask.allow.self-signed = Le serveur auquel vous vous connectez s'identifie avec un certificat auto-signé.
La configuration actuelle de Spark interdit l'utilisation de certificats auto-signés. Souhaitez-vous
modifier cette configuration et réessayer? +dialog.certificate.subject.label = Sujet: + +dialog.certificate.add.unrecognized.server.certificate = Voulez-vous ajouter ce certificat à l'ensemble de certificats approuvés par Spark? +dialog.certificate.chain.add.from.connection = Il s'agit de la chaîne de certificats fournie par le serveur auquel vous vous connectez.
Il ne figure pas dans votre liste de confiance, vous ne pouvez donc pas vous connecter.

Voulez-vous ajouter ces certificats à votre liste de confiance? +dialog.certificate.cannot.have.copy = Ce certificat est déjà stocké dans le TrustStore. +dialog.certificate.has.been.added = Le certificat a été ajouté au TrustStore. +dialog.certificate.has.been.added.to.identity.store = Le certificat a été ajouté à l'IdentityStore. +dialog.certificate.is.distrusted = Le certificat n'est pas valide, il ne faut donc pas lui faire confiance, car il est dangereux. \n Si vous voulez toujours lui faire confiance, cliquez sur le bouton Faire confiance ou ajoutez-le à la liste des exceptions. +dialog.certificate.sure.to.delete = Êtes-vous sûr de vouloir supprimer ce certificat? \nSi vous le faites, vous ne pourrez pas établir de connexion sécurisée \naux serveurs identifiés par ce certificat. +dialog.certificate.has.been.deleted = Le certificat a été supprimé avec succès. +dialog.self.signed.certificate.has.been.created = Le certificat auto-signé et la clé privée ont été créés dans le répertoire: \n +dialog.certificate.request.has.been.created = La demande de signature de certificat et la clé privée ont été créées dans le répertoire: \n +dialog.cannot.upload.certificate.might.be.ill.formatted = Impossible de télécharger le fichier de certificat, le certificat est peut-être mal formaté +dialog.cannot.upload.certificate = Impossible de télécharger le fichier de certificat +dialog.certificate.title.certificate.not.in.truststore = Le certificat fourni n'est pas dans votre TrustStore + +cert.valid = Valide +cert.revoked = Révoqué +cert.expired = Expiré +cert.not.valid.yet = Pas encore valide +cert.self.signed = Auto-signé +cert.sign.request = Demande de signature de certificat +cert.self.signed.save.to.file = Enregistrer le certificat dans un fichier +cert.unknown.oid = Description OID inconnue. +cert.is.critical = Est critique: +cert.critical = Critique: +cert.not.critical = Non critique: +cert.common.name = Nom commun +cert.organization.unit = Unité d'organisation +cert.organization = Organisation +cert.country = Pays +cert.city = Ville + +cert.extensions = Extensions de certificat: +cert.extensions.unsupported = Extensions non prises en charge +cert.extension.extended.usage.digital.signature = Signature numérique +cert.extension.extended.usage.non.repudiation = Non répudiation +cert.extension.extended.usage.key.encipherment = Chiffrement de la clé +cert.extension.extended.usage.data.encipherment = Chiffrement des données +cert.extension.extended.usage.key.agreement = Clé Accord +cert.extension.extended.usage.key.cert.sign = Clé signature cert +cert.extension.extended.usage.crl.sign = Signature CRL +cert.extension.extended.usage.encipher.only = Chiffrer uniquement +cert.extension.extended.usage.decipher.only = Déchiffrer seulement +cert.extension.basic.constraints.is.ca = Est une autorité de certification +cert.extension.basic.constraints.path.length = Longueur du chemin de validation +cert.extension.name.constraints.permitted.subtrees = Sous-arborescences autorisées +cert.extension.name.constraints.excluded.subtrees = Sous-arborescences exclues + +##OID's mapping +2.5.29.1 = Ancien identifiant de clé d'autorité X.509 +2.5.29.2 = Attributs clés +2.5.29.3 = Politiques de certificat +2.5.29.4 = Restrictions d'utilisation des clés +2.5.29.5 = Cartographie des politiques +2.5.29.6 = Contraintes de sous-arborescence +2.5.29.7 = Nom alternatif du sujet +2.5.29.8 = Autre nom de l'émetteur +2.5.29.9 = Attributs du répertoire de sujets +2.5.29.10 = Contraintes de base +2.5.29.11 = Extension de certificat +2.5.29.12 = Extension de certificat +2.5.29.13 = Extension de certificat +2.5.29.14 = Identifiant de clé de sujet +2.5.29.15 = Utilisation de la clé +2.5.29.16 = Période d'utilisation de la clé privée +2.5.29.17 = Nom alternatif du sujet +2.5.29.18 = Autre nom de l'émetteur +2.5.29.19 = Contraintes de base +2.5.29.20 = Numéro CRL +2.5.29.21 = Code de raison +2.5.29.22 = Date d'expiration +2.5.29.23 = Maintenir le code d'instruction +2.5.29.24 = Date d'invalidité +2.5.29.25 = Points de distribution CRL +2.5.29.26 = Point de distribution émetteur +2.5.29.27 = Indicateur CRL +2.5.29.28 = Point de distribution émetteur +2.5.29.29 = Émetteur de certificat +2.5.29.30 = Contraintes de nom +2.5.29.31 = Points de distribution CRL +2.5.29.32 = Politiques de certificat +2.5.29.33 = Mappages de politiques +2.5.29.34 = Contraintes politiques +2.5.29.35 = Identifiant de clé d'autorité +2.5.29.36 = Contraintes politiques +2.5.29.37 = Utilisation étendue des clés +2.5.29.38 = Identifiant d'attribut d'autorité +2.5.29.39 = Identificateur de certificat de spécification de rôle +2.5.29.40 = Identificateur de flux CRL +2.5.29.41 = basicAttConstraints +2.5.29.42 = Contraintes de nom délégué +2.5.29.43 = Spécification de temps +2.5.29.44 = Scope CRL +2.5.29.45 = Références de statut +2.5.29.46 = CRL la plus récente +2.5.29.47 = Liste d'ordre croissant dans CRL +2.5.29.48 = Descripteur d'attribut +2.5.29.49 = Avis utilisateur +2.5.29.50 = Identifiant SOA +2.5.29.51 = Heure de mise à jour de la CRL de base +2.5.29.52 = Politiques de certificat acceptables +2.5.29.53 = Info delta +2.5.29.54 = Inhabilité de n'importe quelle politique +2.5.29.55 = Informations de ciblage +2.5.29.56 = Aucune information de révocation disponible +2.5.29.57 = Politiques de privilège acceptables +2.5.29.58 = id-ce-toBeRevoked +2.5.29.59 = id-ce-RevokedGroups +2.5.29.60 = id-ce-expiredCertsOnCRL +2.5.29.61 = Emetteur indirect +2.5.29.62 = id-ce-noAssertion +2.5.29.63 = id-ce-aAissuingDistributionPoint +2.5.29.64 = id-ce-issuedOnBehaIFOF +2.5.29.65 = id-ce-singleUse +2.5.29.66 = id-ce-groupAC +2.5.29.67 = id-ce-allowedAttAss +2.5.29.68 = id-ce-attributeMappings +2.5.29.69 = id-ce-holderNameConstraints + +2.16.840.1.113730.1.1 = +1.3.6.1.4.1.311.20.2 = szOID_ENROLL_CERTTYPE_EXTENSION +1.3.6.1.4.1.311.21.1 = Version de l'autorité de certification des services de certificats MS +1.2.840.113533.7.65.0 = Confier l'extension de version +1.3.6.1.5.5.7.1.1 = Accès aux informations de l'autorité de certification +1.3.6.1.5.5.7.3.1 = Le certificat peut être utilisé comme certificat de serveur Secure Sockets Layer (SSL). +1.3.6.1.5.5.7.3.2 = Le certificat peut être utilisé comme certificat client Secure Sockets Layer (SSL). +1.3.6.1.5.5.7.3.3 = Le certificat peut être utilisé pour la signature de code. +1.3.6.1.5.5.7.3.4 = Le certificat peut être utilisé pour protéger les e-mails (signature, cryptage, accord de clé). +1.3.6.1.5.5.7.3.5 = Certificat de système d'extrémité Internet Protocol SECurity (IPSEC). +1.3.6.1.5.5.7.3.6 = Certificat de tunnel Internet Protocol SECurity (IPSEC). +1.3.6.1.5.5.7.3.7 = Certificat d'utilisateur IPSec (Internet Protocol SECurity). +1.3.6.1.5.5.7.3.8 = Horodatage de l'objectif clé PKIX. Le certificat peut être utilisé pour lier le hachage d'un objet à une heure à partir d'une source de temps approuvée. + +1.3.6.1.5.5.7.3.9 = Les certificats Rec. ITU-T X.509 correspondant à la clé privée peuvent être utilisés par une autorité pour signer les réponses OCSP. +1.3.6.1.5.5.7.3.10 = Clé PKIX Protocoles du serveur de validation et de certification des données. +1.3.6.1.5.5.7.3.11 = sbgpCertAAServerAuth. +1.3.6.1.5.5.7.3.12 = Clé id-kp-scvp-responder. +1.3.6.1.5.5.7.3.13 = id-kp-eapOverPPP + +1.3.6.1.5.5.7.1.12 = id-pe-logotype +1.3.6.1.4.1.311.10.3.4 = Extrait automatiquement des ID d'objet associés à Microsoft Cryptography. +2.23.42.7.0 = Clé racine hachée diff --git a/plugins/battleships/src/main/resources/i18n/battleships_i18n_fr.properties b/plugins/battleships/src/main/resources/i18n/battleships_i18n_fr.properties new file mode 100644 index 000000000..a9d8128ec --- /dev/null +++ b/plugins/battleships/src/main/resources/i18n/battleships_i18n_fr.properties @@ -0,0 +1,11 @@ +########################### +# Battleships # +# by wolf.posdorfer # +########################### + +title = Battleships +versus = Battleships contre {0} +request = Vous avez demandé un jeu de Battleships +has.request = {0} a demandé un jeu de Battleships +accepted = {0} a accepté l'invitation +declined = {0} a décliné l'invitation diff --git a/plugins/fastpath/src/main/resources/i18n/fastpath_i18n_fr.properties b/plugins/fastpath/src/main/resources/i18n/fastpath_i18n_fr.properties new file mode 100644 index 000000000..59a7d8776 --- /dev/null +++ b/plugins/fastpath/src/main/resources/i18n/fastpath_i18n_fr.properties @@ -0,0 +1,161 @@ +workgroup = Groupe de travail +join = Rejoindre +logout = Se déconnecter +cobrowsing.session = Session de co-navigation +back = Précedent +go = Aller +duration = Durée +agents = Agents +date = Date +invite.agent = Invitations +invite = Inviter +transfer.to.agent = Transferts +transfer = Transfert +workgroups = Groupes de travail +transfer.to = Transférer à +cancel = Annuler +agent = Agent +visitor = Visiteur +email = Email +question = Question +start.time = Heure de début +seconds = Secondes +name = Nom +from = Depuis +room = Salle +message = Message +number.in.queue = # Dans la file d'attente +average.wait.time = Temps d'attente moyen +last.queue.activity = Activité de la dernière file d'attente +query = Requête +chat.with = Discuter avec + + + +button.logout = &Se déconnecter +button.history = &Historique +button.conference = &Conférence +button.macros = &Macros +button.invite = &Inviter +button.transfer = &Transfert +button.canned.responses = &Réponses standardisées +button.end = &Fin +button.co.browse = &Co-navigation +button.edit.canned.responses = &Modifier les réponses standardisées +button.start.cobrowsing.session = Démarrer la session de co-navigation +button.save.note = &Enregistrer la note +button.new = &Nouveau +button.delete = &Supprimer +button.save = &Sauvegarder +button.accept = &Accepter +button.reject = &Rejeter + + +checkbox.allow.user.to.follow = Autoriser l'utilisateur à suivre + +label.notes = &Remarques +label.message.to.agent = Message à l'agent +label.select.agent = Sélectionnez Agent +label.title = &Titre +label.type = T&ype +label.response = &Réponse +label.initial.response = &Réponse initiale + + + +message.workgroup.logged.into = Connecté au groupe de travail {0} +message.incoming.request = {0} +message.start.cobrowsing = Démarrer une session de co-navigation avec la page {0} +message.send.cobrowsing.message = Envoyé une invitation de co-navigation avec la page {0} +message.click.to.add.notes = Cliquez ici pour ajouter des notes. +message.chat.notes = Les notes de conversation sont associées à cette conversation et pourront être recherchées via la recherche de conversation. +message.notes.updated = Les notes ont été mises à jour +message.unable.to.update.notes = Impossible de valider la note. Veuillez réessayer. +message.view.more.information = Afficher plus d'informations... +message.conversation.transferred = La conversation a été transférée. +message.invitation.rejected = L'invitation à la conversation a été rejetée par {0} +message.please.join.me.in.conference = Veuillez me rejoindre dans une conférence +message.user.has.been.invited = {0} a été invité à se joindre à cette conversation. +message.waiting.for.user = En attente de {0} pour accepter ce transfert. +message.transfering.to.user = Je vous transfère cette conversation. +message.join.me.in.chat = S'il vous plaît, rejoignez-moi dans cette conversation. +message.transfer.to.another.agent = Transférer cette conversation à un autre agent, groupe de travail ou file d'attente. +message.invite.another.agent = Inviter d'autres personnes à rejoindre cette conversation. +message.no.agent.selected.error = Aucun agent n'a été sélectionné +message.jid.invalid.error = Entrer un JID valide (ex. 'utilisateur@domain.com') +message.message.required.error = Entrer un message +message.specify.personal.macros = Spécifiez les macros personnelles à utiliser dans vos discussions avec les utilisateurs. +message.macros.not.saved = Vos macros n'ont pas pu être enregistrées. +message.add.new.response = Ajouter une nouvelle réponse +message.current.chats = Discussions en cours ({0}) +message.transcript.not.found.error = La transcription n'a pas pu être localisée +message.incoming.chat.request = Demande de conversation entrante de {0} +message.user.joined.room = {0} a rejoint la salle. +message.user.left.room = {0} a quitté la salle. +message.not.specified = Non spécifié +message.user.not.logged.in = L'utilisateur n'est pas connecté au groupe de travail. +message.agent.is.not.in.chat = L'agent n'est actuellement dans aucune conversation. +message.find.previous.conversations = Saisissez le texte à rechercher dans les conversations précédentes. + +menuitem.global.canned.responses = Réponses standardisées globales +menuitem.no.entries = Aucune entrée dans la catégorie +menuitem.join.chat = Rejoindre la conversation +menuitem.monitor.chat = Surveiller la conversation + +tab.fastpath = Fastpath +tab.current.chats = Discussions en cours +tab.online.agents = Agents en ligne +tab.user.info = Informations Utilisateur +tab.participants = Intervenants +tab.user.history = Historique de l'utilisateur +tab.notes = Notes +tab.queue.activity = Activité de la file d'attente +tab.transcript = Transcription + +title.cobrowsing.for = Co-navigation pour{0} +title.chat.notes = Notes de conversation +title.notes = Notes +title.request.information = Demande d'information +title.information = Information +title.transcript = Transcription +title.transfer = Transfert +title.invitation = Invitation +title.error = Erreur +title.contact.list = Liste de contacts +title.personal.macros = Macros personnelles +title.response.name = Nom de la réponse +title.response.text = Texte de réponse +title.personal = Personnel +title.create.canned.response = Créer une réponse standardisée +title.previous.chats = Discussions précédentes +title.personal.chats = Conversations personnelles +title.chat.transcript = Transcription de Conversation +title.current.active.conversations = Conversations actives en cours +title.number.of.active.conversations = # de conversations actives +title.current.conversations = Conversations en cours +title.fastpath.invitation = Invitation Fastpath +title.fastpath.transfer = Transfert Fastpath +title.workgroup = {0} Groupe de travail +title.chat.transcripts = Transcriptions de Conversation +title.search.results = Résultats de recherche +title.chat.transcripts.search = Recherche de transcriptions de Conversation +title.number.of.conversations.found = # des conversations trouvées: + +time.days = j +time.hours = h +time.minutes = min +time.seconds = sec +time.since = depuis +time.less.than.one.minute = moins d'une minute + +tooltip.allow.cobrowsing = Permet au visiteur actuel de suivre la navigation de votre navigateur. +tooltip.hide.cobrowsing = Masque la navigation de votre navigateur au visiteur actuel. +tooltip.back.one.page = Remonter d'une page +tooltip.push.url = Pousser un lien +tooltip.push.current.page = Pousser l'URL actuelle au visiteur +tooltip.save.transcript = Enregistrer la Transcription de Conversation +tooltip.print.transcript = Imprimer la Transcription de Conversation + +# TO DO +org.jivesoftware.fastpath.workspace.search +org.jivesoftware.fastpath.workspace.utils diff --git a/plugins/jingle/src/main/resources/i18n/jingle_i18n_fr.properties b/plugins/jingle/src/main/resources/i18n/jingle_i18n_fr.properties new file mode 100644 index 000000000..5d03b13f9 --- /dev/null +++ b/plugins/jingle/src/main/resources/i18n/jingle_i18n_fr.properties @@ -0,0 +1,12 @@ +button.accept = Accepter +button.reject = Rejeter + +label.voice.request.from = Demande de discussion vocale de... +label.mute.call = Couper l'audio de cet appel. +label.computer.to.computer = Ordinateur à ordinateur +label.mute = Muet +label.unmute = Rétablir le son +label.establishing.call = Etablissement de l'appel. Veuillez patienter... +label.outgoing.voicechat = Discussion vocale sortante vers {0} +label.call.ended = Appel terminé. +label.call.transfer = Appel transféré à {0} diff --git a/plugins/meet/src/main/resources/i18n/sparkmeet_i18n_fr.properties b/plugins/meet/src/main/resources/i18n/sparkmeet_i18n_fr.properties new file mode 100644 index 000000000..98b729219 --- /dev/null +++ b/plugins/meet/src/main/resources/i18n/sparkmeet_i18n_fr.properties @@ -0,0 +1,6 @@ +name = Pade Meetings + +preference.sparkmeetEnabled = Activer Pade meeting +preference.url = URL Jitsi Meet +preference.title = Paramètres Pade Meetings + diff --git a/plugins/otr/src/main/resources/i18n/otrplugin_i18n_fr.properties b/plugins/otr/src/main/resources/i18n/otrplugin_i18n_fr.properties index 82a378686..e16bfb1e9 100644 --- a/plugins/otr/src/main/resources/i18n/otrplugin_i18n_fr.properties +++ b/plugins/otr/src/main/resources/i18n/otrplugin_i18n_fr.properties @@ -13,7 +13,7 @@ otr.key.not.verified.title = Clé non vérifiée otr.question.verify = Vérifier? otr.key.not.verified.text = Cette clé n'est pas vérifiée! otr.start.session.with = Session cryptée par OTR avec {0} -otr.not.enabled = Vous avez reГ§u une demande de session cryptée OTR. Vous devez activer l'OTR dans le menu Spark/Préférences/OTR. +otr.not.enabled = Vous avez reçu une demande de session cryptée OTR. Vous devez activer l'OTR dans le menu Spark/Préférences/OTR. otr.chat.is.still.encrypted = Cette conversation est toujours cryptée. otr.chat.button.tooltip = Chiffrement du message #Table Columns @@ -26,5 +26,5 @@ otr.key.verified = Vérifié otr.retry = Réessayer otr.try.to.connect.for.seconds = Démarrage d'une session chiffrée OTR. {0}s restantes... otr.failed.to.establish = Echec lors du démarrage de la session OTR. Timeout. -otr.successfull = La session OTR a démarré avec succГЁs. Les messages seront chiffrés. +otr.successfull = La session OTR a démarré avec succès. Les messages seront chiffrés. otr.disconnected = La session OTR a été arrêtée. Les messages ne seront plus chiffrés. diff --git a/plugins/roar/src/main/resources/i18n/roar_i18n_fr.properties b/plugins/roar/src/main/resources/i18n/roar_i18n_fr.properties index a8ac5e162..97e17b077 100644 --- a/plugins/roar/src/main/resources/i18n/roar_i18n_fr.properties +++ b/plugins/roar/src/main/resources/i18n/roar_i18n_fr.properties @@ -17,13 +17,13 @@ roar.text.group = Couleur du texte multi-utilisateurs roar.single = Utilisateur unique roar.single.disable = Désactiver Roar pour les discussions mono-utilisateur roar.group = Multi-utilisateur -roar.group.different = Utiliser différents paramètres pour les chats multi-utilisateurs +roar.group.different = Utiliser différents paramètres pour les discussions multi-utilisateurs roar.group.disable = Désactiver Roar pour les discussions multi-utilisateurs roar.display.system = Notification du système d'exploitation roar.warning.topright = Style de notification Roar personnalisé. Entièrement personnalisable. roar.warning.bottomright = Style de notification Roar personnalisé. Entièrement personnalisable. -roar.warning.toaster = Style de notification d'étincelle. Les couleurs ne sont pas personnalisables. +roar.warning.toaster = Style de notification Spark. Les couleurs ne sont pas personnalisables. roar.warning.system = Notification dépendante du système. Les couleurs et la durée ne sont pas personnalisables. roar.warning.system.mac = Utilise le Notification-Center (OSX 10.8 et supérieur).
Les couleurs et la durée ne sont pas personnalisables.
Voir Mac-Systemsettings -> Notifications pour plus de paramètres. diff --git a/plugins/sip/src/main/java/org/jivesoftware/spark/plugin/phone/resource/sip_spark_i18n_fr.properties b/plugins/sip/src/main/java/org/jivesoftware/spark/plugin/phone/resource/sip_spark_i18n_fr.properties index 2c6a84af2..a33a8ec64 100644 --- a/plugins/sip/src/main/java/org/jivesoftware/spark/plugin/phone/resource/sip_spark_i18n_fr.properties +++ b/plugins/sip/src/main/java/org/jivesoftware/spark/plugin/phone/resource/sip_spark_i18n_fr.properties @@ -26,90 +26,91 @@ ## quote the "{" (curly brace) if necessary. A real single quote is represented by ''. ## -phone.starting = Starting Phone... -phone.failed = Failed to start phone -phone.tryagain = Try again -phone.call = Call -phone.voicemail = Voice Mail -phone.viewcallhistory = View Call History -phone.placecall = Place phone call. -phone.hangup = End Call -phone.tips.hangup = Hang up phone conversation -phone.home = Home -phone.work = Work -phone.cell = Cell -phone.currentcall = Current Call -phone.incomingcall = Incoming Call -phone.noprevious = No previous conversations. -phone.callended = Call Ended -phone.transferto = Call transferred to -phone.connected = Connected -phone.lastcalled = Last called -phone.never = Never -phone.duration = Duration -phone.accept = Accept -phone.reject = Reject -phone.callback = Call Back -phone.delete = Delete -phone.enternumber = Enter a number to call. -phone.invalidnumber = Invalid Number -phone.outgoingcall = Outgoing call to -phone.callhistory = Call History -phone.dialed = Dialed -phone.dialedcalls = Dialed Calls -phone.received = Received -phone.receivedcalls = Received Calls -phone.missed = Missed -phone.missedcalls = Missed Calls -phone.unknown = Unknown -phone.placecallto = Placed call to -phone.receivedcallfrom = Received Call from -phone.missedcallfrom = Missed call from -phone.incomingcallfrom = Incoming call from -phone.contactdetails = Contact Details -phone.noinfo = No Information Available -phone.viewfullprofile = View Full Profile -phone.tips.mute = Mute this call -phone.mute = Mute -phone.unmute = Unmute -phone.tips.hold = Place this call on Hold -phone.hold = Hold -phone.onhold = On Hold -phone.time = Time -phone.tips.transfer = Transfer this call -phone.transfer = Transfer -phone.transferring = Transferring -phone.transfered = Transfered -phone.callstartedat = Call Started at -phone.callendedat = Call Ended at -phone.onphonewith = On the phone with -phone.callendedwith = Call ended with -phone.previousconversations = Previous Conversations -phone.closeconfirm = Closing this room will end the call. Continue? +phone.starting = Démarrage du Téléphone... +phone.failed = Impossible de démarrer le Téléphone +phone.tryagain = Essayer à nouveau +phone.call = Appel +phone.voicemail = Messagerie Vocale +phone.viewcallhistory = Afficher l'historique des appels +phone.placecall = Passer un appel téléphonique. +phone.hangup = Fin d'appel +phone.tips.hangup = Raccrocher la conversation téléphonique +phone.home = Domicile +phone.work = Travail +phone.cell = Mobile +phone.currentcall = Appel en cours +phone.incomingcall = Appel entrant +phone.noprevious = Aucune conversation précédente. +phone.callended = Appel terminé +phone.transferto = Appel transféré à +phone.connected = Connecté +phone.lastcalled = Dernier appel +phone.never = Jamais +phone.duration = Durée +phone.accept = Accepter +phone.reject = Rejeter +phone.callback = Rappeler +phone.delete = Supprimer +phone.enternumber = Entrez un numéro à appeler. +phone.invalidnumber = Numéro invalide +phone.outgoingcall = Appel sortant vers +phone.callhistory = Historique des appels +phone.dialed = Composé +phone.dialedcalls = Appels composés +phone.received = Reçu +phone.receivedcalls = Appels reçus +phone.missed = Manqué +phone.missedcalls = Appels manqués +phone.unknown = Inconnu +phone.placecallto = Appel passé à +phone.receivedcallfrom = Appel reçu de +phone.missedcallfrom = Appel manqué de +phone.incomingcallfrom = Appel entrant de +phone.contactdetails = Détails du contact +phone.noinfo = Pas d'information disponible +phone.viewfullprofile = Voir le Profil complet +phone.tips.mute = Couper cet appel +phone.mute = Muet +phone.unmute = Rétablir le son +phone.tips.hold = Mettre cet appel en attente +phone.hold = Attente +phone.onhold = En attente +phone.time = Temps +phone.tips.transfer = Transférer cet appel +phone.transfer = Transfert +phone.transferring = Transfert +phone.transfered = Transféré +phone.callstartedat = Appel commencé à +phone.callendedat = Appel terminé à +phone.onphonewith = Au téléphone avec +phone.callendedwith = Appel terminé avec +phone.previousconversations = Conversations précédentes +phone.closeconfirm = La fermeture de cette salle mettra fin à l'appel. Continuer? phone.confirmation = Confirmation -phone.all = All -phone.allcalls = All Calls -phone.tocall = Call -btn.add = Add -btn.edit = Edit -btn.del = Delete -btn.dial = Call -book.name = Name -book.number = Number -frame.title = Phonebook -book.search = Search +phone.all = Tout +phone.allcalls = Tous les appels +phone.tocall = Appel +phone.enabled = Téléphone Activé +btn.add = Ajouter +btn.edit = Editer +btn.del = Supprimer +btn.dial = Appel +book.name = Nom +book.number = Numéro +frame.title = Annuaire +book.search = Recherche btn.ok = OK -btn.cancel = Cancel -frame.add = "Add Entry" -frame.edit = "Edit Entry" -book.exists = "The phonebook-entry you wish to add is already existing." -book.noEntry = "No Entry Selected!" -book.fillFields = "Please fill all Fields" +btn.cancel = Annuler +frame.add = "Ajouter une entrée" +frame.edit = "Modifier l'entrée" +book.exists = "L'entrée de répertoire que vous souhaitez ajouter existe déjà." +book.noEntry = "Aucune entrée sélectionnée!" +book.fillFields = "Merci de compléter tous les champs" book.warning = "Attention" title.sip.codecs.title = Codecs -codecs.select = < Select -codecs.unselect = Unselect > -codecs.up = Up ^ -codecs.down = Down v -codecs.audio.selected = Selected Audio Codecs -codecs.audio.avail = Available Audio Codecs +codecs.select = < Sélectionner +codecs.unselect = Désélectionner > +codecs.up = Haut ^ +codecs.down = Bas v +codecs.audio.selected = Codecs Audio Sélectionnés +codecs.audio.avail = Codecs Audio Disponibles diff --git a/plugins/spelling/src/main/resources/i18n/spellchecker_i18n_fr.properties b/plugins/spelling/src/main/resources/i18n/spellchecker_i18n_fr.properties index 889ce2cec..bcea04dd0 100644 --- a/plugins/spelling/src/main/resources/i18n/spellchecker_i18n_fr.properties +++ b/plugins/spelling/src/main/resources/i18n/spellchecker_i18n_fr.properties @@ -4,6 +4,6 @@ preference.spellcheckingEnabled = Activer le &correcteur preference.autoSpellcheckingEnabled = Activer la correction &automatique preference.language = &Langue preference.ignore.uppercasedword = &Ignorer les majuscules -preference.show.langauage.in.chat.windows = Autoriser la sélection de langue dans la fenêtre de chat +preference.show.langauage.in.chat.windows = Autoriser la sélection de langue dans la fenêtre de conversation dialog.no.mistakes = Aucune faute d'ortographe button.check.spelling = Vérifier l'orthographe diff --git a/plugins/tictactoe/src/main/resources/i18n/tictactoe_i18n_fr.properties b/plugins/tictactoe/src/main/resources/i18n/tictactoe_i18n_fr.properties new file mode 100644 index 000000000..3180ece16 --- /dev/null +++ b/plugins/tictactoe/src/main/resources/i18n/tictactoe_i18n_fr.properties @@ -0,0 +1,16 @@ +########################### +# Tic Tac Toe # +# by wolf.posdorfer # +########################### + +ttt.game.request = {0} demande un jeu de +ttt.game.name = Tic Tac Toe de Doom +ttt.window.title = {0} contre {1} +ttt.win = Félicitations, vous avez gagné! +ttt.lose = Désolé, vous avez perdu! +ttt.tie = Le jeu s'est terminé par un match nul. +ttt.display.me = Je suis: +ttt.display.current = joue actuellement: +ttt.request.decline = La demande de jeu a été refusée. +ttt.request.accept = Le jeu commence. +ttt.request.sent = Envoi de la demande de jeu... diff --git a/plugins/transferguard/src/main/resources/i18n/transferguard_i18n_fr.properties b/plugins/transferguard/src/main/resources/i18n/transferguard_i18n_fr.properties index 73aa5f710..555add494 100644 --- a/plugins/transferguard/src/main/resources/i18n/transferguard_i18n_fr.properties +++ b/plugins/transferguard/src/main/resources/i18n/transferguard_i18n_fr.properties @@ -41,10 +41,10 @@ ## Added key: 'guard.settings.title.settings' ## -guard.settings.title.list = protection de transfert +guard.settings.title.list = Transfer Guard guard.settings.title.settings = Paramètres de transfert de fichiers guard.settings.tooltips.blockedtypes = Saisissez les extensions de fichier que vous souhaitez bloquer (par ex. '*.doc'), séparées par des virgules -guard.settings.tooltips.blockedperson = Entrez le JID des utilisateurs dont vous souhaitez bloquer les transferts de fichiers (par exemple, 'loser@domain.com'), séparés par des virgules +guard.settings.tooltips.blockedperson = Entrez le JID des utilisateurs dont vous souhaitez bloquer les transferts de fichiers (par exemple, 'utilisateur@domain.com'), séparés par des virgules guard.settings.tooltips.textarea = Entrez un message que vous souhaitez envoyer à ceux dont les fichiers sont bloqués par vos paramètres. Laissez cet espace vide si vous ne souhaitez pas leur envoyer de message. guard.settings.title.extensions = Extensions de fichiers bloquées guard.settings.title.person = Expéditeurs bloqués