Bug 714733 - Instant messaging in Thunderbird, r=bienvenu,bwinton,Standard8,mconley.
authorFlorian Quèze <florian@queze.net>
Tue, 13 Mar 2012 02:14:45 +0100
changeset 7780 1ae3c663cdd38ba2f6a68acbea63dbb4c2f014f6
parent 7779 e6db0d2d3bd5b5751db3995388ddbc8781246cca
child 7781 070adeb6f92ee772676a335d49a2f70de8006478
push idunknown
push userunknown
push dateunknown
reviewersbienvenu, bwinton, Standard8, mconley
bugs714733
Bug 714733 - Instant messaging in Thunderbird, r=bienvenu,bwinton,Standard8,mconley. X-Channel-Repo: comm-central X-Channel-Converted-Revision: 8cdfed92867f885fda98664395236b7829947a1d
chat/accounts.properties
chat/commands.properties
chat/conversations.properties
chat/facebook.properties
chat/irc.properties
chat/status.properties
chat/twitter.properties
chat/xmpp.properties
mail/chrome/messenger/AccountManager.dtd
mail/chrome/messenger/addbuddy.dtd
mail/chrome/messenger/am-im.dtd
mail/chrome/messenger/chat.dtd
mail/chrome/messenger/chat.properties
mail/chrome/messenger/imAccountWizard.dtd
mail/chrome/messenger/imAccounts.properties
mail/chrome/messenger/joinChat.dtd
mail/chrome/messenger/messenger.dtd
mail/chrome/messenger/preferences/chat.dtd
mail/chrome/messenger/preferences/preferences.dtd
new file mode 100644
--- /dev/null
+++ b/chat/accounts.properties
@@ -0,0 +1,5 @@
+# LOCALIZATION NOTE (passwordPromptTitle, passwordPromptText):
+# %S is replaced with the name of the account
+passwordPromptTitle=Password for %S
+passwordPromptText=Please enter your password for %S in order to connect it.
+passwordPromptSaveCheckbox=Use Password Manager to remember this password.
new file mode 100644
--- /dev/null
+++ b/chat/commands.properties
@@ -0,0 +1,23 @@
+# LOCALIZATION NOTE (commands):
+#  %S is a comma separated list of command names.
+commands=Commands: %S.\nUse /help &lt;command&gt; for more information.
+# LOCALIZATION NOTE (noCommand, noHelp):
+#  %S is the command name the user typed.
+noCommand=No '%S' command.
+noHelp=No help message for the '%S' command, sorry!
+
+sayHelpString=say &lt;message&gt;: send a message without processing commands.
+rawHelpString=raw &lt;message&gt;: send a message without escaping HTML entities.
+helpHelpString=help &lt;name&gt;: show the help message for the &lt;name&gt; command, or the list of possible commands when used without parameter.
+
+# LOCALIZATION NOTE (statusCommand):
+#  %1$S is replaced with a status command name
+#   (one of "back", "away", "busy", "dnd", or "offline").
+#  %2$S is replaced with the localized version of that status type
+#   (one of the 5 strings below).
+statusCommand=%1$S &lt;status message&gt;: set the status to %2$S with an optional status message.
+back=available
+away=away
+busy=unavailable
+dnd=unavailable
+offline=offline
new file mode 100644
--- /dev/null
+++ b/chat/conversations.properties
@@ -0,0 +1,41 @@
+# LOCALIZATION NOTE (targetChanged):
+#  %1$S is the new conversation title (display name of the new target),
+#  %2$S is the protocol name used for the new target.
+targetChanged=The conversation will continue with %1$S, using %2$S.
+
+# LOCALIZATION NOTE (statusChanged):
+#  %1$S is the display name of the contact.
+#  %2$S is the new status type (a value from status.properties).
+statusChanged=%1$S is now %2$S.
+# LOCALIZATION NOTE (statusChangedWithStatusText):
+#  %1$S is the display name of the contact.
+#  %2$S is the new status type (a value from status.properties).
+#  %3$S is the status text (eg. "I'm currently away from the computer").
+statusChangedWithStatusText=%1$S is now %2$S: %3$S.
+# LOCALIZATION NOTE (statusChangedFromUnknown[WithStatusText]):
+#  special case of the previous 2 strings for when the status was
+#  previously unknown. These 2 strings should not mislead the user
+#  into thinking the person's status has just changed.
+statusChangedFromUnknown=%1$S is %2$S.
+statusChangedFromUnknownWithStatusText=%1$S is %2$S: %3$S.
+
+# LOCALIZATION NOTE (statusUnknown):
+#  %S is the display name of the contact.
+statusUnknown=Your account is disconnected (the status of %S is no longer known).
+accountDisconnected=Your account is disconnected.
+
+# LOCALIZATION NOTE (autoReply):
+#  %S is replaced by the text of a message that was sent as an automatic reply.
+autoReply=Auto-reply - %S
+
+# LOCALIZATION NOTE (messenger.conversations.selections.ellipsis):
+#  ellipsis is used when copying a part of a message to show that the message was cut
+messenger.conversations.selections.ellipsis=[…]
+
+# LOCALIZATION NOTE (messenger.conversations.selections.{system,content,action}MessagesTemplate):
+#  These 3 templates are used to format selected messages before copying them.
+#  Do not translate the texts between % characters, but feel free to adjust
+#  whitespace and separators to make them fit your locale.
+messenger.conversations.selections.systemMessagesTemplate=%time% - %message%
+messenger.conversations.selections.contentMessagesTemplate=%time% - %sender%: %message%
+messenger.conversations.selections.actionMessagesTemplate=%time% * %sender% %message%
new file mode 100644
--- /dev/null
+++ b/chat/facebook.properties
@@ -0,0 +1,1 @@
+connection.error.useUsernameNotEmailAddress=Please use your Facebook username, not an email address
new file mode 100644
--- /dev/null
+++ b/chat/irc.properties
@@ -0,0 +1,147 @@
+# LOCALIZATION NOTE (connection.error.*):
+#   These will show in the account manager if the account is
+#   disconnected because of an error.
+connection.error.lost=Lost connection with server
+connection.error.timeOut=Connection timed out
+connection.error.certError=Certification error when connecting to server
+
+# LOCALIZATION NOTE (joinChat.*):
+#   These show up on the join chat menu. An underscore is for the access key.
+joinChat.channel=_Channel
+joinChat.password=_Password
+
+# LOCALIZATION NOTE (options.*):
+#   These are the protocol specific options shown in the account manager and
+#   account wizard windows.
+options.server=Server
+options.port=Port
+options.ssl=Use SSL
+options.encoding=Character Set
+options.quitMessage=Quit message
+options.partMessage=Part message
+options.showServerTab=Show messages from the server
+
+# LOCALIZATION NOTE (ctcp.ping): Semi-colon list of plural forms.
+#  See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+#   %1$S is the nickname of the user who was pinged.
+#   #2 is the delay (in seconds).
+ctcp.ping=Ping reply from %1$S in #2 second.;Ping reply from %1$S in #2 seconds.
+# LOCALIZATION NOTE (ctcp.version):
+#   %1$S is the nickname of the user whose version was requested.
+#   %2$S is the version response from the client.
+ctcp.version=%1$S is using "%2$S"
+# LOCALIZATION NOTE (ctcp.time):
+#   %1$S is the nickname of the user whose time was requested.
+#   %2$S is the time response.
+ctcp.time=The time for %1$S is %2$S.
+
+# LOCALZIATION NOTE (command.*):
+#   These are the help messages for each command, the %S is the command name
+#   Each command first gives the parameter it accepts and then a description of
+#   the command.
+command.action=%S &lt;action to perform&gt;: Perform an action.
+command.ctcp=%S &lt;nick&gt; &lt;msg&gt;: Sends a CTCP message to the nick.
+command.chanserv=%S &lt;command&gt;: Send a command to ChanServ.
+command.deop=%S &lt;nick1&gt;[,&lt;nick2&gt;]*: Remove channel operator status from someone. You must be a channel operator to do this.
+command.devoice=%S &lt;nick1&gt;[,&lt;nick2&gt;]*: Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this.
+command.invite=%S &lt;nick&gt; [&lt;room&gt;]: Invite someone to join you in the specified channel, or the current channel.
+command.join=%S &lt;room1&gt;[,&lt;room2&gt;]* [&lt;key1&gt;[,&lt;key2&gt;]*]: Enter one or more channels, optionally providing a channel key for each if needed.
+command.kick=%S &lt;nick&gt; [&lt;message&gt;]: Remove someone from a channel. You must be a channel operator to do this.
+command.list=%S: Display a list of chat rooms on the network. Warning, some servers may disconnect you upon doing this.
+command.memoserv=%S &lt;command&gt;: Send a command to MemoServ.
+command.mode=%S (&lt;nick&gt;|&lt;channel&gt;) (+|-)&lt;new mode&gt;: Set or unset a channel or user mode.
+command.msg=%S &lt;nick&gt; &lt;message&gt;: Send a private message to a user (as opposed to a channel).
+command.nick=%S &lt;new nickname&gt;: Change your nickname.
+command.nickserv=%S &lt;command&gt;: Send a command to NickServ.
+command.notice=%S &lt;target&gt; &lt;message&gt;: Send a notice to a user or channel.
+command.op=%S &lt;nick1&gt;[,&lt;nick2&gt;]*: Grant channel operator status to someone. You must be a channel operator to do this.
+command.operserv=%S &lt;command&gt;: Send a command to OperServ.
+command.part=%S [message]: Leave the current channel with an optional message.
+command.ping=%S [&lt;nick&gt;]: Asks how much lag a user (or the server if no user specified) has.
+command.quit=%S &lt;message&gt;: Disconnect from the server, with an optional message.
+command.quote=%S &lt;command&gt;: Send a raw command to the server.
+command.time=%S: Displays the current local time at the IRC server.
+command.topic=%S [&lt;new topic&gt;]: View or change the channel topic.
+command.umode=%S (+|-)&lt;new mode&gt;: Set or unset a user mode.
+command.version=%S &lt;nick&gt;: Request the version of a user's client.
+command.voice=%S &lt;nick1&gt;[,&lt;nick2&gt;]*: Grant channel voice status to someone. You must be a channel operator to do this.
+command.wallops=%S &lt;message&gt;: If you don't know what this is, you probably can't use it (sends a command to all connected with the +w flag and all operators on the server.
+command.whowas=%S &lt;nick&gt;: Get information on a user that has logged off.
+
+# LOCALIZATION NOTE (message.*):
+#    These are shown as system messages in the conversation.
+#    %1$S is the nick and %2$S is the nick and host of the user who joined.
+message.join=%1$S [%2$S] entered the room.
+#    %1$S is the nick of who kicked you.
+#    %2$S is message.kicked.reason, if a kick message was given.
+message.kicked.you=You have been kicked by %1$S%2$S.
+#    %1$S is the nick that is kicked, %2$S the nick of the person who kicked
+#    %1$S. %3$S is message.kicked.reason, if a kick message was given.
+message.kicked=%1$S has been kicked by %2$S%3$S.
+#    %S is the kick message
+message.kicked.reason=: %S
+#    %1$S is the nickname of the user whose mode was changed, %2$S is the new
+#    mode and %3$S is who set the mode.
+message.mode=mode (%1$S %2$S) by %3$S.
+#    %1$S is the old nick and %2$S is the new nick.
+message.nick=%1$S is now known as %2$S.
+#    %S is your new nick.
+message.nick.you=You are now known as %S.
+#    The paramter is the message.parted.reason, if a part message is given.
+message.parted.you=You have left the room (Part%1$S).
+#    %1$S is the user's nick, %2$S is message.parted.reason, if a part message is given.
+message.parted=%1$S has left the room (Part%2$S).
+#    %S is the part message supplied by the user.
+message.parted.reason=: %S
+#    %1$S is the user's nick, %2$S is message.quit2 if a quit message is given.
+message.quit=%1$S has left the room (Quit%2$S).
+#    The paramter is the quit message given by the user.
+message.quit2=: %S
+#    %1$S is the user who changed the topic, %2$S is the new topic.
+message.topicChanged=%1$S has changed the topic to: %2$S.
+#    %1$S is the user who cleared the topic.
+message.topicCleared=%1$S has cleared the topic.
+#    %1$S is the conversation name, %2$S is the topic.
+message.topic=The topic for %1$S is: %2$S.
+#    %S is the conversation name.
+message.topicRemoved=The topic for %S was removed.
+#    %1$S is the nickname of the invited user, %2$S is the conversation name
+#    they were invited to.
+message.invited=%1$S was successfully invited to %2$S.
+#    %S is the nickname of the user who was summoned.
+message.summoned=%S was summoned.
+
+# LOCALIZATION NOTE (error.*):
+#    These are shown as error messages in the conversation.
+#    %S is the channel name.
+error.noChannel=There is no channel: %S.
+error.tooManyChannels=Cannot join %S; you've joined too many channels.
+#    %1$S is your new nick, %2$S is the kill message from the server.
+error.nickCollision=Nick already in use, changing nick to %1$S [%2$S].
+error.banned=You are banned from this server.
+error.bannedSoon=You will soon be banned from this server.
+error.mode.wrongUser=You cannot change modes for other users.
+
+# LOCALIZATION NOTE (tooltip.*):
+#    These are the descriptions given in a tooltip with information received
+#    from a whois response.
+#    The human readable ("realname") description of the user.
+tooltip.realname=Name
+#    The username and hostname that the user connects from (usually based on the
+#    reverse DNS of the user's IP, but often mangled by the server to
+#    protect users).
+tooltip.connectedFrom=Connected from
+# The away message of the user
+tooltip.away=Away
+tooltip.ircOp=IRC Operator
+tooltip.channels=Currently on
+tooltip.server=Connected to
+#    %1$S is the server name, %2$S is the server location.
+tooltip.serverValue=%1$S (%2$S)
+tooltip.idleTime=Idle for
+
+# LOCALIZATION NOTE (gtalk.usernameHint):
+#  This is displayed inside the accountUsernameInfoWithDescription
+#  string defined in imAccounts.properties when the user is
+#  configuring an IRC account.
+usernameHint=and server
new file mode 100644
--- /dev/null
+++ b/chat/status.properties
@@ -0,0 +1,14 @@
+availableStatusType=Available
+awayStatusType=Away
+unavailableStatusType=Unavailable
+offlineStatusType=Offline
+invisibleStatusType=Invisible
+idleStatusType=Idle
+mobileStatusType=Mobile
+# LOCALIZATION NOTE (unknownStatusType):
+# the status of a buddy is unknown when it's in the list of a disconnected account
+unknownStatusType=Unknown
+
+# LOCALIZATION NOTE (messenger.status.defaultIdleAwayMessage):
+#  This will be the away message put automatically when the user is idle.
+messenger.status.defaultIdleAwayMessage=I am currently away from the computer.
new file mode 100644
--- /dev/null
+++ b/chat/twitter.properties
@@ -0,0 +1,101 @@
+# LOCALIZATION NOTE (error.*):
+#   These are errors that will be shown to the user in conversation.
+error.tooLong=Status is over 140 characters.
+# LOCALIZATION NOTE (error.general, error.retweet, error.delete):
+#   %1$S will be either the error string returned by the twitter server,
+#   in English, inside parenthesis, or the empty string if we have no specific
+#   message for the error.
+#   %2$S is the message that caused the error.
+error.general=An error %1$S occurred while sending: %2$S
+error.retweet=An error %1$S occurred while retweeting: %2$S
+error.delete=An error %1$S occurred while deleting: %2$S
+
+# LOCALIZATION NOTE (timeline):
+#   This is the title of the conversation tab, %S will be replaced by
+#   @<username>.
+timeline=%S timeline
+
+# LOCALIZATION NOTE (action.*):
+#  This will be an action in the context menu of displayed tweets.
+action.copyLink=Copy Link to Tweet
+action.retweet=Retweet
+action.reply=Reply
+action.delete=Delete
+# LOCALIZATION NOTE (action.follow, action.stopFollowing):
+#  %S will be replaced by the screen name of a twitter user.
+action.follow=Follow %S
+action.stopFollowing=Stop following %S
+
+# LOCALIZATION NOTE (event.follow, event.unfollow, event.followed):
+#  This will be displayed in system messages inside the timeline conversation.
+#  %S will be replaced by the screen name of a twitter user.
+event.follow=You are now following %S.
+event.unfollow=You are no longer following %S.
+event.followed=%S is now following you.
+# LOCALIZATION NOTE (event.deleted):
+#  %S will be replaced by the text of the deleted tweet.
+event.deleted=You have deleted this tweet: "%S".
+
+# LOCALIZATION NOTE (replyingToStatusText):
+#  This will be visible in the status bar of the conversation window
+#  while the user is typing a reply to a tweet.
+#  %S will be replaced by the text of the tweet the user is replying to.
+replyingToStatusText=Replying to: %S
+
+# LOCALIZATION NOTE (connection.*):
+#   These will be displayed in the account manager in order to show the progress
+#   of the connection.
+#   (These will be displayed in account.connection.progress from
+#    accounts.properties, which adds … at the end, so do not include
+#    periods at the end of these messages.)
+connection.initAuth=Initiating authentication process
+connection.requestAuth=Waiting for your authorization
+connection.requestAccess=Finalizing authentication
+connection.requestTimelines=Requesting user timelines
+# LOCALIZATION NOTE (connection.error.*):
+#   These will show in the account manager if an error occurs during the
+#   connection attempt.
+connection.error.userMismatch=Username mismatch.
+connection.error.failedToken=Failed to get request token.
+connection.error.authCancelled=You cancelled the authorization process.
+connection.error.authFailed=Failed to get authorization.
+connection.error.noNetwork=There is no network connection available.
+
+# LOCALIZATION NOTE (authPrompt):
+#   This is the prompt in the browser window that pops up to authorize us
+#   to use a Twitter account. It is shown in the title bar of the authorization
+#   window.
+authPrompt=Give permission to use your Twitter account
+
+# LOCALIZATION NOTE (options.*):
+#   These are the protocol specific options shown in the account manager and
+#   account wizard windows.
+options.track=Tracked keywords
+
+# LOCALIZATION NOTE (tooltip.*):
+#   These are the Twitter information that will appear in the tooltip
+#   for each participant on the home timeline.
+# LOCALIZATION NOTE (tooltip.created_at): the date the user joined.
+tooltip.created_at=User Since
+tooltip.location=Location
+tooltip.lang=Language
+tooltip.time_zone=Timezone
+tooltip.url=Homepage
+# LOCALIZATION NOTE (tooltip.protected):
+#  whether the user's tweets are publicly visible.
+tooltip.protected=Protects Tweets
+# LOCALIZATION NOTE (tooltip.following):
+#  whether you are subscribed to the user's tweets.
+tooltip.following=Currently Following
+tooltip.description=Description
+# LOCALIZATION NOTE (tooltip.*_count):
+#  Please see the right side of the official Twitter website UI.
+tooltip.friends_count=Following
+tooltip.statuses_count=Tweets
+tooltip.followers_count=Followers
+tooltip.listed_count=Listed
+
+# LOCALIZATION NOTE (yes, no):
+#  These are used to turn true/false values into a yes/no response.
+yes=Yes
+no=No
new file mode 100644
--- /dev/null
+++ b/chat/xmpp.properties
@@ -0,0 +1,72 @@
+# LOCALIZATION NOTE (connection.*)
+#   These will be displayed in the account manager in order to show the progress
+#   of the connection.
+#   (These will be displayed in account.connection.progress from
+#    accounts.properties, which adds … at the end, so do not include
+#    periods at the end of these messages.)
+connection.initializingStream=Initializing stream
+connection.initializingEncryption=Initializing encryption
+connection.authenticating=Authenticating
+connection.gettingResource=Getting resource
+connection.downloadingRoster=Downloading contact list
+
+# LOCALIZATION NOTE (connection.error.*)
+#   These will show in the account manager if an error occurs during the
+#   connection attempt.
+connection.error.failedToCreateASocket=Failed to create a socket (Are you offline?)
+connection.error.serverClosedConnection=The server closed the connection
+connection.error.resetByPeer=Connection reset by peer
+connection.error.timedOut=The connection timed out
+connection.error.receivedUnexpectedData=Received unexpected data
+connection.error.incorrectResponse=Received an incorrect response
+connection.error.startTLSRequired=The server requires encryption but you disabled it
+connection.error.startTLSNotSupported=The server doesn't support encryption but your configuration requires it
+connection.error.failedToStartTLS=Failed to start encryption
+connection.error.noAuthMec=No authentication mechanism offered by the server
+connection.error.noCompatibleAuthMec=None of the authentication mechanisms offered by the server are supported
+connection.error.notSendingPasswordInClear=The server only supports authentication by sending the password in cleartext
+connection.error.authenticationFailure=Authentication failure
+connection.error.notAuthorized=Not authorized (Did you enter the wrong password?)
+connection.error.failedToGetAResource=Failed to get a resource
+
+# LOCALIZATION NOTE (tooltip.*):
+#   These are the titles of lines of information that will appear in
+#   the tooltip showing details about a contact or conversation.
+# LOCALIZATION NOTE (tooltip.status):
+#   %S will be replaced by the XMPP resource identifier
+tooltip.status=Status (%S)
+tooltip.statusNoResource=Status
+tooltip.subscription=Subscription
+
+# LOCALIZATION NOTE (chatRoomField.*):
+#   These are the name of fields displayed in the 'Join Chat' dialog
+#   for XMPP accounts.
+#   The _ character won't be displayed; it indicates the next
+#   character of the string should be used as the access key for this
+#   field.
+chatRoomField.room=_Room
+chatRoomField.server=_Server
+chatRoomField.nick=_Nick
+chatRoomField.password=_Password
+
+# LOCALIZATION NOTE
+#  Buddies that aren't in any group on the server will appear in this group.
+#  Try to use the same translation as for defaultGroup in instantbird.properties
+defaultGroup=Contacts
+
+# LOCALIZATION NOTE (options.*):
+#   These are the protocol specific options shown in the account manager and
+#   account wizard windows.
+options.resource=Resource
+options.connectionSecurity=Connection security
+options.connectionSecurity.requireEncryption=Require encryption
+options.connectionSecurity.opportunisticTLS=Use encryption if available
+options.connectionSecurity.allowUnencryptedAuth=Allow sending the password unencrypted
+options.connectServer=Server
+options.connectPort=Port
+
+# LOCALIZATION NOTE (gtalk.usernameHint):
+#  This is displayed inside the accountUsernameInfoWithDescription
+#  string defined in imAccounts.properties when the user is
+#  configuring a Google Talk account.
+gtalk.usernameHint=email address
--- a/mail/chrome/messenger/AccountManager.dtd
+++ b/mail/chrome/messenger/AccountManager.dtd
@@ -1,16 +1,18 @@
 <!-- extracted from AccountManager.xul -->
 
 <!ENTITY accountManagerTitle.label "Account Settings">
 
 <!ENTITY accountActionsButton.label "Account Actions">
 <!ENTITY accountActionsButton.accesskey "A">
 <!ENTITY addMailAccountButton.label "Add Mail Account…">
 <!ENTITY addMailAccountButton.accesskey "A">
+<!ENTITY addIMAccountButton.label "Add Chat Account…">
+<!ENTITY addIMAccountButton.accesskey "C">
 <!ENTITY addOtherAccountButton.label "Add Other Account…">
 <!ENTITY addOtherAccountButton.accesskey "O">
 <!ENTITY setDefaultButton.label "Set as Default">
 <!ENTITY setDefaultButton.accesskey "D">
 <!ENTITY removeButton.label "Remove Account">
 <!ENTITY removeButton.accesskey "R">
 
 <!-- AccountManager.xul -->
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/addbuddy.dtd
@@ -0,0 +1,3 @@
+<!ENTITY addBuddyWindow.title           "Add contact">
+<!ENTITY name.label                     "Username">
+<!ENTITY account.label                  "Account">
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/am-im.dtd
@@ -0,0 +1,12 @@
+<!ENTITY accountWindow.title           "Account properties">
+<!ENTITY accountWindow.width           "300">
+<!ENTITY account.general               "General">
+<!ENTITY account.advanced              "Advanced Options">
+<!ENTITY account.name                  "Username:">
+<!ENTITY account.password              "Password:">
+<!ENTITY account.alias                 "Alias:">
+<!ENTITY account.newMailNotification   "Notify on new Mail">
+<!ENTITY account.autojoin              "Auto-Joined Channels:">
+<!ENTITY account.proxySettings.caption "Proxy Settings:">
+<!ENTITY account.proxySettings.change.label     "Change…">
+<!ENTITY account.proxySettings.change.accessKey "C">
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/chat.dtd
@@ -0,0 +1,51 @@
+<!ENTITY onlineContactsHeader.label    "Online Contacts">
+<!ENTITY offlineContactsHeader.label   "Offline Contacts">
+<!ENTITY conversationsHeader.label     "Conversations">
+<!ENTITY searchResultConversation.label "Search result">
+<!ENTITY chat.noConv.title             "Conversations will be displayed here.">
+<!ENTITY chat.noConv.description       "Use the contact list in the left panel to start a conversation.">
+<!ENTITY chat.noPreviousConv.description       "&brandShortName; currently doesn't have any previous conversations stored for this contact.">
+<!ENTITY chat.noAccount.title             "You haven't set up a chat account yet.">
+<!ENTITY chat.noAccount.description       "Let &brandShortName; guide you through the process of setting up your chat account.">
+<!ENTITY chat.accountWizard.button       "Get started">
+<!ENTITY chat.noConnectedAccount.title             "Your chat accounts are not connected.">
+<!ENTITY chat.noConnectedAccount.description       "You can connect them from the 'Chat status' dialog:">
+<!ENTITY chat.showAccountManager.button       "Show chat status">
+
+<!ENTITY chat.participants             "Participants:">
+<!ENTITY chat.previousConversations    "Previous Conversations:">
+<!ENTITY chat.ongoingConversation      "Ongoing conversation">
+
+<!ENTITY openConversationCmd.label     "Start a Conversation">
+<!ENTITY openConversationCmd.accesskey "c">
+<!ENTITY closeConversationCmd.label    "Close Conversation">
+<!ENTITY closeConversationCmd.accesskey "C">
+<!ENTITY aliasCmd.label                "Rename">
+<!ENTITY aliasCmd.accesskey            "R">
+<!ENTITY deleteCmd.label               "Remove Contact">
+<!ENTITY deleteCmd.accesskey           "v">
+
+<!ENTITY openConversationButton.tooltip  "Start a conversation">
+<!ENTITY closeConversationButton.tooltip "Close conversation">
+
+<!ENTITY addBuddyButton.label          "Add Contact">
+<!ENTITY joinChatButton.label          "Join Chat">
+<!ENTITY chatAccountsButton.label      "Show Accounts">
+
+<!-- LOCALIZATION NOTE (searchAllChatMessages.label.base):
+     This is the base of the empty text for the chat search box.  We replace
+     #1 with the contents of the appropriate search.keyLabel.* value for the
+     platform (defined in messenger/messenger.dtd).
+     The goal is to convey to the user that typing in the box will allow them
+     to search for conversations and that there is a hotkey they can press
+     to get to the box faster.  If the global indexer is disabled, the search
+     box will be collapsed and the user will never see this message.
+     -->
+<!ENTITY searchAllChatMessages.label.base "Search all conversations… #1">
+
+<!ENTITY status.available          "Available">
+<!ENTITY status.unavailable        "Unavailable">
+<!ENTITY status.offline            "Offline">
+
+<!ENTITY openLinkCmd.label            "Open Link…">
+<!ENTITY openLinkCmd.accesskey        "O">
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/chat.properties
@@ -0,0 +1,86 @@
+chatTabTitle=Chat
+goBackToCurrentConversation.button=Back to current conversation
+# LOCALIZATION NOTE (startAConversationWith.button):
+#  %S is replaced with the display name of a contact.
+startAConversationWith.button=Start a conversation with %S
+
+# LOCALIZATION NOTE (defaultGroup):
+#  this is used in the addBuddies dialog if the list of existing groups is empty
+defaultGroup=Contacts
+
+# LOCALIZATION NOTE (buddy.authRequest.label):
+# This string appears in a notification bar at the
+# top of the Contacts window when someone added the user to his/her
+# contact list, to request the permission from the user to share
+# status information with this potential new contact.
+# %S is replaced with the user name of the potential new contact.
+buddy.authRequest.label=%S wants to chat with you
+buddy.authRequest.allow.label=Allow
+buddy.authRequest.allow.accesskey=A
+buddy.authRequest.deny.label=Deny
+buddy.authRequest.deny.accesskey=D
+
+# LOCALIZATION NOTE (buddy.deletePrompt.title):
+# %S here will be replaced by the alias (or username) of a buddy about
+# to be removed from the buddy list.
+buddy.deletePrompt.title=Delete %S?
+
+# LOCALIZATION NOTE (buddy.deletePrompt.message):
+# %1$S will be replaced by the name of a buddy (either the alias
+# followed by the username between parenthesis if an alias is set, or
+# only the username otherwise).
+# %2$S will be the name of the protocol on which this buddy is removed
+# (for example: AIM, MSN, Google Talk).
+#
+# Please find a wording that will keep the username as close as
+# possible to the beginning of the string, because this is the
+# important information that an user should see when looking quickly
+# at this prompt.
+buddy.deletePrompt.message=%1$S will be permanently removed from your %2$S buddy list if you continue.
+
+# LOCALIZATION NOTE (buddy.deletePrompt.displayName):
+# This is used to format the display name inserted in buddy.deletePrompt.message
+# %1$S is the alias, %2$S is the username.
+buddy.deletePrompt.displayName=%1$S (%2$S)
+
+# LOCALIZATION NOTE (buddy.deletePrompt.button):
+# the & symbol indicates the position of the character that should be
+# used as the accesskey for this button.
+buddy.deletePrompt.button=&Delete
+
+displayNameEmptyText=Display Name
+userIconFilePickerTitle=Select the new icon…
+
+# LOCALIZATION NOTE (chat.isTyping, chat.hasStoppedTyping):
+# The contact display name is displayed with a big font on a first
+# line and these two strings are displayed on a second line with a
+# smaller font. Please try to find a wording that make this look
+# almost like a sentence.
+chat.isTyping=is typing…
+chat.hasStoppedTyping=has stopped typing.
+# LOCALIZATION NOTE (chat.contactIsTyping, chat.contactHasStoppedTyping):
+#  These strings are displayed in a tooltip when hovering the status type icon.
+#  %S is replaced with the display name of the contact.
+chat.contactIsTyping=%S is typing.
+chat.contactHasStoppedTyping=%S has stopped typing.
+
+noTopic=No topic message for this room.
+
+# LOCALIZATION NOTE (unknownCommand):
+# This is shown when an unknown command (/foo) is attempted. %S is the command.
+unknownCommand=%S is not a supported command. Type /help to see the list of commands.
+
+# LOCALIZATION NOTE (buddytooltip.username, buddytooltip.account):
+# This is for the tooltip that appears when hovering
+# a contact or a conversation in the left pane.
+buddytooltip.username=Username
+buddytooltip.account=Account
+
+# LOCALIZATION NOTE (today, yesterday):
+# These 3 strings are used to display when previous conversations happened.
+# In 'today' and 'yesterday', %S is replaced with the time.
+today=Today %S
+yesterday=Yesterday %S
+# LOCALIZATION NOTE (dateTime):
+# %1$S is the date, %2$S is the date.
+dateTime=%1$S %2$S
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/imAccountWizard.dtd
@@ -0,0 +1,28 @@
+<!ENTITY windowTitle.label            "Chat Account Wizard">
+
+<!ENTITY accountProtocolTitle.label   "Chat network">
+<!ENTITY accountProtocolInfo.label    "Please choose the network of your chat account.">
+<!ENTITY accountProtocolField.label   "Network:">
+<!ENTITY accountProtocolGetMore.label "Get more…">
+
+<!ENTITY accountUsernameTitle.label   "Username">
+<!ENTITY accountUsernameDuplicate.label "This account is already configured!">
+
+<!ENTITY accountPasswordTitle.label   "Password">
+<!ENTITY accountPasswordInfo.label    "Please enter your password in the box below.">
+<!ENTITY accountPasswordField.label   "Password:">
+<!ENTITY accountPasswordManager.label "The password entered here will be stored in the Password Manager. Leave this box empty if you want to be prompted for your password each time this account is connected.">
+
+<!ENTITY accountAdvancedTitle.label   "Advanced Options">
+<!ENTITY accountAdvancedInfo.label    "Feel free to skip this step if you want to.">
+<!ENTITY accountAdvanced.newMailNotification.label   "Notify on new Mail">
+<!ENTITY accountAliasGroupbox.caption "Local Alias">
+<!ENTITY accountAliasField.label      "Alias:">
+<!ENTITY accountAliasInfo.label       "This will only be displayed in your conversations when you talk, remote contacts won't see it.">
+<!ENTITY accountProxySettings.caption "Proxy Settings">
+<!ENTITY accountProxySettings.change.label     "Change…">
+<!ENTITY accountProxySettings.change.accessKey "C">
+
+<!ENTITY accountSummaryTitle.label   "Summary">
+<!ENTITY accountSummaryInfo.label    "A summary of the information you entered is displayed below. Please check it before the account is created.">
+<!ENTITY accountSummary.connectNow.label "Connect this account now.">
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/imAccounts.properties
@@ -0,0 +1,59 @@
+# LOCALIZATION NOTE (protoOptions):
+# %S is replaced by the name of a protocol
+protoOptions=%S Options
+accountUsername=Username:
+# LOCALIZATION NOTE (accountColon):
+# This string is used to append a colon after the label of each
+# option. It's localizable so that the typography can be adapted.
+accountColon=%S:
+# LOCALIZATION NOTE (accountUsernameInfo):
+# %S is replaced by the name of a protocol
+accountUsernameInfo=Please enter the username for your %S account.
+# LOCALIZATION NOTE (accountUsernameInfoWithDescription):
+# %1$S is a hint for the expected format of the username
+# %2$S is the name of a protocol
+accountUsernameInfoWithDescription=Please enter the username (%1$S) for your %2$S account.
+
+# LOCALIZATION NOTE (account.connection.error):
+# %S is the error message.
+account.connection.error=Error: %S
+# LOCALIZATION NOTE (account.connection.errorUnknownPrpl)
+# %S is the id (not very user friendly; hence the quotes) of the missing plugin.
+account.connection.errorUnknownPrpl=No '%S' protocol plugin.
+account.connection.errorEnteringPasswordRequired=Entering a password is required to connect this account.
+account.connection.errorCrashedAccount=A crash occurred while connecting this account.
+# LOCALIZATION NOTE (account.connection.progress):
+# %S is a message indicating progress of the connection process
+account.connection.progress=Connecting: %S…
+account.connecting=Connecting…
+account.connectedForSeconds=Connected for a few seconds.
+# LOCALIZATION NOTE (account.connectedFor{Double,Single},
+#                    account.reconnectIn{Double,Single}):
+# Each pair of %S is a number followed by a unit. The units are
+# already localized in a downloads.properties file of the toolkit.
+account.connectedForDouble=Connected for %1$S %2$S and %3$S %4$S.
+account.connectedForSingle=Connected for about %1$S %2$S.
+account.reconnectInDouble=Reconnection in %1$S %2$S and %3$S %4$S.
+account.reconnectInSingle=Reconnection in %1$S %2$S.
+
+requestAuthorizeTitle=Authorization request
+# LOCALIZATION NOTE (requestAuthorizeAllow, requestAuthorizeDeny):
+# the & symbol indicates the position of the character that should be
+# used as the accesskey for this button.
+requestAuthorizeAllow=&Allow
+requestAuthorizeDeny=&Deny
+# LOCALIZATION NOTE (requestAuthorizeText):
+# %S is a contact username.
+requestAuthorizeText=%S added you to his/her buddy list, do you want to allow him/her to see you?
+
+accountsManager.notification.button.accessKey=C
+accountsManager.notification.button.label=Connect Now
+accountsManager.notification.userDisabled.label=You have disabled automatic connections.
+accountsManager.notification.safeMode.label=Automatic Connection Settings have been ignored because the application is currently running in Safe-Mode.
+accountsManager.notification.startOffline.label=Automatic Connection Settings have been ignored because the application was started in Offline Mode.
+accountsManager.notification.crash.label=The last run exited unexpectedly while connecting. Automatic Connections have been disabled to give you an opportunity to Edit your Settings.
+# LOCALIZATION NOTE (accountsManager.notification.singleCrash.label): Semi-colon list of plural forms.
+#  See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+#  #1 is the number of accounts that are suspected to have caused a crash.
+accountsManager.notification.singleCrash.label=A previous run exited unexpectedly while connecting a new or edited account. It has not been connected so that you can Edit its Settings.;A previous run exited unexpectedly while connecting #1 new or edited accounts. They have not been connected so that you can Edit their Settings.
+accountsManager.notification.other.label=Automatic connection has been disabled.
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/joinChat.dtd
@@ -0,0 +1,6 @@
+<!ENTITY joinChatWindow.title           "Join chat">
+<!ENTITY name.label                     "Room">
+<!ENTITY optional.label                 "(optional)">
+<!ENTITY account.label                  "Account">
+<!ENTITY autojoin.label                 "Auto-join this Chat Room">
+<!ENTITY autojoin.accesskey             "A">
--- a/mail/chrome/messenger/messenger.dtd
+++ b/mail/chrome/messenger/messenger.dtd
@@ -21,16 +21,18 @@
 <!ENTITY newVirtualFolderCmd.label "Saved Search…">
 <!ENTITY newVirtualFolderCmd.accesskey "S">
 <!ENTITY newOtherAccountsCmd.label "Other Accounts…">
 <!ENTITY newOtherAccountsCmd.accesskey "O">
 <!ENTITY newCreateEmailAccountCmd.label "Get a New Mail Account…">
 <!ENTITY newCreateEmailAccountCmd.accesskey "G">
 <!ENTITY newExistingEmailAccountCmd.label "Existing Mail Account…">
 <!ENTITY newExistingEmailAccountCmd.accesskey "E">
+<!ENTITY newIMAccountCmd.label "Chat Account…">
+<!ENTITY newIMAccountCmd.accesskey "C">
 <!ENTITY openMessageFileCmd.label "Open Saved Message…">
 <!ENTITY openMessageFileCmd.accesskey "O">
 <!ENTITY openAttachmentCmd.label "Attachments">
 <!ENTITY openAttachmentCmd.accesskey "A">
 <!ENTITY saveAsMenu.label "Save As">
 <!ENTITY saveAsMenu.accesskey "S">
 <!ENTITY saveAsFileCmd.label "File">
 <!ENTITY saveAsFileCmd.accesskey "F">
@@ -320,16 +322,19 @@ you can use these alternative items. Oth
 <!ENTITY prevUnreadMsgCmd.accesskey "U">
 <!ENTITY prevUnreadMsgCmd.key "p">
 <!ENTITY goForwardCmd.label "Forward">
 <!ENTITY goForwardCmd.accesskey "F">
 <!ENTITY goForwardCmd.commandKey "]">
 <!ENTITY goBackCmd.label "Back">
 <!ENTITY goBackCmd.accesskey "B">
 <!ENTITY goBackCmd.commandKey "[">
+<!ENTITY goChatCmd.label "Chat">
+<!ENTITY goChatCmd.accesskey "c">
+<!ENTITY goChatCmd.commandKey "C">
 <!ENTITY prevStarredMsgCmd.label "Starred Message">
 <!ENTITY prevStarredMsgCmd.accesskey "S">
 <!ENTITY folderMenu.label "Folder">
 <!ENTITY folderMenu.accesskey "O">
 <!ENTITY thisFolder.label "This Folder">
 <!ENTITY thisFolder.accesskey "F">
 <!ENTITY goRecentlyClosedTabs.label "Recently Closed Tabs">
 <!ENTITY goRecentlyClosedTabs.accesskey "R">
@@ -463,16 +468,22 @@ you can use these alternative items. Oth
 <!ENTITY messengerCmd.accesskey "N">
 <!ENTITY addressBookCmd.label "Address Book">
 <!ENTITY addressBookCmd.accesskey "B">
 <!ENTITY addressBookCmd.key "B">
 <!ENTITY addons.label "Add-ons">
 <!ENTITY addons.accesskey "A">
 <!ENTITY activitymanager.label "Activity Manager">
 <!ENTITY activitymanager.accesskey "v">
+<!ENTITY imAccountsStatus.label "Chat status">
+<!ENTITY imAccountsStatus.accesskey "C">
+<!ENTITY imStatus.available          "Available">
+<!ENTITY imStatus.unavailable        "Unavailable">
+<!ENTITY imStatus.offline            "Offline">
+<!ENTITY imStatus.showAccounts       "Show Accounts…">
 <!ENTITY savedFiles.label "Saved Files">
 <!ENTITY savedFiles.accesskey "l">
 <!ENTITY savedFiles.key "j">
 <!ENTITY filtersCmd.label "Message Filters…">
 <!ENTITY filtersCmd.accesskey "F">
 <!ENTITY filtersApply.label "Run Filters on Folder">
 <!ENTITY filtersApply.accesskey "R">
 <!ENTITY filtersApplyToSelection.label "Run Filters on Selected Messages">
@@ -516,16 +527,17 @@ you can use these alternative items. Oth
 <!ENTITY markButton.label "Mark">
 <!ENTITY printButton.label "Print">
 <!ENTITY stopButton.label "Stop">
 <!ENTITY throbberItem.title "Activity Indicator">
 <!ENTITY junkItem.title "Junk">
 <!ENTITY junkButton.label "Junk">
 <!ENTITY notJunkButton.label "Not Junk">
 <!ENTITY addressBookButton.label "Address Book">
+<!ENTITY chatButton.label "Chat">
 <!ENTITY glodaSearch.title "Global Search">
 <!ENTITY searchItem.title "Quick Search">
 <!ENTITY mailViewsToolbarItem.title "Mail Views">
 <!ENTITY folderLocationToolbarItem.title "Folder Location">
 <!ENTITY tagButton.label "Tag">
 <!ENTITY compactButton.label "Compact">
 
 <!-- Mail Toolbar Tooltips-->
@@ -549,16 +561,17 @@ you can use these alternative items. Oth
 <!ENTITY deleteButton.tooltip "Delete selected message or folder">
 <!ENTITY undeleteButton.tooltip "Undelete selected message">
 <!ENTITY markButton.tooltip "Mark messages">
 <!ENTITY printButton.tooltip "Print this message">
 <!ENTITY stopButton.tooltip "Stop the current transfer">
 <!ENTITY junkButton.tooltip "Mark the selected messages as junk">
 <!ENTITY notJunkButton.tooltip "Mark the selected messages as not junk">
 <!ENTITY addressBookButton.tooltip "Go to the address book">
+<!ENTITY chatButton.tooltip "Show the Chat tab">
 <!ENTITY tagButton.tooltip "Tag messages">
 <!ENTITY compactButton.tooltip "Remove deleted messages from selected folder">
 
 <!-- Tags Menu Popup -->
 <!ENTITY addNewTag.label "New Tag…">
 <!ENTITY addNewTag.accesskey "N">
 
 <!-- Folder Pane -->
new file mode 100644
--- /dev/null
+++ b/mail/chrome/messenger/preferences/chat.dtd
@@ -0,0 +1,20 @@
+<!ENTITY  startupAction.label         "When &brandShortName; starts:">
+<!ENTITY  startupAction.accesskey     "s">
+<!ENTITY  startupOffline.label        "Keep my Chat Accounts offline">
+<!ENTITY  startupConnectAuto.label    "Connect my chat accounts automatically">
+
+<!-- LOCALIZATION NOTE: reportIdleAfter.label is displayed first, then
+there's a field where the user can enter a number, and itemTime is
+displayed at the end of the line. The translations of the
+reportIdleAfter.label and idleTime parts don't have to mean the exact
+same thing as in English; please try instead to translate the whole
+sentence. -->
+<!ENTITY  reportIdleAfter.label         "Let my contacts know that I am Idle after">
+<!ENTITY  reportIdleAfter.accesskey     "I">
+<!ENTITY  idleTime                      "minutes of inactivity">
+
+<!ENTITY  andSetStatusToAway.label      "and set my status to Away with this status message:">
+<!ENTITY  andSetStatusToAway.accesskey  "A">
+
+<!ENTITY  sendTyping.label              "Send typing notifications in conversations">
+<!ENTITY  sendTyping.accesskey          "t">
--- a/mail/chrome/messenger/preferences/preferences.dtd
+++ b/mail/chrome/messenger/preferences/preferences.dtd
@@ -2,11 +2,12 @@
 <!ENTITY  prefWindow.titleGNOME   "&brandShortName; Preferences">
 <!ENTITY  prefWindow.styleWindows "width: 48em; min-height: 38.5em;">
 <!ENTITY  prefWindow.styleMac     "width: 47em;">
 <!ENTITY  prefWindow.styleGNOME   "width: 47em; min-height: 38em;">
 
 <!ENTITY paneGeneral.title        "General">
 <!ENTITY paneDisplay.title        "Display">
 <!ENTITY paneComposition.title    "Composition">
+<!ENTITY paneChat.title           "Chat">
 <!ENTITY paneAttachments.title    "Attachments">
 <!ENTITY paneSecurity.title       "Security">
 <!ENTITY paneAdvanced.title       "Advanced">