--- a/data/gui/adhoc_commands_window.ui
+++ b/data/gui/adhoc_commands_window.ui
@@ -171,7 +171,7 @@
                 <child>
                   <object class="GtkLabel" id="notes_label">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">Please wait while the command is sending...</property>
+                    <property name="label" translatable="yes">Please wait while the command is being sent...</property>
                     <property name="selectable">True</property>
                   </object>
                   <packing>
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -80,10 +80,10 @@
             'show_transports_group': [ opt_bool, True ],
             'autoaway': [ opt_bool, True ],
             'autoawaytime': [ opt_int, 5, _('Time in minutes, after which your status changes to away.') ],
-            'autoaway_message': [ opt_str, _('$S (Away as a result of being idle more than $T min)'), _('$S will be replaced by current status message, $T by autoaway time.') ],
+            'autoaway_message': [ opt_str, _('$S (Away as a result of being idle more than $T min)'), _('$S will be replaced by current status message, $T by autoawaytime.') ],
             'autoxa': [ opt_bool, True ],
             'autoxatime': [ opt_int, 15, _('Time in minutes, after which your status changes to not available.') ],
-            'autoxa_message': [ opt_str, _('$S (Not available as a result of being idle more than $T min)'), _('$S will be replaced by current status message, $T by autoxa time.') ],
+            'autoxa_message': [ opt_str, _('$S (Not available as a result of being idle more than $T min)'), _('$S will be replaced by current status message, $T by autoxatime.') ],
             'ask_online_status': [ opt_bool, False ],
             'ask_offline_status': [ opt_bool, False ],
             'trayicon': [opt_str, 'always', _("When to show notification area icon. Can be 'never', 'on_event', 'always'."), False],
@@ -157,7 +157,7 @@
             'single-msg-y-position': [opt_int, 0],
             'single-msg-width': [opt_int, 400],
             'single-msg-height': [opt_int, 280],
-            'save-roster-position': [opt_bool, True, _('If true, Gajim will save roster position when hiding roster, and restore it when showing roster.')],
+            'save-roster-position': [opt_bool, True, _('If True, Gajim will save roster position when hiding roster, and restore it when showing roster.')],
             'roster_x-position': [ opt_int, 0 ],
             'roster_y-position': [ opt_int, 0 ],
             'roster_width': [ opt_int, 200 ],
@@ -177,10 +177,10 @@
             'notify_on_new_gmail_email_command': [ opt_str, '', _('Specify the command to run when new mail arrives, e.g.: /usr/bin/getmail -q') ],
             'use_gpg_agent': [ opt_bool, False ],
             'change_roster_title': [ opt_bool, True, _('Add * and [n] in roster title?')],
-            'restore_lines': [opt_int, 4, _('How many lines to remember from previous conversation when a chat tab/window is reopened.')],
+            'restore_lines': [opt_int, 4, _('How many lines to remember from previous conversation when a chat tab/window is reopened?')],
             'restore_timeout': [opt_int, 60, _('How many minutes should last lines from previous conversation last.')],
             'muc_restore_lines': [opt_int, 20, _('How many lines to request from server when entering a groupchat. -1 means no limit')],
-            'muc_restore_timeout': [opt_int, 60, _('How many minutes back to request logs when a entering a groupchat. -1 means no limit')],
+            'muc_restore_timeout': [opt_int, 60, _('How many minutes back to request logs when entering a groupchat. -1 means no limit')],
             'muc_autorejoin_timeout': [opt_int, 1, _('How many seconds to wait before trying to autorejoin to a conference you are being disconnected from. Set to 0 to disable autorejoining.')],
             'muc_autorejoin_on_kick': [opt_bool, False, _('Should autorejoin be activated when we are being kicked from a conference?')],
             'send_on_ctrl_enter': [opt_bool, False, _('Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour).')],
