###############################################################################
# Copyright (c) 2000, 2014 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
#     Maik Schreiber - bug 102461
#     Philippe Ombredanne - bug 84808
###############################################################################

CVSSSH2ServerConnection_open=Connecting via SSH to {0}...
CVSSSH2PreferencePage_18=Configuration options for SSH2:
CVSSSH2PreferencePage_19=&General
CVSSSH2PreferencePage_2=Up
CVSSSH2PreferencePage_20=&Proxy
CVSSSH2PreferencePage_21=&Key Management
CVSSSH2PreferencePage_23=SSH2 &home:
CVSSSH2PreferencePage_24=&Browse...
CVSSSH2PreferencePage_25=P&rivate keys:
CVSSSH2PreferencePage_26=Add Pr&ivate Key...
CVSSSH2PreferencePage_27=SSH Home:
CVSSSH2PreferencePage_3=Down
CVSSSH2PreferencePage_30=&Enable proxy connection
CVSSSH2PreferencePage_31=Proxy &type:
CVSSSH2PreferencePage_32=Proxy host add&ress:
CVSSSH2PreferencePage_33=Proxy host p&ort:
CVSSSH2PreferencePage_34=E&nable proxy authentication
CVSSSH2PreferencePage_35=Proxy &user name:
CVSSSH2PreferencePage_36=Proxy pa&ssword:
CVSSSH2PreferencePage_39=&You can paste this public key into the remote authorized_keys file:
CVSSSH2PreferencePage_4=Select preferred authentication methods
CVSSSH2PreferencePage_41=&Fingerprint:
CVSSSH2PreferencePage_42=&Comment:
CVSSSH2PreferencePage_43=Passp&hrase:
CVSSSH2PreferencePage_44=C&onfirm passphrase:
CVSSSH2PreferencePage_45=&Save Private Key...
CVSSSH2PreferencePage_47=The key was not generated.
CVSSSH2PreferencePage_48=The passphrases entered do not match.
CVSSSH2PreferencePage_49=Are you sure you want to save this private key without passphrase protection?
CVSSSH2PreferencePage_5=You must select at least one authentication method.
CVSSSH2PreferencePage_50={0} does not exist.\nAre you sure you want to create it?
CVSSSH2PreferencePage_53={0} has already existed.\nAre you sure you want to overwrite it?
CVSSSH2PreferencePage_55=Successfully saved.
CVSSSH2PreferencePage_57=Private key:
CVSSSH2PreferencePage_59=Public key:
CVSSSH2PreferencePage_99={0} does not exist.\nAre you sure you want to create it?
CVSSSH2PreferencePage_100=Failed to create
CVSSSH2PreferencePage_104=Proxy host port must be a number between 0 and 65535.
CVSSSH2PreferencePage_105=E&xport Via SFTP...
CVSSSH2PreferencePage_106=Export SSH Key to Remote Server Via SFTP
CVSSSH2PreferencePage_107=Specify a target site (in user@host[:port] format) where your public key should be installed.\nYour key will be stored in user@host[:port]:~/.ssh/authorized_keys
CVSSSH2PreferencePage_108={0} is not valid site.
CVSSSH2PreferencePage_109=Your public key has been successfully installed to {0}
CVSSSH2PreferencePage_110=Remote sshd is not from OpenSSH.
CVSSSH2PreferencePage_111=Failed to export ssh key to remote server.
CVSSSH2ServerConnection_3=session is down
CVSSSH2ServerConnection_0=An undetermined authentication failure has occurred
CVSSSH2ServerConnection_1=No route to host {0} could be found
CVSSSH2PreferencePage_information=Information
CVSSSH2PreferencePage_error=Error
CVSSSH2PreferencePage_confirmation=Confirmation
CVSSSH2PreferencePage_question=Question
CVSSSH2PreferencePage_125=Target site:
CVSSSH2PreferencePage_126=Enter passphrase for {0}
CVSSSH2PreferencePage_127=Passphrase:
CVSSSH2PreferencePage_128=&Load Existing Key...
CVSSSH2PreferencePage_129=failed to decrypt {0}
CVSSSH2PreferencePage_130=failed to load given file.
CVSSSH2PreferencePage_131=G&enerate DSA Key...
CVSSSH2PreferencePage_132=Ge&nerate RSA Key...
CVSSSH2PreferencePage_133=Kno&wn Hosts
CVSSSH2PreferencePage_134=Hostname
CVSSSH2PreferencePage_135=Type
CVSSSH2PreferencePage_136=Fingerprint
CVSSSH2PreferencePage_137=&Authentication Methods
CVSSSH2PreferencePage_138=&Remove
CVSSSH2PreferencePage_139=Keys of known hosts:
CVSSSH2PreferencePage_140=Select preferred key exchange methods
CVSSSH2PreferencePage_141=Select preferred MAC methods
CVSSSH2PreferencePage_142=You must select at least one key exchange method.
CVSSSH2PreferencePage_143=You must select at least one MAC method.
CVSSSH2PreferencePage_144=Key Exchange &Methods
CVSSSH2PreferencePage_145=MA&C Methods
CVSSSH2PreferencePage_146=SSH Agent
CVSSSH2PreferencePage_147=Select preferred SSH Agent
UserInfoPrompter_0=SSH2 Message
UserInfoPrompter_1=SSH2 Message
KeyboardInteractiveDialog_0=Keyboard Interactive authentication for {0}: {1}
KeyboardInteractiveDialog_1=Keyboard Interactive authentication for {0}
KeyboardInteractiveDialog_2=Password Required
KeyboardInteractiveDialog_3=Domain:
KeyboardInteractiveDialog_4=&Save password (could trigger secure storage login)
KeyboardInteractiveDialog_6=&User name:
UserValidationDialog_0=Password Required
UserValidationDialog_1=Domain:
UserValidationDialog_2=&Save password (could trigger secure storage login)
UserValidationDialog_4=&Password:
UserValidationDialog_5=&User name:
PreferencePage_0=SSH2 Service not available
PreferencePage_1=The SSH2 service is not available.

UserValidationDialog_6=&Save password (could trigger secure storage login)
UserValidationDialog_required=Password Required
UserValidationDialog_labelUser={0}
UserValidationDialog_labelPassword={1}
UserValidationDialog_password=&Password:
UserValidationDialog_user=&User name:

KeyboradInteractiveDialog_message=Keyboard Interactive authentication for {0}
KeyboardInteractiveDialog_labelRepository=Enter values for the following repository: {0}

WorkbenchUserAuthenticator_cancelled=Operation canceled because login was canceled
WorkbenchUserAuthenticator_1=Host Key Change
WorkbenchUserAuthenticator_2=The host key for {0} has changed. It is possible that this was intentional but there is also a chance that you are the target of an attack of some kind. If you know that the host key has changed, click OK and existing host key will be purged. Otherwise, click Cancel and consult with your system administrator
WorkbenchUserAuthenticator_The_operation_was_canceled_by_the_user_1=The operation was canceled by the user
