Bug 551919 - imapMsgs.properties should used string based identifiers rather than numbers. r=Neil
authorSuyash Agarwal <syshagarwal@gmail.com>
Thu, 11 Jul 2013 14:02:18 +0100
changeset 12702 1164d550d2253e7e7246ae26913362a9427adca8
parent 12701 322fc10273e53999809dfdbc77a09c59ce87e647
child 12703 65c5bfb05484d04ba58d906559a0177de392740c
push id9323
push userbugzilla@standard8.plus.com
push dateThu, 11 Jul 2013 13:06:37 +0000
treeherdercomm-central@65c5bfb05484 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersNeil
bugs551919
Bug 551919 - imapMsgs.properties should used string based identifiers rather than numbers. r=Neil
mail/locales/en-US/chrome/messenger/imapMsgs.properties
mailnews/imap/public/nsIImapMailFolderSink.idl
mailnews/imap/public/nsIImapServerSink.idl
mailnews/imap/src/nsIMAPBodyShell.cpp
mailnews/imap/src/nsImapIncomingServer.cpp
mailnews/imap/src/nsImapIncomingServer.h
mailnews/imap/src/nsImapMailFolder.cpp
mailnews/imap/src/nsImapProtocol.cpp
mailnews/imap/src/nsImapProtocol.h
mailnews/imap/src/nsImapServerResponseParser.cpp
mailnews/imap/src/nsImapService.cpp
mailnews/imap/src/nsImapStringBundle.cpp
mailnews/imap/src/nsImapStringBundle.h
mailnews/imap/src/nsSyncRunnableHelpers.cpp
suite/locales/en-US/chrome/mailnews/imapMsgs.properties
--- a/mail/locales/en-US/chrome/messenger/imapMsgs.properties
+++ b/mail/locales/en-US/chrome/messenger/imapMsgs.properties
@@ -2,415 +2,243 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 #
 # The following are used by the imap code to display progress/status/error messages
 #
 
 # Status - opening folder
-## @name IMAP_STATUS_SELECTING_MAILBOX
-## @loc None
-5000=Opening folder %S…
+imapStatusSelectingMailbox=Opening folder %S…
 
 # Status - create folder
-## @name IMAP_STATUS_CREATING_MAILBOX
-## @loc None
-5001=Creating folder…
+imapStatusCreatingMailbox=Creating folder…
 
 # Status - deleting a folder
-## @name IMAP_STATUS_DELETING_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5002): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusDeletingMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being deleted.
-5002=Deleting folder %S…
+imapStatusDeletingMailbox=Deleting folder %S…
 
 # Status - renaming mailbox
-## @name IMAP_STATUS_RENAMING_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5003): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusRenamingMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being renamed.
-5003=Renaming folder %S…
+imapStatusRenamingMailbox=Renaming folder %S…
 
 # Status - looking for mailboxes
-## @name IMAP_STATUS_LOOKING_FOR_MAILBOX
-## @loc None
-5004=Looking for folders…
+imapStatusLookingForMailbox=Looking for folders…
 
 # Status - subscribing to mailbox
-## @name IMAP_STATUS_SUBSCRIBE_TO_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5005): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusSubscribeToMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being subscribed to.
-5005=Subscribing to folder %S…
+imapStatusSubscribeToMailbox=Subscribing to folder %S…
 
 # Status - unsubscribing from mailbox
-## @name IMAP_STATUS_UNSUBSCRIBE_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5005): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusUnsubscribeMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being unsubscribed from.
-5006=Unsubscribing from folder %S…
+imapStatusUnsubscribeMailbox=Unsubscribing from folder %S…
 
 # Status - searching imap folder
-## @name IMAP_STATUS_SEARCH_MAILBOX
-## @loc None
-5007=Searching folder…
-
-# Status - getting message info
-## @name IMAP_STATUS_MSG_INFO
-## @loc None
-5008=Getting message info…
+imapStatusSearchMailbox=Searching folder…
 
 # Status - closing a folder
-## @name IMAP_STATUS_CLOSE_MAILBOX
-## @loc None
-5009=Closing folder…
+imapStatusCloseMailbox=Closing folder…
 
 # Status - compacting a folder
-## @name IMAP_STATUS_EXPUNGING_MAILBOX
-## @loc None
-5010=Compacting folder…
+imapStatusExpungingMailbox=Compacting folder…
 
 # Status - logging out
-## @name IMAP_STATUS_LOGGING_OUT
-## @loc None
-5011=Logging out…
+imapStatusLoggingOut=Logging out…
 
 # Status - checking server capabilities
-## @name IMAP_STATUS_CHECK_COMPAT
-## @loc None
-5012=Checking mail server capabilities…
+imapStatusCheckCompat=Checking mail server capabilities…
 
 # Status - logging on
-## @name IMAP_STATUS_SENDING_LOGIN
-## @loc None
-5013=Sending login information…
+imapStatusSendingLogin=Sending login information…
 
 # Status - auth logon
-## @name IMAP_STATUS_SENDING_AUTH_LOGIN
-## @loc None
-5014=Sending login information…
+imapStatusSendingAuthLogin=Sending login information…
 
-## @name IMAP_DOWNLOADING_MESSAGE
-## @loc None
-5015=Downloading message…
+imapDownloadingMessage=Downloading message…
 
-## @name IMAP_GETTING_ACL_FOR_FOLDER
-## @loc None
-# LOCALIZATION NOTE (Error 5029): Do not translate the word "ACL" below.
-5029=Getting folder ACL…
+# LOCALIZATION NOTE (imapGettingACLForFolder): Do not translate the word "ACL" below.
+imapGettingACLForFolder=Getting folder ACL…
 
-## @name IMAP_GETTING_SERVER_INFO
-## @loc None
-5030=Getting Server Configuration Info…
+imapGettingServerInfo=Getting Server Configuration Info…
 
-## @name IMAP_GETTING_MAILBOX_INFO
-## @loc None
-5031=Getting Mailbox Configuration Info…
+imapGettingMailboxInfo=Getting Mailbox Configuration Info…
 
-## @name IMAP_EMPTY_MIME_PART
-## @loc None
-5032=This body part will be downloaded on demand.
+imapEmptyMimePart=This body part will be downloaded on demand.
 
-## @name IMAP_RECEIVING_MESSAGE_HEADERS_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5036): Do not translate the word "%1$S", "%2$lu" or "%3$lu" below.
+# LOCALIZATION NOTE (imapReceivingMessageHeaders): Do not translate the word "%1$S", "%2$lu" or "%3$lu" below.
 # Place the word %1$S in your translation where the name of the server should appear.
 # Place the word %2$lu where the number of the header currently being downloaded should appear.
 # Place the word %3$lu where the number of headers should appear.
-5036=%S Downloading message header %lu of %lu
+imapReceivingMessageHeaders=%S Downloading message header %lu of %lu
 
-## @name IMAP_RECEIVING_MESSAGE_FLAGS_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5037): Do not translate the word "%1$S", "%2$lu" or "%3$lu" below.
+# LOCALIZATION NOTE (imapReceivingMessageFlags): Do not translate the word "%1$S", "%2$lu" or "%3$lu" below.
 # Place the word %1$S in your translation where the name of the server should appear.
 # Place the word %2$lu where the number of the flag currently being downloaded should appear.
 # Place the word %3$lu where the number of flags should appear.
-5037=%S Downloading message flag %lu of %lu
+imapReceivingMessageFlags=%S Downloading message flag %lu of %lu
 
-## @name IMAP_DELETING_MESSAGES
-## @loc None
-5038=Deleting messages…
+imapDeletingMessages=Deleting messages…
 
-## @name IMAP_DELETING_MESSAGE
-## @loc None
-5039=Deleting message…
+imapDeletingMessage=Deleting message…
 
-## @name IMAP_MOVING_MESSAGES_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5040): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapMovingMessages): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5040=Moving messages to %S…
+imapMovingMessages=Moving messages to %S…
 
-## @name IMAP_MOVING_MESSAGE_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5041): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapMovingMessage): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5041=Moving message to %S…
+imapMovingMessage=Moving message to %S…
 
-## @name IMAP_COPYING_MESSAGES_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5042): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapCopyingMessages): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5042=Copying messages to %S…
+imapCopyingMessages=Copying messages to %S…
 
-## @name IMAP_COPYING_MESSAGE_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5043): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapCopyingMessage): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5043=Copying message to %S…
+imapCopyingMessage=Copying message to %S…
 
-## @name IMAP_FOLDER_RECEIVING_MESSAGE_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5045): Do not translate the word "%S" or "%lu" below.
+# LOCALIZATION NOTE (imapFolderReceivingMessageOf): Do not translate the word "%S" or "%lu" below.
 # Place the word %S in your translation where the name of the folder should appear.
 # Place the word %lu where the number of headers should appear.
-5045=%S - Downloading message %lu of %lu
+imapFolderReceivingMessageOf=%S - Downloading message %lu of %lu
 
-## @name IMAP_DISCOVERING_MAILBOX 
-## @loc None
-# LOCALIZATION NOTE (Error 5046): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapDiscoveringMailbox): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5046=Found folder: %S
+imapDiscoveringMailbox=Found folder: %S
 
-## @name IMAP_ENTER_PASSWORD_PROMPT
-## @loc None
-# LOCALIZATION NOTE (Error 5047): Do not translate the word %S below.
+# LOCALIZATION NOTE (imapEnterPasswordPrompt): Do not translate the word %S below.
 # Place the word "%S" in your translation where the email address
 # or the username should appear
-5047=Enter your password for %S:
-
-## @name IMAP_SERVER_NOT_IMAP4
-## @loc None
-# LOCALIZATION NOTE (Error 5048): Do not translate the word "IMAP4" below.
-5048=Mail server %S is not an IMAP4 mail server.
+imapEnterPasswordPrompt=Enter your password for %S:
 
-## @name IMAP_SERVER_SAID
-## @loc None
-5049=The current command did not succeed.  The mail server responded: 
+# LOCALIZATION NOTE (imapServerNotImap4): Do not translate the word "IMAP4" below.
+imapServerNotImap4=Mail server %S is not an IMAP4 mail server.
 
-## @name IMAP_DONE
-## @loc None
-5050=
+# This is intentionally left blank.
+imapDone=
 
-## @name IMAP_ENTER_PASSWORD_PROMPT_TITLE
-## @loc None
-5051=Mail Server Password Required
+imapEnterPasswordPromptTitle=Mail Server Password Required
 
-## @name IMAP_UNKNOWN_HOST_ERROR
-## @loc None
-5052=Failed to connect to server %S.
+imapUnknownHostError=Failed to connect to server %S.
 
-## @name IMAP_IMAP_CONNECTION_REFUSED_ERROR
-## @loc None
-5053=Could not connect to mail server %S; the connection was refused.
+imapConnectionRefusedError=Could not connect to mail server %S; the connection was refused.
 
-## @name IMAP_NET_TIMEOUT_ERROR
-## @loc None
-5054=Connection to server %S timed out.
+imapNetTimeoutError=Connection to server %S timed out.
 
 # Status - no messages to download 
-## @name IMAP_NO_NEW_MESSAGES
-## @loc None
-5056=There are no new messages on the server.
+imapNoNewMessages=There are no new messages on the server.
 
-## @name IMAP_DEFAULT_ACCOUNT_NAME
-## @loc None
-5057=Mail for %S
+imapDefaultAccountName=Mail for %S
 
-## @name IMAP_SPECIAL_CHAR
-## @loc None
-5065= The %c character is reserved on this imap server. Please choose another name. 
+imapSpecialChar= The %c character is reserved on this imap server. Please choose another name. 
 
-## @name IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME
-## @loc None
-5066=Personal Folder
+imapPersonalSharedFolderTypeName=Personal Folder
 
-## @name IMAP_PUBLIC_FOLDER_TYPE_NAME
-## @loc None
-5067=Public Folder
+imapPublicFolderTypeName=Public Folder
 
-## @name IMAP_OTHER_USERS_FOLDER_TYPE_NAME
-## @loc None
-5068=Other User's Folder
+imapOtherUsersFolderTypeName=Other User's Folder
 
-## @name IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5069=This is a personal mail folder.  It is not shared.
+imapPersonalFolderTypeDescription=This is a personal mail folder.  It is not shared.
 
-## @name IMAP_PERSONAL_SHARED_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5070=This is a personal mail folder.  It has been shared.
+imapPersonalSharedFolderTypeDescription=This is a personal mail folder.  It has been shared.
 
-## @name IMAP_PUBLIC_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5071=This is a public folder.
+imapPublicFolderTypeDescription=This is a public folder.
 
-## @name IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5072=This is a mail folder shared by the user '%S'.
+imapOtherUsersFolderTypeDescription=This is a mail folder shared by the user '%S'.
 
-## @name IMAP_ACL_FULL_RIGHTS
-## @loc None
-5073=Full Control
+imapAclFullRights=Full Control
 
-## @name IMAP_ACL_LOOKUP_RIGHT
-## @loc None
-5074=Lookup
+imapAclLookupRight=Lookup
 
-## @name IMAP_ACL_READ_RIGHT
-## @loc None
-5075=Read
+imapAclReadRight=Read
 
-## @name IMAP_ACL_SEEN_RIGHT
-## @loc None
-5076=Set Read/Unread State
+imapAclSeenRight=Set Read/Unread State
 
-## @name IMAP_ACL_WRITE_RIGHT
-## @loc None
-5077=Write
+imapAclWriteRight=Write
 
-## @name IMAP_ACL_INSERT_RIGHT
-## @loc None
-5078=Insert (Copy Into)
+imapAclInsertRight=Insert (Copy Into)
 
-## @name IMAP_ACL_POST_RIGHT
-## @loc None
-5079=Post
+imapAclPostRight=Post
 
-## @name IMAP_ACL_CREATE_RIGHT
-## @loc None
-5080=Create Subfolder
+imapAclCreateRight=Create Subfolder
 
-## @name IMAP_ACL_DELETE_RIGHT
-## @loc None
-5081=Delete Messages
+imapAclDeleteRight=Delete Messages
 
-## @name IMAP_ACL_ADMINISTER_RIGHT
-## @loc None
-5082=Administer Folder
+imapAclAdministerRight=Administer Folder
 
-## @name IMAP_SERVER_DOESNT_SUPPORT_ACL
-## @loc None
-5084=This server does not support shared folders.
+imapServerDoesntSupportAcl=This server does not support shared folders.
 
-## @name IMAP_ACL_EXPUNGE_RIGHT
-## @loc None
-5085=Expunge
+imapAclExpungeRight=Expunge
 
-## @name IMAP_SERVER_DISCONNECTED
-## @loc None
-5090= Server %S has disconnected. The server may have gone down or there may be a network problem.
+imapServerDisconnected= Server %S has disconnected. The server may have gone down or there may be a network problem.
 
 # LOCALIZATION NOTE (autoSubscribeText): %1$S is the imap folder.
-5092=Would you like to subscribe to %1$S?
+imapSubscribePrompt=Would you like to subscribe to %1$S?
 
-## @name IMAP_SERVER_DROPPED_CONNECTION
-## @loc None
-5093=Unable to connect to your IMAP server. You may have exceeded the maximum number \
+imapServerDroppedConnection=Unable to connect to your IMAP server. You may have exceeded the maximum number \
 of connections to this server. If so, use the Advanced IMAP Server Settings dialog to \
 reduce the number of cached connections.
 
-## @name IMAP_QUOTA_STATUS_FOLDERNOTOPEN
-## @loc None
-5095=Quota information is not available because the folder is not open.
+imapQuotaStatusFolderNotOpen=Quota information is not available because the folder is not open.
 
-## @name IMAP_QUOTA_STATUS_NOTSUPPORTED
-## @loc None
-5096=This server does not support quotas.
+imapQuotaStatusNotSupported=This server does not support quotas.
 
-## @name IMAP_QUOTA_STATUS_NOQUOTA
-## @loc None
-5097=There are no storage quotas on this folder.
+imapQuotaStatusNoQuota=There are no storage quotas on this folder.
 
 # Out of memory
-## @name IMAP_OUT_OF_MEMORY
-## @loc None
-5100=Application is out of memory.
+imapOutOfMemory=Application is out of memory.
 
-## @name IMAP_COPYING_MESSAGE_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5103): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapCopyingMessageOf): Do not translate the word "%S" below.
 # Place the word %3$S in your translation where the name of the destination folder should appear.
 # Place the word %1$S where the currently copying message should appear.
 # Place the word %2$S where the total number of messages should appear.
-5103=Copying Message %1$S of %2$S to %3$S
+imapCopyingMessageOf=Copying Message %1$S of %2$S to %3$S
 
-## @name IMAP_MOVE_FOLDER_TO_TRASH
-## @loc None
-# LOCALIZATION NOTE (5105): Do not translate the word %S below.
-# "%S" is the the name of the folder.
-5105=Are you sure you want to delete the folder '%S'?
-
-## @name IMAP_DELETE_NO_TRASH
-## @loc None
-# LOCALIZATION NOTE (5106): Do not translate the word %S below.
+# LOCALIZATION NOTE (imapMoveFolderToTrash): Do not translate the word %S below.
 # "%S" is the the name of the folder.