@@ -198,9 +198,9 @@
             'autodetect_browser_mailer': [opt_bool, True, '', True],
             'print_ichat_every_foo_minutes': [opt_int, 5, _('When not printing time for every message (print_time==sometimes), print it every x minutes.')],
             'confirm_close_muc': [opt_bool, True, _('Ask before closing a group chat tab/window.')],
-            'confirm_close_muc_rooms': [opt_str, '', _('Always ask before closing group chat tab/window in this space separated list of group chat jids.')],
-            'noconfirm_close_muc_rooms': [opt_str, '', _('Never ask before closing group chat tab/window in this space separated list of group chat jids.')],
-            'confirm_close_multiple_tabs': [opt_bool, True, _('Ask before closing tabbed chat window if there are control that can loose data (chat, private chat, groupchat that will not be minimized)')],
+            'confirm_close_muc_rooms': [opt_str, '', _('Always ask before closing group chat tab/window in this space separated list of group chat JIDs.')],
+            'noconfirm_close_muc_rooms': [opt_str, '', _('Never ask before closing group chat tab/window in this space separated list of group chat JIDs.')],
+            'confirm_close_multiple_tabs': [opt_bool, True, _('Ask before closing tabbed chat window if there are controls that can lose data (chat, private chat, groupchat that will not be minimized)')],
             'notify_on_file_complete': [opt_bool, True],
             'file_transfers_port': [opt_int, 28011],
             'ft_add_hosts_to_send': [opt_str, '', _('Comma separated list of hosts that we send, in addition of local interfaces, for File Transfer in case of address translation/port forwarding.')],
@@ -256,7 +256,7 @@
             'avatar_position_in_roster': [opt_str, 'right', _('Define the position of the avatar in roster. Can be left or right'), True],
             'ask_avatars_on_startup': [opt_bool, True, _('If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old.')],
             'print_status_in_chats': [opt_bool, True, _('If False, Gajim will no longer print status line in chats when a contact changes his or her status and/or his or her status message.')],
-            'print_status_in_muc': [opt_str, 'in_and_out', _('can be "none", "all" or "in_and_out". If "none", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If "all" Gajim will print all status messages. If "in_and_out", Gajim will only print FOO enters/leaves group chat.')],
+            'print_status_in_muc': [opt_str, 'in_and_out', _('Can be "none", "all" or "in_and_out". If "none", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If "all" Gajim will print all status messages. If "in_and_out", Gajim will only print FOO enters/leaves group chat.')],
             'log_contact_status_changes': [opt_bool, False],
             'log_xhtml_messages': [opt_bool, False, _('Log XHTML messages instead of plain text messages.')],
             'just_connected_bg_color': [opt_str, '#adc3c6', _('Background color of contacts when they just signed in.')],
@@ -270,7 +270,7 @@
             'send_sha_in_gc_presence': [opt_bool, True, _('Jabberd1.4 does not like sha info when one join a password protected group chat. Turn this option to False to stop sending sha info in group chat presences.')],
             'one_message_window': [opt_str, 'always',
 #always, never, peracct, pertype should not be translated
-                    _('Controls the window where new messages are placed.\n\'always\' - All messages are sent to a single window.\n\'always_with_roster\' - Like \'always\' but the messages are in a single window along with the roster.\n\'never\' - All messages get their own window.\n\'peracct\' - Messages for each account are sent to a specific window.\n\'pertype\' - Each message type (e.g., chats vs. groupchats) are sent to a specific window.')],
+                    _('Controls the window where new messages are placed.\n\'always\' - All messages are sent to a single window.\n\'always_with_roster\' - Like \'always\' but the messages are in a single window along with the roster.\n\'never\' - All messages get their own window.\n\'peracct\' - Messages for each account are sent to a specific window.\n\'pertype\' - Each message type (e.g. chats vs. groupchats) is sent to a specific window.')],
             'show_roster_on_startup':[opt_str, 'always', _('Show roster on startup.\n\'always\' - Always show roster.\n\'never\' - Never show roster.\n\'last_state\' - Restore the last state roster.')],
             'show_avatar_in_chat': [opt_bool, True, _('If False, you will no longer see the avatar in the chat window.')],
             'escape_key_closes': [opt_bool, True, _('If True, pressing the escape key closes a tab/window.')],
