################################################################################
# Copyright (c) 2007 Composent, Inc. and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#    Composent, Inc. - initial API and implementation
################################################################################

XMPPConnectWizardPage_WIZARD_TITLE=XMPP Connection Wizard
XMPPConnectWizardPage_WIZARD_DESCRIPTION=Specify an XMPP account to connect to.
XMPPCompoundContributionItem_CHOOSE_FILE=Choose File For {0}
XMPPConnectWizard_RECEIVE_ERROR_MESSAGE=Error receiving file {0} from {1}.  Error: {2}
XMPPSConnectWizardPage_WIZARD_PAGE_TITLE=XMPPS Connection Wizard
XMPPSConnectWizardPage_WIZARD_PAGE_STATUS=A valid User ID must be specified.
XMPPConnectWizardPage_LABEL_USERID=User ID:
XMPPConnectWizard_FILE_SAVE_TITLE=Save File From {0}
XMPPConnectWizardPage_WIZARD_STATUS=A valid connect ID must be specified.
XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE=The User ID is malformed.
XMPPConnectWizardPage_USERID_TEMPLATE=<user>@<xmppserver>[:port]
XMPPConnectWizardPage_WIZARD_PASSWORD=Password:
XMPPConnectWizardPage_WIZARD_ALT_SERVER=Alternative Server (optional):
XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT=(use 'talk.google.com' if User ID is a Google for Domains account)
XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE=The Alternative Server name is malformed.
XMPPConnectWizard_FILE_RECEIVE_TITLE=File Receive Request From {0}
XMPPConnectWizard_FILE_RECEIVE_MESSAGE=User {0} would like to send you a file called {1}\n\nThe size of the file is {2}\nDescription: {3}\n\nDo you want to receive this file?
XMPPCompoundContributionItem_SEND_FILE=Send File
XMPPConnectWizard_RECEIVE_ERROR_TITLE=Receive Error
XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION=Specify an XMPPS account to connect to.
XMPPCompoundContributionItem_SEND_ERROR_TITLE=Send Error
XMPPCompoundContributionItem_SEND_ERROR_MESSAGE=Error sending file {0}.  Error: {1}
XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE=<user>@<xmppsserver>[:port]
XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD=Password:
XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD=Keystore Passphrase (optional):
XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE=File Send Refused
XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE=Error opening view
XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT=Connect to Account
XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL=Cancel
XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE=You are not currently connected so messages cannot be sent.\n\nDo you want to connect and login to {0}?
XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE=Error opening view: {0}.  See Error Log for Details
XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE=Send of {0} refused by {1}
XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE=Error opening messages view
XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE=Send Message
XMPPHyperlink_SELECT_ACCOUNT_TITLE=Select Account
XMPPHyperlink_SELECT_ACCOUNT_MESSAGE=Select Account to Use
XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE=Select Action
XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE=The target host {0} is not the same as {1}.\n\nDo you want to:\n\n1) Send message to {2} from {3}?\n\n2) Connect and login to account {2}?
XMPPHyperlink_MESSAGING_ERROR_TITLE=Messaging Error
XMPPHyperlink_MESSAGING_ERROR_MESSAGE=You don't want to talk to yourself, do you?
XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE=Connect To Account

XMPPConnectWizard_WIZARD_TITLE=New XMPP Connection
XMPPSConnectWizard_WIZARD_TITLE=New XMPPS Connection