-5106=Deleting this folder is not undoable and will delete all of the messages it contains, and its sub-folders. Are you sure you still want to delete the folder '%S'?
-
-## @name IMAP_DELETE_FOLDER_DIALOG_TITLE
-## @loc None
-5107=Delete Folder
+imapMoveFolderToTrash=Are you sure you want to delete the folder '%S'?
 
-## @name IMAP_DELETE_FOLDER_BUTTON_LABEL
-## @loc None
-5108=&Delete Folder
+# LOCALIZATION NOTE (imapDeleteNoTrash): Do not translate the word %S below.
+# "%S" is the the name of the folder.
+imapDeleteNoTrash=Deleting this folder is not undoable and will delete all of the messages it contains, and its sub-folders. Are you sure you still want to delete the folder '%S'?
 
-## @name IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_SSL
-## @loc None
-# LOCALIZATION NOTE (5110): %S is the server hostname
-5110=The IMAP server %S does not seem to support encrypted passwords. If you just set up this account, please try changing to 'Normal password' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, please contact your email administrator or provider.
+imapDeleteFolderDialogTitle=Delete Folder
+
+imapDeleteFolderButtonLabel=&Delete Folder
 
-## @name IMAP_AUTH_CHANGE_PLAIN_TO_ENCRYPT
-## @loc None
-# LOCALIZATION NOTE (5111): %S is the server hostname
-5111=The IMAP server %S does not allow plaintext passwords. Please try changing to 'Encrypted password' as the 'Authentication method' in the 'Account Settings | Server settings'.
+# LOCALIZATION NOTE (imapAuthChangeEncryptToPlainSSL): %S is the server hostname
+imapAuthChangeEncryptToPlainSSL=The IMAP server %S does not seem to support encrypted passwords. If you just set up this account, please try changing to 'Normal password' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, please contact your email administrator or provider.
 
-## @name IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_NO_SSL
-## @loc None
-# LOCALIZATION NOTE (5112): %S is the server hostname
-5112=The IMAP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
-
-## @name IMAP_AUTH_MECH_NOT_SUPPORTED
-## @loc None
-# LOCALIZATION NOTE (5113): %S is the server hostname
-5113=The IMAP server %S does not support the selected authentication method. Please change the 'Authentication method' in the 'Account Settings | Server settings'.
+# LOCALIZATION NOTE (imapAuthChangePlainToEncrypt): %S is the server hostname
+imapAuthChangePlainToEncrypt=The IMAP server %S does not allow plaintext passwords. Please try changing to 'Encrypted password' as the 'Authentication method' in the 'Account Settings | Server settings'.
 
-## @name IMAP_AUTH_MECH_FAILED
-## @loc None
-# LOCALIZATION NOTE (5114): %S is the server hostname
-5114=All login mechanisms for %S failed. Please check the password or change the 'Authentication method' in the 'Account Settings | Server settings'.
+# LOCALIZATION NOTE (imapAuthChangeEncryptToPlainNoSSL): %S is the server hostname
+imapAuthChangeEncryptToPlainNoSSL=The IMAP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
 
-## @name IMAP_AUTH_GSSAPI_FAILED
-## @loc None
-# LOCALIZATION NOTE (5115): %S is the server hostname
-5115=The Kerberos/GSSAPI ticket was not accepted by the IMAP server %S. Please check that you are logged in to the Kerberos/GSSAPI realm.
+# LOCALIZATION NOTE (imapAuthMechNotSupported): %S is the server hostname
+imapAuthMechNotSupported=The IMAP server %S does not support the selected authentication method. Please change the 'Authentication method' in the 'Account Settings | Server settings'.
 
-## @name IMAP_LOGIN_DISABLED
-## @loc None
-# LOCALIZATION NOTE (5116): %S is the account name
-5116=You cannot log in to %S because the server doesn't allow plaintext authentication without STARTTLS or SSL/TLS. Try enabling connection security or secure authentication in the account settings.
+# LOCALIZATION NOTE (imapAuthGssapiFailed): %S is the server hostname
+imapAuthGssapiFailed=The Kerberos/GSSAPI ticket was not accepted by the IMAP server %S. Please check that you are logged in to the Kerberos/GSSAPI realm.
 
-## @name IMAP_SERVER_COMMAND_FAILED
-## @loc None
-# LOCALIZATION NOTE (5117): 
+# LOCALIZATION NOTE (imapServerCommandFailed): 
 # Place the word %1$S in your translation where the name of the account name should appear.
 # Place the word %2$S in your translation where the server response should appear.
-5117=The current command did not succeed. The mail server for account %1$S responded: %2$S 
+imapServerCommandFailed=The current command did not succeed. The mail server for account %1$S responded: %2$S 
 
-## @name IMAP_FOLDER_COMMAND_FAILED
-## @loc None
-# LOCALIZATION NOTE (5118): Do not translate the word %S below.
+# LOCALIZATION NOTE (imapFolderCommandFailed): Do not translate the word %S below.
 # Place the word %1$S in your translation where the name of the account should appear.
 # Place the word %2$S in your translation where the name of the folder should appear.
 # Place the word %3$S in your translation where the server response should appear.
-5118=The current operation on '%2$S' did not succeed. The mail server for account %1$S responded: %3$S
+imapFolderCommandFailed=The current operation on '%2$S' did not succeed. The mail server for account %1$S responded: %3$S
 
-## @name IMAP_SERVER_ALERT
-## @loc None
-# LOCALIZATION NOTE (5119):
+# LOCALIZATION NOTE (imapServerAlert):
 # Place the word %1$S in your translation where the name of the account should appear.
 # Place the word %2$S in your translation where the alert from the server should appear.
-5119=Alert from account %1$S: %2$S
+imapServerAlert=Alert from account %1$S: %2$S
--- a/mailnews/imap/public/nsIImapMailFolderSink.idl
+++ b/mailnews/imap/public/nsIImapMailFolderSink.idl
@@ -86,17 +86,17 @@ interface nsIImapMailFolderSink : nsISup
   void closeMockChannel(in nsIImapMockChannel aChannel);
   void setUrlState(in nsIImapProtocol aProtocol, in nsIMsgMailNewsUrl aUrl,
                    in boolean isRunning, in boolean aSuspend,
                    in nsresult status);
   void releaseUrlCacheEntry(in nsIMsgMailNewsUrl aUrl);
 
   void headerFetchCompleted(in nsIImapProtocol aProtocol);
   void setBiffStateAndUpdate(in long biffState);
-  void progressStatus(in nsIImapProtocol aProtocol, in unsigned long aMsgId, in wstring extraInfo);
+  void progressStatusString(in nsIImapProtocol aProtocol, in string aMsgId, in wstring extraInfo);
   void percentProgress(in nsIImapProtocol aProtocol, in wstring aMessage, 
                        in long long aCurrentProgress, in long long aMaxProgressProgressInfo);
 
   void clearFolderRights();
   void setCopyResponseUid(in string msgIdString,
                                 in nsIImapUrl aUrl);
   void setAppendMsgUid(in nsMsgKey newKey,
                              in nsIImapUrl aUrl);
--- a/mailnews/imap/public/nsIImapServerSink.idl
+++ b/mailnews/imap/public/nsIImapServerSink.idl
@@ -11,17 +11,17 @@ interface nsIMsgMailNewsUrl;
 interface nsIImapProtocol;
 interface nsIImapUrl;
 interface nsIImapMockChannel;
 
 /**
  * nsIImapServerSink is designed to be used as a proxy to the application's UI
  * thread from the running IMAP threads.
  */
-[scriptable, uuid(33184087-eadc-4b5d-aad6-14cf6e6a43af)]
+[scriptable, uuid(2160c641-e4fa-4bbc-ab8b-d9ba45069027)]
 interface nsIImapServerSink : nsISupports {
   /**
    * Check if the given folder path is a possible IMAP mailbox.
    * @param folderPath folder path to check
    * @param hierarchyDelimiter IMAP hierarchy delimiter in canonical format,
    *                           i.e., hierarchy delimiter has been replaced
    *                           with '/'
    * @param boxFlags IMAP folder flags (for subscription, namespaces etc.)
@@ -69,18 +69,17 @@ interface nsIImapServerSink : nsISupport
    */
   void retryUrl(in nsIImapUrl imapUrl, in nsIImapMockChannel channel);
 
   /**
    * If previous URL failed, this gives server chance to abort URLs with same
    * mock channel.
    */
   void abortQueuedUrls();
-  AString getImapStringByID(in long msgId);
-
+  AString getImapStringByName(in string msgName);
   /**
    * Alerts the user that the login to the IMAP server failed. Asks whether the
    * connection should: retry, cancel, or request a new password.
    *
    * @param aMsgWindow The message window associated with this action (cannot
    *                   be null).
    * @return           The button pressed. 0 for retry, 1 for cancel,
    *                   2 for enter a new password.
@@ -94,21 +93,20 @@ interface nsIImapServerSink : nsISupport
    * @param aUrl         The running url.
    */
   void fEAlert(in AString aAlertString, in nsIMsgMailNewsUrl aUrl);
 
   /**
    * Alerts the user with a localized string. It will attempt to fill in
    * the hostname into the string if necessary.
    *
-   * @param aMsgId  The id of the string to present to the user..
+   * @param aMsgName  The id of the string to present to the user..
    * @param aUrl    The running url.
    */
-  void fEAlertWithID(in long aMsgId, in nsIMsgMailNewsUrl aUrl);
-
+  void fEAlertWithName(in string aMsgName, in nsIMsgMailNewsUrl aUrl);
   /**
    * Takes a response from the server and prepends it with IMAP_SERVER_SAID 
    *
    * @param aServerString  The string to alert the user with.
    * @param url            The running url.
    */
   void fEAlertFromServer(in ACString aServerString, in nsIMsgMailNewsUrl aUrl);
 
--- a/mailnews/imap/src/nsIMAPBodyShell.cpp
+++ b/mailnews/imap/src/nsIMAPBodyShell.cpp
@@ -510,18 +510,19 @@ int32_t nsIMAPBodypart::GenerateEmptyFil
   if (prefetch)
     return 0; // don't need to prefetch anything
 
   nsCOMPtr<nsIStringBundle> bundle;
   nsresult rv = IMAPGetStringBundle(getter_AddRefs(bundle));
   NS_ENSURE_SUCCESS(rv, 0);
 
   nsAutoString emptyString;
-  rv = bundle->GetStringFromID(IMAP_EMPTY_MIME_PART,
-                               getter_Copies(emptyString));
+  rv = bundle->GetStringFromName(
+    NS_LITERAL_STRING("imapEmptyMimePart").get(),
+    getter_Copies(emptyString));
   if (NS_SUCCEEDED(rv) && !emptyString.IsEmpty())
   {
     if (stream)
     {
       nsImapProtocol *conn = aShell->GetConnection();
       conn->Log("SHELL", "GENERATE-Filling", m_partNumberString);
       conn->HandleMessageDownLoadLine(NS_ConvertUTF16toUTF8(emptyString).get(),
                                       false);
--- a/mailnews/imap/src/nsImapIncomingServer.cpp
+++ b/mailnews/imap/src/nsImapIncomingServer.cpp
@@ -172,17 +172,17 @@ nsImapIncomingServer::GetConstructedPret
     NS_ENSURE_SUCCESS(rv,rv);
     if (!username.IsEmpty() && !hostName.IsEmpty()) {
       CopyASCIItoUTF16(username, emailAddress);
       emailAddress.Append('@');
       emailAddress.Append(NS_ConvertASCIItoUTF16(hostName));
     }
   }
 
-  return GetFormattedStringFromID(emailAddress, IMAP_DEFAULT_ACCOUNT_NAME, retval);
+  return GetFormattedStringFromName(emailAddress, "imapDefaultAccountName", retval);
 }
 
 
 NS_IMETHODIMP nsImapIncomingServer::GetLocalStoreType(nsACString& type)
 {
   type.AssignLiteral("imap");
   return NS_OK;
 }
@@ -1798,18 +1798,19 @@ nsImapIncomingServer::FEAlert(const nsAS
     nsAutoString hostName;
     nsresult rv = GetPrettyName(hostName);
     if (NS_SUCCEEDED(rv))
     {
       nsString message;
       nsString tempString(aAlertString);
       const PRUnichar *params[] = { hostName.get(), tempString.get() };
 
-      rv = m_stringBundle->FormatStringFromID(IMAP_SERVER_ALERT, params, 2,
-                                              getter_Copies(message));
+      rv = m_stringBundle->FormatStringFromName(
+        NS_LITERAL_STRING("imapServerAlert").get(),
+        params, 2, getter_Copies(message));
       if (NS_SUCCEEDED(rv))
         return AlertUser(message, aUrl);
     }
   }
   return AlertUser(aAlertString, aUrl);
 }
 
 nsresult nsImapIncomingServer::AlertUser(const nsAString& aString,
@@ -1819,43 +1820,44 @@ nsresult nsImapIncomingServer::AlertUser
   nsCOMPtr <nsIMsgMailSession> mailSession =
     do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv);
   NS_ENSURE_SUCCESS(rv, rv);
 
   return mailSession->AlertUser(aString, aUrl);
 }
 
 NS_IMETHODIMP
-nsImapIncomingServer::FEAlertWithID(int32_t aMsgId, nsIMsgMailNewsUrl *aUrl)
+nsImapIncomingServer::FEAlertWithName(const char* aMsgName, nsIMsgMailNewsUrl *aUrl)
 {
   // don't bother the user if we're shutting down.
   if (m_shuttingDown)
     return NS_OK;
 
   GetStringBundle();
 
   nsString message;
 
   if (m_stringBundle)
   {
     nsAutoString hostName;
     nsresult rv = GetPrettyName(hostName);
     if (NS_SUCCEEDED(rv))
     {
       const PRUnichar *params[] = { hostName.get() };
-      rv = m_stringBundle->FormatStringFromID(aMsgId, params, 1,
-                                              getter_Copies(message));
+      rv = m_stringBundle->FormatStringFromName(
+        NS_ConvertASCIItoUTF16(aMsgName).get(),
+        params, 1,getter_Copies(message));
       if (NS_SUCCEEDED(rv))
         return AlertUser(message, aUrl);
     }
   }
 
   // Error condition
-  message.AssignLiteral("String ID ");
-  message.AppendInt(aMsgId);
+  message.AssignLiteral("String Name ");
+  message.AppendASCII(aMsgName);
   FEAlert(message, aUrl);
   return NS_OK;
 }
 
 NS_IMETHODIMP  nsImapIncomingServer::FEAlertFromServer(const nsACString& aServerString,
                                                        nsIMsgMailNewsUrl *aUrl)
 {
   NS_ENSURE_TRUE(!aServerString.IsEmpty(), NS_OK);
@@ -1882,17 +1884,17 @@ NS_IMETHODIMP  nsImapIncomingServer::FEA
 
   const PRUnichar *formatStrings[] =
   {
     hostName.get(),
     nullptr,
     nullptr
   };
 
-  uint32_t msgID;
+  nsString msgName;
   int32_t numStrings;
   nsString fullMessage;
   nsCOMPtr<nsIImapUrl> imapUrl = do_QueryInterface(aUrl);
   NS_ENSURE_TRUE(imapUrl, NS_ERROR_INVALID_ARG);
 
   nsImapState imapState;
   nsImapAction imapAction;
 
@@ -1905,34 +1907,33 @@ NS_IMETHODIMP  nsImapIncomingServer::FEA
   nsCOMPtr<nsIMsgFolder> folder;
   if (imapState == nsIImapUrl::nsImapSelectedState ||
       imapAction == nsIImapUrl::nsImapFolderStatus)
   {
     aUrl->GetFolder(getter_AddRefs(folder));
     if (folder)
       folder->GetPrettyName(folderName);
     numStrings = 3;
-    msgID = IMAP_FOLDER_COMMAND_FAILED;
+    msgName.AssignLiteral("imapFolderCommandFailed");
     formatStrings[1] = folderName.get();
   }
   else
   {
-    msgID = IMAP_SERVER_COMMAND_FAILED;
+    msgName.AssignLiteral("imapServerCommandFailed");
     numStrings = 2;
   }
 
   formatStrings[numStrings -1] = unicodeMsg.get();
 
   nsresult rv = GetStringBundle();
   NS_ENSURE_SUCCESS(rv, rv);
   if (m_stringBundle)
   {
-    rv = m_stringBundle->FormatStringFromID(msgID,
-                                formatStrings, numStrings,
-                                getter_Copies(fullMessage));
+    rv = m_stringBundle->FormatStringFromName(msgName.get(),
+      formatStrings, numStrings, getter_Copies(fullMessage));
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   return AlertUser(fullMessage, aUrl);
 }
 
 #define IMAP_MSGS_URL       "chrome://messenger/locale/imapMsgs.properties"
 
@@ -1943,56 +1944,36 @@ nsresult nsImapIncomingServer::GetString
 
   nsCOMPtr<nsIStringBundleService> sBundleService =
     mozilla::services::GetStringBundleService();
   NS_ENSURE_TRUE(sBundleService, NS_ERROR_UNEXPECTED);
   return sBundleService->CreateBundle(IMAP_MSGS_URL, getter_AddRefs(m_stringBundle));
 }
 
 NS_IMETHODIMP