@@ -297,7 +297,7 @@
             'attach_notifications_to_systray': [opt_bool, False, _('If True, notification windows from notification-daemon will be attached to notification icon.')],
             'check_idle_every_foo_seconds': [opt_int, 2, _('Choose interval between 2 checks of idleness.')],
             'uri_schemes': [opt_str, 'aaa:// aaas:// acap:// cap:// cid: crid:// data: dav: dict:// dns: fax: file:/ ftp:// geo: go: gopher:// h323: http:// https:// iax: icap:// im: imap:// info: ipp:// iris: iris.beep: iris.xpc: iris.xpcs: iris.lwz: ldap:// mid: modem: msrp:// msrps:// mtqp:// mupdate:// news: nfs:// nntp:// opaquelocktoken: pop:// pres: prospero:// rtsp:// service: shttp:// sip: sips: sms: snmp:// soap.beep:// soap.beeps:// tag: tel: telnet:// tftp:// thismessage:/ tip:// tv: urn:// vemmi:// xmlrpc.beep:// xmlrpc.beeps:// z39.50r:// z39.50s:// about: apt: cvs:// daap:// ed2k:// feed: fish:// git:// iax2: irc:// ircs:// ldaps:// magnet: mms:// rsync:// ssh:// svn:// sftp:// smb:// webcal://', _('Valid uri schemes. Only schemes in this list will be accepted as "real" uri. (mailto and xmpp are handled separately)'), True],
-            'ask_offline_status_on_connection': [ opt_bool, False, _('Ask offline status message to all offline contacts when connection to an accoutn is established. WARNING: This causes a lot of requests to be sent!') ],
+            'ask_offline_status_on_connection': [ opt_bool, False, _('Ask offline status message to all offline contacts when connection to an account is established. WARNING: This causes a lot of requests to be sent!') ],
             'shell_like_completion': [ opt_bool, False, _('If True, completion in groupchats will be like a shell auto-completion')],
             'show_self_contact': [opt_str, 'when_other_resource', _('When is self contact row displayed. Can be "always", "when_other_resource" or "never"'), True],
             'audio_input_device': [opt_str, 'autoaudiosrc ! volume name=gajim_vol'],
@@ -368,7 +368,7 @@
                     # send keepalive every N seconds of inactivity
                     'keep_alive_every_foo_secs': [ opt_int, 55 ],
                     'ping_alive_every_foo_secs': [ opt_int, 120 ],
-                    'time_for_ping_alive_answer': [ opt_int, 60, _('How many seconds to wait for the answer of ping alive packet before we try to reconnect.') ],
+                    'time_for_ping_alive_answer': [ opt_int, 60, _('How many seconds to wait for the answer of ping alive packet before we try to reconnect?') ],
                     # try for 1 minutes before giving up (aka. timeout after those seconds)
                     'try_connecting_for_foo_secs': [ opt_int, 60 ],
                     'http_auth': [opt_str, 'ask'], # yes, no, ask
@@ -412,7 +412,7 @@
                     'oauth2_refresh_token': [ opt_str, '', _('Latest token for Oauth2 authentication.')],
                     'oauth2_client_id': [ opt_str, '0000000044077801', _('client_id for Oauth2 authentication.')],
                     'oauth2_redirect_url': [ opt_str, 'https%3A%2F%2Fgajim.org%2Fmsnauth%2Findex.cgi', _('redirect_url for Oauth2 authentication.')],
-                    'opened_chat_controls': [opt_str, '', _('Space separated list of jid for which we want to re-open a chat window on next startup.')],
+                    'opened_chat_controls': [opt_str, '', _('Space separated list of JIDsfor which we want to re-open a chat window on next startup.')],
             }, {}),
             'statusmsg': ({
                     'message': [ opt_str, '' ],
@@ -481,7 +481,7 @@
             'rooms': ({
                     'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')],
                     'muc_restore_lines': [opt_int, -2, _('How many lines to request from server when entering a groupchat. -1 means no limit, -2 means global value')],
-                    'muc_restore_timeout': [opt_int, -2, _('How many minutes back to request logs when a entering a groupchat. -1 means no limit, -2 means global value')],
+                    'muc_restore_timeout': [opt_int, -2, _('How many minutes back to request logs when entering a groupchat. -1 means no limit, -2 means global value')],
             }, {}),
             'plugins': ({
                 'active': [opt_bool, False, _('State whether plugins should be activated on startup (this is saved on Gajim exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI instead.')],
--- a/src/config.py
+++ b/src/config.py
@@ -2424,7 +2424,7 @@
                         keyID[0])
 
         dialogs.ChooseGPGKeyDialog(_('OpenPGP Key Selection'),
-            _('Choose your OpenPGP key'), secret_keys, on_key_selected,
+            _('Choose an OpenPGP key'), secret_keys, on_key_selected,
             transient_for=self.window)
 
     def on_use_gpg_agent_checkbutton_toggled(self, widget):
@@ -2445,7 +2445,7 @@
             return
 
         if not gajim.connections[self.current_account].vcard_supported:
-            dialogs.ErrorDialog(_("Your server doesn't support Vcard"),
+            dialogs.ErrorDialog(_("Your server doesn't support vCard"),
             _("Your server can't save your personal information."))
             return
 
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -1460,7 +1460,7 @@
             self.disconnect(on_purpose=True)
             gajim.nec.push_incoming_event(ConnectionLostEvent(None, conn=self,
                 title=_('Could not connect to "%s"') % self._hostname,
-                msg=_('Check your connection or try again later')))
+                msg=_('Check your connection or try again later.')))
             if self.on_connect_auth:
                 self.on_connect_auth(None)
                 self.on_connect_auth = None
--- a/src/common/connection_handlers.py
+++ b/src/common/connection_handlers.py
@@ -143,7 +143,7 @@
         if resp.getType() == 'error':
             gajim.nec.push_incoming_event(InformationEvent(None, conn=self,
                 level='error', pri_txt=_('Registration failed'), sec_txt=_(
-                'Registration with agent %(agent)s failed with error %(error)s:'
+                'Registration with agent %(agent)s failed with errors %(error)s:'
                 ' %(error_msg)s') % {'agent': agent, 'error': resp.getError(),
                 'error_msg': resp.getErrorMsg()}))
 
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -2140,7 +2140,7 @@
         except Exception:
             # invalid char
             ErrorDialog(_('Invalid nickname'),
-                    _('The nickname has not allowed characters.'))
+                    _('The nickname contains invalid characters.'))
             return
         self.on_ok(nick, self.is_checked())
 
@@ -2594,7 +2594,7 @@
             nickname = helpers.parse_resource(nickname)
         except Exception:
             ErrorDialog(_('Invalid Nickname'),
-                    _('The nickname has not allowed characters.'))
+                    _('The nickname contains invalid characters.'))
             return
         user, server, resource = helpers.decompose_jid(room_jid)
         if not user or not server or resource:
@@ -2605,7 +2605,7 @@
             room_jid = helpers.parse_jid(room_jid)
         except Exception:
             ErrorDialog(_('Invalid group chat Jabber ID'),
-                    _('The group chat Jabber ID has not allowed characters.'))
+                    _('The group chat Jabber ID contains invalid characters.'))
             return
 
         if gajim.contacts.get_contact(self.account, room_jid) and \