-nsImapIncomingServer::GetImapStringByID(int32_t aMsgId, nsAString& aString)
+nsImapIncomingServer::GetImapStringByName(const char* msgName, nsAString& aString)
 {
-  nsresult res = NS_OK;
+  nsresult rv = NS_OK;
   GetStringBundle();
   if (m_stringBundle)
   {
     nsString res_str;
-    res = m_stringBundle->GetStringFromID(aMsgId, getter_Copies(res_str));
+    rv = m_stringBundle->GetStringFromName(
+       NS_ConvertASCIItoUTF16(msgName).get(),
+       getter_Copies(res_str));
     aString.Assign(res_str);
-    if (NS_SUCCEEDED(res))
-      return res;
+    if (NS_SUCCEEDED(rv))
+      return rv;
   }
-  aString.AssignLiteral("String ID ");
+  aString.AssignLiteral("String Name ");
   // mscott: FIX ME
-  nsString tmpIntStr;
-  tmpIntStr.AppendInt(aMsgId);
-  aString.Append(tmpIntStr);
+  aString.AppendASCII(msgName);
   return NS_OK;
 }
 
-nsString
-nsImapIncomingServer::GetImapStringByName(const nsString &aName)
-{
-  nsString result;
-
-  GetStringBundle();
-
-  if (m_stringBundle)
-  {
-    nsresult rv = m_stringBundle->GetStringFromName(aName.get(),
-                                                    getter_Copies(result));
-    if (NS_SUCCEEDED(rv))
-      return result;
-  }
-
-  result.AssignLiteral("Failed to get string named ");
-  result.Append(aName);
-  return result;
-}
-
 nsresult nsImapIncomingServer::ResetFoldersToUnverified(nsIMsgFolder *parentFolder)
 {
   nsresult rv = NS_OK;
   if (!parentFolder)
   {
     nsCOMPtr<nsIMsgFolder> rootFolder;
     rv = GetRootFolder(getter_AddRefs(rootFolder));
     NS_ENSURE_SUCCESS(rv, rv);
@@ -2140,29 +2121,30 @@ nsImapIncomingServer::AsyncGetPassword(n
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImapIncomingServer::PromptPassword(nsIMsgWindow *aMsgWindow,
                                   nsACString &aPassword)
 {
   nsString passwordTitle;
-  IMAPGetStringByID(IMAP_ENTER_PASSWORD_PROMPT_TITLE, getter_Copies(passwordTitle));
+  IMAPGetStringByName("imapEnterPasswordPromptTitle",
+                      getter_Copies(passwordTitle));
   nsCString promptValue;
   GetRealUsername(promptValue);
 
   nsCString hostName;
   GetRealHostName(hostName);
   promptValue.Append('@');
   promptValue.Append(hostName);
 
   nsString passwordText;
-  nsresult rv = GetFormattedStringFromID(NS_ConvertASCIItoUTF16(promptValue),
-                                         IMAP_ENTER_PASSWORD_PROMPT,
-                                         passwordText);
+  nsresult rv = GetFormattedStringFromName(NS_ConvertASCIItoUTF16(promptValue),
+                                           "imapEnterPasswordPrompt",
+                                           passwordText);
   NS_ENSURE_SUCCESS(rv,rv);
 
   rv = GetPasswordWithUI(passwordText, passwordTitle, aMsgWindow, aPassword);
   if (NS_SUCCEEDED(rv))
     m_password = aPassword;
   return rv;
 }
 
@@ -2872,35 +2854,36 @@ nsImapIncomingServer::GeneratePrettyName
 
   // If the port is valid and not default, add port value to the pretty name
   if ((serverPort > 0) && (!isItDefaultPort)) {
     constructedPrettyName.Append(':');
     constructedPrettyName.AppendInt(serverPort);
   }
 
   // Format the pretty name
-  return GetFormattedStringFromID(constructedPrettyName, IMAP_DEFAULT_ACCOUNT_NAME, aPrettyName);
+  return GetFormattedStringFromName(constructedPrettyName,
+                                    "imapDefaultAccountName",
+                                    aPrettyName);
 }
 
 nsresult
-nsImapIncomingServer::GetFormattedStringFromID(const nsAString& aValue, int32_t aID, nsAString& aResult)
+nsImapIncomingServer::GetFormattedStringFromName(const nsAString& aValue,
+                                                 const char* aName,
+                                                 nsAString& aResult)
 {
   nsresult rv = GetStringBundle();
   if (m_stringBundle)
   {
     nsString tmpVal (aValue);
-    const PRUnichar *formatStrings[] =
-    {
-      tmpVal.get(),
-    };
+    const PRUnichar *formatStrings[] = { tmpVal.get() };
 
     nsString result;
-    rv = m_stringBundle->FormatStringFromID(aID,
-                                            formatStrings, 1,
-                                            getter_Copies(result));
+    rv = m_stringBundle->FormatStringFromName(
+      NS_ConvertASCIItoUTF16(aName).get(),
+      formatStrings, 1, getter_Copies(result));
     aResult.Assign(result);
   }
   return rv;
 }
 
 nsresult
 nsImapIncomingServer::GetPrefForServerAttribute(const char *prefSuffix, bool *prefValue)
 {
--- a/mailnews/imap/src/nsImapIncomingServer.h
+++ b/mailnews/imap/src/nsImapIncomingServer.h
@@ -77,29 +77,28 @@ protected:
   void GetUnverifiedSubFolders(nsIMsgFolder *parentFolder,
                                nsCOMArray<nsIMsgImapMailFolder> &aFoldersArray);
   void GetUnverifiedFolders(nsCOMArray<nsIMsgImapMailFolder> &aFolderArray);
   nsresult DeleteNonVerifiedFolders(nsIMsgFolder *parentFolder);
   bool NoDescendentsAreVerified(nsIMsgFolder *parentFolder);
   bool AllDescendentsAreNoSelect(nsIMsgFolder *parentFolder);
 
   nsresult GetStringBundle();
-  nsString GetImapStringByName(const nsString &aName);
   static nsresult AlertUser(const nsAString& aString, nsIMsgMailNewsUrl *aUrl);
 
 private:
   nsresult SubscribeToFolder(const PRUnichar *aName, bool subscribe);
   nsresult GetImapConnection(nsIImapUrl* aImapUrl,
                              nsIImapProtocol** aImapConnection);
   nsresult CreateProtocolInstance(nsIImapProtocol ** aImapConnection);
   nsresult CreateHostSpecificPrefName(const char *prefPrefix, nsAutoCString &prefName);
 
   nsresult DoomUrlIfChannelHasError(nsIImapUrl *aImapUrl, bool *urlDoomed);
   bool ConnectionTimeOut(nsIImapProtocol* aImapConnection);
-  nsresult GetFormattedStringFromID(const nsAString& aValue, int32_t aID, nsAString& aResult);
+  nsresult GetFormattedStringFromName(const nsAString& aValue, const char* aName, nsAString& aResult);
   nsresult GetPrefForServerAttribute(const char *prefSuffix, bool *prefValue);
   bool CheckSpecialFolder(nsIRDFService *rdf, nsCString &folderUri,
                             uint32_t folderFlag, nsCString &existingUri);
 
   nsCOMArray<nsIImapProtocol> m_connectionCache;
   nsCOMArray<nsIImapUrl> m_urlQueue;
   nsCOMPtr<nsIStringBundle>	m_stringBundle;
   nsCOMArray<nsIMsgFolder> m_subscribeFolders; // used to keep folder resources around while subscribe UI is up.
--- a/mailnews/imap/src/nsImapMailFolder.cpp
+++ b/mailnews/imap/src/nsImapMailFolder.cpp
@@ -1598,19 +1598,19 @@ NS_IMETHODIMP nsImapMailFolder::Rename (
       rv = IMAPGetStringBundle(getter_AddRefs(bundle));
       if (NS_SUCCEEDED(rv) && bundle)
       {
         const PRUnichar *formatStrings[] =
         {
           (const PRUnichar*)(intptr_t)m_hierarchyDelimiter
         };
         nsString alertString;
-        rv = bundle->FormatStringFromID(IMAP_SPECIAL_CHAR,
-                                      formatStrings, 1,
-                                      getter_Copies(alertString));
+        rv = bundle->FormatStringFromName(
+          NS_LITERAL_STRING("imapSpecialChar").get(),
+          formatStrings, 1, getter_Copies(alertString));
         nsCOMPtr<nsIPrompt> dialog(do_GetInterface(docShell));
         if (dialog && !alertString.IsEmpty())
           dialog->Alert(nullptr, alertString.get());
       }
     }
     return NS_ERROR_FAILURE;
   }
   nsCOMPtr <nsIImapIncomingServer> incomingImapServer;
@@ -2396,29 +2396,32 @@ nsImapMailFolder::DeleteSubFolders(nsIAr
     NS_ENSURE_SUCCESS(rv, rv);
 
     nsAutoString folderName;
     rv = curFolder->GetName(folderName);
     NS_ENSURE_SUCCESS(rv, rv);
     const PRUnichar *formatStrings[1] = { folderName.get() };
 
     nsAutoString deleteFolderDialogTitle;
-    rv = bundle->GetStringFromID(IMAP_DELETE_FOLDER_DIALOG_TITLE,
-                                 getter_Copies(deleteFolderDialogTitle));
+    rv = bundle->GetStringFromName(
+      NS_LITERAL_STRING("imapDeleteFolderDialogTitle").get(),
+      getter_Copies(deleteFolderDialogTitle));
     NS_ENSURE_SUCCESS(rv, rv);
 
     nsAutoString deleteFolderButtonLabel;
-    rv = bundle->GetStringFromID(IMAP_DELETE_FOLDER_BUTTON_LABEL,
-                                 getter_Copies(deleteFolderButtonLabel));
+    rv = bundle->GetStringFromName(
+      NS_LITERAL_STRING("imapDeleteFolderButtonLabel").get(),
+      getter_Copies(deleteFolderButtonLabel));
     NS_ENSURE_SUCCESS(rv, rv);
 
     nsAutoString confirmationStr;
-    rv = bundle->FormatStringFromID(
-           (!deleteNoTrash) ? IMAP_MOVE_FOLDER_TO_TRASH : IMAP_DELETE_NO_TRASH,
-           formatStrings, 1, getter_Copies(confirmationStr));
+    rv = bundle->FormatStringFromName((deleteNoTrash) ?
+        NS_LITERAL_STRING("imapDeleteNoTrash").get() :
+        NS_LITERAL_STRING("imapMoveFolderToTrash").get(),
+      formatStrings, 1, getter_Copies(confirmationStr));
     NS_ENSURE_SUCCESS(rv, rv);
     if (!msgWindow)
       return NS_ERROR_NULL_POINTER;
     nsCOMPtr<nsIDocShell> docShell;
     msgWindow->GetRootDocShell(getter_AddRefs(docShell));
     nsCOMPtr<nsIPrompt> dialog;
     if (docShell)
       dialog = do_GetInterface(docShell);
@@ -2805,17 +2808,17 @@ NS_IMETHODIMP nsImapMailFolder::UpdateIm
 
   if (!m_keysToFetch.IsEmpty() && aProtocol)
     PrepareToAddHeadersToMailDB(aProtocol);
   else
   {
     bool gettingNewMessages;
     GetGettingNewMessages(&gettingNewMessages);
     if (gettingNewMessages)
-      ProgressStatus(aProtocol, IMAP_NO_NEW_MESSAGES, nullptr);
+      ProgressStatusString(aProtocol, "imapNoNewMessages", nullptr);
     SetPerformingBiff(false);
   }
   aSpec->GetNumMessages(&m_numServerTotalMessages);
   aSpec->GetNumUnseenMessages(&m_numServerUnseenMessages);
   aSpec->GetNumRecentMessages(&m_numServerRecentMessages);
 
   // some servers don't return UIDNEXT on SELECT - don't crunch
   // existing values in that case.
@@ -5882,19 +5885,19 @@ nsImapMailFolder::SetUidValidity(int32_t
   m_uidValidity = uidValidity;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsImapMailFolder::FillInFolderProps(nsIMsgImapFolderProps *aFolderProps)
 {
   NS_ENSURE_ARG(aFolderProps);
-  uint32_t folderTypeStringID;
-  uint32_t folderTypeDescStringID = 0;
-  uint32_t folderQuotaStatusStringID;
+  const char* folderTypeStringID;
+  const char* folderTypeDescStringID;
+  const char* folderQuotaStatusStringID;
   nsString folderType;
   nsString folderTypeDesc;
   nsString folderQuotaStatusDesc;
   nsCOMPtr<nsIStringBundle> bundle;
   nsresult rv = IMAPGetStringBundle(getter_AddRefs(bundle));
   NS_ENSURE_SUCCESS(rv, rv);
 
   // get the host session list and get server capabilities.
@@ -5916,109 +5919,117 @@ nsImapMailFolder::FillInFolderProps(nsIM
     {
       // Have we asked the server for quota information?
       if(m_folderQuotaCommandIssued)
       {
         // Has the server replied with storage quota info?
         if(m_folderQuotaDataIsValid)
         {
           // If so, set quota data
-          folderQuotaStatusStringID = 0;
+          folderQuotaStatusStringID = nullptr;
           aFolderProps->SetQuotaData(m_folderQuotaRoot, m_folderQuotaUsedKB, m_folderQuotaMaxKB);
         }
         else
         {
           // If not, there is no storage quota set on this folder
-          folderQuotaStatusStringID = IMAP_QUOTA_STATUS_NOQUOTA;
+          folderQuotaStatusStringID = "imapQuotaStatusNoQuota";
         }
       }
       else
       {
         // The folder is not open, so no quota information is available
-        folderQuotaStatusStringID = IMAP_QUOTA_STATUS_FOLDERNOTOPEN;
+        folderQuotaStatusStringID = "imapQuotaStatusFolderNotOpen";
       }
     }
     else
     {
       // Either the server doesn't support quotas, or we don't know if it does
       // (e.g., because we don't have a connection yet). If the latter, we fall back
       // to saying that no information is available because the folder is not open.
       folderQuotaStatusStringID = (capability == kCapabilityUndefined) ?
-        IMAP_QUOTA_STATUS_FOLDERNOTOPEN : IMAP_QUOTA_STATUS_NOTSUPPORTED;
-    }
-
-    if(folderQuotaStatusStringID == 0)
+        "imapQuotaStatusFolderNotOpen" :
+        "imapQuotaStatusNotSupported";
+    }
+
+    if(!folderQuotaStatusStringID)
     {
       // Display quota data
       aFolderProps->ShowQuotaData(true);
     }
     else
     {
       // Hide quota data and show reason why it is not available
       aFolderProps->ShowQuotaData(false);
 
-      rv = IMAPGetStringByID(folderQuotaStatusStringID, getter_Copies(folderQuotaStatusDesc));
+      rv = IMAPGetStringByName(folderQuotaStatusStringID,
+                               getter_Copies(folderQuotaStatusDesc));
       if (NS_SUCCEEDED(rv))
         aFolderProps->SetQuotaStatus(folderQuotaStatusDesc);
     }
 
     // See if the server supports ACL.
     // If not, just set the folder description to a string that says
     // the server doesn't support sharing, and return.
     if (!haveACL)
     {
-      rv = IMAPGetStringByID(IMAP_SERVER_DOESNT_SUPPORT_ACL, getter_Copies(folderTypeDesc));
+      rv = IMAPGetStringByName("imapServerDoesntSupportAcl",
+                               getter_Copies(folderTypeDesc));
       if (NS_SUCCEEDED(rv))
         aFolderProps->SetFolderTypeDescription(folderTypeDesc);
       aFolderProps->ServerDoesntSupportACL();
       return NS_OK;
     }
   }
   if (mFlags & nsMsgFolderFlags::ImapPublic)
   {
-    folderTypeStringID = IMAP_PUBLIC_FOLDER_TYPE_NAME;
-    folderTypeDescStringID = IMAP_PUBLIC_FOLDER_TYPE_DESCRIPTION;
+    folderTypeStringID = "imapPublicFolderTypeName";
+    folderTypeDescStringID = "imapPublicFolderTypeDescription";
   }
   else if (mFlags & nsMsgFolderFlags::ImapOtherUser)
   {
-    folderTypeStringID = IMAP_OTHER_USERS_FOLDER_TYPE_NAME;
+    folderTypeStringID = "imapOtherUsersFolderTypeName";
     nsCString owner;
     nsString uniOwner;
     GetFolderOwnerUserName(owner);
     if (owner.IsEmpty())
     {
-      rv = IMAPGetStringByID(folderTypeStringID, getter_Copies(uniOwner));
+      rv = IMAPGetStringByName(folderTypeStringID,
+                               getter_Copies(uniOwner));
       // Another user's folder, for which we couldn't find an owner name
       NS_ASSERTION(false, "couldn't get owner name for other user's folder");
     }
     else
     {
       // is this right? It doesn't leak, does it?
       CopyASCIItoUTF16(owner, uniOwner);
     }
     const PRUnichar *params[] = { uniOwner.get() };
-    rv = bundle->FormatStringFromID(IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION, params, 1, getter_Copies(folderTypeDesc));
+    rv = bundle->FormatStringFromName(
+      NS_LITERAL_STRING("imapOtherUsersFolderTypeDescription").get(),
+      params, 1, getter_Copies(folderTypeDesc));
   }
   else if (GetFolderACL()->GetIsFolderShared())
   {
-    folderTypeStringID = IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME;
-    folderTypeDescStringID = IMAP_PERSONAL_SHARED_FOLDER_TYPE_DESCRIPTION;
+    folderTypeStringID = "imapPersonalSharedFolderTypeName";
+    folderTypeDescStringID = "imapPersonalSharedFolderTypeDescription";
   }
   else
   {
-    folderTypeStringID = IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME;
-    folderTypeDescStringID = IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION;
-  }
-
-  rv = IMAPGetStringByID(folderTypeStringID, getter_Copies(folderType));
+    folderTypeStringID = "imapPersonalSharedFolderTypeName";
+    folderTypeDescStringID = "imapPersonalFolderTypeDescription";
+  }
+
+  rv = IMAPGetStringByName(folderTypeStringID,
+                           getter_Copies(folderType));
   if (NS_SUCCEEDED(rv))
     aFolderProps->SetFolderType(folderType);
 
-  if (folderTypeDesc.IsEmpty() && folderTypeDescStringID != 0)
-    rv = IMAPGetStringByID(folderTypeDescStringID, getter_Copies(folderTypeDesc));
+  if (folderTypeDesc.IsEmpty() && folderTypeDescStringID)
+    rv = IMAPGetStringByName(folderTypeDescStringID,
+                             getter_Copies(folderTypeDesc));
   if (!folderTypeDesc.IsEmpty())
     aFolderProps->SetFolderTypeDescription(folderTypeDesc);
 
   nsString rightsString;
   rv = CreateACLRightsStringForFolder(rightsString);
   if (NS_SUCCEEDED(rv))
     aFolderProps->SetFolderPermissions(rightsString);
   return NS_OK;
@@ -6524,80 +6535,91 @@ nsresult nsMsgIMAPFolderACL::CreateACLRi
 {
   nsString curRight;
   nsCOMPtr<nsIStringBundle> bundle;
   nsresult rv = IMAPGetStringBundle(getter_AddRefs(bundle));
   NS_ENSURE_SUCCESS(rv, rv);
 
   if (GetDoIHaveFullRightsForFolder()) {
     nsAutoString result;
-    rv = bundle->GetStringFromID(IMAP_ACL_FULL_RIGHTS, getter_Copies(result));
+    rv = bundle->GetStringFromName(NS_LITERAL_STRING("imapAclFullRights").get(),
+                                   getter_Copies(result));
     aRightsString.Assign(result);
     return rv;
   }
   else
   {
     if (GetCanIReadFolder())
     {
-      bundle->GetStringFromID(IMAP_ACL_READ_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclReadRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIWriteFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_WRITE_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclWriteRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIInsertInFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_INSERT_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclInsertRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanILookupFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_LOOKUP_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclLookupRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIStoreSeenInFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_SEEN_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclSeenRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIDeleteInFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_DELETE_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclDeleteRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIExpungeFolder())
     {
       if (!aRightsString.IsEmpty())
         aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_EXPUNGE_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclExpungeRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanICreateSubfolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_CREATE_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclCreateRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIPostToFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_POST_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclPostRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
     if (GetCanIAdministerFolder())
     {
       if (!aRightsString.IsEmpty()) aRightsString.AppendLiteral(", ");
-      bundle->GetStringFromID(IMAP_ACL_ADMINISTER_RIGHT, getter_Copies(curRight));
+      bundle->GetStringFromName(NS_LITERAL_STRING("imapAclAdministerRight").get(),
+                                getter_Copies(curRight));
       aRightsString.Append(curRight);
     }
   }
   return rv;
 }
 
 NS_IMETHODIMP nsImapMailFolder::GetFilePath(nsIFile ** aPathName)
 {
@@ -6625,31 +6647,32 @@ nsresult nsImapMailFolder::DisplayStatus
         if (!request) return NS_ERROR_FAILURE;
       progressSink->OnStatus(request, nullptr, NS_OK, PromiseFlatString(msg).get());      // XXX i18n message
     }
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsImapMailFolder::ProgressStatus(nsIImapProtocol* aProtocol,
-                                 uint32_t aMsgId, const PRUnichar * extraInfo)
+nsImapMailFolder::ProgressStatusString(nsIImapProtocol* aProtocol,
+                                       const char* aMsgName, 
+                                       const PRUnichar * extraInfo)
 {
   nsString progressMsg;
 
   nsCOMPtr<nsIMsgIncomingServer> server;
   nsresult rv = GetServer(getter_AddRefs(server));
   if (NS_SUCCEEDED(rv) && server)
   {
     nsCOMPtr<nsIImapServerSink> serverSink = do_QueryInterface(server);
     if (serverSink)
-      serverSink->GetImapStringByID(aMsgId, progressMsg);
+      serverSink->GetImapStringByName(aMsgName, progressMsg);
   }
   if (progressMsg.IsEmpty())
-    IMAPGetStringByID(aMsgId, getter_Copies(progressMsg));
+    IMAPGetStringByName(aMsgName, getter_Copies(progressMsg));
 
   if (aProtocol && !progressMsg.IsEmpty())
   {
     nsCOMPtr <nsIImapUrl> imapUrl;
     aProtocol->GetRunningImapURL(getter_AddRefs(imapUrl));
     if (imapUrl)
     {
       if (extraInfo)
@@ -6774,17 +6797,17 @@ nsImapMailFolder::SetUrlState(nsIImapPro
                               nsresult statusCode)
 {
   // If we have no path, then the folder has been shutdown, and there's
   // no point in doing anything...
   if (!mPath)
     return NS_OK;
   if (!isRunning)
   {
-    ProgressStatus(aProtocol, IMAP_DONE, nullptr);
+    ProgressStatusString(aProtocol, "imapDone", nullptr);
     m_urlRunning = false;
     // if no protocol, then we're reading from the mem or disk cache
     // and we don't want to end the offline download just yet.
     if (aProtocol)
     {
       EndOfflineDownload();
         m_downloadingFolderForOfflineUse = false;
       }
@@ -8096,19 +8119,19 @@ nsImapMailFolder::CopyStreamMessage(nsIM
       const PRUnichar *formatStrings[3] = {curMsgString.get(),
                                             totalMsgString.get(),
                                             dstFolderName.get()
                                             };
 
       nsCOMPtr <nsIStringBundle> bundle;
       rv = IMAPGetStringBundle(getter_AddRefs(bundle));
       NS_ENSURE_SUCCESS(rv, rv);
-      rv = bundle->FormatStringFromID(IMAP_COPYING_MESSAGE_OF,
-                                        formatStrings, 3,
-                                        getter_Copies(progressText));
+      rv = bundle->FormatStringFromName(
+        NS_LITERAL_STRING("imapCopyingMessageOf").get(),
+        formatStrings, 3, getter_Copies(progressText));
       nsCOMPtr <nsIMsgStatusFeedback> statusFeedback;
       if (m_copyState->m_msgWindow)
         m_copyState->m_msgWindow->GetStatusFeedback(getter_AddRefs(statusFeedback));
       if (statusFeedback)
       {
         statusFeedback->ShowStatusString(progressText);
         int32_t percent;
         percent = (100 * m_copyState->m_curIndex) / (int32_t) m_copyState->m_totalCount;
--- a/mailnews/imap/src/nsImapProtocol.cpp
+++ b/mailnews/imap/src/nsImapProtocol.cpp
@@ -450,17 +450,17 @@ nsImapProtocol::nsImapProtocol() : nsMsg
   m_overRideUrlConnectionInfo = false;
   // m_dataOutputBuf is used by Send Data
   m_dataOutputBuf = (char *) PR_CALLOC(sizeof(char) * OUTPUT_BUFFER_SIZE);
   m_allocatedSize = OUTPUT_BUFFER_SIZE;
 
   // used to buffer incoming data by ReadNextLine
   m_inputStreamBuffer = new nsMsgLineStreamBuffer(OUTPUT_BUFFER_SIZE, true /* allocate new lines */, false /* leave CRLFs on the returned string */);
   m_currentBiffState = nsIMsgFolder::nsMsgBiffState_Unknown;
-  m_progressStringId = 0;
+  m_progressStringName.Truncate();
 
   // since these are embedded in the nsImapProtocol object, but passed
   // through proxied xpcom methods, just AddRef them here.
   m_hdrDownloadCache = new nsMsgImapHdrXferInfo();
   m_downloadLineCache = new nsMsgImapLineDownloadCache();
   m_standardListMailboxes.Init(0);
   m_specialXListMailboxes.Init(0);
 
@@ -1601,17 +1601,17 @@ bool nsImapProtocol::ProcessCurrentURL()
       /* if we got here, the server's greeting should not have been PREAUTH */
       if (GetServerStateParser().GetCapabilityFlag() == kCapabilityUndefined)
           Capability();
 
       if ( !(GetServerStateParser().GetCapabilityFlag() & (kIMAP4Capability | kIMAP4rev1Capability |
              kIMAP4other) ) )
       {
         if (!DeathSignalReceived() && NS_SUCCEEDED(GetConnectionStatus()))
-          AlertUserEventUsingId(IMAP_SERVER_NOT_IMAP4);
+          AlertUserEventUsingName("imapServerNotImap4");
 
         SetConnectionStatus(NS_ERROR_FAILURE);        // stop netlib
       }
       else
       {
         if ((m_connectionType.Equals("starttls")
              && (m_socketType == nsMsgSocketType::trySTARTTLS
              && (GetServerStateParser().GetCapabilityFlag() & kHasStartTLSCapability)))
@@ -2494,31 +2494,31 @@ void nsImapProtocol::ProcessSelectedStat
         {
           nsCString messageIdString;
           m_runningUrl->GetListOfMessageIds(messageIdString);
           // we don't want to send the flags back in a group
           if (HandlingMultipleMessages(messageIdString) || m_imapAction == nsIImapUrl::nsImapMsgDownloadForOffline
              || m_imapAction == nsIImapUrl::nsImapMsgPreview)
           {
             // multiple messages, fetch them all
-            SetProgressString(IMAP_FOLDER_RECEIVING_MESSAGE_OF);
+            SetProgressString("imapFolderReceivingMessageOf");
 
             m_progressIndex = 0;
             m_progressCount = CountMessagesInIdString(messageIdString.get());
 
             // we need to set this so we'll get the msg from the memory cache.
             if (m_imapAction == nsIImapUrl::nsImapMsgFetchPeek)
               SetContentModified(IMAP_CONTENT_NOT_MODIFIED);
 
             FetchMessage(messageIdString,
               (m_imapAction == nsIImapUrl::nsImapMsgPreview)
               ? kBodyStart : kEveryThingRFC822Peek);
             if (m_imapAction == nsIImapUrl::nsImapMsgPreview)
               HeaderFetchCompleted();
-            SetProgressString(0);
+            SetProgressString(nullptr);
           }
           else
           {
             // A single message ID
             nsIMAPeFetchFields whatToFetch = kEveryThingRFC822;
             if(m_imapAction == nsIImapUrl::nsImapMsgFetchPeek)
               whatToFetch = kEveryThingRFC822Peek;
 
@@ -2752,18 +2752,19 @@ void nsImapProtocol::ProcessSelectedStat
           }
         }
         break;
       case nsIImapUrl::nsImapDeleteMsg:
         {
           nsCString messageIdString;
           m_runningUrl->GetListOfMessageIds(messageIdString);
 
-          ProgressEventFunctionUsingId (HandlingMultipleMessages(messageIdString) ?
-                                      IMAP_DELETING_MESSAGES :IMAP_DELETING_MESSAGE);
+          ProgressEventFunctionUsingName(HandlingMultipleMessages(messageIdString) ?
+                                         "imapDeletingMessages" :
+                                         "imapDeletingMessage");
 
           Store(messageIdString, "+FLAGS (\\Deleted)",  bMessageIdsAreUids);
 
           if (GetServerStateParser().LastCommandSuccessful())
           {
             //delete_message_struct *deleteMsg = (delete_message_struct *) PR_Malloc (sizeof(delete_message_struct));
             // convert name back from utf7
             nsCString canonicalName;
@@ -2859,25 +2860,25 @@ void nsImapProtocol::ProcessSelectedStat
           m_runningUrl->GetListOfMessageIds(messageIdString);
           char *destinationMailbox = OnCreateServerDestinationFolderPathString();
 
           if (destinationMailbox)
           {
             if (m_imapAction == nsIImapUrl::nsImapOnlineMove)
             {
               if (HandlingMultipleMessages(messageIdString))
-                ProgressEventFunctionUsingIdWithString (IMAP_MOVING_MESSAGES_TO, destinationMailbox);
+                ProgressEventFunctionUsingNameWithString("imapMovingMessages", destinationMailbox);
               else
-                ProgressEventFunctionUsingIdWithString (IMAP_MOVING_MESSAGE_TO, destinationMailbox);
+                ProgressEventFunctionUsingNameWithString("imapMovingMessage", destinationMailbox);
             }
             else {
               if (HandlingMultipleMessages(messageIdString))
-                ProgressEventFunctionUsingIdWithString (IMAP_COPYING_MESSAGES_TO, destinationMailbox);
+                ProgressEventFunctionUsingNameWithString("imapCopyingMessages", destinationMailbox);
               else
-                ProgressEventFunctionUsingIdWithString (IMAP_COPYING_MESSAGE_TO, destinationMailbox);
+                ProgressEventFunctionUsingNameWithString("imapCopyingMessage", destinationMailbox);
             }
             Copy(messageIdString.get(), destinationMailbox, bMessageIdsAreUids);
             PR_FREEIF( destinationMailbox);
             ImapOnlineCopyState copyState;
             if (DeathSignalReceived())
               copyState = ImapOnlineCopyStateType::kInterruptedState;
             else
               copyState = GetServerStateParser().LastCommandSuccessful() ?
@@ -2913,23 +2914,23 @@ void nsImapProtocol::ProcessSelectedStat
         break;
       case nsIImapUrl::nsImapOnlineToOfflineCopy:
       case nsIImapUrl::nsImapOnlineToOfflineMove:
         {
           nsCString messageIdString;
           nsresult rv = m_runningUrl->GetListOfMessageIds(messageIdString);
           if (NS_SUCCEEDED(rv))
           {
-            SetProgressString(IMAP_FOLDER_RECEIVING_MESSAGE_OF);
+            SetProgressString("imapFolderReceivingMessageOf");
             m_progressIndex = 0;
             m_progressCount = CountMessagesInIdString(messageIdString.get());
 
             FetchMessage(messageIdString, kEveryThingRFC822Peek);
 
-            SetProgressString(0);
+            SetProgressString(nullptr);
             if (m_imapMailFolderSink)
             {
               ImapOnlineCopyState copyStatus;
               copyStatus = GetServerStateParser().LastCommandSuccessful() ?
                 ImapOnlineCopyStateType::kSuccessfulCopy : ImapOnlineCopyStateType::kFailedCopy;
 
               m_imapMailFolderSink->OnlineCopyCompleted(this, copyStatus);
               if (GetServerStateParser().LastCommandSuccessful() &&
@@ -3103,17 +3104,17 @@ void nsImapProtocol::CreateEscapedMailbo
   {
     char currentChar = *rawName++;
     if ((currentChar == '\\') || (currentChar == '\"'))
       escapedName.Insert('\\', strIndex++);
   }
 }
 void nsImapProtocol::SelectMailbox(const char *mailboxName)
 {
-  ProgressEventFunctionUsingIdWithString (IMAP_STATUS_SELECTING_MAILBOX, mailboxName);
+  ProgressEventFunctionUsingNameWithString("imapStatusSelectingMailbox", mailboxName);
   IncrementCommandTagNumber();
 
   m_closeNeededBeforeSelect = false;   // initial value
   GetServerStateParser().ResetFlagInfo();
   nsCString escapedName;
   CreateEscapedMailboxName(mailboxName, escapedName);
   nsCString commandBuffer(GetServerCommandTag());
   commandBuffer.Append(" select \"");
@@ -4157,29 +4158,29 @@ void nsImapProtocol::FolderHeaderDump(ui
   FolderMsgDump(msgUids, msgCount, kHeadersRFC822andUid);
 }
 
 void nsImapProtocol::FolderMsgDump(uint32_t *msgUids, uint32_t msgCount, nsIMAPeFetchFields fields)
 {
   // lets worry about this progress stuff later.
   switch (fields) {
   case kHeadersRFC822andUid:
-    SetProgressString(IMAP_RECEIVING_MESSAGE_HEADERS_OF);
+    SetProgressString("imapReceivingMessageHeaders");
     break;
   case kFlags:
-    SetProgressString(IMAP_RECEIVING_MESSAGE_FLAGS_OF);
+    SetProgressString("imapReceivingMessageFlags");
     break;
   default:
-    SetProgressString(IMAP_FOLDER_RECEIVING_MESSAGE_OF);
+    SetProgressString("imapFolderReceivingMessageOf");
     break;
   }
 
   FolderMsgDumpLoop(msgUids, msgCount, fields);
 
-  SetProgressString(0);
+  SetProgressString(nullptr);
 }
 
 void nsImapProtocol::WaitForPotentialListOfBodysToFetch(uint32_t **msgIdList, uint32_t &msgCount)
 {
   PRIntervalTime sleepTime = kImapSleepTime;
 
   ReentrantMonitorAutoEnter fetchListMon(m_fetchBodyListMonitor);
   while(!m_fetchBodyListIsNew && !DeathSignalReceived())
@@ -4666,21 +4667,21 @@ char* nsImapProtocol::CreateNewLineFromS
   kungFuGrip = nullptr;
 
   if (NS_FAILED(rv))
   {
     switch (rv)
     {
         case NS_ERROR_UNKNOWN_HOST:
         case NS_ERROR_UNKNOWN_PROXY_HOST:
-            AlertUserEventUsingId(IMAP_UNKNOWN_HOST_ERROR);
+            AlertUserEventUsingName("imapUnknownHostError");
             break;
         case NS_ERROR_CONNECTION_REFUSED:
         case NS_ERROR_PROXY_CONNECTION_REFUSED:
-            AlertUserEventUsingId(IMAP_CONNECTION_REFUSED_ERROR);
+            AlertUserEventUsingName("imapConnectionRefusedError");
             break;
         case NS_ERROR_NET_TIMEOUT:
         case NS_ERROR_NET_RESET:
         case NS_BASE_STREAM_CLOSED:
         case NS_ERROR_NET_INTERRUPT:
           // we should retry on RESET, especially for SSL...
           if ((TestFlag(IMAP_RECEIVED_GREETING) || rv == NS_ERROR_NET_RESET) &&
               m_runningUrl && !m_retryUrlOnError)
@@ -4696,20 +4697,21 @@ char* nsImapProtocol::CreateNewLineFromS
                                   imapAction != nsIImapUrl::nsImapOnlineMove)))
             {
               m_runningUrl->SetRerunningUrl(true);
               m_retryUrlOnError = true;
               break;
             }
           }
           if (rv == NS_ERROR_NET_TIMEOUT)
-            AlertUserEventUsingId(IMAP_NET_TIMEOUT_ERROR);
+            AlertUserEventUsingName("imapNetTimeoutError");
           else
-            AlertUserEventUsingId(TestFlag(IMAP_RECEIVED_GREETING)
-            ? IMAP_SERVER_DISCONNECTED : IMAP_SERVER_DROPPED_CONNECTION);
+            AlertUserEventUsingName(TestFlag(IMAP_RECEIVED_GREETING) ?
+                                    "imapServerDisconnected" :
+                                    "imapServerDroppedConnection");
           break;
         default:
             break;
     }
 
     nsAutoCString logMsg("clearing IMAP_CONNECTION_IS_OPEN - rv = ");
     logMsg.AppendInt(static_cast<uint32_t>(rv), 16);
     Log("CreateNewLineFromSocket", nullptr, logMsg.get());
@@ -4953,17 +4955,17 @@ nsImapProtocol::DiscoverMailboxSpec(nsIm
         NS_ASSERTION(m_deletableChildren, "Oops .. null m_deletableChildren\n");
         m_deletableChildren->AppendElement((void *)ToNewCString(adoptedBoxSpec->mAllocatedPathName));
         NS_IF_RELEASE(adoptedBoxSpec);
       }
       break;
     case kListingForInfoOnly:
       {
         //UpdateProgressWindowForUpgrade(adoptedBoxSpec->allocatedPathName);
-        ProgressEventFunctionUsingIdWithString(IMAP_DISCOVERING_MAILBOX,
+        ProgressEventFunctionUsingNameWithString("imapDiscoveringMailbox",
           adoptedBoxSpec->mAllocatedPathName.get());
         nsIMAPMailboxInfo *mb = new nsIMAPMailboxInfo(adoptedBoxSpec->mAllocatedPathName,
                                                       adoptedBoxSpec->mHierarchySeparator);
         m_listedMailboxList.AppendElement((void*) mb);
         NS_IF_RELEASE(adoptedBoxSpec);
       }
       break;
     case kDiscoveringNamespacesOnly:
@@ -4973,28 +4975,29 @@ nsImapProtocol::DiscoverMailboxSpec(nsIm
       break;
     default:
       NS_ASSERTION (false, "we aren't supposed to be here");
       break;
   }
 }
 
 void
-nsImapProtocol::AlertUserEventUsingId(uint32_t aMessageId)
+nsImapProtocol::AlertUserEventUsingName(const char* aMessageName)
 {
   if (m_imapServerSink)
   {
     bool suppressErrorMsg = false;
 
     nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(m_runningUrl);
     if (mailnewsUrl)
       mailnewsUrl->GetSuppressErrorMsgs(&suppressErrorMsg);
 
     if (!suppressErrorMsg)
-      m_imapServerSink->FEAlertWithID(aMessageId, mailnewsUrl);
+      m_imapServerSink->FEAlertWithName(aMessageName,
+                                        mailnewsUrl);
   }
 }
 
 void
 nsImapProtocol::AlertUserEvent(const char * message)
 {
   if (m_imapServerSink)
   {
@@ -5019,30 +5022,31 @@ nsImapProtocol::AlertUserEventFromServer
                                           mailnewsUrl);
     }
 }
 
 void nsImapProtocol::ResetProgressInfo()
 {
   m_lastProgressTime = 0;
   m_lastPercent = -1;
-  m_lastProgressStringId = (uint32_t) -1;
-}
-
-void nsImapProtocol::SetProgressString(int32_t stringId)
-{
-  m_progressStringId = stringId;
-  if (m_progressStringId && m_imapServerSink)
-    m_imapServerSink->GetImapStringByID(stringId, m_progressString);
+  m_lastProgressStringName.Truncate();
+}
+
+void nsImapProtocol::SetProgressString(const char * stringName)
+{
+  m_progressStringName.Assign(stringName);
+  if (!m_progressStringName.IsEmpty() && m_imapServerSink)
+    m_imapServerSink->GetImapStringByName(stringName,
+                                          m_progressString);
 }
 
 void
 nsImapProtocol::ShowProgress()
 {
-  if (!m_progressString.IsEmpty() && m_progressStringId)
+  if (!m_progressString.IsEmpty() && !m_progressStringName.IsEmpty())
   {
     PRUnichar *progressString = NULL;
     const char *mailboxName = GetServerStateParser().GetSelectedMailboxName();
     nsString unicodeMailboxName;
     nsresult rv = CopyMUTF7toUTF16(nsDependentCString(mailboxName),
                                    unicodeMailboxName);
     if (NS_SUCCEEDED(rv))
     {
@@ -5054,36 +5058,36 @@ nsImapProtocol::ShowProgress()
         PercentProgressUpdateEvent(progressString, m_progressIndex, m_progressCount);
         nsTextFormatter::smprintf_free(progressString);
       }
     }
   }
 }
 
 void
-nsImapProtocol::ProgressEventFunctionUsingId(uint32_t aMsgId)
-{
-  if (m_imapMailFolderSink && aMsgId != m_lastProgressStringId)
-  {
-    m_imapMailFolderSink->ProgressStatus(this, aMsgId, nullptr);
-    m_lastProgressStringId = aMsgId;
-    // who's going to free this? Does ProgressStatus complete synchronously?
+nsImapProtocol::ProgressEventFunctionUsingName(const char* aMsgName)
+{
+  if (m_imapMailFolderSink && !m_lastProgressStringName.Equals(aMsgName))
+  {
+    m_imapMailFolderSink->ProgressStatusString(this, aMsgName, nullptr);
+    m_lastProgressStringName.Assign(aMsgName);
+    // who's going to free this? Does ProgressStatusString complete synchronously?
   }
 }
 
 void
-nsImapProtocol::ProgressEventFunctionUsingIdWithString(uint32_t aMsgId, const
-                                                       char * aExtraInfo)
+nsImapProtocol::ProgressEventFunctionUsingNameWithString(const char* aMsgName,
+                                                         const char * aExtraInfo)
 {
   if (m_imapMailFolderSink)
   {
     nsString unicodeStr;
     nsresult rv = CopyMUTF7toUTF16(nsDependentCString(aExtraInfo), unicodeStr);
     if (NS_SUCCEEDED(rv))
-      m_imapMailFolderSink->ProgressStatus(this, aMsgId, unicodeStr.get());
+      m_imapMailFolderSink->ProgressStatusString(this, aMsgName, unicodeStr.get());
   }
 }
 
 void
 nsImapProtocol::PercentProgressUpdateEvent(PRUnichar *message, int64_t currentProgress, int64_t maxProgress)
 {
   int64_t nowMS = 0;
   int32_t percent = (100 * currentProgress) / maxProgress;
@@ -5232,17 +5236,17 @@ void
 nsImapProtocol::Expunge()
 {
   uint32_t aclFlags = 0;
   if (GetServerStateParser().ServerHasACLCapability() && m_imapMailFolderSink)
     m_imapMailFolderSink->GetAclFlags(&aclFlags);
 
   if (aclFlags && !(aclFlags & IMAP_ACL_EXPUNGE_FLAG))
     return;
-  ProgressEventFunctionUsingId (IMAP_STATUS_EXPUNGING_MAILBOX);
+  ProgressEventFunctionUsingName("imapStatusExpungingMailbox");
 
   if(gCheckDeletedBeforeExpunge)
   {
     GetServerStateParser().ResetSearchResultSequence();
     Search("SEARCH DELETED", false, false);
     if (GetServerStateParser().LastCommandSuccessful())
     {
       nsImapSearchResultIterator *search = GetServerStateParser().CreateSearchResultIterator();
@@ -5295,17 +5299,17 @@ void nsImapProtocol::StartTLS()
     nsresult rv = SendData(command.get());
     if (NS_SUCCEEDED(rv))
         ParseIMAPandCheckForNewMail();
 }
 
 void nsImapProtocol::Capability()
 {
 
-    ProgressEventFunctionUsingId (IMAP_STATUS_CHECK_COMPAT);
+    ProgressEventFunctionUsingName("imapStatusCheckCompat");
     IncrementCommandTagNumber();
     nsCString command(GetServerCommandTag());
 
     command.Append(" capability" CRLF);
 
     nsresult rv = SendData(command.get());
     if (NS_SUCCEEDED(rv))
         ParseIMAPandCheckForNewMail();
@@ -5405,17 +5409,17 @@ nsresult nsImapProtocol::BeginCompressin
 }
 
 void nsImapProtocol::Language()
 {
   // only issue the language request if we haven't done so already...
   if (!TestFlag(IMAP_ISSUED_LANGUAGE_REQUEST))
   {
     SetFlag(IMAP_ISSUED_LANGUAGE_REQUEST);
-    ProgressEventFunctionUsingId (IMAP_STATUS_CHECK_COMPAT);
+    ProgressEventFunctionUsingName("imapStatusCheckCompat");
     IncrementCommandTagNumber();
     nsCString command(GetServerCommandTag());
 
     // extract the desired language attribute from prefs
     nsresult rv = NS_OK;
 
     // we need to parse out the first language out of this comma separated list....
     // i.e if we have en,ja we only want to send en to the server.
@@ -5566,17 +5570,17 @@ void nsImapProtocol::ResetAuthMethods()
 {
   PR_LOG(IMAP, PR_LOG_DEBUG, ("resetting (failed) auth methods"));
   m_currentAuthMethod = kCapabilityUndefined;
   m_failedAuthMethods = 0;
 }
 
 nsresult nsImapProtocol::AuthLogin(const char *userName, const nsCString &password, eIMAPCapabilityFlag flag)
 {
-  ProgressEventFunctionUsingId (IMAP_STATUS_SENDING_AUTH_LOGIN);
+  ProgressEventFunctionUsingName("imapStatusSendingAuthLogin");
   IncrementCommandTagNumber();
 
   char * currentCommand=nullptr;
   nsresult rv;
 
   PR_LOG(IMAP, PR_LOG_DEBUG, ("IMAP: trying auth method 0x%X", m_currentAuthMethod));
 
   if (flag & kHasAuthExternalCapability)
@@ -5767,17 +5771,17 @@ nsresult nsImapProtocol::AuthLogin(const
             ParseIMAPandCheckForNewMail(currentCommand);
         } // if last command successful
       } // if last command successful
     } // if last command successful
   } // if has auth login capability
   else if (flag & kHasAuthOldLoginCapability)
   {
     PR_LOG(IMAP, PR_LOG_DEBUG, ("old-style auth"));
-    ProgressEventFunctionUsingId (IMAP_STATUS_SENDING_LOGIN);
+    ProgressEventFunctionUsingName("imapStatusSendingLogin");
     IncrementCommandTagNumber();
     nsCString command (GetServerCommandTag());
     nsAutoCString escapedUserName;
     command.Append(" login \"");
     EscapeUserNamePasswordString(userName, &escapedUserName);
     command.Append(escapedUserName);
     command.Append("\" \"");
 
@@ -5810,17 +5814,17 @@ nsresult nsImapProtocol::AuthLogin(const
 
 void nsImapProtocol::OnLSubFolders()
 {
   // **** use to find out whether Drafts, Sent, & Templates folder
   // exists or not even the user didn't subscribe to it
   char *mailboxName = OnCreateServerSourceFolderPathString();
   if (mailboxName)
   {
-    ProgressEventFunctionUsingId(IMAP_STATUS_LOOKING_FOR_MAILBOX);
+    ProgressEventFunctionUsingName("imapStatusLookingForMailbox");
     IncrementCommandTagNumber();
     PR_snprintf(m_dataOutputBuf, OUTPUT_BUFFER_SIZE,"%s list \"\" \"%s\"" CRLF, GetServerCommandTag(), mailboxName);
     nsresult rv = SendData(m_dataOutputBuf);
 #ifdef UNREADY_CODE
     TimeStampListNow();
 #endif
     if (NS_SUCCEEDED(rv))
       ParseIMAPandCheckForNewMail();
@@ -6347,17 +6351,17 @@ void nsImapProtocol::OnRefreshAllACLs()
   m_hierarchyNameState = kNoOperationInProgress;
 }
 
 // any state commands
 void nsImapProtocol::Logout(bool shuttingDown /* = false */,
                             bool waitForResponse /* = true */)
 {
   if (!shuttingDown)
-    ProgressEventFunctionUsingId (IMAP_STATUS_LOGGING_OUT);
+    ProgressEventFunctionUsingName("imapStatusLoggingOut");
 
 /******************************************************************
  * due to the undo functionality we cannot issule a close when logout; there
  * is no way to do an undo if the message has been permanently expunge
  * jt - 07/12/1999
 
     bool closeNeeded = GetServerStateParser().GetIMAPstate() ==
         nsImapServerResponseParser::kFolderSelected;
@@ -6391,47 +6395,47 @@ void nsImapProtocol::Noop()
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
       ParseIMAPandCheckForNewMail();
 }
 
 void nsImapProtocol::XServerInfo()
 {
 
-    ProgressEventFunctionUsingId (IMAP_GETTING_SERVER_INFO);
+    ProgressEventFunctionUsingName("imapGettingServerInfo");
     IncrementCommandTagNumber();
     nsCString command(GetServerCommandTag());
 
   command.Append(" XSERVERINFO MANAGEACCOUNTURL MANAGELISTSURL MANAGEFILTERSURL" CRLF);
 
     nsresult rv = SendData(command.get());
     if (NS_SUCCEEDED(rv))
         ParseIMAPandCheckForNewMail();
 }
 
 void nsImapProtocol::Netscape()
 {
-    ProgressEventFunctionUsingId (IMAP_GETTING_SERVER_INFO);
+    ProgressEventFunctionUsingName("imapGettingServerInfo");
     IncrementCommandTagNumber();
 
     nsCString command(GetServerCommandTag());
 
   command.Append(" netscape" CRLF);
 
     nsresult rv = SendData(command.get());
     if (NS_SUCCEEDED(rv))
         ParseIMAPandCheckForNewMail();
 }
 
 
 
 void nsImapProtocol::XMailboxInfo(const char *mailboxName)
 {
 
-    ProgressEventFunctionUsingId (IMAP_GETTING_MAILBOX_INFO);
+    ProgressEventFunctionUsingName("imapGettingMailboxInfo");
     IncrementCommandTagNumber();
     nsCString command(GetServerCommandTag());
 
   command.Append(" XMAILBOXINFO \"");
   command.Append(mailboxName);
   command.Append("\" MANAGEURL POSTURL" CRLF);
 
     nsresult rv = SendData(command.get());
@@ -7294,17 +7298,17 @@ void nsImapProtocol::DiscoverMailboxList
   // Get the ACLs for newly discovered folders
   if (GetServerStateParser().ServerHasACLCapability())
   {
     int32_t total = m_listedMailboxList.Count(), cnt = 0;
     // Let's not turn this off here, since we don't turn it on after
     // GetServerStateParser().SetReportingErrors(false);
     if (total)
     {
-      ProgressEventFunctionUsingId(IMAP_GETTING_ACL_FOR_FOLDER);
+      ProgressEventFunctionUsingName("imapGettingACLForFolder");
       nsIMAPMailboxInfo * mb = nullptr;
       do
       {
         if (m_listedMailboxList.Count() == 0)
             break;
 
         mb = (nsIMAPMailboxInfo *) m_listedMailboxList[0]; // get top element
         m_listedMailboxList.RemoveElementAt(0); // XP_ListRemoveTopObject(fListedMailboxList);
@@ -7420,17 +7424,17 @@ bool nsImapProtocol::CreateMailboxRespec
     OnSubscribe(mailboxWODelim.get());
     GetServerStateParser().SetReportingErrors(reportingErrors);
   }
   return rv;
 }
 
 void nsImapProtocol::CreateMailbox(const char *mailboxName)
 {
-  ProgressEventFunctionUsingId (IMAP_STATUS_CREATING_MAILBOX);
+  ProgressEventFunctionUsingName("imapStatusCreatingMailbox");
 
   IncrementCommandTagNumber();
 
   nsCString escapedName;
   CreateEscapedMailboxName(mailboxName, escapedName);
   nsCString command(GetServerCommandTag());
   command += " create \"";
   command += escapedName;
@@ -7464,17 +7468,17 @@ void nsImapProtocol::DeleteMailbox(const
 
   // check if this connection currently has the folder to be deleted selected.
   // If so, we should close it because at least some UW servers don't like you deleting
   // a folder you have open.
   if (FolderIsSelected(mailboxName))
     Close();
 
 
-  ProgressEventFunctionUsingIdWithString (IMAP_STATUS_DELETING_MAILBOX, mailboxName);
+  ProgressEventFunctionUsingNameWithString("imapStatusDeletingMailbox", mailboxName);
 
     IncrementCommandTagNumber();
 
     nsCString escapedName;
     CreateEscapedMailboxName(mailboxName, escapedName);
     nsCString command(GetServerCommandTag());
     command += " delete \"";
     command += escapedName;
@@ -7487,17 +7491,17 @@ void nsImapProtocol::DeleteMailbox(const
 
 void nsImapProtocol::RenameMailbox(const char *existingName,
                                    const char *newName)
 {
   // just like DeleteMailbox; Some UW servers don't like it.
   if (FolderIsSelected(existingName))
     Close();
 
-  ProgressEventFunctionUsingIdWithString (IMAP_STATUS_RENAMING_MAILBOX, existingName);
+  ProgressEventFunctionUsingNameWithString("imapStatusRenamingMailbox", existingName);
 
   IncrementCommandTagNumber();
 
   nsCString escapedExistingName;
   nsCString escapedNewName;
   CreateEscapedMailboxName(existingName, escapedExistingName);
   CreateEscapedMailboxName(newName, escapedNewName);
   nsCString command(GetServerCommandTag());
@@ -7536,17 +7540,17 @@ bool nsImapProtocol::GetListSubscribedIs
         ((serverVersion >= eightZeroZero) && (serverVersion < eightZeroThree)))
       return true;
   }
   return false;
 }
 
 void nsImapProtocol::Lsub(const char *mailboxPattern, bool addDirectoryIfNecessary)
 {
-  ProgressEventFunctionUsingId (IMAP_STATUS_LOOKING_FOR_MAILBOX);
+  ProgressEventFunctionUsingName("imapStatusLookingForMailbox");
 
   IncrementCommandTagNumber();
 
   char *boxnameWithOnlineDirectory = nullptr;
   if (addDirectoryIfNecessary)
     m_runningUrl->AddOnlineDirectoryIfNecessary(mailboxPattern, &boxnameWithOnlineDirectory);
 
   nsCString escapedPattern;
@@ -7569,17 +7573,17 @@ void nsImapProtocol::Lsub(const char *ma
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
     ParseIMAPandCheckForNewMail(command.get(), true);
 }
 
 void nsImapProtocol::List(const char *mailboxPattern, bool addDirectoryIfNecessary,
                           bool useXLIST)
 {
-  ProgressEventFunctionUsingId (IMAP_STATUS_LOOKING_FOR_MAILBOX);
+  ProgressEventFunctionUsingName("imapStatusLookingForMailbox");
 
   IncrementCommandTagNumber();
 
   char *boxnameWithOnlineDirectory = nullptr;
   if (addDirectoryIfNecessary)
     m_runningUrl->AddOnlineDirectoryIfNecessary(mailboxPattern, &boxnameWithOnlineDirectory);
 
   nsCString escapedPattern;
@@ -7597,17 +7601,17 @@ void nsImapProtocol::List(const char *ma
 
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
     ParseIMAPandCheckForNewMail(command.get(), true);
 }
 
 void nsImapProtocol::Subscribe(const char *mailboxName)
 {
-  ProgressEventFunctionUsingIdWithString (IMAP_STATUS_SUBSCRIBE_TO_MAILBOX, mailboxName);
+  ProgressEventFunctionUsingNameWithString("imapStatusSubscribeToMailbox", mailboxName);
 
   IncrementCommandTagNumber();
 
   nsCString escapedName;
   CreateEscapedMailboxName(mailboxName, escapedName);
 
   nsCString command (GetServerCommandTag());
   command += " subscribe \"";
@@ -7616,17 +7620,17 @@ void nsImapProtocol::Subscribe(const cha
 
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
     ParseIMAPandCheckForNewMail();
 }
 
 void nsImapProtocol::Unsubscribe(const char *mailboxName)
 {
-  ProgressEventFunctionUsingIdWithString (IMAP_STATUS_UNSUBSCRIBE_MAILBOX, mailboxName);
+  ProgressEventFunctionUsingNameWithString("imapStatusUnsubscribeMailbox", mailboxName);
   IncrementCommandTagNumber();
 
   nsCString escapedName;
   CreateEscapedMailboxName(mailboxName, escapedName);
 
   nsCString command (GetServerCommandTag());
   command += " unsubscribe \"";
   command += escapedName;
@@ -7684,17 +7688,17 @@ void nsImapProtocol::EndIdle(bool waitFo
 }
 
 
 void nsImapProtocol::Search(const char * searchCriteria,
                             bool useUID,
                             bool notifyHit /* true */)
 {
   m_notifySearchHit = notifyHit;
-  ProgressEventFunctionUsingId (IMAP_STATUS_SEARCH_MAILBOX);
+  ProgressEventFunctionUsingName("imapStatusSearchMailbox");
   IncrementCommandTagNumber();
 
   nsCString protocolString(GetServerCommandTag());
   // the searchCriteria string contains the 'search ....' string
   if (useUID)
      protocolString.Append(" uid");
   protocolString.Append(" ");
   protocolString.Append(searchCriteria);
@@ -8073,17 +8077,17 @@ void nsImapProtocol::Close(bool shutting
                            bool waitForResponse /* = true */)
 {
   IncrementCommandTagNumber();
 
   nsCString command(GetServerCommandTag());
   command.Append(" close" CRLF);
 
   if (!shuttingDown)
-    ProgressEventFunctionUsingId (IMAP_STATUS_CLOSE_MAILBOX);
+    ProgressEventFunctionUsingName("imapStatusCloseMailbox");
 
   GetServerStateParser().ResetFlagInfo();
 
   nsresult rv = SendData(command.get());
   if (m_transport && shuttingDown)
     m_transport->SetTimeout(nsISocketTransport::TIMEOUT_READ_WRITE, 5);
 
   if (NS_SUCCEEDED(rv) && waitForResponse)
@@ -8251,35 +8255,35 @@ bool nsImapProtocol::TryToLogon()
     {
       // Pref doesn't match server. Now, find an appropriate error msg.
 
       // pref has plaintext pw & server claims to support encrypted pw
       if (m_prefAuthMethods == (kHasAuthOldLoginCapability |
               kHasAuthLoginCapability | kHasAuthPlainCapability) &&
           GetServerStateParser().GetCapabilityFlag() & kHasCRAMCapability)
         // tell user to change to encrypted pw
-        AlertUserEventUsingId(IMAP_AUTH_CHANGE_PLAIN_TO_ENCRYPT);
+        AlertUserEventUsingName("imapAuthChangePlainToEncrypt");
       // pref has encrypted pw & server claims to support plaintext pw
       else if (m_prefAuthMethods == kHasCRAMCapability &&
                GetServerStateParser().GetCapabilityFlag() &
                    (kHasAuthOldLoginCapability | kHasAuthLoginCapability |
                     kHasAuthPlainCapability))
       {
         // have SSL
         if (m_socketType == nsMsgSocketType::SSL ||
             m_socketType == nsMsgSocketType::alwaysSTARTTLS)
           // tell user to change to plaintext pw
-          AlertUserEventUsingId(IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_SSL);
+          AlertUserEventUsingName("imapAuthChangeEncryptToPlainSSL");
         else
           // tell user to change to plaintext pw, with big warning
-          AlertUserEventUsingId(IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_NO_SSL);
+          AlertUserEventUsingName("imapAuthChangeEncryptToPlainNoSSL");
       }
       else
         // just "change auth method"
-        AlertUserEventUsingId(IMAP_AUTH_MECH_NOT_SUPPORTED);
+        AlertUserEventUsingName("imapAuthMechNotSupported");
 
       skipLoop = true;
     }
     else
     {
       // try to reset failed methods and try them again
       ResetAuthMethods();
       rv = ChooseAuthMethod();
@@ -8359,17 +8363,17 @@ bool nsImapProtocol::TryToLogon()
         rv = ChooseAuthMethod(); // change m_currentAuthMethod to try other one next round
 
         if (NS_FAILED(rv)) // all methods failed
         {
           if (m_prefAuthMethods == kHasAuthGssApiCapability)
           {
             // GSSAPI failed, and it's the only available method,
             // and it's password-less, so nothing left to do.
-            AlertUserEventUsingId(IMAP_AUTH_GSSAPI_FAILED);
+            AlertUserEventUsingName("imapAuthGssapiFailed");
             break;
           }
 
           // The reason that we failed might be a wrong password, so
           // ask user what to do
           PR_LOG(IMAP, PR_LOG_WARN, ("IMAP: ask user what to do (after login failed): new passwort, retry, cancel"));
           if (!m_imapServerSink)
             break;
--- a/mailnews/imap/src/nsImapProtocol.h
+++ b/mailnews/imap/src/nsImapProtocol.h
@@ -230,22 +230,22 @@ public:
 
   // state set by the imap parser...
   void NotifyMessageFlags(imapMessageFlagsType flags, const nsACString &keywords,
                           nsMsgKey key, uint64_t highestModSeq);
   void NotifySearchHit(const char * hitLine);
 
   // Event handlers for the imap parser.
   void DiscoverMailboxSpec(nsImapMailboxSpec * adoptedBoxSpec);
-  void AlertUserEventUsingId(uint32_t aMessageId);
+  void AlertUserEventUsingName(const char* aMessageId);
   void AlertUserEvent(const char * message);
   void AlertUserEventFromServer(const char * aServerEvent);
 
-  void ProgressEventFunctionUsingId(uint32_t aMsgId);
-  void ProgressEventFunctionUsingIdWithString(uint32_t aMsgId, const char *
+  void ProgressEventFunctionUsingName(const char* aMsgId);
+  void ProgressEventFunctionUsingNameWithString(const char* aMsgId, const char *
     aExtraInfo);
   void PercentProgressUpdateEvent(PRUnichar *message, int64_t currentProgress, int64_t maxProgress);
   void ShowProgress();
 
   // utility function calls made by the server
 
   void Copy(const char * messageList, const char *destinationMailbox,
     bool idsAreUid);
@@ -618,23 +618,23 @@ private:
 
   nsCString m_logonHost;
   nsCString m_logonCookie;
   int16_t m_logonPort;
   
   nsString mAcceptLanguages;
   
   // progress stuff
-  void SetProgressString(int32_t stringId);
+  void SetProgressString(const char* stringName);
   
   nsString m_progressString;
-  int32_t       m_progressStringId;
+  nsCString     m_progressStringName;
   int32_t       m_progressIndex;
   int32_t       m_progressCount;
-  uint32_t      m_lastProgressStringId;
+  nsCString     m_lastProgressStringName;
   int32_t       m_lastPercent;
   int64_t       m_lastProgressTime;
 
   bool m_notifySearchHit;
   bool m_checkForNewMailDownloadsHeaders;
   bool m_needNoop;
   bool m_idle;
   bool m_useIdle;
--- a/mailnews/imap/src/nsImapServerResponseParser.cpp
+++ b/mailnews/imap/src/nsImapServerResponseParser.cpp
@@ -92,17 +92,17 @@ bool nsImapServerResponseParser::GetNext
   *nextLine = fServerConnection.CreateNewLineFromSocket();
   if (fServerConnection.DeathSignalReceived() ||
       NS_FAILED(fServerConnection.GetConnectionStatus()))
     rv = false;
   // we'd really like to try to silently reconnect, but we shouldn't put this
   // message up just in the interrupt case
   if (NS_FAILED(fServerConnection.GetConnectionStatus()) &&
       !fServerConnection.DeathSignalReceived())
-    fServerConnection.AlertUserEventUsingId(IMAP_SERVER_DISCONNECTED);
+    fServerConnection.AlertUserEventUsingName("imapServerDisconnected");
   return rv;
 }
 
 bool nsImapServerResponseParser::CommandFailed()
 {
   return fCurrentCommandFailed;
 }
 
@@ -271,17 +271,17 @@ void nsImapServerResponseParser::ParseIM
     }
   }
   else
     SetConnected(false);
 }
 
 void nsImapServerResponseParser::HandleMemoryFailure()
 {
-  fServerConnection.AlertUserEventUsingId(IMAP_OUT_OF_MEMORY);
+  fServerConnection.AlertUserEventUsingName("imapOutOfMemory");
   nsIMAPGenericParser::HandleMemoryFailure();
 }
 
 
 // SEARCH is the only command that requires pre-processing for now.
 // others will be added here.
 void nsImapServerResponseParser::PreProcessCommandToken(const char *commandToken,
                                                         const char *currentCommand)
@@ -3125,17 +3125,17 @@ bool nsImapServerResponseParser::msg_fet
       }
 
       // This *would* fail on data containing \0, but down below AdvanceToNextLine() in
       // nsMsgLineStreamBuffer::ReadNextLine() we replace '\0' with ' ' (blank) because
       // who cares about binary transparency, and anyways \0 in this context violates RFCs.
       charsReadSoFar += strlen(fCurrentLine);
       if (!fDownloadingHeaders && fCurrentCommandIsSingleMessageFetch)
       {
-        fServerConnection.ProgressEventFunctionUsingId(IMAP_DOWNLOADING_MESSAGE);
+        fServerConnection.ProgressEventFunctionUsingName("imapDownloadingMessage");
         if (fTotalDownloadSize > 0)
           fServerConnection.PercentProgressUpdateEvent(0,charsReadSoFar + origin, fTotalDownloadSize);
       }
       if (charsReadSoFar > numberOfCharsInThisChunk)
       {
         // The chunk we are receiving doesn't end in CRLF, so the last line includes
         // the CRLF that comes after the literal
         char *displayEndOfLine = (fCurrentLine + strlen(fCurrentLine) - (charsReadSoFar - numberOfCharsInThisChunk));
--- a/mailnews/imap/src/nsImapService.cpp
+++ b/mailnews/imap/src/nsImapService.cpp
@@ -2737,19 +2737,19 @@ NS_IMETHODIMP nsImapService::NewChannel(
       rv = IMAPGetStringBundle(getter_AddRefs(bundle));
       NS_ENSURE_SUCCESS(rv, rv);
         // need to convert folder name from mod-utf7 to unicode
       nsAutoString unescapedName;
       if (NS_FAILED(CopyMUTF7toUTF16(fullFolderName, unescapedName)))
         CopyASCIItoUTF16(fullFolderName, unescapedName);
       const PRUnichar *formatStrings[1] = { unescapedName.get() };
       
-      rv = bundle->FormatStringFromID(IMAP_SUBSCRIBE_PROMPT,
-                                      formatStrings, 1,
-                                      getter_Copies(confirmText));
+      rv = bundle->FormatStringFromName(
+        NS_LITERAL_STRING("imapSubscribePrompt").get(),
+        formatStrings, 1, getter_Copies(confirmText));
       NS_ENSURE_SUCCESS(rv,rv);
       
       bool confirmResult = false;
       rv = dialog->Confirm(nullptr, confirmText.get(), &confirmResult);
       NS_ENSURE_SUCCESS(rv, rv);
       
       if (confirmResult)
       {
--- a/mailnews/imap/src/nsImapStringBundle.cpp
+++ b/mailnews/imap/src/nsImapStringBundle.cpp
@@ -12,24 +12,24 @@
 #include "nsIURI.h"
 #include "nsServiceManagerUtils.h"
 #include "mozilla/Services.h"
 
 #define IMAP_MSGS_URL       "chrome://messenger/locale/imapMsgs.properties"
 
 extern "C" 
 nsresult
-IMAPGetStringByID(int32_t stringID, PRUnichar **aString)
+IMAPGetStringByName(const char* stringName, PRUnichar **aString)
 {
-  nsresult res=NS_OK;
   nsCOMPtr <nsIStringBundle> sBundle;
-  res = IMAPGetStringBundle(getter_AddRefs(sBundle));
-  if (NS_SUCCEEDED(res) && sBundle)
-    res = sBundle->GetStringFromID(stringID, aString);
-  return res;
+  nsresult rv = IMAPGetStringBundle(getter_AddRefs(sBundle));
+  if (NS_SUCCEEDED(rv) && sBundle)
+    rv = sBundle->GetStringFromName(NS_ConvertASCIItoUTF16(stringName).get(),
+                                    aString);
+  return rv;
 }
 
 nsresult
 IMAPGetStringBundle(nsIStringBundle **aBundle)
 {
   nsresult rv=NS_OK;
   nsCOMPtr<nsIStringBundleService> stringService =
     mozilla::services::GetStringBundleService();
--- a/mailnews/imap/src/nsImapStringBundle.h
+++ b/mailnews/imap/src/nsImapStringBundle.h
@@ -4,96 +4,14 @@
 
 #ifndef _nsImapStringBundle_H__
 #define _nsImapStringBundle_H__
 
 #include "nsIStringBundle.h"
 
 PR_BEGIN_EXTERN_C
 
-nsresult      IMAPGetStringByID(int32_t stringID, PRUnichar **aString);
+nsresult      IMAPGetStringByName(const char* stringName, PRUnichar **aString);
 nsresult      IMAPGetStringBundle(nsIStringBundle **aBundle);
 
 PR_END_EXTERN_C
 
-#define	IMAP_STATUS_SELECTING_MAILBOX                                  5000
-#define	IMAP_STATUS_CREATING_MAILBOX                                  5001
-#define	IMAP_STATUS_DELETING_MAILBOX                                  5002
-#define	IMAP_STATUS_RENAMING_MAILBOX                                  5003
-#define	IMAP_STATUS_LOOKING_FOR_MAILBOX                                  5004
-#define	IMAP_STATUS_SUBSCRIBE_TO_MAILBOX                                  5005
-#define	IMAP_STATUS_UNSUBSCRIBE_MAILBOX                                  5006
-#define	IMAP_STATUS_SEARCH_MAILBOX                                  5007
-#define	IMAP_STATUS_MSG_INFO                                  5008
-#define	IMAP_STATUS_CLOSE_MAILBOX                                  5009
-#define	IMAP_STATUS_EXPUNGING_MAILBOX                                  5010
-#define	IMAP_STATUS_LOGGING_OUT                                  5011
-#define	IMAP_STATUS_CHECK_COMPAT                                  5012
-#define	IMAP_STATUS_SENDING_LOGIN                                  5013
-#define	IMAP_STATUS_SENDING_AUTH_LOGIN                                  5014
-#define	IMAP_DOWNLOADING_MESSAGE                                  5015
-#define	IMAP_GETTING_ACL_FOR_FOLDER                                  5029
-#define	IMAP_GETTING_SERVER_INFO                                  5030
-#define	IMAP_GETTING_MAILBOX_INFO                                  5031
-#define	IMAP_EMPTY_MIME_PART                                  5032
-#define	IMAP_RECEIVING_MESSAGE_HEADERS_OF                                  5036
-#define	IMAP_RECEIVING_MESSAGE_FLAGS_OF                                  5037
-#define	IMAP_DELETING_MESSAGES                                  5038
-#define	IMAP_DELETING_MESSAGE                   5039
-#define	IMAP_MOVING_MESSAGES_TO                 5040
-#define	IMAP_MOVING_MESSAGE_TO                  5041
-#define	IMAP_COPYING_MESSAGES_TO                5042
-#define	IMAP_COPYING_MESSAGE_TO                 5043
-#define IMAP_FOLDER_RECEIVING_MESSAGE_OF        5045
-#define IMAP_DISCOVERING_MAILBOX                5046
-#define IMAP_ENTER_PASSWORD_PROMPT              5047
-#define IMAP_SERVER_NOT_IMAP4                   5048
-#define IMAP_SERVER_SAID                        5049
-#define IMAP_DONE                               5050
-#define IMAP_ENTER_PASSWORD_PROMPT_TITLE        5051
-#define IMAP_UNKNOWN_HOST_ERROR                 5052
-#define IMAP_CONNECTION_REFUSED_ERROR               5053
-#define IMAP_NET_TIMEOUT_ERROR                      5054
-#define IMAP_NO_NEW_MESSAGES                        5056
-#define IMAP_DEFAULT_ACCOUNT_NAME                   5057
-#define IMAP_SPECIAL_CHAR                           5065
-#define IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME       5066
-#define IMAP_PUBLIC_FOLDER_TYPE_NAME                5067
-#define IMAP_OTHER_USERS_FOLDER_TYPE_NAME           5068
-#define IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION       5069
-#define IMAP_PERSONAL_SHARED_FOLDER_TYPE_DESCRIPTION 5070
-#define IMAP_PUBLIC_FOLDER_TYPE_DESCRIPTION         5071
-#define IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION    5072
-#define IMAP_ACL_FULL_RIGHTS                        5073
-#define IMAP_ACL_LOOKUP_RIGHT                       5074
-#define IMAP_ACL_READ_RIGHT                         5075
-#define IMAP_ACL_SEEN_RIGHT                         5076
-#define IMAP_ACL_WRITE_RIGHT                        5077
-#define IMAP_ACL_INSERT_RIGHT                       5078
-#define IMAP_ACL_POST_RIGHT                         5079
-#define IMAP_ACL_CREATE_RIGHT                       5080
-#define IMAP_ACL_DELETE_RIGHT                       5081
-#define IMAP_ACL_ADMINISTER_RIGHT                   5082
-#define IMAP_SERVER_DOESNT_SUPPORT_ACL              5084
-#define IMAP_ACL_EXPUNGE_RIGHT                      5085
-#define IMAP_SERVER_DISCONNECTED                    5090
-#define IMAP_SUBSCRIBE_PROMPT                       5092
-#define IMAP_SERVER_DROPPED_CONNECTION              5093
-#define IMAP_QUOTA_STATUS_FOLDERNOTOPEN             5095
-#define IMAP_QUOTA_STATUS_NOTSUPPORTED              5096
-#define IMAP_QUOTA_STATUS_NOQUOTA                   5097
-#define IMAP_OUT_OF_MEMORY                          5100
-#define IMAP_COPYING_MESSAGE_OF                     5103
-#define IMAP_MOVE_FOLDER_TO_TRASH                   5105
-#define IMAP_DELETE_NO_TRASH                        5106
-#define IMAP_DELETE_FOLDER_DIALOG_TITLE             5107
-#define IMAP_DELETE_FOLDER_BUTTON_LABEL             5108
-#define IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_SSL       5110
-#define IMAP_AUTH_CHANGE_PLAIN_TO_ENCRYPT           5111
-#define IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_NO_SSL    5112
-#define IMAP_AUTH_MECH_NOT_SUPPORTED                5113
-#define IMAP_AUTH_MECH_FAILED                       5114
-#define IMAP_AUTH_GSSAPI_FAILED                     5115
-#define IMAP_LOGIN_DISABLED                         5116
-#define IMAP_SERVER_COMMAND_FAILED                  5117
-#define IMAP_FOLDER_COMMAND_FAILED                  5118
-#define IMAP_SERVER_ALERT                           5119
 #endif /* _nsImapStringBundle_H__ */
--- a/mailnews/imap/src/nsSyncRunnableHelpers.cpp
+++ b/mailnews/imap/src/nsSyncRunnableHelpers.cpp
@@ -391,17 +391,17 @@ NS_SYNCRUNNABLEMETHOD2(ImapMailFolderSin
 NS_SYNCRUNNABLEMETHOD2(ImapMailFolderSink, NotifySearchHit, nsIMsgMailNewsUrl *, const char *)
 NS_SYNCRUNNABLEMETHOD2(ImapMailFolderSink, CopyNextStreamMessage, bool, nsISupports *)
 NS_SYNCRUNNABLEMETHOD1(ImapMailFolderSink, CloseMockChannel, nsIImapMockChannel *)
 NS_SYNCRUNNABLEMETHOD5(ImapMailFolderSink, SetUrlState, nsIImapProtocol *, nsIMsgMailNewsUrl *,
                        bool, bool, nsresult)
 NS_SYNCRUNNABLEMETHOD1(ImapMailFolderSink, ReleaseUrlCacheEntry, nsIMsgMailNewsUrl *)
 NS_SYNCRUNNABLEMETHOD1(ImapMailFolderSink, HeaderFetchCompleted, nsIImapProtocol *)
 NS_SYNCRUNNABLEMETHOD1(ImapMailFolderSink, SetBiffStateAndUpdate, int32_t)
-NS_SYNCRUNNABLEMETHOD3(ImapMailFolderSink, ProgressStatus, nsIImapProtocol*, uint32_t, const PRUnichar *)
+NS_SYNCRUNNABLEMETHOD3(ImapMailFolderSink, ProgressStatusString, nsIImapProtocol*, const char*, const PRUnichar *)
 NS_SYNCRUNNABLEMETHOD4(ImapMailFolderSink, PercentProgress, nsIImapProtocol*, const PRUnichar *, int64_t, int64_t)
 NS_SYNCRUNNABLEMETHOD0(ImapMailFolderSink, ClearFolderRights)
 NS_SYNCRUNNABLEMETHOD2(ImapMailFolderSink, SetCopyResponseUid, const char *, nsIImapUrl *)
 NS_SYNCRUNNABLEMETHOD2(ImapMailFolderSink, SetAppendMsgUid, nsMsgKey, nsIImapUrl *)
 NS_SYNCRUNNABLEMETHOD2(ImapMailFolderSink, GetMessageId, nsIImapUrl *, nsACString &)
 
 NS_SYNCRUNNABLEMETHOD2(ImapMessageSink, SetupMsgWriteStream, nsIFile *, bool)
 NS_SYNCRUNNABLEMETHOD3(ImapMessageSink, ParseAdoptedMsgLine, const char *, nsMsgKey, nsIImapUrl *)
@@ -428,20 +428,20 @@ NS_SYNCRUNNABLEMETHOD2(ImapServerSink, S
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, FolderVerifiedOnline, const nsACString &, bool *)
 NS_SYNCRUNNABLEMETHOD1(ImapServerSink, SetCapability, eIMAPCapabilityFlags)
 NS_SYNCRUNNABLEMETHOD1(ImapServerSink, SetServerID, const nsACString &)
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, LoadNextQueuedUrl, nsIImapProtocol *, bool *)
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, PrepareToRetryUrl, nsIImapUrl *, nsIImapMockChannel **)
 NS_SYNCRUNNABLEMETHOD1(ImapServerSink, SuspendUrl, nsIImapUrl *)
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, RetryUrl, nsIImapUrl *, nsIImapMockChannel *)
 NS_SYNCRUNNABLEMETHOD0(ImapServerSink, AbortQueuedUrls)
-NS_SYNCRUNNABLEMETHOD2(ImapServerSink, GetImapStringByID, int32_t, nsAString &)
+NS_SYNCRUNNABLEMETHOD2(ImapServerSink, GetImapStringByName, const char*, nsAString &)
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, PromptLoginFailed, nsIMsgWindow *, int32_t *)
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, FEAlert, const nsAString &, nsIMsgMailNewsUrl *)
-NS_SYNCRUNNABLEMETHOD2(ImapServerSink, FEAlertWithID, int32_t, nsIMsgMailNewsUrl *)
+NS_SYNCRUNNABLEMETHOD2(ImapServerSink, FEAlertWithName, const char*, nsIMsgMailNewsUrl *)
 NS_SYNCRUNNABLEMETHOD2(ImapServerSink, FEAlertFromServer, const nsACString &, nsIMsgMailNewsUrl *)
 NS_SYNCRUNNABLEMETHOD0(ImapServerSink, CommitNamespaces)
 NS_SYNCRUNNABLEMETHOD3(ImapServerSink, AsyncGetPassword, nsIImapProtocol *, bool, nsACString &)
 NS_SYNCRUNNABLEATTRIBUTE(ImapServerSink, UserAuthenticated, bool)
 NS_SYNCRUNNABLEMETHOD3(ImapServerSink, SetMailServerUrls, const nsACString &, const nsACString &, const nsACString &)
 NS_SYNCRUNNABLEMETHOD1(ImapServerSink, GetArbitraryHeaders, nsACString &)
 NS_SYNCRUNNABLEMETHOD0(ImapServerSink, ForgetPassword)
 NS_SYNCRUNNABLEMETHOD1(ImapServerSink, GetShowAttachmentsInline, bool *)
--- a/suite/locales/en-US/chrome/mailnews/imapMsgs.properties
+++ b/suite/locales/en-US/chrome/mailnews/imapMsgs.properties
@@ -2,409 +2,246 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 #
 # The following are used by the imap code to display progress/status/error messages
 #
 
 # Status - opening folder
-## @name IMAP_STATUS_SELECTING_MAILBOX
-## @loc None
-5000=Opening folder %S…
+imapStatusSelectingMailbox=Opening folder %S…
 
 # Status - create folder
-## @name IMAP_STATUS_CREATING_MAILBOX
-## @loc None
-5001=Creating folder…
+imapStatusCreatingMailbox=Creating folder…
 
 # Status - deleting a folder
-## @name IMAP_STATUS_DELETING_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5002): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusDeletingMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being deleted.
-5002=Deleting folder %S…
+imapStatusDeletingMailbox=Deleting folder %S…
 
 # Status - renaming mailbox
-## @name IMAP_STATUS_RENAMING_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5003): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusRenamingMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being renamed.
-5003=Renaming folder %S…
+imapStatusRenamingMailbox=Renaming folder %S…
 
 # Status - looking for mailboxes
-## @name IMAP_STATUS_LOOKING_FOR_MAILBOX
-## @loc None
-5004=Looking for folders…
+imapStatusLookingForMailbox=Looking for folders…
 
 # Status - subscribing to mailbox
-## @name IMAP_STATUS_SUBSCRIBE_TO_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5005): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusSubscribeToMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being subscribed to.
-5005=Subscribing to folder %S…
+imapStatusSubscribeToMailbox=Subscribing to folder %S…
 
 # Status - unsubscribing from mailbox
-## @name IMAP_STATUS_UNSUBSCRIBE_MAILBOX
-## @loc None
-# LOCALIZATION NOTE (Error 5005): The "%S" below should not be translated.
+# LOCALIZATION NOTE (imapStatusUnsubscribeMailbox): The "%S" below should not be translated.
 # Instead, insert "%S" in your translation where you wish to display the name
 # of the folder being unsubscribed from.
-5006=Unsubscribing from folder %S…
+imapStatusUnsubscribeMailbox=Unsubscribing from folder %S…
 
 # Status - searching imap folder
-## @name IMAP_STATUS_SEARCH_MAILBOX
-## @loc None
-5007=Searching folder…
-
-# Status - getting message info
-## @name IMAP_STATUS_MSG_INFO
-## @loc None
-5008=Getting message info…
+imapStatusSearchMailbox=Searching folder…
 
 # Status - closing a folder
-## @name IMAP_STATUS_CLOSE_MAILBOX
-## @loc None
-5009=Closing folder…
+imapStatusCloseMailbox=Closing folder…
 
 # Status - compacting a folder
-## @name IMAP_STATUS_EXPUNGING_MAILBOX
-## @loc None
-5010=Compacting folder…
+imapStatusExpungingMailbox=Compacting folder…
 
 # Status - logging out
-## @name IMAP_STATUS_LOGGING_OUT
-## @loc None
-5011=Logging out…
+imapStatusLoggingOut=Logging out…
 
 # Status - checking server capabilities
-## @name IMAP_STATUS_CHECK_COMPAT
-## @loc None
-5012=Checking mail server capabilities…
+imapStatusCheckCompat=Checking mail server capabilities…
 
 # Status - logging on
-## @name IMAP_STATUS_SENDING_LOGIN
-## @loc None
-5013=Sending login information…
+imapStatusSendingLogin=Sending login information…
 
 # Status - auth logon
-## @name IMAP_STATUS_SENDING_AUTH_LOGIN
-## @loc None
-5014=Sending login information…
+imapStatusSendingAuthLogin=Sending login information…
 
-## @name IMAP_DOWNLOADING_MESSAGE
-## @loc None
-5015=Downloading message…
+# Status - downloading message
+imapDownloadingMessage=Downloading message…
 
-## @name IMAP_GETTING_ACL_FOR_FOLDER
-## @loc None
-# LOCALIZATION NOTE (Error 5029): Do not translate the word "ACL" below.
-5029=Getting folder ACL…
+# Status - getting acl for folder
+# LOCALIZATION NOTE (imapGettingACLForFolder): Do not translate the word "ACL" below.
+imapGettingACLForFolder=Getting folder ACL…
 
-## @name IMAP_GETTING_SERVER_INFO
-## @loc None
-5030=Getting Server Configuration Info…
-
-## @name IMAP_GETTING_MAILBOX_INFO
-## @loc None
-5031=Getting Mailbox Configuration Info…
+# Status - getting server info
+imapGettingServerInfo=Getting Server Configuration Info…
 
-## @name IMAP_EMPTY_MIME_PART
-## @loc None
-5032=This body part will be downloaded on demand.
+# Status - getting mailbox info
+imapGettingMailboxInfo=Getting Mailbox Configuration Info…
 
-## @name IMAP_RECEIVING_MESSAGE_HEADERS_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5036): Do not translate the word "%S" or "%lu" below.
+# Status - empty mime part
+imapEmptyMimePart=This body part will be downloaded on demand.
+
+# LOCALIZATION NOTE (imapReceivingMessageHeaders): Do not translate the word "%S" or "%lu" below.
 # Place the word %S in your translation where the name of the server should appear.
 # Place the word %lu where the number of headers should appear.
-5036=%S Downloading message header %lu of %lu
+imapReceivingMessageHeaders=%S Downloading message header %lu of %lu
 
-## @name IMAP_RECEIVING_MESSAGE_FLAGS_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5037): Do not translate the word "%S" or "%lu" below.
+# LOCALIZATION NOTE (imapReceivingMessageFlags): Do not translate the word "%S" or "%lu" below.
 # Place the word %S in your translation where the name of the server should appear.
 # Place the word %lu where the number of flags should appear.
-5037=%S Downloading message flag %lu of %lu
+imapReceivingMessageFlags=%S Downloading message flag %lu of %lu
 
-## @name IMAP_DELETING_MESSAGES
-## @loc None
-5038=Deleting messages…
+imapDeletingMessages=Deleting messages…
 
-## @name IMAP_DELETING_MESSAGE
-## @loc None
-5039=Deleting message…
+imapDeletingMessage=Deleting message…
 
-## @name IMAP_MOVING_MESSAGES_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5040): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapMovingMessages): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5040=Moving messages to %S…
+imapMovingMessages=Moving messages to %S…
 
-## @name IMAP_MOVING_MESSAGE_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5041): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapMovingMessage): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5041=Moving message to %S…
+imapMovingMessage=Moving message to %S…
 
-## @name IMAP_COPYING_MESSAGES_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5042): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapCopyingMessages): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5042=Copying messages to %S…
+imapCopyingMessages=Copying messages to %S…
 
-## @name IMAP_COPYING_MESSAGE_TO
-## @loc None
-# LOCALIZATION NOTE (Error 5043): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapCopyingMessage): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5043=Copying message to %S…
+imapCopyingMessage=Copying message to %S…
 
-## @name IMAP_FOLDER_RECEIVING_MESSAGE_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5045): Do not translate the word "%S" or "%lu" below.
+# LOCALIZATION NOTE (imapFolderReceivingMessageOf): Do not translate the word "%S" or "%lu" below.
 # Place the word %S in your translation where the name of the folder should appear.
 # Place the word %lu where the number of headers should appear.
-5045=%S - Downloading message %lu of %lu
+imapFolderReceivingMessageOf=%S - Downloading message %lu of %lu
 
-## @name IMAP_DISCOVERING_MAILBOX 
-## @loc None
-# LOCALIZATION NOTE (Error 5046): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapDiscoveringMailbox): Do not translate the word "%S" below.
 # Place the word %S in your translation where the name of the folder should appear.
-5046=Found folder: %S
+imapDiscoveringMailbox=Found folder: %S
 
-## @name IMAP_ENTER_PASSWORD_PROMPT
-## @loc None
-# LOCALIZATION NOTE (Error 5047): Do not translate the word %S below.
+# LOCALIZATION NOTE (imapEnterPasswordPrompt): Do not translate the word %S below.
 # Place the word "%S" in your translation where the email address
 # or the username should appear
-5047=Enter your password for %S:
+imapEnterPasswordPrompt=Enter your password for %S:
 
-## @name IMAP_SERVER_NOT_IMAP4
-## @loc None
-# LOCALIZATION NOTE (Error 5048): Do not translate the word "IMAP4" below.
-5048=Mail server %S is not an IMAP4 mail server.
+# LOCALIZATION NOTE (imapServerNotImap4): Do not translate the word "IMAP4" below.
+imapServerNotImap4=Mail server %S is not an IMAP4 mail server.
 
-## @name IMAP_DONE
-## @loc None
-5050=
+# This is intentionally left blank.
+imapDone=
 
-## @name IMAP_ENTER_PASSWORD_PROMPT_TITLE
-## @loc None
-5051=Mail Server Password Required
+imapEnterPasswordPromptTitle=Mail Server Password Required
 
-## @name IMAP_UNKNOWN_HOST_ERROR
-## @loc None
-5052=Failed to connect to server %S.
+imapUnknownHostError=Failed to connect to server %S.
 
-## @name IMAP_IMAP_CONNECTION_REFUSED_ERROR
-## @loc None
-5053=Could not connect to mail server %S; the connection was refused.
+imapConnectionRefusedError=Could not connect to mail server %S; the connection was refused.
 
-## @name IMAP_NET_TIMEOUT_ERROR
-## @loc None
-5054=Connection to server %S timed out.
+imapNetTimeoutError=Connection to server %S timed out.
 
 # Status - no messages to download 
-## @name IMAP_NO_NEW_MESSAGES
-## @loc None
-5056=There are no new messages on the server.
+imapNoNewMessages=There are no new messages on the server.
 
-## @name IMAP_DEFAULT_ACCOUNT_NAME
-## @loc None
-5057=Mail for %S
+imapDefaultAccountName=Mail for %S
 
-## @name IMAP_SPECIAL_CHAR
-## @loc None
-5065= The %c character is reserved on this imap server. Please choose another name. 
+imapSpecialChar= The %c character is reserved on this imap server. Please choose another name. 
 
-## @name IMAP_PERSONAL_SHARED_FOLDER_TYPE_NAME
-## @loc None
-5066=Personal Folder
+imapPersonalSharedFolderTypeName=Personal Folder
 
-## @name IMAP_PUBLIC_FOLDER_TYPE_NAME
-## @loc None
-5067=Public Folder
+imapPublicFolderTypeName=Public Folder
 
-## @name IMAP_OTHER_USERS_FOLDER_TYPE_NAME
-## @loc None
-5068=Other User's Folder
+imapOtherUsersFolderTypeName=Other User's Folder
 
-## @name IMAP_PERSONAL_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5069=This is a personal mail folder.  It is not shared.
+imapPersonalFolderTypeDescription=This is a personal mail folder.  It is not shared.
 
-## @name IMAP_PERSONAL_SHARED_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5070=This is a personal mail folder.  It has been shared.
+imapPersonalSharedFolderTypeDescription=This is a personal mail folder.  It has been shared.
 
-## @name IMAP_PUBLIC_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5071=This is a public folder.
+imapPublicFolderTypeDescription=This is a public folder.
 
-## @name IMAP_OTHER_USERS_FOLDER_TYPE_DESCRIPTION
-## @loc None
-5072=This is a mail folder shared by the user '%S'.
+imapOtherUsersFolderTypeDescription=This is a mail folder shared by the user '%S'.
 
-## @name IMAP_ACL_FULL_RIGHTS
-## @loc None
-5073=Full Control
+imapAclFullRights=Full Control
 
-## @name IMAP_ACL_LOOKUP_RIGHT
-## @loc None
-5074=Lookup
+imapAclLookupRight=Lookup
 
-## @name IMAP_ACL_READ_RIGHT
-## @loc None
-5075=Read
+imapAclReadRight=Read
 
-## @name IMAP_ACL_SEEN_RIGHT
-## @loc None
-5076=Set Read/Unread State
+imapAclSeenRight=Set Read/Unread State
 
-## @name IMAP_ACL_WRITE_RIGHT
-## @loc None
-5077=Write
+imapAclWriteRight=Write
 
-## @name IMAP_ACL_INSERT_RIGHT
-## @loc None
-5078=Insert (Copy Into)
+imapAclInsertRight=Insert (Copy Into)
 
-## @name IMAP_ACL_POST_RIGHT
-## @loc None
-5079=Post
+imapAclPostRight=Post
 
-## @name IMAP_ACL_CREATE_RIGHT
-## @loc None
-5080=Create Subfolder
+imapAclCreateRight=Create Subfolder
 
-## @name IMAP_ACL_DELETE_RIGHT
-## @loc None
-5081=Delete Messages
+imapAclDeleteRight=Delete Messages
 
-## @name IMAP_ACL_ADMINISTER_RIGHT
-## @loc None
-5082=Administer Folder
+imapAclAdministerRight=Administer Folder
 
-## @name IMAP_SERVER_DOESNT_SUPPORT_ACL
-## @loc None
-5084=This server does not support shared folders.
+imapServerDoesntSupportAcl=This server does not support shared folders.
 
-## @name IMAP_ACL_EXPUNGE_RIGHT
-## @loc None
-5085=Expunge
+imapAclExpungeRight=Expunge
 
-## @name IMAP_SERVER_DISCONNECTED
-## @loc None
-5090= Server %S has disconnected. The server may have gone down or there may be a network problem.
+imapServerDisconnected= Server %S has disconnected. The server may have gone down or there may be a network problem.
 
 # LOCALIZATION NOTE (autoSubscribeText): %1$S is the imap folder.
-5092=Would you like to subscribe to %1$S?
+imapSubscribePrompt=Would you like to subscribe to %1$S?
 
-## @name IMAP_SERVER_DROPPED_CONNECTION
-## @loc None
-5093=Unable to connect to your IMAP server. You may have exceeded the maximum number \
+imapServerDroppedConnection=Unable to connect to your IMAP server. You may have exceeded the maximum number \
 of connections to this server. If so, use the Advanced IMAP Server Settings dialog to \
 reduce the number of cached connections.
 
-## @name IMAP_QUOTA_STATUS_FOLDERNOTOPEN
-## @loc None
-5095=Quota information is not available because the folder is not open.
+imapQuotaStatusFolderNotOpen=Quota information is not available because the folder is not open.
 
-## @name IMAP_QUOTA_STATUS_NOTSUPPORTED
-## @loc None
-5096=This server does not support quotas.
+imapQuotaStatusNotSupported=This server does not support quotas.
 
-## @name IMAP_QUOTA_STATUS_NOQUOTA
-## @loc None
-5097=There are no storage quotas on this folder.
+imapQuotaStatusNoQuota=There are no storage quotas on this folder.
 
 # Out of memory
-## @name IMAP_OUT_OF_MEMORY
-## @loc None
-5100=Application is out of memory.
+imapOutOfMemory=Application is out of memory.
 
-## @name IMAP_COPYING_MESSAGE_OF
-## @loc None
-# LOCALIZATION NOTE (Error 5103): Do not translate the word "%S" below.
+# LOCALIZATION NOTE (imapCopyingMessageOf): Do not translate the word "%S" below.
 # Place the word %3$S in your translation where the name of the destination folder should appear.
 # Place the word %1$S where the currently copying message should appear.
 # Place the word %2$S where the total number of messages should appear.
-5103=Copying Message %1$S of %2$S to %3$S
+imapCopyingMessageOf=Copying Message %1$S of %2$S to %3$S
 
-## @name IMAP_MOVE_FOLDER_TO_TRASH
-## @loc None
-# LOCALIZATION NOTE (5105): Do not translate the word %S below.
-# "%S" is the name of the folder.
-5105=Are you sure you want to delete the folder '%S'?
-
-## @name IMAP_DELETE_NO_TRASH
-## @loc None
-# LOCALIZATION NOTE (5106): Do not translate the word %S below.
+# LOCALIZATION NOTE (imapMoveFolderToTrash): Do not translate the word %S below.
 # "%S" is the name of the folder.
-5106=Deleting this folder is not undoable and will delete all of the messages it contains, and its sub-folders. Are you sure you still want to delete the folder '%S'?
-
-## @name IMAP_DELETE_FOLDER_DIALOG_TITLE
-## @loc None
-5107=Delete Folder
+imapMoveFolderToTrash=Are you sure you want to delete the folder '%S'?
 
-## @name IMAP_DELETE_FOLDER_BUTTON_LABEL
-## @loc None
-5108=&Delete Folder
+# LOCALIZATION NOTE (imapDeleteNoTrash): Do not translate the word %S below.
+# "%S" is the name of the folder.
+imapDeleteNoTrash=Deleting this folder is not undoable and will delete all of the messages it contains, and its sub-folders. Are you sure you still want to delete the folder '%S'?
 
-## @name IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_SSL
-## @loc None
-# LOCALIZATION NOTE (5110): %S is the server hostname
-5110=The IMAP server %S does not seem to support encrypted passwords. If you just set up this account, please try changing to 'Normal password' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, please contact your email administrator or provider.
+imapDeleteFolderDialogTitle=Delete Folder
+
+imapDeleteFolderButtonLabel=&Delete Folder
 
-## @name IMAP_AUTH_CHANGE_PLAIN_TO_ENCRYPT
-## @loc None
-# LOCALIZATION NOTE (5111): %S is the server hostname
-5111=The IMAP server %S does not allow plaintext passwords. Please try changing to 'Encrypted password' as the 'Authentication method' in the 'Account Settings | Server settings'.
+# LOCALIZATION NOTE (imapAuthChangeEncryptToPlainSSL): %S is the server hostname
+imapAuthChangeEncryptToPlainSSL=The IMAP server %S does not seem to support encrypted passwords. If you just set up this account, please try changing to 'Normal password' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, please contact your email administrator or provider.
 
-## @name IMAP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_NO_SSL
-## @loc None
-# LOCALIZATION NOTE (5112): %S is the server hostname
-5112=The IMAP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
-
-## @name IMAP_AUTH_MECH_NOT_SUPPORTED
-## @loc None
-# LOCALIZATION NOTE (5113): %S is the server hostname
-5113=The IMAP server %S does not support the selected authentication method. Please change the 'Authentication method' in the 'Account Settings | Server settings'.
+# LOCALIZATION NOTE (imapAuthChangePlainToEncrypt): %S is the server hostname
+imapAuthChangePlainToEncrypt=The IMAP server %S does not allow plaintext passwords. Please try changing to 'Encrypted password' as the 'Authentication method' in the 'Account Settings | Server settings'.
 
-## @name IMAP_AUTH_MECH_FAILED
-## @loc None
-# LOCALIZATION NOTE (5114): %S is the server hostname
-5114=All login mechanisms for %S failed. Please check the password or change the 'Authentication method' in the 'Account Settings | Server settings'.
+# LOCALIZATION NOTE (imapAuthChangeEncryptToPlainNoSSL): %S is the server hostname
+imapAuthChangeEncryptToPlainNoSSL=The IMAP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
 
-## @name IMAP_AUTH_GSSAPI_FAILED
-## @loc None
-# LOCALIZATION NOTE (5115): %S is the server hostname
-5115=The Kerberos/GSSAPI ticket was not accepted by the IMAP server %S. Please check that you are logged in to the Kerberos/GSSAPI realm.
+# LOCALIZATION NOTE (imapAuthMechFailed): %S is the server hostname
+imapAuthMechFailed=All login mechanisms for %S failed. Please check the password or change the 'Authentication method' in the 'Account Settings | Server settings'.
 
-## @name IMAP_LOGIN_DISABLED
-## @loc None
-# LOCALIZATION NOTE (5116): %S is the account name
-5116=You cannot log in to %S because the server doesn't allow plaintext authentication without STARTTLS or SSL/TLS. Try enabling connection security or secure authentication in the account settings.
+# LOCALIZATION NOTE (imapAuthGssapiFailed): %S is the server hostname
+imapAuthGssapiFailed=The Kerberos/GSSAPI ticket was not accepted by the IMAP server %S. Please check that you are logged in to the Kerberos/GSSAPI realm.
 
-## @name IMAP_SERVER_COMMAND_FAILED
-## @loc None
-# LOCALIZATION NOTE (5117): 
+# LOCALIZATION NOTE (imapServerCommandFailed): 
 # Place the word %1$S in your translation where the name of the account name should appear.
 # Place the word %2$S in your translation where the server response should appear.
-5117=The current command did not succeed. The mail server for account %1$S responded: %2$S 
+imapServerCommandFailed=The current command did not succeed. The mail server for account %1$S responded: %2$S 
 
-## @name IMAP_FOLDER_COMMAND_FAILED
-## @loc None
-# LOCALIZATION NOTE (5118): Do not translate the word %S below.
+# LOCALIZATION NOTE (imapFolderCommandFailed): Do not translate the word %S below.
 # Place the word %1$S in your translation where the name of the account should appear.
 # Place the word %2$S in your translation where the name of the folder should appear.
 # Place the word %3$S in your translation where the server response should appear.
-5118=The current operation on '%2$S' did not succeed. The mail server for account %1$S responded: %3$S
+imapFolderCommandFailed=The current operation on '%2$S' did not succeed. The mail server for account %1$S responded: %3$S
 
-## @name IMAP_SERVER_ALERT
-## @loc None
-# LOCALIZATION NOTE (5119):
+# LOCALIZATION NOTE (imapServerAlert):
 # Place the word %1$S in your translation where the name of the account should appear.
 # Place the word %2$S in your translation where the alert from the server should appear.
-5119=Alert from account %1$S: %2$S
+imapServerAlert=Alert from account %1$S: %2$S