--- a/data/gui/filetransfers.ui
+++ b/data/gui/filetransfers.ui
@@ -196,7 +196,7 @@
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="receives_default">False</property>
-                <property name="tooltip_text" translatable="yes">Cancels the selected file transfer and removes incomplete file</property>
+                <property name="tooltip_text" translatable="yes">Cancels the selected file transfer and removes incomplete files</property>
                 <property name="use_stock">True</property>
                 <child internal-child="accessible">
                   <object class="AtkObject" id="cancel_button-atkobject">
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1288,9 +1288,9 @@
             changes.append(_('Any occupant is allowed to see your full JID'))
             self.is_anonymous = False
         if '102' in obj.status_code:
-            changes.append(_('Room now shows unavailable member'))
+            changes.append(_('Room now shows unavailable members'))
         if '103' in obj.status_code:
-            changes.append(_('room now does not show unavailable members'))
+            changes.append(_('Room now does not show unavailable members'))
         if '104' in obj.status_code:
             changes.append(_('A non-privacy-related room configuration change '
                 'has occurred'))
--- a/src/gui_interface.py
+++ b/src/gui_interface.py
@@ -666,7 +666,7 @@
             account = obj.conn.name
             notify.popup('warning', account, account, 'warning', path,
                 _('OpenPGP Passphrase Incorrect'),
-                _('You are currently connected without your OpenPGP key.'))
+                _('You are currently connected without an OpenPGP key.'))
         self.forget_gpg_passphrase(obj.keyID)
 
     def handle_event_client_cert_passphrase(self, obj):
--- a/data/gui/history_window.ui
+++ b/data/gui/history_window.ui
@@ -86,7 +86,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="receives_default">False</property>
-                    <property name="tooltip_text" translatable="yes">searching only in the selected day </property>
+                    <property name="tooltip_text" translatable="yes">Searching only in the selected day </property>
                     <property name="use_underline">True</property>
                     <property name="draw_indicator">True</property>
                   </object>
--- a/data/gui/preferences_window.ui
+++ b/data/gui/preferences_window.ui
@@ -669,7 +669,7 @@
                                             <property name="visible">True</property>
                                             <property name="can_focus">True</property>
                                             <property name="receives_default">False</property>
-                                            <property name="tooltip_text" translatable="yes">If checked, Gajim will also include information about the sender of the new emails</property>
+                                            <property name="tooltip_text" translatable="yes">If checked, Gajim will also include information about a sender of new emails</property>
                                             <property name="use_underline">True</property>
                                             <property name="draw_indicator">True</property>
                                             <signal name="toggled" handler="on_notify_gmail_extra_checkbutton_toggled"/>
@@ -1530,7 +1530,7 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="tooltip_text" translatable="yes">If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)</property>
+                                <property name="tooltip_text" translatable="yes">If checked, Gajim will use protocol-specific status icons. (e.g. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                                 <signal name="toggled" handler="on_transports_iconsets_checkbutton_toggled"/>
--- a/src/profile_window.py
+++ b/src/profile_window.py
@@ -367,7 +367,7 @@
             return
         if gajim.connections[self.account].connected < 2:
             dialogs.ErrorDialog(_('You are not connected to the server'),
-                    _('Without a connection you can not publish your contact '
+                    _('Without a connection, you can not publish your contact '
                     'information.'))
             return
         vcard_ = self.make_vcard()
--- a/src/command_system/implementation/standard.py
+++ b/src/command_system/implementation/standard.py
@@ -47,7 +47,7 @@
     HOSTS = ChatCommands, PrivateChatCommands, GroupChatCommands
 
     @command
-    @doc(_("Hide chat buttons"))
+    @doc(_("Hide the chat buttons"))
     def compact(self):
         new_status = not self.hide_chat_buttons
         self.chat_buttons_set_visible(new_status)
@@ -186,7 +186,7 @@
         self.conv_textview.clear()
 
     @command
-    @doc(_("Toggle OpenPGP encryption"))
+    @doc(_("Toggle the OpenPGP encryption"))
     def gpg(self):
         self._toggle_gpg()
 
