<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.connectbot"
- android:versionName="1.7-dev"
- android:versionCode="259">
+ android:versionName="1.7.0-rc1"
+ android:versionCode="302"
+ android:installLocation="auto">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
- android:description="@string/app_desc">
+ android:description="@string/app_desc"
+ android:allowBackup="true"
+ android:backupAgent=".service.BackupAgent"
+ android:killAfterRestore="true">
<activity android:name=".HostListActivity" >
<intent-filter>
</application>
- <uses-sdk android:targetSdkVersion="6" android:minSdkVersion="3" />
+ <uses-sdk android:targetSdkVersion="8" android:minSdkVersion="3" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_desc">Simple, powerful, open-source SSH client.</string>
+
+ <!-- Window title for the Host List -->
+ <string name="title_hosts_list">Gashere</string>
+ <!-- Window title for the Pubkeys List -->
+ <string name="title_pubkey_list">Publieke Sleutels</string>
+ <!-- Window title for the Port Forwards List -->
+ <string name="title_port_forwards_list">Poort aansturings</string>
+ <!-- Window title when editing host details -->
+ <string name="title_host_editor">Redigeer Gasheer</string>
+ <!-- Window title for Help index -->
+ <string name="title_help">Hulp</string>
+ <!-- Window title for color list editing screen -->
+ <string name="title_colors">Kleure</string>
+
+ <string name="resolve_connect">Verbind</string>
+ <!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="resolve_entropy">Gather Entropy</string>
+
+ <string name="menu_insert">Voeg Gasheer by</string>
+ <string name="menu_delete">Verwyder Gasheer</string>
+ <string name="menu_preferences">Voorkeure</string>
+
+ <string name="help_intro">Please select a topic below for more information on a particular subject.</string>
+ <string name="help_about">Aangaande ConnectBot</string>
+ <string name="help_keyboard">Sleutelbord</string>
+
+ <string name="pubkey_generate">Genereer</string>
+ <string name="pubkey_import">Voer in</string>
+ <string name="pubkey_delete">Verwyder sleutel</string>
+ <!-- Dialog title when user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="pubkey_gather_entropy">Versamel Ewekansigheid</string>
+ <string name="pubkey_touch_prompt">Raak hierdie boks om ewekansigheid te versamel: %1$d%% voltooi</string>
+ <string name="pubkey_touch_hint">Om ewekansigheid te verseker gedurende die sleutel generering, beweeg u vinger ewekansig oor die boks hieronder.</string>
+ <string name="pubkey_generating">Generating key pair...</string>
+ <string name="pubkey_copy_private">Dupliseer privaat sleutel</string>
+ <string name="pubkey_copy_public">Dupliseer publieke sleutel</string>
+ <!-- Note that the '\n' just splits lines, so it's actually "create or import" -->
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
+ <string name="pubkey_unknown_format">Onbekende formaat</string>
+ <string name="pubkey_change_password">Verander wagwoord</string>
+ <string name="pubkey_list_pick">Kies van /sdcard</string>
+ <string name="pubkey_import_parse_problem">Problem parsing imported private key</string>
+ <string name="pubkey_unlock">Ontsluit sleutel</string>
+ <string name="pubkey_failed_add">Bad password for key \'%1$s\'. Authentication failed.</string>
+ <string name="pubkey_memory_load">Laai na geheue</string>
+ <string name="pubkey_memory_unload">Unload from memory</string>
+ <string name="pubkey_load_on_start">Load key on start</string>
+ <!-- Pubkey preference asking user whether the key use should be confirmed via prompt before it can be used for authentication -->
+ <string name="pubkey_confirm_use">Bevestig voor gebruik</string>
+
+ <!-- Note that the '\n' splits lines, so it's actually "create port forwards" -->
+ <string name="portforward_list_empty">Tap "Menu" to create\nport forwards.</string>
+ <string name="portforward_edit">Redigeer poort aansturing</string>
+ <string name="portforward_delete">Verwyder poort aanstuur</string>
+
+ <string name="prompt_nickname">Bynaam:</string>
+ <!-- An example string that could be used as a nickname for a pubkey. -->
+ <string name="prompt_nickname_hint_pubkey">My work key</string>
+ <!-- The source TCP port for port forwards. -->
+ <string name="prompt_source_port">Oorsprong poort:</string>
+ <!-- The "host:port" combination used for port forward destinations. -->
+ <string name="prompt_destination">Bestemming:</string>
+ <string name="prompt_old_password">Ou wagwoord:</string>
+ <string name="prompt_password">Wagwoord:</string>
+ <!-- Added after a "Password:" prompt to indicate user needs to confirm entry. -->
+ <string name="prompt_again">(again)</string>
+ <!-- Label for the user to select port forward type. -->
+ <string name="prompt_type">Tipe:</string>
+ <string name="prompt_password_can_be_blank">Nota: wagwoord kan leeg gelos word</string>
+ <!-- Prompt for the size of the private key in bits. -->
+ <string name="prompt_bits">Bits:</string>
+
+ <!-- Prompt for the password to unlock a certain pubkey. -->
+ <string name="prompt_pubkey_password">Password for key \'%1$s\'</string>
+
+ <!-- Prompt for whether to allow SSH Authentication Agent to use the specified key. Note that the '\n' means split the line so it's actually "host to use key" -->
+ <string name="prompt_allow_agent_to_use_key">Allow remote host to\nuse key \'%1$s\'?</string>
+
+ <!-- The header of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning_header">WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!</string>
+ <!-- The body of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning">IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that the host key has just been changed.</string>
+
+ <!-- Prompt user gets when the remote host has disconnected unexpectedly. -->
+ <string name="prompt_host_disconnected">Host has disconnected.\nClose session?</string>
+ <!-- Prompt user must answer yes or no to when the remote host fails verification of encryption fingerprint -->
+ <string name="prompt_continue_connecting">Are you sure you want\nto continue connecting?</string>
+
+ <!-- Sent to user when the remote public encryption key fingerprint doesn't match the local database -->
+ <string name="host_authenticity_warning">The authenticity of host \'%1$s\' can\'t be established.</string>
+ <!-- First field is encryption algorithm. Second is the actual fingerprint in hex digits -->
+ <string name="host_fingerprint">Host %1$s key fingerprint is %2$s</string>
+
+ <string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
+ <string name="alert_wrong_password_msg">Wrong password!</string>
+ <string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
+
+ <!-- Add a new item (e.g., host or pubkey) to the list. -->
+ <string name="button_add">Add</string>
+ <!-- Change an existing item's (e.g., host or pubkey) details. -->
+ <string name="button_change">Change</string>
+ <!-- Button that begins the generation of a public key pair. -->
+ <string name="button_generate">Generate Key</string>
+ <!-- Button that resizes the screen to the user-specified dimensions. -->
+ <string name="button_resize">Resize</string>
+
+ <string name="alert_disconnect_msg">Connection Lost</string>
+
+ <string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
+
+ <!-- The category title for terminal emulation preferences. -->
+ <string name="pref_emulation_category">Terminal emulation</string>
+
+ <!-- Name for the emulation terminal type preference. -->
+ <string name="pref_emulation_title">Emulation mode</string>
+ <!-- Description of the emulation terminal type preference. -->
+ <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+
+ <!-- Name for the scrollback size preference -->
+ <string name="pref_scrollback_title">Scrollback size</string>
+ <!-- Description of the scrollback size preference -->
+ <string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
+
+ <!-- The category title for user interface preferences -->
+ <string name="pref_ui_category">User interface</string>
+
+ <!-- Name for the rotation mode preference -->
+ <string name="pref_rotation_title">Rotation mode</string>
+ <!-- Summary for the rotation mode preference -->
+ <string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
+
+ <!-- Name for the full screen preference -->
+ <string name="pref_fullscreen_title">Full screen</string>
+ <!-- Summary for the full screen preference -->
+ <string name="pref_fullscreen_summary">Hide status bar while in console</string>
+
+ <!-- Name for the memorize keys preference -->
+ <string name="pref_memkeys_title">Remember keys in memory</string>
+ <!-- Summary for the memorize keys preference -->
+ <string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
+
+ <!-- Name for the update check preference -->
+ <string name="pref_update_title">Update check</string>
+ <!-- Summary for the update check preference -->
+ <string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
+
+ <!-- Name for the preference that forces the service to stay running in the background.-->
+ <string name="pref_conn_persist_title">Persist connections</string>
+ <!-- Summary for the preference that forces the service to stay running in the background. -->
+ <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+
+ <!-- Name for the keyboard shortcuts preference -->
+ <string name="pref_keymode_title">Directory shortcuts</string>
+ <!-- Summary for the keyboard shortcuts preference -->
+ <string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
+
+ <!-- Name for the camera shortcut usage preference -->
+ <string name="pref_camera_title">Camera shortcut</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
+
+ <!-- Name for the keep screen on preference -->
+ <string name="pref_keepalive_title">Keep screen awake</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
+
+ <!-- Name for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <!-- Summary for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
+
+ <!-- Name for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <!-- Summary for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_summary">Vibrate when sending arrow keys from trackball; useful for laggy connections</string>
+
+ <!-- Category title for the Terminal Bell preferences -->
+ <string name="pref_bell_category">Terminal bell</string>
+
+ <!-- Checkbox preference title for the audible terminal bell feature -->
+ <string name="pref_bell_title">Audible bell</string>
+
+ <!-- Title for the slider preference to set the volume -->
+ <string name="pref_bell_volume_title">Bell volume</string>
+
+ <!-- Checkbox preference title for the vibrate on terminal bell feature -->
+ <string name="pref_bell_vibrate_title">Vibrate on bell</string>
+
+ <!-- Checkbox preference title for the receive notifications on terminal bell feature -->
+ <string name="pref_bell_notification_title">Background notifications</string>
+ <!-- Brief summary of the feature that is enabled when the checkbox preference for the receive notifications on terminal bell feature is checked -->
+ <string name="pref_bell_notification_summary">Send notification when a terminal running in the background sounds a bell.</string>
+
+ <!-- Preference selection to indicate use of right side of keyboard for special shortcuts. -->
+ <string name="list_keymode_right">Use right-side keys</string>
+ <!-- Preference selection to indicate use of left side of keyboard for special shortcuts. -->
+ <string name="list_keymode_left">Use left-side keys</string>
+ <!-- Preference selection to indicate never to use special shortcut keys. -->
+ <string name="list_keymode_none">Disable</string>
+
+ <!-- Preference to not use pubkeys to authenticate to this host. -->
+ <string name="list_pubkeyids_none">Do not use keys</string>
+ <!-- Preference to use any pubkey to authenticate to this host. -->
+ <string name="list_pubkeyids_any">Use any unlocked key</string>
+
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_daily">Daily</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_weekly">Weekly</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_never">Never</string>
+
+ <!-- Host nickname field preference title -->
+ <string name="hostpref_nickname_title">Nickname</string>
+
+ <!-- Host color category preference title -->
+ <string name="hostpref_color_title">Color category</string>
+
+ <!-- Host's default font size when opening the terminal in points (pt) -->
+ <string name="hostpref_fontsize_title">Font size (pt)</string>
+
+ <!-- Host pubkey usage preference title -->
+ <string name="hostpref_pubkeyid_title">Use pubkey authentication</string>
+
+ <!-- Preference title for the SSH Authentication Agent Forwarding for a host connection -->
+ <string name="hostpref_authagent_title">Use SSH auth agent</string>
+
+ <!-- Host post-login automation preference title -->
+ <string name="hostpref_postlogin_title">Post-login automation</string>
+ <!-- Host post-login automation preference summary -->
+ <string name="hostpref_postlogin_summary">Commands to run on remote server once authenticated</string>
+
+ <!-- Host compression preference title -->
+ <string name="hostpref_compression_title">Compression</string>
+ <!-- Summary for compression preference -->
+ <string name="hostpref_compression_summary">This may help with slower networks</string>
+
+ <!-- Setting for whether we want a session to start up when we connect to a host -->
+ <string name="hostpref_wantsession_title">Start shell session</string>
+ <!-- Summary for field asking whether a shell session should be started up upon connection or not -->
+ <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+
+ <!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
+ <string name="hostpref_stayconnected_title">Stay connected</string>
+ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
+ <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+
+ <!-- Setting for what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_title">DEL Key</string>
+ <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+
+ <!-- Host character encoding preference title -->
+ <string name="hostpref_encoding_title">Encoding</string>
+ <!-- Host character encoding preference summary -->
+ <string name="hostpref_encoding_summary">Character encoding for the host</string>
+
+ <!-- Host preference category title for connection settings -->
+ <string name="hostpref_connection_category">Connection settings</string>
+
+ <!-- Username field title for host editor preference -->
+ <string name="hostpref_username_title">Username</string>
+
+ <!-- Hostname field title for host editor preference -->
+ <string name="hostpref_hostname_title">Host</string>
+
+ <!-- Port field title for host editor preference -->
+ <string name="hostpref_port_title">Port</string>
+
+ <!-- Displayed to indicate a host has never been connected to. -->
+ <string name="bind_never">Never connected</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
+ <string name="bind_minutes">%1$s minutes ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
+ <string name="bind_hours">%1$s hours ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
+ <string name="bind_days">%1$s days ago</string>
+
+ <!-- Message given when user copies from the terminal. -->
+ <string name="console_copy_done">Copied %1$d bytes to clipboard</string>
+ <!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
+ <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+
+ <!-- Button to close the disconnected terminal window. -->
+ <string name="console_menu_close">Close</string>
+ <!-- Button to begin copying from the terminal to the clipboard. -->
+ <string name="console_menu_copy">Copy</string>
+ <!-- Button to paste from the clipboard to the terminal. -->
+ <string name="console_menu_paste">Paste</string>
+ <!-- Button that brings user to the Port Forwards List. -->
+ <string name="console_menu_portforwards">Port Forwards</string>
+ <!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
+ <string name="console_menu_resize">Force Size</string>
+ <!-- Button that brings up the list of URLs on the current screen -->
+ <string name="console_menu_urlscan">URL Scan</string>
+
+ <!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
+ <string name="portforward_local">Local</string>
+ <!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
+ <string name="portforward_remote">Remote</string>
+ <!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
+ <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
+ <string name="portforward_pos">Create port forward</string>
+
+ <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
+
+ <string name="portforward_menu_add">Add port forward</string>
+
+ <!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
+ <string name="hint_userhost">user@hostname</string>
+
+ <!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
+ <string name="list_format_error">Use the format "%1$s"</string>
+
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_username">username</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_hostname">hostname</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_port">port</string>
+
+ <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <!-- Selection choice to sort hosts by color. -->
+ <string name="list_menu_sortcolor">Sort by color</string>
+ <!-- Selection choice to sort hosts by nickname. -->
+ <string name="list_menu_sortname">Sort by name</string>
+ <string name="list_menu_settings">Settings</string>
+
+ <string name="list_host_disconnect">Disconnect</string>
+ <string name="list_host_edit">Edit host</string>
+ <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_delete">Delete host</string>
+ <!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
+ <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+
+ <!-- Default screen rotation preference selection -->
+ <string name="list_rotation_default">Default</string>
+ <string name="list_rotation_land">Force landscape</string>
+ <string name="list_rotation_port">Force portrait</string>
+ <!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
+ <string name="list_rotation_auto">Automatic</string>
+
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
+ <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
+ <string name="list_camera_ctrla">Ctrl+A</string>
+ <!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
+ <string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
+ <!-- Selection to indicate pressing the Camera button should send nothing at all. -->
+ <string name="list_camera_none">None</string>
+
+ <!-- Name for the backspace character -->
+ <string name="list_delkey_backspace">Backspace</string>
+ <!-- Name for the ASCII DEL character -->
+ <string name="list_delkey_del">Delete</string>
+
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">Yes, delete</string>
+ <string name="delete_neg">Cancel</string>
+
+ <!-- Button to agree to license terms. -->
+ <string name="wizard_agree">Agree</string>
+ <!-- Button to go to the next page in the first time start-up wizard. -->
+ <string name="wizard_next">Next</string>
+ <!-- Button to go to the previous page in the first time start-up wizard. -->
+ <string name="wizard_back">Back</string>
+
+ <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+
+ <!-- Displayed in terminal when attempting to connect to a host. The first two
+ variables are host:port and the third is the protocol (e.g., SSH) -->
+ <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+
+ <!-- Displays the host key to the user in the terminal -->
+ <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
+ <string name="terminal_failed">Host key verification failed.</string>
+
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+
+ <string name="terminal_auth">Trying to authenticate</string>
+
+ <string name="terminal_auth_pass">Attempting \'password\' authentication</string>
+ <string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
+
+ <string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
+ <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
+ <string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
+
+ <string name="terminal_auth_ki">Attempting \'keyboard-interactive\' authentication</string>
+ <string name="terminal_auth_ki_fail">Authentication method \'keyboard-interactive\' failed</string>
+
+ <string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
+
+ <string name="terminal_no_session">Session will not be started due to host preference.</string>
+ <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+
+ <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+
+ <!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
+ <string name="notification_text">%1$s wants your attention.</string>
+
+ <!-- Dialog title when a new version of ConnectBot is detected. -->
+ <string name="upgrade">New version</string>
+ <!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
+ <string name="upgrade_pos">Yes, upgrade</string>
+ <!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
+ <string name="upgrade_neg">Not right now</string>
+
+ <!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
+ <string name="no">No</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
+ <string name="with_confirmation">With confirmation</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
+ <string name="yes">Yes</string>
+
+ <!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
+ <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+
+ <!-- Menu selection to reset colors to their defaults. -->
+ <string name="menu_colors_reset">Reset</string>
+
+ <!-- Displayed in the notification bar that connections are active -->
+ <string name="app_is_running">ConnectBot is running</string>
+
+ <string name="color_red">red</string>
+ <string name="color_green">green</string>
+ <string name="color_blue">blue</string>
+ <string name="color_gray">gray</string>
+</resources>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_desc">Simple, powerful, open-source SSH client.</string>
+
+ <!-- Window title for the Host List -->
+ <string name="title_hosts_list">Hosts</string>
+ <!-- Window title for the Pubkeys List -->
+ <string name="title_pubkey_list">Pubkeys</string>
+ <!-- Window title for the Port Forwards List -->
+ <string name="title_port_forwards_list">Port forwards</string>
+ <!-- Window title when editing host details -->
+ <string name="title_host_editor">Edit Host</string>
+ <!-- Window title for Help index -->
+ <string name="title_help">Help</string>
+ <!-- Window title for color list editing screen -->
+ <string name="title_colors">Colors</string>
+
+ <string name="resolve_connect">Connect</string>
+ <!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="resolve_entropy">Gather Entropy</string>
+
+ <string name="menu_insert">Add Host</string>
+ <string name="menu_delete">Delete Host</string>
+ <string name="menu_preferences">Preferences</string>
+
+ <string name="help_intro">Please select a topic below for more information on a particular subject.</string>
+ <string name="help_about">About ConnectBot</string>
+ <string name="help_keyboard">Keyboard</string>
+
+ <string name="pubkey_generate">Generate</string>
+ <string name="pubkey_import">Import</string>
+ <string name="pubkey_delete">Delete key</string>
+ <!-- Dialog title when user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="pubkey_gather_entropy">Gathering Entropy</string>
+ <string name="pubkey_touch_prompt">Touch this box to gather randomness: %1$d%% done</string>
+ <string name="pubkey_touch_hint">In order to assure randomness during the key generation, move your finger randomly over the box below.</string>
+ <string name="pubkey_generating">Generating key pair...</string>
+ <string name="pubkey_copy_private">Copy private key</string>
+ <string name="pubkey_copy_public">Copy public key</string>
+ <!-- Note that the '\n' just splits lines, so it's actually "create or import" -->
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
+ <string name="pubkey_unknown_format">Unknown format</string>
+ <string name="pubkey_change_password">Change password</string>
+ <string name="pubkey_list_pick">Pick from /sdcard</string>
+ <string name="pubkey_import_parse_problem">Problem parsing imported private key</string>
+ <string name="pubkey_unlock">Unlock key</string>
+ <string name="pubkey_failed_add">Bad password for key \'%1$s\'. Authentication failed.</string>
+ <string name="pubkey_memory_load">Load into memory</string>
+ <string name="pubkey_memory_unload">Unload from memory</string>
+ <string name="pubkey_load_on_start">Load key on start</string>
+ <!-- Pubkey preference asking user whether the key use should be confirmed via prompt before it can be used for authentication -->
+ <string name="pubkey_confirm_use">Confirm before use</string>
+
+ <!-- Note that the '\n' splits lines, so it's actually "create port forwards" -->
+ <string name="portforward_list_empty">Tap "Menu" to create\nport forwards.</string>
+ <string name="portforward_edit">Edit port forward</string>
+ <string name="portforward_delete">Delete port forward</string>
+
+ <string name="prompt_nickname">Nickname:</string>
+ <!-- An example string that could be used as a nickname for a pubkey. -->
+ <string name="prompt_nickname_hint_pubkey">My work key</string>
+ <!-- The source TCP port for port forwards. -->
+ <string name="prompt_source_port">Source port:</string>
+ <!-- The "host:port" combination used for port forward destinations. -->
+ <string name="prompt_destination">Destination:</string>
+ <string name="prompt_old_password">Old password:</string>
+ <string name="prompt_password">Password:</string>
+ <!-- Added after a "Password:" prompt to indicate user needs to confirm entry. -->
+ <string name="prompt_again">(again)</string>
+ <!-- Label for the user to select port forward type. -->
+ <string name="prompt_type">Type:</string>
+ <string name="prompt_password_can_be_blank">Note: password can be blank</string>
+ <!-- Prompt for the size of the private key in bits. -->
+ <string name="prompt_bits">Bits:</string>
+
+ <!-- Prompt for the password to unlock a certain pubkey. -->
+ <string name="prompt_pubkey_password">Password for key \'%1$s\'</string>
+
+ <!-- Prompt for whether to allow SSH Authentication Agent to use the specified key. Note that the '\n' means split the line so it's actually "host to use key" -->
+ <string name="prompt_allow_agent_to_use_key">Allow remote host to\nuse key \'%1$s\'?</string>
+
+ <!-- The header of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning_header">WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!</string>
+ <!-- The body of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning">IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that the host key has just been changed.</string>
+
+ <!-- Prompt user gets when the remote host has disconnected unexpectedly. -->
+ <string name="prompt_host_disconnected">Host has disconnected.\nClose session?</string>
+ <!-- Prompt user must answer yes or no to when the remote host fails verification of encryption fingerprint -->
+ <string name="prompt_continue_connecting">Are you sure you want\nto continue connecting?</string>
+
+ <!-- Sent to user when the remote public encryption key fingerprint doesn't match the local database -->
+ <string name="host_authenticity_warning">The authenticity of host \'%1$s\' can\'t be established.</string>
+ <!-- First field is encryption algorithm. Second is the actual fingerprint in hex digits -->
+ <string name="host_fingerprint">Host %1$s key fingerprint is %2$s</string>
+
+ <string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
+ <string name="alert_wrong_password_msg">Wrong password!</string>
+ <string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
+
+ <!-- Add a new item (e.g., host or pubkey) to the list. -->
+ <string name="button_add">Add</string>
+ <!-- Change an existing item's (e.g., host or pubkey) details. -->
+ <string name="button_change">Change</string>
+ <!-- Button that begins the generation of a public key pair. -->
+ <string name="button_generate">Generate Key</string>
+ <!-- Button that resizes the screen to the user-specified dimensions. -->
+ <string name="button_resize">Resize</string>
+
+ <string name="alert_disconnect_msg">Connection Lost</string>
+
+ <string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
+
+ <!-- The category title for terminal emulation preferences. -->
+ <string name="pref_emulation_category">Terminal emulation</string>
+
+ <!-- Name for the emulation terminal type preference. -->
+ <string name="pref_emulation_title">Emulation mode</string>
+ <!-- Description of the emulation terminal type preference. -->
+ <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+
+ <!-- Name for the scrollback size preference -->
+ <string name="pref_scrollback_title">Scrollback size</string>
+ <!-- Description of the scrollback size preference -->
+ <string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
+
+ <!-- The category title for user interface preferences -->
+ <string name="pref_ui_category">User interface</string>
+
+ <!-- Name for the rotation mode preference -->
+ <string name="pref_rotation_title">Rotation mode</string>
+ <!-- Summary for the rotation mode preference -->
+ <string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
+
+ <!-- Name for the full screen preference -->
+ <string name="pref_fullscreen_title">Full screen</string>
+ <!-- Summary for the full screen preference -->
+ <string name="pref_fullscreen_summary">Hide status bar while in console</string>
+
+ <!-- Name for the memorize keys preference -->
+ <string name="pref_memkeys_title">Remember keys in memory</string>
+ <!-- Summary for the memorize keys preference -->
+ <string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
+
+ <!-- Name for the update check preference -->
+ <string name="pref_update_title">Update check</string>
+ <!-- Summary for the update check preference -->
+ <string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
+
+ <!-- Name for the preference that forces the service to stay running in the background.-->
+ <string name="pref_conn_persist_title">Persist connections</string>
+ <!-- Summary for the preference that forces the service to stay running in the background. -->
+ <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+
+ <!-- Name for the keyboard shortcuts preference -->
+ <string name="pref_keymode_title">Directory shortcuts</string>
+ <!-- Summary for the keyboard shortcuts preference -->
+ <string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
+
+ <!-- Name for the camera shortcut usage preference -->
+ <string name="pref_camera_title">Camera shortcut</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
+
+ <!-- Name for the keep screen on preference -->
+ <string name="pref_keepalive_title">Keep screen awake</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
+
+ <!-- Name for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <!-- Summary for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
+
+ <!-- Name for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <!-- Summary for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_summary">Vibrate when sending arrow keys from trackball; useful for laggy connections</string>
+
+ <!-- Category title for the Terminal Bell preferences -->
+ <string name="pref_bell_category">Terminal bell</string>
+
+ <!-- Checkbox preference title for the audible terminal bell feature -->
+ <string name="pref_bell_title">Audible bell</string>
+
+ <!-- Title for the slider preference to set the volume -->
+ <string name="pref_bell_volume_title">Bell volume</string>
+
+ <!-- Checkbox preference title for the vibrate on terminal bell feature -->
+ <string name="pref_bell_vibrate_title">Vibrate on bell</string>
+
+ <!-- Checkbox preference title for the receive notifications on terminal bell feature -->
+ <string name="pref_bell_notification_title">Background notifications</string>
+ <!-- Brief summary of the feature that is enabled when the checkbox preference for the receive notifications on terminal bell feature is checked -->
+ <string name="pref_bell_notification_summary">Send notification when a terminal running in the background sounds a bell.</string>
+
+ <!-- Preference selection to indicate use of right side of keyboard for special shortcuts. -->
+ <string name="list_keymode_right">Use right-side keys</string>
+ <!-- Preference selection to indicate use of left side of keyboard for special shortcuts. -->
+ <string name="list_keymode_left">Use left-side keys</string>
+ <!-- Preference selection to indicate never to use special shortcut keys. -->
+ <string name="list_keymode_none">Disable</string>
+
+ <!-- Preference to not use pubkeys to authenticate to this host. -->
+ <string name="list_pubkeyids_none">Do not use keys</string>
+ <!-- Preference to use any pubkey to authenticate to this host. -->
+ <string name="list_pubkeyids_any">Use any unlocked key</string>
+
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_daily">Daily</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_weekly">Weekly</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_never">Never</string>
+
+ <!-- Host nickname field preference title -->
+ <string name="hostpref_nickname_title">Nickname</string>
+
+ <!-- Host color category preference title -->
+ <string name="hostpref_color_title">Color category</string>
+
+ <!-- Host's default font size when opening the terminal in points (pt) -->
+ <string name="hostpref_fontsize_title">Font size (pt)</string>
+
+ <!-- Host pubkey usage preference title -->
+ <string name="hostpref_pubkeyid_title">Use pubkey authentication</string>
+
+ <!-- Preference title for the SSH Authentication Agent Forwarding for a host connection -->
+ <string name="hostpref_authagent_title">Use SSH auth agent</string>
+
+ <!-- Host post-login automation preference title -->
+ <string name="hostpref_postlogin_title">Post-login automation</string>
+ <!-- Host post-login automation preference summary -->
+ <string name="hostpref_postlogin_summary">Commands to run on remote server once authenticated</string>
+
+ <!-- Host compression preference title -->
+ <string name="hostpref_compression_title">Compression</string>
+ <!-- Summary for compression preference -->
+ <string name="hostpref_compression_summary">This may help with slower networks</string>
+
+ <!-- Setting for whether we want a session to start up when we connect to a host -->
+ <string name="hostpref_wantsession_title">Start shell session</string>
+ <!-- Summary for field asking whether a shell session should be started up upon connection or not -->
+ <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+
+ <!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
+ <string name="hostpref_stayconnected_title">Stay connected</string>
+ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
+ <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+
+ <!-- Setting for what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_title">DEL Key</string>
+ <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+
+ <!-- Host character encoding preference title -->
+ <string name="hostpref_encoding_title">Encoding</string>
+ <!-- Host character encoding preference summary -->
+ <string name="hostpref_encoding_summary">Character encoding for the host</string>
+
+ <!-- Host preference category title for connection settings -->
+ <string name="hostpref_connection_category">Connection settings</string>
+
+ <!-- Username field title for host editor preference -->
+ <string name="hostpref_username_title">Username</string>
+
+ <!-- Hostname field title for host editor preference -->
+ <string name="hostpref_hostname_title">Host</string>
+
+ <!-- Port field title for host editor preference -->
+ <string name="hostpref_port_title">Port</string>
+
+ <!-- Displayed to indicate a host has never been connected to. -->
+ <string name="bind_never">Never connected</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
+ <string name="bind_minutes">%1$s minutes ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
+ <string name="bind_hours">%1$s hours ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
+ <string name="bind_days">%1$s days ago</string>
+
+ <!-- Message given when user copies from the terminal. -->
+ <string name="console_copy_done">Copied %1$d bytes to clipboard</string>
+ <!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
+ <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+
+ <!-- Button to close the disconnected terminal window. -->
+ <string name="console_menu_close">Close</string>
+ <!-- Button to begin copying from the terminal to the clipboard. -->
+ <string name="console_menu_copy">Copy</string>
+ <!-- Button to paste from the clipboard to the terminal. -->
+ <string name="console_menu_paste">Paste</string>
+ <!-- Button that brings user to the Port Forwards List. -->
+ <string name="console_menu_portforwards">Port Forwards</string>
+ <!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
+ <string name="console_menu_resize">Force Size</string>
+ <!-- Button that brings up the list of URLs on the current screen -->
+ <string name="console_menu_urlscan">URL Scan</string>
+
+ <!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
+ <string name="portforward_local">Local</string>
+ <!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
+ <string name="portforward_remote">Remote</string>
+ <!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
+ <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
+ <string name="portforward_pos">Create port forward</string>
+
+ <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
+
+ <string name="portforward_menu_add">Add port forward</string>
+
+ <!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
+ <string name="hint_userhost">user@hostname</string>
+
+ <!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
+ <string name="list_format_error">Use the format "%1$s"</string>
+
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_username">username</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_hostname">hostname</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_port">port</string>
+
+ <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <!-- Selection choice to sort hosts by color. -->
+ <string name="list_menu_sortcolor">Sort by color</string>
+ <!-- Selection choice to sort hosts by nickname. -->
+ <string name="list_menu_sortname">Sort by name</string>
+ <string name="list_menu_settings">Settings</string>
+
+ <string name="list_host_disconnect">Disconnect</string>
+ <string name="list_host_edit">Edit host</string>
+ <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_delete">Delete host</string>
+ <!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
+ <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+
+ <!-- Default screen rotation preference selection -->
+ <string name="list_rotation_default">Default</string>
+ <string name="list_rotation_land">Force landscape</string>
+ <string name="list_rotation_port">Force portrait</string>
+ <!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
+ <string name="list_rotation_auto">Automatic</string>
+
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
+ <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
+ <string name="list_camera_ctrla">Ctrl+A</string>
+ <!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
+ <string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
+ <!-- Selection to indicate pressing the Camera button should send nothing at all. -->
+ <string name="list_camera_none">None</string>
+
+ <!-- Name for the backspace character -->
+ <string name="list_delkey_backspace">Backspace</string>
+ <!-- Name for the ASCII DEL character -->
+ <string name="list_delkey_del">Delete</string>
+
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">Yes, delete</string>
+ <string name="delete_neg">Cancel</string>
+
+ <!-- Button to agree to license terms. -->
+ <string name="wizard_agree">Agree</string>
+ <!-- Button to go to the next page in the first time start-up wizard. -->
+ <string name="wizard_next">Next</string>
+ <!-- Button to go to the previous page in the first time start-up wizard. -->
+ <string name="wizard_back">Back</string>
+
+ <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+
+ <!-- Displayed in terminal when attempting to connect to a host. The first two
+ variables are host:port and the third is the protocol (e.g., SSH) -->
+ <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+
+ <!-- Displays the host key to the user in the terminal -->
+ <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
+ <string name="terminal_failed">Host key verification failed.</string>
+
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+
+ <string name="terminal_auth">Trying to authenticate</string>
+
+ <string name="terminal_auth_pass">Attempting \'password\' authentication</string>
+ <string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
+
+ <string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
+ <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
+ <string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
+
+ <string name="terminal_auth_ki">Attempting \'keyboard-interactive\' authentication</string>
+ <string name="terminal_auth_ki_fail">Authentication method \'keyboard-interactive\' failed</string>
+
+ <string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
+
+ <string name="terminal_no_session">Session will not be started due to host preference.</string>
+ <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+
+ <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+
+ <!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
+ <string name="notification_text">%1$s wants your attention.</string>
+
+ <!-- Dialog title when a new version of ConnectBot is detected. -->
+ <string name="upgrade">New version</string>
+ <!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
+ <string name="upgrade_pos">Yes, upgrade</string>
+ <!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
+ <string name="upgrade_neg">Not right now</string>
+
+ <!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
+ <string name="no">No</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
+ <string name="with_confirmation">With confirmation</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
+ <string name="yes">Yes</string>
+
+ <!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
+ <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+
+ <!-- Menu selection to reset colors to their defaults. -->
+ <string name="menu_colors_reset">Reset</string>
+
+ <!-- Displayed in the notification bar that connections are active -->
+ <string name="app_is_running">ConnectBot is running</string>
+
+ <string name="color_red">red</string>
+ <string name="color_green">green</string>
+ <string name="color_blue">blue</string>
+ <string name="color_gray">gray</string>
+</resources>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Res</string>
<string name="resolve_connect">Připojit</string>
<!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
- <string name="resolve_entropy">Gather Entropy</string>
+ <string name="resolve_entropy">Získat entropii</string>
<string name="menu_insert">Přidat hostitele</string>
<string name="menu_delete">Smazat hostitele</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Nic</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Ingen</string>
<string name="menu_colors_reset">Nulstil</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot kører</string>
<string name="color_red">rød</string>
<string name="color_green">grøn</string>
<string name="list_camera_ctrla">Strg+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Nichts</string>
<string name="menu_colors_reset">Zurücksetzen</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot läuft</string>
<string name="color_red">rot</string>
<string name="color_green">grün</string>
<string name="pref_wifilock_summary">Prevenir que la red inálambrica se apague mientras haya una conexión activa</string>
<!-- Name for the haptic feedback (bumpy arrow) preference -->
- <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <string name="pref_bumpyarrows_title">Cursor con vibración</string>
<!-- Summary for the haptic feedback (bumpy arrow) preference -->
<string name="pref_bumpyarrows_summary">Vibrar al recibir las teclas del cursor desde el trackball; útil para conexiones con retardos</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Ninguno</string>
<string name="menu_colors_reset">Restablecer</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot está ejecutándose</string>
<string name="color_red">rojo</string>
<string name="color_green">verde</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Echap</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">aucun</string>
<string name="menu_colors_reset">Réinitialiser</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot est en cours</string>
<string name="color_red">rouge</string>
<string name="color_green">vert</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Semmit</string>
<string name="menu_colors_reset">Visszaállít</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot már fut</string>
<string name="color_red">piros</string>
<string name="color_green">zöld</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Kosong</string>
<string name="hostpref_color_title">Categoria colore</string>
<!-- Host's default font size when opening the terminal in points (pt) -->
- <string name="hostpref_fontsize_title">Font size (pt)</string>
+ <string name="hostpref_fontsize_title">Dimensione caratteri (pt)</string>
<!-- Host pubkey usage preference title -->
<string name="hostpref_pubkeyid_title">Usa autenticazione a chiave pubblica</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Niente</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">なし</string>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_desc">간단하고, 강력한, 오픈소스 SSH 클라이언트.</string>
+
+ <!-- Window title for the Host List -->
+ <string name="title_hosts_list">호스트</string>
+ <!-- Window title for the Pubkeys List -->
+ <string name="title_pubkey_list">공개키</string>
+ <!-- Window title for the Port Forwards List -->
+ <string name="title_port_forwards_list">포트 포워딩 목록</string>
+ <!-- Window title when editing host details -->
+ <string name="title_host_editor">호스트 편집</string>
+ <!-- Window title for Help index -->
+ <string name="title_help">도움말</string>
+ <!-- Window title for color list editing screen -->
+ <string name="title_colors">색상</string>
+
+ <string name="resolve_connect">접속</string>
+ <!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="resolve_entropy">Gather Entropy</string>
+
+ <string name="menu_insert">Add Host</string>
+ <string name="menu_delete">Delete Host</string>
+ <string name="menu_preferences">Preferences</string>
+
+ <string name="help_intro">Please select a topic below for more information on a particular subject.</string>
+ <string name="help_about">About ConnectBot</string>
+ <string name="help_keyboard">Keyboard</string>
+
+ <string name="pubkey_generate">Generate</string>
+ <string name="pubkey_import">Import</string>
+ <string name="pubkey_delete">Delete key</string>
+ <!-- Dialog title when user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="pubkey_gather_entropy">Gathering Entropy</string>
+ <string name="pubkey_touch_prompt">Touch this box to gather randomness: %1$d%% done</string>
+ <string name="pubkey_touch_hint">In order to assure randomness during the key generation, move your finger randomly over the box below.</string>
+ <string name="pubkey_generating">Generating key pair...</string>
+ <string name="pubkey_copy_private">Copy private key</string>
+ <string name="pubkey_copy_public">Copy public key</string>
+ <!-- Note that the '\n' just splits lines, so it's actually "create or import" -->
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
+ <string name="pubkey_unknown_format">Unknown format</string>
+ <string name="pubkey_change_password">Change password</string>
+ <string name="pubkey_list_pick">Pick from /sdcard</string>
+ <string name="pubkey_import_parse_problem">Problem parsing imported private key</string>
+ <string name="pubkey_unlock">Unlock key</string>
+ <string name="pubkey_failed_add">Bad password for key \'%1$s\'. Authentication failed.</string>
+ <string name="pubkey_memory_load">Load into memory</string>
+ <string name="pubkey_memory_unload">Unload from memory</string>
+ <string name="pubkey_load_on_start">Load key on start</string>
+ <!-- Pubkey preference asking user whether the key use should be confirmed via prompt before it can be used for authentication -->
+ <string name="pubkey_confirm_use">Confirm before use</string>
+
+ <!-- Note that the '\n' splits lines, so it's actually "create port forwards" -->
+ <string name="portforward_list_empty">Tap "Menu" to create\nport forwards.</string>
+ <string name="portforward_edit">Edit port forward</string>
+ <string name="portforward_delete">Delete port forward</string>
+
+ <string name="prompt_nickname">Nickname:</string>
+ <!-- An example string that could be used as a nickname for a pubkey. -->
+ <string name="prompt_nickname_hint_pubkey">My work key</string>
+ <!-- The source TCP port for port forwards. -->
+ <string name="prompt_source_port">Source port:</string>
+ <!-- The "host:port" combination used for port forward destinations. -->
+ <string name="prompt_destination">Destination:</string>
+ <string name="prompt_old_password">Old password:</string>
+ <string name="prompt_password">Password:</string>
+ <!-- Added after a "Password:" prompt to indicate user needs to confirm entry. -->
+ <string name="prompt_again">(again)</string>
+ <!-- Label for the user to select port forward type. -->
+ <string name="prompt_type">Type:</string>
+ <string name="prompt_password_can_be_blank">Note: password can be blank</string>
+ <!-- Prompt for the size of the private key in bits. -->
+ <string name="prompt_bits">Bits:</string>
+
+ <!-- Prompt for the password to unlock a certain pubkey. -->
+ <string name="prompt_pubkey_password">Password for key \'%1$s\'</string>
+
+ <!-- Prompt for whether to allow SSH Authentication Agent to use the specified key. Note that the '\n' means split the line so it's actually "host to use key" -->
+ <string name="prompt_allow_agent_to_use_key">Allow remote host to\nuse key \'%1$s\'?</string>
+
+ <!-- The header of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning_header">WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!</string>
+ <!-- The body of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning">IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that the host key has just been changed.</string>
+
+ <!-- Prompt user gets when the remote host has disconnected unexpectedly. -->
+ <string name="prompt_host_disconnected">Host has disconnected.\nClose session?</string>
+ <!-- Prompt user must answer yes or no to when the remote host fails verification of encryption fingerprint -->
+ <string name="prompt_continue_connecting">Are you sure you want\nto continue connecting?</string>
+
+ <!-- Sent to user when the remote public encryption key fingerprint doesn't match the local database -->
+ <string name="host_authenticity_warning">The authenticity of host \'%1$s\' can\'t be established.</string>
+ <!-- First field is encryption algorithm. Second is the actual fingerprint in hex digits -->
+ <string name="host_fingerprint">Host %1$s key fingerprint is %2$s</string>
+
+ <string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
+ <string name="alert_wrong_password_msg">Wrong password!</string>
+ <string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
+
+ <!-- Add a new item (e.g., host or pubkey) to the list. -->
+ <string name="button_add">Add</string>
+ <!-- Change an existing item's (e.g., host or pubkey) details. -->
+ <string name="button_change">Change</string>
+ <!-- Button that begins the generation of a public key pair. -->
+ <string name="button_generate">Generate Key</string>
+ <!-- Button that resizes the screen to the user-specified dimensions. -->
+ <string name="button_resize">Resize</string>
+
+ <string name="alert_disconnect_msg">Connection Lost</string>
+
+ <string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
+
+ <!-- The category title for terminal emulation preferences. -->
+ <string name="pref_emulation_category">Terminal emulation</string>
+
+ <!-- Name for the emulation terminal type preference. -->
+ <string name="pref_emulation_title">Emulation mode</string>
+ <!-- Description of the emulation terminal type preference. -->
+ <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+
+ <!-- Name for the scrollback size preference -->
+ <string name="pref_scrollback_title">Scrollback size</string>
+ <!-- Description of the scrollback size preference -->
+ <string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
+
+ <!-- The category title for user interface preferences -->
+ <string name="pref_ui_category">User interface</string>
+
+ <!-- Name for the rotation mode preference -->
+ <string name="pref_rotation_title">Rotation mode</string>
+ <!-- Summary for the rotation mode preference -->
+ <string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
+
+ <!-- Name for the full screen preference -->
+ <string name="pref_fullscreen_title">Full screen</string>
+ <!-- Summary for the full screen preference -->
+ <string name="pref_fullscreen_summary">Hide status bar while in console</string>
+
+ <!-- Name for the memorize keys preference -->
+ <string name="pref_memkeys_title">Remember keys in memory</string>
+ <!-- Summary for the memorize keys preference -->
+ <string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
+
+ <!-- Name for the update check preference -->
+ <string name="pref_update_title">Update check</string>
+ <!-- Summary for the update check preference -->
+ <string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
+
+ <!-- Name for the preference that forces the service to stay running in the background.-->
+ <string name="pref_conn_persist_title">Persist connections</string>
+ <!-- Summary for the preference that forces the service to stay running in the background. -->
+ <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+
+ <!-- Name for the keyboard shortcuts preference -->
+ <string name="pref_keymode_title">Directory shortcuts</string>
+ <!-- Summary for the keyboard shortcuts preference -->
+ <string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
+
+ <!-- Name for the camera shortcut usage preference -->
+ <string name="pref_camera_title">Camera shortcut</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
+
+ <!-- Name for the keep screen on preference -->
+ <string name="pref_keepalive_title">Keep screen awake</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
+
+ <!-- Name for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <!-- Summary for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
+
+ <!-- Name for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <!-- Summary for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_summary">Vibrate when sending arrow keys from trackball; useful for laggy connections</string>
+
+ <!-- Category title for the Terminal Bell preferences -->
+ <string name="pref_bell_category">Terminal bell</string>
+
+ <!-- Checkbox preference title for the audible terminal bell feature -->
+ <string name="pref_bell_title">Audible bell</string>
+
+ <!-- Title for the slider preference to set the volume -->
+ <string name="pref_bell_volume_title">Bell volume</string>
+
+ <!-- Checkbox preference title for the vibrate on terminal bell feature -->
+ <string name="pref_bell_vibrate_title">Vibrate on bell</string>
+
+ <!-- Checkbox preference title for the receive notifications on terminal bell feature -->
+ <string name="pref_bell_notification_title">Background notifications</string>
+ <!-- Brief summary of the feature that is enabled when the checkbox preference for the receive notifications on terminal bell feature is checked -->
+ <string name="pref_bell_notification_summary">Send notification when a terminal running in the background sounds a bell.</string>
+
+ <!-- Preference selection to indicate use of right side of keyboard for special shortcuts. -->
+ <string name="list_keymode_right">Use right-side keys</string>
+ <!-- Preference selection to indicate use of left side of keyboard for special shortcuts. -->
+ <string name="list_keymode_left">Use left-side keys</string>
+ <!-- Preference selection to indicate never to use special shortcut keys. -->
+ <string name="list_keymode_none">Disable</string>
+
+ <!-- Preference to not use pubkeys to authenticate to this host. -->
+ <string name="list_pubkeyids_none">Do not use keys</string>
+ <!-- Preference to use any pubkey to authenticate to this host. -->
+ <string name="list_pubkeyids_any">Use any unlocked key</string>
+
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_daily">Daily</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_weekly">Weekly</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_never">Never</string>
+
+ <!-- Host nickname field preference title -->
+ <string name="hostpref_nickname_title">Nickname</string>
+
+ <!-- Host color category preference title -->
+ <string name="hostpref_color_title">Color category</string>
+
+ <!-- Host's default font size when opening the terminal in points (pt) -->
+ <string name="hostpref_fontsize_title">Font size (pt)</string>
+
+ <!-- Host pubkey usage preference title -->
+ <string name="hostpref_pubkeyid_title">Use pubkey authentication</string>
+
+ <!-- Preference title for the SSH Authentication Agent Forwarding for a host connection -->
+ <string name="hostpref_authagent_title">Use SSH auth agent</string>
+
+ <!-- Host post-login automation preference title -->
+ <string name="hostpref_postlogin_title">Post-login automation</string>
+ <!-- Host post-login automation preference summary -->
+ <string name="hostpref_postlogin_summary">Commands to run on remote server once authenticated</string>
+
+ <!-- Host compression preference title -->
+ <string name="hostpref_compression_title">Compression</string>
+ <!-- Summary for compression preference -->
+ <string name="hostpref_compression_summary">This may help with slower networks</string>
+
+ <!-- Setting for whether we want a session to start up when we connect to a host -->
+ <string name="hostpref_wantsession_title">Start shell session</string>
+ <!-- Summary for field asking whether a shell session should be started up upon connection or not -->
+ <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+
+ <!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
+ <string name="hostpref_stayconnected_title">Stay connected</string>
+ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
+ <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+
+ <!-- Setting for what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_title">DEL Key</string>
+ <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+
+ <!-- Host character encoding preference title -->
+ <string name="hostpref_encoding_title">Encoding</string>
+ <!-- Host character encoding preference summary -->
+ <string name="hostpref_encoding_summary">Character encoding for the host</string>
+
+ <!-- Host preference category title for connection settings -->
+ <string name="hostpref_connection_category">Connection settings</string>
+
+ <!-- Username field title for host editor preference -->
+ <string name="hostpref_username_title">Username</string>
+
+ <!-- Hostname field title for host editor preference -->
+ <string name="hostpref_hostname_title">Host</string>
+
+ <!-- Port field title for host editor preference -->
+ <string name="hostpref_port_title">Port</string>
+
+ <!-- Displayed to indicate a host has never been connected to. -->
+ <string name="bind_never">Never connected</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
+ <string name="bind_minutes">%1$s minutes ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
+ <string name="bind_hours">%1$s hours ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
+ <string name="bind_days">%1$s days ago</string>
+
+ <!-- Message given when user copies from the terminal. -->
+ <string name="console_copy_done">Copied %1$d bytes to clipboard</string>
+ <!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
+ <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+
+ <!-- Button to close the disconnected terminal window. -->
+ <string name="console_menu_close">Close</string>
+ <!-- Button to begin copying from the terminal to the clipboard. -->
+ <string name="console_menu_copy">Copy</string>
+ <!-- Button to paste from the clipboard to the terminal. -->
+ <string name="console_menu_paste">Paste</string>
+ <!-- Button that brings user to the Port Forwards List. -->
+ <string name="console_menu_portforwards">Port Forwards</string>
+ <!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
+ <string name="console_menu_resize">Force Size</string>
+ <!-- Button that brings up the list of URLs on the current screen -->
+ <string name="console_menu_urlscan">URL Scan</string>
+
+ <!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
+ <string name="portforward_local">Local</string>
+ <!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
+ <string name="portforward_remote">Remote</string>
+ <!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
+ <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
+ <string name="portforward_pos">Create port forward</string>
+
+ <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
+
+ <string name="portforward_menu_add">Add port forward</string>
+
+ <!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
+ <string name="hint_userhost">user@hostname</string>
+
+ <!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
+ <string name="list_format_error">Use the format "%1$s"</string>
+
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_username">username</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_hostname">hostname</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_port">port</string>
+
+ <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <!-- Selection choice to sort hosts by color. -->
+ <string name="list_menu_sortcolor">Sort by color</string>
+ <!-- Selection choice to sort hosts by nickname. -->
+ <string name="list_menu_sortname">Sort by name</string>
+ <string name="list_menu_settings">Settings</string>
+
+ <string name="list_host_disconnect">Disconnect</string>
+ <string name="list_host_edit">Edit host</string>
+ <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_delete">Delete host</string>
+ <!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
+ <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+
+ <!-- Default screen rotation preference selection -->
+ <string name="list_rotation_default">Default</string>
+ <string name="list_rotation_land">Force landscape</string>
+ <string name="list_rotation_port">Force portrait</string>
+ <!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
+ <string name="list_rotation_auto">Automatic</string>
+
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
+ <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
+ <string name="list_camera_ctrla">Ctrl+A</string>
+ <!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
+ <string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
+ <!-- Selection to indicate pressing the Camera button should send nothing at all. -->
+ <string name="list_camera_none">None</string>
+
+ <!-- Name for the backspace character -->
+ <string name="list_delkey_backspace">Backspace</string>
+ <!-- Name for the ASCII DEL character -->
+ <string name="list_delkey_del">Delete</string>
+
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">Yes, delete</string>
+ <string name="delete_neg">Cancel</string>
+
+ <!-- Button to agree to license terms. -->
+ <string name="wizard_agree">Agree</string>
+ <!-- Button to go to the next page in the first time start-up wizard. -->
+ <string name="wizard_next">Next</string>
+ <!-- Button to go to the previous page in the first time start-up wizard. -->
+ <string name="wizard_back">Back</string>
+
+ <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+
+ <!-- Displayed in terminal when attempting to connect to a host. The first two
+ variables are host:port and the third is the protocol (e.g., SSH) -->
+ <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+
+ <!-- Displays the host key to the user in the terminal -->
+ <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
+ <string name="terminal_failed">Host key verification failed.</string>
+
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+
+ <string name="terminal_auth">Trying to authenticate</string>
+
+ <string name="terminal_auth_pass">Attempting \'password\' authentication</string>
+ <string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
+
+ <string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
+ <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
+ <string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
+
+ <string name="terminal_auth_ki">Attempting \'keyboard-interactive\' authentication</string>
+ <string name="terminal_auth_ki_fail">Authentication method \'keyboard-interactive\' failed</string>
+
+ <string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
+
+ <string name="terminal_no_session">Session will not be started due to host preference.</string>
+ <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+
+ <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+
+ <!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
+ <string name="notification_text">%1$s wants your attention.</string>
+
+ <!-- Dialog title when a new version of ConnectBot is detected. -->
+ <string name="upgrade">New version</string>
+ <!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
+ <string name="upgrade_pos">Yes, upgrade</string>
+ <!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
+ <string name="upgrade_neg">Not right now</string>
+
+ <!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
+ <string name="no">No</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
+ <string name="with_confirmation">With confirmation</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
+ <string name="yes">Yes</string>
+
+ <!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
+ <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+
+ <!-- Menu selection to reset colors to their defaults. -->
+ <string name="menu_colors_reset">Reset</string>
+
+ <!-- Displayed in the notification bar that connections are active -->
+ <string name="app_is_running">ConnectBot is running</string>
+
+ <string name="color_red">red</string>
+ <string name="color_green">green</string>
+ <string name="color_blue">blue</string>
+ <string name="color_gray">gray</string>
+</resources>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Ingen</string>
<string name="pref_update_summary">Stel de maximale frequentie in om te controleren voor ConnectBot updates</string>
<!-- Name for the preference that forces the service to stay running in the background.-->
- <string name="pref_conn_persist_title">Persist connections</string>
+ <string name="pref_conn_persist_title">Behoud verbindingen</string>
<!-- Summary for the preference that forces the service to stay running in the background. -->
- <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+ <string name="pref_conn_persist_summary">Forceer dat de verbindingen actief blijven op de achtergrond</string>
<!-- Name for the keyboard shortcuts preference -->
<string name="pref_keymode_title">Folder snelkoppelingen</string>
<string name="hostpref_color_title">Kleur catogorie</string>
<!-- Host's default font size when opening the terminal in points (pt) -->
- <string name="hostpref_fontsize_title">Font size (pt)</string>
+ <string name="hostpref_fontsize_title">Lettergrootte</string>
<!-- Host pubkey usage preference title -->
<string name="hostpref_pubkeyid_title">Gebruik pubkey authenticatie</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Geen</string>
<string name="exceptions_submit_message">Het lijkt erop dat ConnectBot een probleem had de laatste keer dat het gebruikt werd. Wilt u een foutenrapport naar de ConnectBot ontwikkelaars sturen?</string>
<!-- Menu selection to reset colors to their defaults. -->
- <string name="menu_colors_reset">Reset</string>
+ <string name="menu_colors_reset">Terug naar standaardinstellingen</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot werkt (Connecties zijn actief)</string>
<string name="color_red">rood</string>
<string name="color_green">groen</string>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_desc">Un client SSH simple, open-source e poderós.</string>
+
+ <!-- Window title for the Host List -->
+ <string name="title_hosts_list">Òstes</string>
+ <!-- Window title for the Pubkeys List -->
+ <string name="title_pubkey_list">Claus publicas</string>
+ <!-- Window title for the Port Forwards List -->
+ <string name="title_port_forwards_list">Redireccions de pòrts</string>
+ <!-- Window title when editing host details -->
+ <string name="title_host_editor">Modificar lo servidor</string>
+ <!-- Window title for Help index -->
+ <string name="title_help">Ajuda</string>
+ <!-- Window title for color list editing screen -->
+ <string name="title_colors">Colors</string>
+
+ <string name="resolve_connect">Connexion</string>
+ <!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="resolve_entropy">Generacion d\'aleatòri</string>
+
+ <string name="menu_insert">Apondre un servidor</string>
+ <string name="menu_delete">Supprimir lo servidor</string>
+ <string name="menu_preferences">Preferéncias</string>
+
+ <string name="help_intro">Seleccionatz un subjècte çaijós per mai d\'entresenhas.</string>
+ <string name="help_about">A prepaus de ConnectBot</string>
+ <string name="help_keyboard">Clavièr</string>
+
+ <string name="pubkey_generate">Generar</string>
+ <string name="pubkey_import">Importar</string>
+ <string name="pubkey_delete">Suprimir la clau</string>
+ <!-- Dialog title when user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="pubkey_gather_entropy">Generacion d\'aleatòri</string>
+ <string name="pubkey_touch_prompt">Tocatz aquesta bóstia per recuperar un nombre aleatòri : %1$d%% fach</string>
+ <string name="pubkey_touch_hint">In order to assure randomness during the key generation, move your finger randomly over the box below.</string>
+ <string name="pubkey_generating">Generating key pair...</string>
+ <string name="pubkey_copy_private">Copy private key</string>
+ <string name="pubkey_copy_public">Copy public key</string>
+ <!-- Note that the '\n' just splits lines, so it's actually "create or import" -->
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
+ <string name="pubkey_unknown_format">Unknown format</string>
+ <string name="pubkey_change_password">Modificar lo senhal</string>
+ <string name="pubkey_list_pick">Recuperar dempuèi /sdcard</string>
+ <string name="pubkey_import_parse_problem">Problem parsing imported private key</string>
+ <string name="pubkey_unlock">Unlock key</string>
+ <string name="pubkey_failed_add">Bad password for key \'%1$s\'. Authentication failed.</string>
+ <string name="pubkey_memory_load">Load into memory</string>
+ <string name="pubkey_memory_unload">Unload from memory</string>
+ <string name="pubkey_load_on_start">Load key on start</string>
+ <!-- Pubkey preference asking user whether the key use should be confirmed via prompt before it can be used for authentication -->
+ <string name="pubkey_confirm_use">Confirm before use</string>
+
+ <!-- Note that the '\n' splits lines, so it's actually "create port forwards" -->
+ <string name="portforward_list_empty">Tap "Menu" to create\nport forwards.</string>
+ <string name="portforward_edit">Edit port forward</string>
+ <string name="portforward_delete">Delete port forward</string>
+
+ <string name="prompt_nickname">Escais :</string>
+ <!-- An example string that could be used as a nickname for a pubkey. -->
+ <string name="prompt_nickname_hint_pubkey">My work key</string>
+ <!-- The source TCP port for port forwards. -->
+ <string name="prompt_source_port">Source port:</string>
+ <!-- The "host:port" combination used for port forward destinations. -->
+ <string name="prompt_destination">Destination:</string>
+ <string name="prompt_old_password">Old password:</string>
+ <string name="prompt_password">Senhal :</string>
+ <!-- Added after a "Password:" prompt to indicate user needs to confirm entry. -->
+ <string name="prompt_again">(encara)</string>
+ <!-- Label for the user to select port forward type. -->
+ <string name="prompt_type">Tipe :</string>
+ <string name="prompt_password_can_be_blank">Note: password can be blank</string>
+ <!-- Prompt for the size of the private key in bits. -->
+ <string name="prompt_bits">Bits :</string>
+
+ <!-- Prompt for the password to unlock a certain pubkey. -->
+ <string name="prompt_pubkey_password">Password for key \'%1$s\'</string>
+
+ <!-- Prompt for whether to allow SSH Authentication Agent to use the specified key. Note that the '\n' means split the line so it's actually "host to use key" -->
+ <string name="prompt_allow_agent_to_use_key">Allow remote host to\nuse key \'%1$s\'?</string>
+
+ <!-- The header of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning_header">WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!</string>
+ <!-- The body of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning">IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that the host key has just been changed.</string>
+
+ <!-- Prompt user gets when the remote host has disconnected unexpectedly. -->
+ <string name="prompt_host_disconnected">Host has disconnected.\nClose session?</string>
+ <!-- Prompt user must answer yes or no to when the remote host fails verification of encryption fingerprint -->
+ <string name="prompt_continue_connecting">Are you sure you want\nto continue connecting?</string>
+
+ <!-- Sent to user when the remote public encryption key fingerprint doesn't match the local database -->
+ <string name="host_authenticity_warning">The authenticity of host \'%1$s\' can\'t be established.</string>
+ <!-- First field is encryption algorithm. Second is the actual fingerprint in hex digits -->
+ <string name="host_fingerprint">Host %1$s key fingerprint is %2$s</string>
+
+ <string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
+ <string name="alert_wrong_password_msg">Wrong password!</string>
+ <string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
+
+ <!-- Add a new item (e.g., host or pubkey) to the list. -->
+ <string name="button_add">Add</string>
+ <!-- Change an existing item's (e.g., host or pubkey) details. -->
+ <string name="button_change">Change</string>
+ <!-- Button that begins the generation of a public key pair. -->
+ <string name="button_generate">Generate Key</string>
+ <!-- Button that resizes the screen to the user-specified dimensions. -->
+ <string name="button_resize">Resize</string>
+
+ <string name="alert_disconnect_msg">Connection Lost</string>
+
+ <string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
+
+ <!-- The category title for terminal emulation preferences. -->
+ <string name="pref_emulation_category">Terminal emulation</string>
+
+ <!-- Name for the emulation terminal type preference. -->
+ <string name="pref_emulation_title">Emulation mode</string>
+ <!-- Description of the emulation terminal type preference. -->
+ <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+
+ <!-- Name for the scrollback size preference -->
+ <string name="pref_scrollback_title">Scrollback size</string>
+ <!-- Description of the scrollback size preference -->
+ <string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
+
+ <!-- The category title for user interface preferences -->
+ <string name="pref_ui_category">User interface</string>
+
+ <!-- Name for the rotation mode preference -->
+ <string name="pref_rotation_title">Rotation mode</string>
+ <!-- Summary for the rotation mode preference -->
+ <string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
+
+ <!-- Name for the full screen preference -->
+ <string name="pref_fullscreen_title">Full screen</string>
+ <!-- Summary for the full screen preference -->
+ <string name="pref_fullscreen_summary">Hide status bar while in console</string>
+
+ <!-- Name for the memorize keys preference -->
+ <string name="pref_memkeys_title">Remember keys in memory</string>
+ <!-- Summary for the memorize keys preference -->
+ <string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
+
+ <!-- Name for the update check preference -->
+ <string name="pref_update_title">Update check</string>
+ <!-- Summary for the update check preference -->
+ <string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
+
+ <!-- Name for the preference that forces the service to stay running in the background.-->
+ <string name="pref_conn_persist_title">Persist connections</string>
+ <!-- Summary for the preference that forces the service to stay running in the background. -->
+ <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+
+ <!-- Name for the keyboard shortcuts preference -->
+ <string name="pref_keymode_title">Directory shortcuts</string>
+ <!-- Summary for the keyboard shortcuts preference -->
+ <string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
+
+ <!-- Name for the camera shortcut usage preference -->
+ <string name="pref_camera_title">Camera shortcut</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
+
+ <!-- Name for the keep screen on preference -->
+ <string name="pref_keepalive_title">Keep screen awake</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
+
+ <!-- Name for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <!-- Summary for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
+
+ <!-- Name for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <!-- Summary for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_summary">Vibrate when sending arrow keys from trackball; useful for laggy connections</string>
+
+ <!-- Category title for the Terminal Bell preferences -->
+ <string name="pref_bell_category">Terminal bell</string>
+
+ <!-- Checkbox preference title for the audible terminal bell feature -->
+ <string name="pref_bell_title">Audible bell</string>
+
+ <!-- Title for the slider preference to set the volume -->
+ <string name="pref_bell_volume_title">Bell volume</string>
+
+ <!-- Checkbox preference title for the vibrate on terminal bell feature -->
+ <string name="pref_bell_vibrate_title">Vibrate on bell</string>
+
+ <!-- Checkbox preference title for the receive notifications on terminal bell feature -->
+ <string name="pref_bell_notification_title">Background notifications</string>
+ <!-- Brief summary of the feature that is enabled when the checkbox preference for the receive notifications on terminal bell feature is checked -->
+ <string name="pref_bell_notification_summary">Send notification when a terminal running in the background sounds a bell.</string>
+
+ <!-- Preference selection to indicate use of right side of keyboard for special shortcuts. -->
+ <string name="list_keymode_right">Use right-side keys</string>
+ <!-- Preference selection to indicate use of left side of keyboard for special shortcuts. -->
+ <string name="list_keymode_left">Use left-side keys</string>
+ <!-- Preference selection to indicate never to use special shortcut keys. -->
+ <string name="list_keymode_none">Disable</string>
+
+ <!-- Preference to not use pubkeys to authenticate to this host. -->
+ <string name="list_pubkeyids_none">Do not use keys</string>
+ <!-- Preference to use any pubkey to authenticate to this host. -->
+ <string name="list_pubkeyids_any">Use any unlocked key</string>
+
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_daily">Daily</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_weekly">Weekly</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_never">Never</string>
+
+ <!-- Host nickname field preference title -->
+ <string name="hostpref_nickname_title">Nickname</string>
+
+ <!-- Host color category preference title -->
+ <string name="hostpref_color_title">Color category</string>
+
+ <!-- Host's default font size when opening the terminal in points (pt) -->
+ <string name="hostpref_fontsize_title">Font size (pt)</string>
+
+ <!-- Host pubkey usage preference title -->
+ <string name="hostpref_pubkeyid_title">Use pubkey authentication</string>
+
+ <!-- Preference title for the SSH Authentication Agent Forwarding for a host connection -->
+ <string name="hostpref_authagent_title">Use SSH auth agent</string>
+
+ <!-- Host post-login automation preference title -->
+ <string name="hostpref_postlogin_title">Post-login automation</string>
+ <!-- Host post-login automation preference summary -->
+ <string name="hostpref_postlogin_summary">Commands to run on remote server once authenticated</string>
+
+ <!-- Host compression preference title -->
+ <string name="hostpref_compression_title">Compression</string>
+ <!-- Summary for compression preference -->
+ <string name="hostpref_compression_summary">This may help with slower networks</string>
+
+ <!-- Setting for whether we want a session to start up when we connect to a host -->
+ <string name="hostpref_wantsession_title">Start shell session</string>
+ <!-- Summary for field asking whether a shell session should be started up upon connection or not -->
+ <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+
+ <!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
+ <string name="hostpref_stayconnected_title">Stay connected</string>
+ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
+ <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+
+ <!-- Setting for what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_title">DEL Key</string>
+ <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+
+ <!-- Host character encoding preference title -->
+ <string name="hostpref_encoding_title">Encoding</string>
+ <!-- Host character encoding preference summary -->
+ <string name="hostpref_encoding_summary">Character encoding for the host</string>
+
+ <!-- Host preference category title for connection settings -->
+ <string name="hostpref_connection_category">Connection settings</string>
+
+ <!-- Username field title for host editor preference -->
+ <string name="hostpref_username_title">Username</string>
+
+ <!-- Hostname field title for host editor preference -->
+ <string name="hostpref_hostname_title">Host</string>
+
+ <!-- Port field title for host editor preference -->
+ <string name="hostpref_port_title">Port</string>
+
+ <!-- Displayed to indicate a host has never been connected to. -->
+ <string name="bind_never">Never connected</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
+ <string name="bind_minutes">%1$s minutes ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
+ <string name="bind_hours">%1$s hours ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
+ <string name="bind_days">%1$s days ago</string>
+
+ <!-- Message given when user copies from the terminal. -->
+ <string name="console_copy_done">Copied %1$d bytes to clipboard</string>
+ <!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
+ <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+
+ <!-- Button to close the disconnected terminal window. -->
+ <string name="console_menu_close">Close</string>
+ <!-- Button to begin copying from the terminal to the clipboard. -->
+ <string name="console_menu_copy">Copy</string>
+ <!-- Button to paste from the clipboard to the terminal. -->
+ <string name="console_menu_paste">Paste</string>
+ <!-- Button that brings user to the Port Forwards List. -->
+ <string name="console_menu_portforwards">Port Forwards</string>
+ <!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
+ <string name="console_menu_resize">Force Size</string>
+ <!-- Button that brings up the list of URLs on the current screen -->
+ <string name="console_menu_urlscan">URL Scan</string>
+
+ <!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
+ <string name="portforward_local">Local</string>
+ <!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
+ <string name="portforward_remote">Remote</string>
+ <!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
+ <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
+ <string name="portforward_pos">Create port forward</string>
+
+ <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
+
+ <string name="portforward_menu_add">Add port forward</string>
+
+ <!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
+ <string name="hint_userhost">user@hostname</string>
+
+ <!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
+ <string name="list_format_error">Use the format "%1$s"</string>
+
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_username">username</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_hostname">hostname</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_port">port</string>
+
+ <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <!-- Selection choice to sort hosts by color. -->
+ <string name="list_menu_sortcolor">Sort by color</string>
+ <!-- Selection choice to sort hosts by nickname. -->
+ <string name="list_menu_sortname">Sort by name</string>
+ <string name="list_menu_settings">Settings</string>
+
+ <string name="list_host_disconnect">Disconnect</string>
+ <string name="list_host_edit">Edit host</string>
+ <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_delete">Delete host</string>
+ <!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
+ <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+
+ <!-- Default screen rotation preference selection -->
+ <string name="list_rotation_default">Default</string>
+ <string name="list_rotation_land">Force landscape</string>
+ <string name="list_rotation_port">Force portrait</string>
+ <!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
+ <string name="list_rotation_auto">Automatic</string>
+
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
+ <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
+ <string name="list_camera_ctrla">Ctrl+A</string>
+ <!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
+ <string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
+ <!-- Selection to indicate pressing the Camera button should send nothing at all. -->
+ <string name="list_camera_none">None</string>
+
+ <!-- Name for the backspace character -->
+ <string name="list_delkey_backspace">Backspace</string>
+ <!-- Name for the ASCII DEL character -->
+ <string name="list_delkey_del">Delete</string>
+
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">Yes, delete</string>
+ <string name="delete_neg">Cancel</string>
+
+ <!-- Button to agree to license terms. -->
+ <string name="wizard_agree">Agree</string>
+ <!-- Button to go to the next page in the first time start-up wizard. -->
+ <string name="wizard_next">Next</string>
+ <!-- Button to go to the previous page in the first time start-up wizard. -->
+ <string name="wizard_back">Back</string>
+
+ <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+
+ <!-- Displayed in terminal when attempting to connect to a host. The first two
+ variables are host:port and the third is the protocol (e.g., SSH) -->
+ <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+
+ <!-- Displays the host key to the user in the terminal -->
+ <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
+ <string name="terminal_failed">Host key verification failed.</string>
+
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+
+ <string name="terminal_auth">Trying to authenticate</string>
+
+ <string name="terminal_auth_pass">Attempting \'password\' authentication</string>
+ <string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
+
+ <string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
+ <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
+ <string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
+
+ <string name="terminal_auth_ki">Attempting \'keyboard-interactive\' authentication</string>
+ <string name="terminal_auth_ki_fail">Authentication method \'keyboard-interactive\' failed</string>
+
+ <string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
+
+ <string name="terminal_no_session">Session will not be started due to host preference.</string>
+ <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+
+ <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+
+ <!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
+ <string name="notification_text">%1$s wants your attention.</string>
+
+ <!-- Dialog title when a new version of ConnectBot is detected. -->
+ <string name="upgrade">New version</string>
+ <!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
+ <string name="upgrade_pos">Yes, upgrade</string>
+ <!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
+ <string name="upgrade_neg">Not right now</string>
+
+ <!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
+ <string name="no">No</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
+ <string name="with_confirmation">With confirmation</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
+ <string name="yes">Yes</string>
+
+ <!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
+ <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+
+ <!-- Menu selection to reset colors to their defaults. -->
+ <string name="menu_colors_reset">Reset</string>
+
+ <!-- Displayed in the notification bar that connections are active -->
+ <string name="app_is_running">ConnectBot is running</string>
+
+ <string name="color_red">red</string>
+ <string name="color_green">green</string>
+ <string name="color_blue">blue</string>
+ <string name="color_gray">gray</string>
+</resources>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Żaden</string>
<string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
<!-- The category title for terminal emulation preferences. -->
- <string name="pref_emulation_category">Terminal emulation</string>
+ <string name="pref_emulation_category">Emulação de Terminal</string>
<!-- Name for the emulation terminal type preference. -->
- <string name="pref_emulation_title">Emulation mode</string>
+ <string name="pref_emulation_title">Modo De Emulação</string>
<!-- Description of the emulation terminal type preference. -->
- <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+ <string name="pref_emulation_summary">Modo de emulação de terminal para usar em conexões PTY</string>
<!-- Name for the scrollback size preference -->
<string name="pref_scrollback_title">Scrollback size</string>
<string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
<!-- The category title for user interface preferences -->
- <string name="pref_ui_category">User interface</string>
+ <string name="pref_ui_category">Interface do usuário</string>
<!-- Name for the rotation mode preference -->
- <string name="pref_rotation_title">Rotation mode</string>
+ <string name="pref_rotation_title">Modo de Rotação</string>
<!-- Summary for the rotation mode preference -->
<string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
<!-- Name for the full screen preference -->
- <string name="pref_fullscreen_title">Full screen</string>
+ <string name="pref_fullscreen_title">Tela cheia</string>
<!-- Summary for the full screen preference -->
<string name="pref_fullscreen_summary">Hide status bar while in console</string>
<!-- Name for the memorize keys preference -->
- <string name="pref_memkeys_title">Remember keys in memory</string>
+ <string name="pref_memkeys_title">Lembrar as chaves na memória</string>
<!-- Summary for the memorize keys preference -->
<string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
<!-- Name for the update check preference -->
- <string name="pref_update_title">Update check</string>
+ <string name="pref_update_title">Verificar Atualização</string>
<!-- Summary for the update check preference -->
<string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
<!-- Name for the preference that forces the service to stay running in the background.-->
<string name="pref_conn_persist_title">Persist connections</string>
<!-- Summary for the preference that forces the service to stay running in the background. -->
- <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+ <string name="pref_conn_persist_summary">Força as conexões para ficarem conectadas enquanto estão em segundo plano</string>
<!-- Name for the keyboard shortcuts preference -->
- <string name="pref_keymode_title">Directory shortcuts</string>
+ <string name="pref_keymode_title">Atalhos dos Diretórios</string>
<!-- Summary for the keyboard shortcuts preference -->
<string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
<!-- Name for the camera shortcut usage preference -->
- <string name="pref_camera_title">Camera shortcut</string>
+ <string name="pref_camera_title">Atalho para Câmera</string>
<!-- Summary for the camera shortcut usage preference -->
<string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
<!-- Name for the keep screen on preference -->
- <string name="pref_keepalive_title">Keep screen awake</string>
+ <string name="pref_keepalive_title">Manter a tela ativa</string>
<!-- Summary for the camera shortcut usage preference -->
<string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
<!-- Name for the Wi-Fi lock preference -->
- <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <string name="pref_wifilock_title">Manter WI-FI ativo</string>
<!-- Summary for the Wi-Fi lock preference -->
<string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Нет</string>
<string name="menu_colors_reset">Сбросить</string>
<!-- Displayed in the notification bar that connections are active -->
- <string name="app_is_running">ConnectBot is running</string>
+ <string name="app_is_running">ConnectBot запущен</string>
<string name="color_red">красный</string>
<string name="color_green">зелёный</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Žiadny</string>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_desc">Enostaven, močan, odprtokodni SSH odjemalec</string>
+
+ <!-- Window title for the Host List -->
+ <string name="title_hosts_list">Gostitelji</string>
+ <!-- Window title for the Pubkeys List -->
+ <string name="title_pubkey_list">Pubkeys</string>
+ <!-- Window title for the Port Forwards List -->
+ <string name="title_port_forwards_list">Port forwards</string>
+ <!-- Window title when editing host details -->
+ <string name="title_host_editor">Uredi gostitelja</string>
+ <!-- Window title for Help index -->
+ <string name="title_help">Pomoč</string>
+ <!-- Window title for color list editing screen -->
+ <string name="title_colors">Barve</string>
+
+ <string name="resolve_connect">Poveži</string>
+ <!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="resolve_entropy">Gather Entropy</string>
+
+ <string name="menu_insert">Dodaj gostitelja</string>
+ <string name="menu_delete">Odstrani gostitelja</string>
+ <string name="menu_preferences">Možnosti</string>
+
+ <string name="help_intro">Please select a topic below for more information on a particular subject.</string>
+ <string name="help_about">Vizitka</string>
+ <string name="help_keyboard">Tipkovnica</string>
+
+ <string name="pubkey_generate">Generate</string>
+ <string name="pubkey_import">Uvozi javni ključ</string>
+ <string name="pubkey_delete">Zbriši ključ</string>
+ <!-- Dialog title when user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="pubkey_gather_entropy">Pridobivanje entropije</string>
+ <string name="pubkey_touch_prompt">Touch this box to gather randomness: %1$d%% done</string>
+ <string name="pubkey_touch_hint">In order to assure randomness during the key generation, move your finger randomly over the box below.</string>
+ <string name="pubkey_generating">Generating key pair...</string>
+ <string name="pubkey_copy_private">Copy private key</string>
+ <string name="pubkey_copy_public">Copy public key</string>
+ <!-- Note that the '\n' just splits lines, so it's actually "create or import" -->
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
+ <string name="pubkey_unknown_format">Unknown format</string>
+ <string name="pubkey_change_password">Change password</string>
+ <string name="pubkey_list_pick">Pick from /sdcard</string>
+ <string name="pubkey_import_parse_problem">Problem parsing imported private key</string>
+ <string name="pubkey_unlock">Unlock key</string>
+ <string name="pubkey_failed_add">Bad password for key \'%1$s\'. Authentication failed.</string>
+ <string name="pubkey_memory_load">Load into memory</string>
+ <string name="pubkey_memory_unload">Unload from memory</string>
+ <string name="pubkey_load_on_start">Load key on start</string>
+ <!-- Pubkey preference asking user whether the key use should be confirmed via prompt before it can be used for authentication -->
+ <string name="pubkey_confirm_use">Confirm before use</string>
+
+ <!-- Note that the '\n' splits lines, so it's actually "create port forwards" -->
+ <string name="portforward_list_empty">Tap "Menu" to create\nport forwards.</string>
+ <string name="portforward_edit">Edit port forward</string>
+ <string name="portforward_delete">Delete port forward</string>
+
+ <string name="prompt_nickname">Nickname:</string>
+ <!-- An example string that could be used as a nickname for a pubkey. -->
+ <string name="prompt_nickname_hint_pubkey">My work key</string>
+ <!-- The source TCP port for port forwards. -->
+ <string name="prompt_source_port">Source port:</string>
+ <!-- The "host:port" combination used for port forward destinations. -->
+ <string name="prompt_destination">Destination:</string>
+ <string name="prompt_old_password">Old password:</string>
+ <string name="prompt_password">Password:</string>
+ <!-- Added after a "Password:" prompt to indicate user needs to confirm entry. -->
+ <string name="prompt_again">(again)</string>
+ <!-- Label for the user to select port forward type. -->
+ <string name="prompt_type">Type:</string>
+ <string name="prompt_password_can_be_blank">Note: password can be blank</string>
+ <!-- Prompt for the size of the private key in bits. -->
+ <string name="prompt_bits">Bits:</string>
+
+ <!-- Prompt for the password to unlock a certain pubkey. -->
+ <string name="prompt_pubkey_password">Password for key \'%1$s\'</string>
+
+ <!-- Prompt for whether to allow SSH Authentication Agent to use the specified key. Note that the '\n' means split the line so it's actually "host to use key" -->
+ <string name="prompt_allow_agent_to_use_key">Allow remote host to\nuse key \'%1$s\'?</string>
+
+ <!-- The header of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning_header">WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!</string>
+ <!-- The body of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning">IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that the host key has just been changed.</string>
+
+ <!-- Prompt user gets when the remote host has disconnected unexpectedly. -->
+ <string name="prompt_host_disconnected">Host has disconnected.\nClose session?</string>
+ <!-- Prompt user must answer yes or no to when the remote host fails verification of encryption fingerprint -->
+ <string name="prompt_continue_connecting">Are you sure you want\nto continue connecting?</string>
+
+ <!-- Sent to user when the remote public encryption key fingerprint doesn't match the local database -->
+ <string name="host_authenticity_warning">The authenticity of host \'%1$s\' can\'t be established.</string>
+ <!-- First field is encryption algorithm. Second is the actual fingerprint in hex digits -->
+ <string name="host_fingerprint">Host %1$s key fingerprint is %2$s</string>
+
+ <string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
+ <string name="alert_wrong_password_msg">Wrong password!</string>
+ <string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
+
+ <!-- Add a new item (e.g., host or pubkey) to the list. -->
+ <string name="button_add">Add</string>
+ <!-- Change an existing item's (e.g., host or pubkey) details. -->
+ <string name="button_change">Change</string>
+ <!-- Button that begins the generation of a public key pair. -->
+ <string name="button_generate">Generate Key</string>
+ <!-- Button that resizes the screen to the user-specified dimensions. -->
+ <string name="button_resize">Resize</string>
+
+ <string name="alert_disconnect_msg">Connection Lost</string>
+
+ <string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
+
+ <!-- The category title for terminal emulation preferences. -->
+ <string name="pref_emulation_category">Terminal emulation</string>
+
+ <!-- Name for the emulation terminal type preference. -->
+ <string name="pref_emulation_title">Emulation mode</string>
+ <!-- Description of the emulation terminal type preference. -->
+ <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+
+ <!-- Name for the scrollback size preference -->
+ <string name="pref_scrollback_title">Scrollback size</string>
+ <!-- Description of the scrollback size preference -->
+ <string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
+
+ <!-- The category title for user interface preferences -->
+ <string name="pref_ui_category">User interface</string>
+
+ <!-- Name for the rotation mode preference -->
+ <string name="pref_rotation_title">Rotation mode</string>
+ <!-- Summary for the rotation mode preference -->
+ <string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
+
+ <!-- Name for the full screen preference -->
+ <string name="pref_fullscreen_title">Full screen</string>
+ <!-- Summary for the full screen preference -->
+ <string name="pref_fullscreen_summary">Hide status bar while in console</string>
+
+ <!-- Name for the memorize keys preference -->
+ <string name="pref_memkeys_title">Remember keys in memory</string>
+ <!-- Summary for the memorize keys preference -->
+ <string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
+
+ <!-- Name for the update check preference -->
+ <string name="pref_update_title">Update check</string>
+ <!-- Summary for the update check preference -->
+ <string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
+
+ <!-- Name for the preference that forces the service to stay running in the background.-->
+ <string name="pref_conn_persist_title">Persist connections</string>
+ <!-- Summary for the preference that forces the service to stay running in the background. -->
+ <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+
+ <!-- Name for the keyboard shortcuts preference -->
+ <string name="pref_keymode_title">Directory shortcuts</string>
+ <!-- Summary for the keyboard shortcuts preference -->
+ <string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
+
+ <!-- Name for the camera shortcut usage preference -->
+ <string name="pref_camera_title">Camera shortcut</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
+
+ <!-- Name for the keep screen on preference -->
+ <string name="pref_keepalive_title">Keep screen awake</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
+
+ <!-- Name for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <!-- Summary for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
+
+ <!-- Name for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <!-- Summary for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_summary">Vibrate when sending arrow keys from trackball; useful for laggy connections</string>
+
+ <!-- Category title for the Terminal Bell preferences -->
+ <string name="pref_bell_category">Terminal bell</string>
+
+ <!-- Checkbox preference title for the audible terminal bell feature -->
+ <string name="pref_bell_title">Audible bell</string>
+
+ <!-- Title for the slider preference to set the volume -->
+ <string name="pref_bell_volume_title">Bell volume</string>
+
+ <!-- Checkbox preference title for the vibrate on terminal bell feature -->
+ <string name="pref_bell_vibrate_title">Vibrate on bell</string>
+
+ <!-- Checkbox preference title for the receive notifications on terminal bell feature -->
+ <string name="pref_bell_notification_title">Background notifications</string>
+ <!-- Brief summary of the feature that is enabled when the checkbox preference for the receive notifications on terminal bell feature is checked -->
+ <string name="pref_bell_notification_summary">Send notification when a terminal running in the background sounds a bell.</string>
+
+ <!-- Preference selection to indicate use of right side of keyboard for special shortcuts. -->
+ <string name="list_keymode_right">Use right-side keys</string>
+ <!-- Preference selection to indicate use of left side of keyboard for special shortcuts. -->
+ <string name="list_keymode_left">Use left-side keys</string>
+ <!-- Preference selection to indicate never to use special shortcut keys. -->
+ <string name="list_keymode_none">Disable</string>
+
+ <!-- Preference to not use pubkeys to authenticate to this host. -->
+ <string name="list_pubkeyids_none">Do not use keys</string>
+ <!-- Preference to use any pubkey to authenticate to this host. -->
+ <string name="list_pubkeyids_any">Use any unlocked key</string>
+
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_daily">Daily</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_weekly">Weekly</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_never">Never</string>
+
+ <!-- Host nickname field preference title -->
+ <string name="hostpref_nickname_title">Nickname</string>
+
+ <!-- Host color category preference title -->
+ <string name="hostpref_color_title">Color category</string>
+
+ <!-- Host's default font size when opening the terminal in points (pt) -->
+ <string name="hostpref_fontsize_title">Font size (pt)</string>
+
+ <!-- Host pubkey usage preference title -->
+ <string name="hostpref_pubkeyid_title">Use pubkey authentication</string>
+
+ <!-- Preference title for the SSH Authentication Agent Forwarding for a host connection -->
+ <string name="hostpref_authagent_title">Use SSH auth agent</string>
+
+ <!-- Host post-login automation preference title -->
+ <string name="hostpref_postlogin_title">Post-login automation</string>
+ <!-- Host post-login automation preference summary -->
+ <string name="hostpref_postlogin_summary">Commands to run on remote server once authenticated</string>
+
+ <!-- Host compression preference title -->
+ <string name="hostpref_compression_title">Compression</string>
+ <!-- Summary for compression preference -->
+ <string name="hostpref_compression_summary">This may help with slower networks</string>
+
+ <!-- Setting for whether we want a session to start up when we connect to a host -->
+ <string name="hostpref_wantsession_title">Start shell session</string>
+ <!-- Summary for field asking whether a shell session should be started up upon connection or not -->
+ <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+
+ <!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
+ <string name="hostpref_stayconnected_title">Stay connected</string>
+ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
+ <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+
+ <!-- Setting for what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_title">DEL Key</string>
+ <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+
+ <!-- Host character encoding preference title -->
+ <string name="hostpref_encoding_title">Encoding</string>
+ <!-- Host character encoding preference summary -->
+ <string name="hostpref_encoding_summary">Character encoding for the host</string>
+
+ <!-- Host preference category title for connection settings -->
+ <string name="hostpref_connection_category">Connection settings</string>
+
+ <!-- Username field title for host editor preference -->
+ <string name="hostpref_username_title">Username</string>
+
+ <!-- Hostname field title for host editor preference -->
+ <string name="hostpref_hostname_title">Host</string>
+
+ <!-- Port field title for host editor preference -->
+ <string name="hostpref_port_title">Port</string>
+
+ <!-- Displayed to indicate a host has never been connected to. -->
+ <string name="bind_never">Never connected</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
+ <string name="bind_minutes">%1$s minutes ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
+ <string name="bind_hours">%1$s hours ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
+ <string name="bind_days">%1$s days ago</string>
+
+ <!-- Message given when user copies from the terminal. -->
+ <string name="console_copy_done">Copied %1$d bytes to clipboard</string>
+ <!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
+ <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+
+ <!-- Button to close the disconnected terminal window. -->
+ <string name="console_menu_close">Close</string>
+ <!-- Button to begin copying from the terminal to the clipboard. -->
+ <string name="console_menu_copy">Copy</string>
+ <!-- Button to paste from the clipboard to the terminal. -->
+ <string name="console_menu_paste">Paste</string>
+ <!-- Button that brings user to the Port Forwards List. -->
+ <string name="console_menu_portforwards">Port Forwards</string>
+ <!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
+ <string name="console_menu_resize">Force Size</string>
+ <!-- Button that brings up the list of URLs on the current screen -->
+ <string name="console_menu_urlscan">URL Scan</string>
+
+ <!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
+ <string name="portforward_local">Local</string>
+ <!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
+ <string name="portforward_remote">Remote</string>
+ <!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
+ <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
+ <string name="portforward_pos">Create port forward</string>
+
+ <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
+
+ <string name="portforward_menu_add">Add port forward</string>
+
+ <!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
+ <string name="hint_userhost">user@hostname</string>
+
+ <!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
+ <string name="list_format_error">Use the format "%1$s"</string>
+
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_username">username</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_hostname">hostname</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_port">port</string>
+
+ <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <!-- Selection choice to sort hosts by color. -->
+ <string name="list_menu_sortcolor">Sort by color</string>
+ <!-- Selection choice to sort hosts by nickname. -->
+ <string name="list_menu_sortname">Sort by name</string>
+ <string name="list_menu_settings">Settings</string>
+
+ <string name="list_host_disconnect">Disconnect</string>
+ <string name="list_host_edit">Edit host</string>
+ <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_delete">Delete host</string>
+ <!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
+ <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+
+ <!-- Default screen rotation preference selection -->
+ <string name="list_rotation_default">Default</string>
+ <string name="list_rotation_land">Force landscape</string>
+ <string name="list_rotation_port">Force portrait</string>
+ <!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
+ <string name="list_rotation_auto">Automatic</string>
+
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
+ <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
+ <string name="list_camera_ctrla">Ctrl+A</string>
+ <!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
+ <string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
+ <!-- Selection to indicate pressing the Camera button should send nothing at all. -->
+ <string name="list_camera_none">None</string>
+
+ <!-- Name for the backspace character -->
+ <string name="list_delkey_backspace">Backspace</string>
+ <!-- Name for the ASCII DEL character -->
+ <string name="list_delkey_del">Delete</string>
+
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">Yes, delete</string>
+ <string name="delete_neg">Cancel</string>
+
+ <!-- Button to agree to license terms. -->
+ <string name="wizard_agree">Agree</string>
+ <!-- Button to go to the next page in the first time start-up wizard. -->
+ <string name="wizard_next">Next</string>
+ <!-- Button to go to the previous page in the first time start-up wizard. -->
+ <string name="wizard_back">Back</string>
+
+ <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+
+ <!-- Displayed in terminal when attempting to connect to a host. The first two
+ variables are host:port and the third is the protocol (e.g., SSH) -->
+ <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+
+ <!-- Displays the host key to the user in the terminal -->
+ <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
+ <string name="terminal_failed">Host key verification failed.</string>
+
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+
+ <string name="terminal_auth">Trying to authenticate</string>
+
+ <string name="terminal_auth_pass">Attempting \'password\' authentication</string>
+ <string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
+
+ <string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
+ <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
+ <string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
+
+ <string name="terminal_auth_ki">Attempting \'keyboard-interactive\' authentication</string>
+ <string name="terminal_auth_ki_fail">Authentication method \'keyboard-interactive\' failed</string>
+
+ <string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
+
+ <string name="terminal_no_session">Session will not be started due to host preference.</string>
+ <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+
+ <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+
+ <!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
+ <string name="notification_text">%1$s wants your attention.</string>
+
+ <!-- Dialog title when a new version of ConnectBot is detected. -->
+ <string name="upgrade">New version</string>
+ <!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
+ <string name="upgrade_pos">Yes, upgrade</string>
+ <!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
+ <string name="upgrade_neg">Not right now</string>
+
+ <!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
+ <string name="no">No</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
+ <string name="with_confirmation">With confirmation</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
+ <string name="yes">Yes</string>
+
+ <!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
+ <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+
+ <!-- Menu selection to reset colors to their defaults. -->
+ <string name="menu_colors_reset">Reset</string>
+
+ <!-- Displayed in the notification bar that connections are active -->
+ <string name="app_is_running">ConnectBot is running</string>
+
+ <string name="color_red">red</string>
+ <string name="color_green">green</string>
+ <string name="color_blue">blue</string>
+ <string name="color_gray">gray</string>
+</resources>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">Ingen</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <string name="app_desc">Простий та потужний SSH клієнт з відкритим кодом</string>
+
+ <!-- Window title for the Host List -->
+ <string name="title_hosts_list">Вузли</string>
+ <!-- Window title for the Pubkeys List -->
+ <string name="title_pubkey_list">Відкриті ключі</string>
+ <!-- Window title for the Port Forwards List -->
+ <string name="title_port_forwards_list">Переадресація портів</string>
+ <!-- Window title when editing host details -->
+ <string name="title_host_editor">Змінити вузол</string>
+ <!-- Window title for Help index -->
+ <string name="title_help">Допомога</string>
+ <!-- Window title for color list editing screen -->
+ <string name="title_colors">Кольори</string>
+
+ <string name="resolve_connect">Підключитись</string>
+ <!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="resolve_entropy">Gather Entropy</string>
+
+ <string name="menu_insert">Додати вузол</string>
+ <string name="menu_delete">Вилучити вузол</string>
+ <string name="menu_preferences">Налаштування</string>
+
+ <string name="help_intro">Для додаткової інформації виберіть топік</string>
+ <string name="help_about">Про ConnectBot</string>
+ <string name="help_keyboard">Клавіатура</string>
+
+ <string name="pubkey_generate">Генерувати</string>
+ <string name="pubkey_import">Імпортувати</string>
+ <string name="pubkey_delete">Вилучити ключ</string>
+ <!-- Dialog title when user must move finger randomly over an area to gather entropy (collect random bits) -->
+ <string name="pubkey_gather_entropy">Gathering Entropy</string>
+ <string name="pubkey_touch_prompt">Touch this box to gather randomness: %1$d%% done</string>
+ <string name="pubkey_touch_hint">In order to assure randomness during the key generation, move your finger randomly over the box below.</string>
+ <string name="pubkey_generating">Generating key pair...</string>
+ <string name="pubkey_copy_private">Copy private key</string>
+ <string name="pubkey_copy_public">Copy public key</string>
+ <!-- Note that the '\n' just splits lines, so it's actually "create or import" -->
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
+ <string name="pubkey_unknown_format">Unknown format</string>
+ <string name="pubkey_change_password">Змінити пароль</string>
+ <string name="pubkey_list_pick">Завантажити з SD карти</string>
+ <string name="pubkey_import_parse_problem">Problem parsing imported private key</string>
+ <string name="pubkey_unlock">Розблокувати ключ</string>
+ <string name="pubkey_failed_add">Bad password for key \'%1$s\'. Authentication failed.</string>
+ <string name="pubkey_memory_load">Load into memory</string>
+ <string name="pubkey_memory_unload">Unload from memory</string>
+ <string name="pubkey_load_on_start">Load key on start</string>
+ <!-- Pubkey preference asking user whether the key use should be confirmed via prompt before it can be used for authentication -->
+ <string name="pubkey_confirm_use">Confirm before use</string>
+
+ <!-- Note that the '\n' splits lines, so it's actually "create port forwards" -->
+ <string name="portforward_list_empty">Tap "Menu" to create\nport forwards.</string>
+ <string name="portforward_edit">Edit port forward</string>
+ <string name="portforward_delete">Delete port forward</string>
+
+ <string name="prompt_nickname">Nickname:</string>
+ <!-- An example string that could be used as a nickname for a pubkey. -->
+ <string name="prompt_nickname_hint_pubkey">My work key</string>
+ <!-- The source TCP port for port forwards. -->
+ <string name="prompt_source_port">Source port:</string>
+ <!-- The "host:port" combination used for port forward destinations. -->
+ <string name="prompt_destination">Destination:</string>
+ <string name="prompt_old_password">Old password:</string>
+ <string name="prompt_password">Password:</string>
+ <!-- Added after a "Password:" prompt to indicate user needs to confirm entry. -->
+ <string name="prompt_again">(again)</string>
+ <!-- Label for the user to select port forward type. -->
+ <string name="prompt_type">Type:</string>
+ <string name="prompt_password_can_be_blank">Note: password can be blank</string>
+ <!-- Prompt for the size of the private key in bits. -->
+ <string name="prompt_bits">Bits:</string>
+
+ <!-- Prompt for the password to unlock a certain pubkey. -->
+ <string name="prompt_pubkey_password">Password for key \'%1$s\'</string>
+
+ <!-- Prompt for whether to allow SSH Authentication Agent to use the specified key. Note that the '\n' means split the line so it's actually "host to use key" -->
+ <string name="prompt_allow_agent_to_use_key">Allow remote host to\nuse key \'%1$s\'?</string>
+
+ <!-- The header of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning_header">WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!</string>
+ <!-- The body of the warning a user gets when the host key has changed. Note that this can be a very serious attack, so we try to be as "loud" to the user as possible. -->
+ <string name="host_verification_failure_warning">IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that the host key has just been changed.</string>
+
+ <!-- Prompt user gets when the remote host has disconnected unexpectedly. -->
+ <string name="prompt_host_disconnected">Host has disconnected.\nClose session?</string>
+ <!-- Prompt user must answer yes or no to when the remote host fails verification of encryption fingerprint -->
+ <string name="prompt_continue_connecting">Are you sure you want\nto continue connecting?</string>
+
+ <!-- Sent to user when the remote public encryption key fingerprint doesn't match the local database -->
+ <string name="host_authenticity_warning">The authenticity of host \'%1$s\' can\'t be established.</string>
+ <!-- First field is encryption algorithm. Second is the actual fingerprint in hex digits -->
+ <string name="host_fingerprint">Host %1$s key fingerprint is %2$s</string>
+
+ <string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
+ <string name="alert_wrong_password_msg">Wrong password!</string>
+ <string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
+
+ <!-- Add a new item (e.g., host or pubkey) to the list. -->
+ <string name="button_add">Add</string>
+ <!-- Change an existing item's (e.g., host or pubkey) details. -->
+ <string name="button_change">Change</string>
+ <!-- Button that begins the generation of a public key pair. -->
+ <string name="button_generate">Generate Key</string>
+ <!-- Button that resizes the screen to the user-specified dimensions. -->
+ <string name="button_resize">Resize</string>
+
+ <string name="alert_disconnect_msg">Connection Lost</string>
+
+ <string name="msg_copyright">Copyright © 2007-2008 Kenny Root http://the-b.org/, Jeffrey Sharkey http://jsharkey.org/</string>
+
+ <!-- The category title for terminal emulation preferences. -->
+ <string name="pref_emulation_category">Terminal emulation</string>
+
+ <!-- Name for the emulation terminal type preference. -->
+ <string name="pref_emulation_title">Emulation mode</string>
+ <!-- Description of the emulation terminal type preference. -->
+ <string name="pref_emulation_summary">Terminal emulation mode to use for PTY connections</string>
+
+ <!-- Name for the scrollback size preference -->
+ <string name="pref_scrollback_title">Scrollback size</string>
+ <!-- Description of the scrollback size preference -->
+ <string name="pref_scrollback_summary">Size of scrollback buffer to keep in memory for each console</string>
+
+ <!-- The category title for user interface preferences -->
+ <string name="pref_ui_category">User interface</string>
+
+ <!-- Name for the rotation mode preference -->
+ <string name="pref_rotation_title">Rotation mode</string>
+ <!-- Summary for the rotation mode preference -->
+ <string name="pref_rotation_summary">How to change rotation when keyboard popped in/out</string>
+
+ <!-- Name for the full screen preference -->
+ <string name="pref_fullscreen_title">Full screen</string>
+ <!-- Summary for the full screen preference -->
+ <string name="pref_fullscreen_summary">Hide status bar while in console</string>
+
+ <!-- Name for the memorize keys preference -->
+ <string name="pref_memkeys_title">Remember keys in memory</string>
+ <!-- Summary for the memorize keys preference -->
+ <string name="pref_memkeys_summary">Keep unlocked keys in memory until backend service is terminated</string>
+
+ <!-- Name for the update check preference -->
+ <string name="pref_update_title">Update check</string>
+ <!-- Summary for the update check preference -->
+ <string name="pref_update_summary">Set the maximum frequency to check for ConnectBot updates</string>
+
+ <!-- Name for the preference that forces the service to stay running in the background.-->
+ <string name="pref_conn_persist_title">Persist connections</string>
+ <!-- Summary for the preference that forces the service to stay running in the background. -->
+ <string name="pref_conn_persist_summary">Force connections to stay connected while in background</string>
+
+ <!-- Name for the keyboard shortcuts preference -->
+ <string name="pref_keymode_title">Directory shortcuts</string>
+ <!-- Summary for the keyboard shortcuts preference -->
+ <string name="pref_keymode_summary">Select how to use Alt for \'/\' and Shift for Tab</string>
+
+ <!-- Name for the camera shortcut usage preference -->
+ <string name="pref_camera_title">Camera shortcut</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_camera_summary">Select which shortcut to trigger when the camera button is pushed</string>
+
+ <!-- Name for the keep screen on preference -->
+ <string name="pref_keepalive_title">Keep screen awake</string>
+ <!-- Summary for the camera shortcut usage preference -->
+ <string name="pref_keepalive_summary">Prevent the screen from turning off when working in a console</string>
+
+ <!-- Name for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_title">Keep Wi-Fi active</string>
+ <!-- Summary for the Wi-Fi lock preference -->
+ <string name="pref_wifilock_summary">Prevent Wi-Fi from turning off when a session is active</string>
+
+ <!-- Name for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_title">Bumpy arrows</string>
+ <!-- Summary for the haptic feedback (bumpy arrow) preference -->
+ <string name="pref_bumpyarrows_summary">Vibrate when sending arrow keys from trackball; useful for laggy connections</string>
+
+ <!-- Category title for the Terminal Bell preferences -->
+ <string name="pref_bell_category">Terminal bell</string>
+
+ <!-- Checkbox preference title for the audible terminal bell feature -->
+ <string name="pref_bell_title">Audible bell</string>
+
+ <!-- Title for the slider preference to set the volume -->
+ <string name="pref_bell_volume_title">Bell volume</string>
+
+ <!-- Checkbox preference title for the vibrate on terminal bell feature -->
+ <string name="pref_bell_vibrate_title">Vibrate on bell</string>
+
+ <!-- Checkbox preference title for the receive notifications on terminal bell feature -->
+ <string name="pref_bell_notification_title">Background notifications</string>
+ <!-- Brief summary of the feature that is enabled when the checkbox preference for the receive notifications on terminal bell feature is checked -->
+ <string name="pref_bell_notification_summary">Send notification when a terminal running in the background sounds a bell.</string>
+
+ <!-- Preference selection to indicate use of right side of keyboard for special shortcuts. -->
+ <string name="list_keymode_right">Use right-side keys</string>
+ <!-- Preference selection to indicate use of left side of keyboard for special shortcuts. -->
+ <string name="list_keymode_left">Use left-side keys</string>
+ <!-- Preference selection to indicate never to use special shortcut keys. -->
+ <string name="list_keymode_none">Disable</string>
+
+ <!-- Preference to not use pubkeys to authenticate to this host. -->
+ <string name="list_pubkeyids_none">Do not use keys</string>
+ <!-- Preference to use any pubkey to authenticate to this host. -->
+ <string name="list_pubkeyids_any">Use any unlocked key</string>
+
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_daily">Daily</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_weekly">Weekly</string>
+ <!-- Frequency for which to check for program updates. -->
+ <string name="list_update_never">Never</string>
+
+ <!-- Host nickname field preference title -->
+ <string name="hostpref_nickname_title">Nickname</string>
+
+ <!-- Host color category preference title -->
+ <string name="hostpref_color_title">Color category</string>
+
+ <!-- Host's default font size when opening the terminal in points (pt) -->
+ <string name="hostpref_fontsize_title">Font size (pt)</string>
+
+ <!-- Host pubkey usage preference title -->
+ <string name="hostpref_pubkeyid_title">Use pubkey authentication</string>
+
+ <!-- Preference title for the SSH Authentication Agent Forwarding for a host connection -->
+ <string name="hostpref_authagent_title">Use SSH auth agent</string>
+
+ <!-- Host post-login automation preference title -->
+ <string name="hostpref_postlogin_title">Post-login automation</string>
+ <!-- Host post-login automation preference summary -->
+ <string name="hostpref_postlogin_summary">Commands to run on remote server once authenticated</string>
+
+ <!-- Host compression preference title -->
+ <string name="hostpref_compression_title">Compression</string>
+ <!-- Summary for compression preference -->
+ <string name="hostpref_compression_summary">This may help with slower networks</string>
+
+ <!-- Setting for whether we want a session to start up when we connect to a host -->
+ <string name="hostpref_wantsession_title">Start shell session</string>
+ <!-- Summary for field asking whether a shell session should be started up upon connection or not -->
+ <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+
+ <!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
+ <string name="hostpref_stayconnected_title">Stay connected</string>
+ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
+ <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+
+ <!-- Setting for what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_title">DEL Key</string>
+ <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
+ <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+
+ <!-- Host character encoding preference title -->
+ <string name="hostpref_encoding_title">Encoding</string>
+ <!-- Host character encoding preference summary -->
+ <string name="hostpref_encoding_summary">Character encoding for the host</string>
+
+ <!-- Host preference category title for connection settings -->
+ <string name="hostpref_connection_category">Connection settings</string>
+
+ <!-- Username field title for host editor preference -->
+ <string name="hostpref_username_title">Username</string>
+
+ <!-- Hostname field title for host editor preference -->
+ <string name="hostpref_hostname_title">Host</string>
+
+ <!-- Port field title for host editor preference -->
+ <string name="hostpref_port_title">Port</string>
+
+ <!-- Displayed to indicate a host has never been connected to. -->
+ <string name="bind_never">Never connected</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
+ <string name="bind_minutes">%1$s minutes ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
+ <string name="bind_hours">%1$s hours ago</string>
+ <!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
+ <string name="bind_days">%1$s days ago</string>
+
+ <!-- Message given when user copies from the terminal. -->
+ <string name="console_copy_done">Copied %1$d bytes to clipboard</string>
+ <!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
+ <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+
+ <!-- Button to close the disconnected terminal window. -->
+ <string name="console_menu_close">Close</string>
+ <!-- Button to begin copying from the terminal to the clipboard. -->
+ <string name="console_menu_copy">Copy</string>
+ <!-- Button to paste from the clipboard to the terminal. -->
+ <string name="console_menu_paste">Paste</string>
+ <!-- Button that brings user to the Port Forwards List. -->
+ <string name="console_menu_portforwards">Port Forwards</string>
+ <!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
+ <string name="console_menu_resize">Force Size</string>
+ <!-- Button that brings up the list of URLs on the current screen -->
+ <string name="console_menu_urlscan">URL Scan</string>
+
+ <!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
+ <string name="portforward_local">Local</string>
+ <!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
+ <string name="portforward_remote">Remote</string>
+ <!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
+ <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
+ <string name="portforward_pos">Create port forward</string>
+
+ <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
+
+ <string name="portforward_menu_add">Add port forward</string>
+
+ <!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
+ <string name="hint_userhost">user@hostname</string>
+
+ <!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
+ <string name="list_format_error">Use the format "%1$s"</string>
+
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_username">username</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_hostname">hostname</string>
+ <!-- Part of the formatting hints that will be used like: username@hostname:port -->
+ <string name="format_port">port</string>
+
+ <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <!-- Selection choice to sort hosts by color. -->
+ <string name="list_menu_sortcolor">Sort by color</string>
+ <!-- Selection choice to sort hosts by nickname. -->
+ <string name="list_menu_sortname">Sort by name</string>
+ <string name="list_menu_settings">Settings</string>
+
+ <string name="list_host_disconnect">Disconnect</string>
+ <string name="list_host_edit">Edit host</string>
+ <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_delete">Delete host</string>
+ <!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
+ <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+
+ <!-- Default screen rotation preference selection -->
+ <string name="list_rotation_default">Default</string>
+ <string name="list_rotation_land">Force landscape</string>
+ <string name="list_rotation_port">Force portrait</string>
+ <!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
+ <string name="list_rotation_auto">Automatic</string>
+
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
+ <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
+ <string name="list_camera_ctrla">Ctrl+A</string>
+ <!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
+ <string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
+ <!-- Selection to indicate pressing the Camera button should send nothing at all. -->
+ <string name="list_camera_none">None</string>
+
+ <!-- Name for the backspace character -->
+ <string name="list_delkey_backspace">Backspace</string>
+ <!-- Name for the ASCII DEL character -->
+ <string name="list_delkey_del">Delete</string>
+
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">Yes, delete</string>
+ <string name="delete_neg">Cancel</string>
+
+ <!-- Button to agree to license terms. -->
+ <string name="wizard_agree">Agree</string>
+ <!-- Button to go to the next page in the first time start-up wizard. -->
+ <string name="wizard_next">Next</string>
+ <!-- Button to go to the previous page in the first time start-up wizard. -->
+ <string name="wizard_back">Back</string>
+
+ <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+
+ <!-- Displayed in terminal when attempting to connect to a host. The first two
+ variables are host:port and the third is the protocol (e.g., SSH) -->
+ <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+
+ <!-- Displays the host key to the user in the terminal -->
+ <string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
+ <string name="terminal_failed">Host key verification failed.</string>
+
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <!-- Displayed on the terminal describing the cryptographic algorithm names -->
+ <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+
+ <string name="terminal_auth">Trying to authenticate</string>
+
+ <string name="terminal_auth_pass">Attempting \'password\' authentication</string>
+ <string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
+
+ <string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
+ <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
+ <string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
+
+ <string name="terminal_auth_ki">Attempting \'keyboard-interactive\' authentication</string>
+ <string name="terminal_auth_ki_fail">Authentication method \'keyboard-interactive\' failed</string>
+
+ <string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
+
+ <string name="terminal_no_session">Session will not be started due to host preference.</string>
+ <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+
+ <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+
+ <!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
+ <string name="notification_text">%1$s wants your attention.</string>
+
+ <!-- Dialog title when a new version of ConnectBot is detected. -->
+ <string name="upgrade">New version</string>
+ <!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
+ <string name="upgrade_pos">Yes, upgrade</string>
+ <!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
+ <string name="upgrade_neg">Not right now</string>
+
+ <!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
+ <string name="no">No</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
+ <string name="with_confirmation">With confirmation</string>
+ <!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
+ <string name="yes">Yes</string>
+
+ <!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
+ <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+
+ <!-- Menu selection to reset colors to their defaults. -->
+ <string name="menu_colors_reset">Reset</string>
+
+ <!-- Displayed in the notification bar that connections are active -->
+ <string name="app_is_running">ConnectBot is running</string>
+
+ <string name="color_red">red</string>
+ <string name="color_green">green</string>
+ <string name="color_blue">blue</string>
+ <string name="color_gray">gray</string>
+</resources>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">无</string>
<!-- Host compression preference title -->
<string name="hostpref_compression_title">壓縮</string>
<!-- Summary for compression preference -->
- <string name="hostpref_compression_summary">This may help with slower networks</string>
+ <string name="hostpref_compression_summary">此選項對低速網絡會有幫助</string>
<!-- Setting for whether we want a session to start up when we connect to a host -->
- <string name="hostpref_wantsession_title">Start shell session</string>
+ <string name="hostpref_wantsession_title">開始Shell會話</string>
<!-- Summary for field asking whether a shell session should be started up upon connection or not -->
- <string name="hostpref_wantsession_summary">Disable this preference to only use port forwards</string>
+ <string name="hostpref_wantsession_summary">僅僅對端口轉發禁用偏好設置</string>
<!-- Setting for whether the host should be reconnected to automatically upon disconnect -->
- <string name="hostpref_stayconnected_title">Stay connected</string>
+ <string name="hostpref_stayconnected_title">保持連接</string>
<!-- Summary for preference asking whether the host should be reconnected to when it disconnects -->
- <string name="hostpref_stayconnected_summary">Try to reconnect to host if disconnected</string>
+ <string name="hostpref_stayconnected_summary">斷線後自動重新連接到主機</string>
<!-- Setting for what key code is sent to the server when DEL key is pressed. -->
- <string name="hostpref_delkey_title">DEL Key</string>
+ <string name="hostpref_delkey_title">DEL鍵</string>
<!-- Summary for field asking what key code is sent to the server when DEL key is pressed. -->
- <string name="hostpref_delkey_summary">The key code sent when DEL key is pressed</string>
+ <string name="hostpref_delkey_summary">當DEL按下時觸發的按鍵</string>
<!-- Host character encoding preference title -->
- <string name="hostpref_encoding_title">Encoding</string>
+ <string name="hostpref_encoding_title">編碼</string>
<!-- Host character encoding preference summary -->
- <string name="hostpref_encoding_summary">Character encoding for the host</string>
+ <string name="hostpref_encoding_summary">主機的字符編碼</string>
<!-- Host preference category title for connection settings -->
- <string name="hostpref_connection_category">Connection settings</string>
+ <string name="hostpref_connection_category">連接設置</string>
<!-- Username field title for host editor preference -->
- <string name="hostpref_username_title">使用者名稱</string>
+ <string name="hostpref_username_title">用戶名</string>
<!-- Hostname field title for host editor preference -->
- <string name="hostpref_hostname_title">Host</string>
+ <string name="hostpref_hostname_title">主機</string>
<!-- Port field title for host editor preference -->
<string name="hostpref_port_title">端口</string>
<!-- Displayed to indicate a host has never been connected to. -->
- <string name="bind_never">Never connected</string>
+ <string name="bind_never">從未連接</string>
<!-- The time that has elapsed since a host was connected to when it has been less than an hour. -->
- <string name="bind_minutes">%1$s分鐘前</string>
+ <string name="bind_minutes">已連接 %1$s 分鐘</string>
<!-- The time that has elapsed since a host was connected to when it has been less than a day. -->
- <string name="bind_hours">%1$s小時以前</string>
+ <string name="bind_hours">已連接 %1$s 小時</string>
<!-- The time that has elapsed since a host was connected to when it has been a day or more. -->
- <string name="bind_days">%1$s天前</string>
+ <string name="bind_days">已連接 %1$s 天</string>
<!-- Message given when user copies from the terminal. -->
- <string name="console_copy_done">%1$då\97ç¯\80è¤\87製å\88°å\89ªè²¼ç°¿</string>
+ <string name="console_copy_done">復å\88¶ %1$d å\97ç¯\80å\88°å\89ªè²¼æ\9d¿</string>
<!-- Instructions for how to copy from the terminal. The '\n' entries are to split lines to improve readability and prevent wrapping off the screen. -->
- <string name="console_copy_start">Touch and drag\nor use directional pad\nto select area to copy</string>
+ <string name="console_copy_start">滑動手指\n或使用軌跡球\n選擇要復制的區域</string>
<!-- Button to close the disconnected terminal window. -->
- <string name="console_menu_close">Close</string>
+ <string name="console_menu_close">關閉</string>
<!-- Button to begin copying from the terminal to the clipboard. -->
- <string name="console_menu_copy">Copy</string>
+ <string name="console_menu_copy">復制</string>
<!-- Button to paste from the clipboard to the terminal. -->
- <string name="console_menu_paste">Paste</string>
+ <string name="console_menu_paste">粘貼</string>
<!-- Button that brings user to the Port Forwards List. -->
- <string name="console_menu_portforwards">Port Forwards</string>
+ <string name="console_menu_portforwards">端口轉發</string>
<!-- Button that brings user to the terminal resizing dialog where they can force a size. -->
- <string name="console_menu_resize">Force Size</string>
+ <string name="console_menu_resize">字體大小</string>
<!-- Button that brings up the list of URLs on the current screen -->
- <string name="console_menu_urlscan">URL Scan</string>
+ <string name="console_menu_urlscan">URL 地址掃描</string>
<!-- Selection for a "local" port forward. E.g., connections to a port listening locally is forwarded to the remote end's listening port. -->
- <string name="portforward_local">Local</string>
+ <string name="portforward_local">本地</string>
<!-- Selection for a "remote" port forward. E.g., connections to a port listening remotely is forwarded to the local end's listening port. -->
- <string name="portforward_remote">Remote</string>
+ <string name="portforward_remote">遠端</string>
<!-- Selection for a "dynamic" port forward. E.g., connections to a port listening locally is forwarded based on the SOCKS protocol to an arbitrary remote host and port. -->
- <string name="portforward_dynamic">Dynamic (SOCKS)</string>
+ <string name="portforward_dynamic">動態套接字(SOCKS)</string>
<!-- Button that commits the port forward to be made from the Port Forward Creation dialog. -->
- <string name="portforward_pos">Create port forward</string>
+ <string name="portforward_pos">創建端口轉發</string>
- <string name="portforward_done">Successfully created port forward</string>
+ <string name="portforward_done">成功創建端口轉發</string>
<string name="portforward_problem">Problem creating port forward, maybe you\'re using ports under 1024 or port is already used?</string>
- <string name="portforward_menu_add">Add port forward</string>
+ <string name="portforward_menu_add">添加端口轉發</string>
<!-- The string to present in the quick-connect box to hint the user to the format for connecting to hosts. -->
<string name="hint_userhost">用戶名@主機名</string>
<!-- Hint given to user when the format they're using is incorrect in the quick-connect box. -->
- <string name="list_format_error">Use the format "%1$s"</string>
+ <string name="list_format_error">使用"%1$s"格式</string>
<!-- Part of the formatting hints that will be used like: username@hostname:port -->
<string name="format_username">用戶名</string>
<!-- Part of the formatting hints that will be used like: username@hostname:port -->
<string name="format_port">端口</string>
- <string name="list_menu_pubkeys">Manage Pubkeys</string>
+ <string name="list_menu_pubkeys">管理公鑰</string>
<!-- Selection choice to sort hosts by color. -->
- <string name="list_menu_sortcolor">Sort by color</string>
+ <string name="list_menu_sortcolor">使用顏色排序</string>
<!-- Selection choice to sort hosts by nickname. -->
- <string name="list_menu_sortname">Sort by name</string>
- <string name="list_menu_settings">Settings</string>
+ <string name="list_menu_sortname">按名字排序</string>
+ <string name="list_menu_settings">設置</string>
- <string name="list_host_disconnect">斷線</string>
- <string name="list_host_edit">Edit host</string>
- <string name="list_host_portforwards">Edit port forwards</string>
+ <string name="list_host_disconnect">斷開連接</string>
+ <string name="list_host_edit">編輯主機</string>
+ <string name="list_host_portforwards">編輯端口轉發</string>
<string name="list_host_delete">刪除主機</string>
<!-- Note that the '\n' splits the lines so it's actually "quick-connect box below to connect" -->
- <string name="list_host_empty">Use the quick-connect box\nbelow to connect to a host.</string>
+ <string name="list_host_empty">使用下面的快速連接框連接主機</string>
<!-- Default screen rotation preference selection -->
- <string name="list_rotation_default">Default</string>
- <string name="list_rotation_land">Force landscape</string>
- <string name="list_rotation_port">Force portrait</string>
+ <string name="list_rotation_default">默認</string>
+ <string name="list_rotation_land">強制橫屏顯示</string>
+ <string name="list_rotation_port">強制竪屏顯示</string>
<!-- Selection to indicate the rotation should be selected automatically based on the tilt sensor. -->
- <string name="list_rotation_auto">Automatic</string>
+ <string name="list_rotation_auto">自動</string>
<!-- Selection to indicate pressing the Camera button should send "Ctrl+A then Space". -->
- <string name="list_camera_ctrlaspace">Ctrl+A then Space</string>
+ <string name="list_camera_ctrlaspace">Ctrl+A 然後 Space</string>
<!-- Selection to indicate pressing the Camera button should send "Ctrl+A". -->
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
- <string name="list_camera_none">None</string>
+ <string name="list_camera_none">無</string>
<!-- Name for the backspace character -->
<string name="list_delkey_backspace">Backspace</string>
<!-- Name for the ASCII DEL character -->
- <string name="list_delkey_del">Delete</string>
+ <string name="list_delkey_del">刪除</string>
- <string name="delete_message">您是否確實要刪除「%1$s」?</string>
- <string name="delete_pos">是的,刪除</string>
- <string name="delete_neg">Cancel</string>
+ <string name="delete_message">Are you sure you want to delete \'%1$s\'?</string>
+ <string name="delete_pos">是,刪除</string>
+ <string name="delete_neg">取消</string>
<!-- Button to agree to license terms. -->
- <string name="wizard_agree">Agree</string>
+ <string name="wizard_agree">同意</string>
<!-- Button to go to the next page in the first time start-up wizard. -->
- <string name="wizard_next">Next</string>
+ <string name="wizard_next">下一頁</string>
<!-- Button to go to the previous page in the first time start-up wizard. -->
- <string name="wizard_back">Back</string>
+ <string name="wizard_back">返回</string>
- <string name="terminal_no_hosts_connected">No hosts currently connected</string>
+ <string name="terminal_no_hosts_connected">當前沒有已連接主機</string>
<!-- Displayed in terminal when attempting to connect to a host. The first two
variables are host:port and the third is the protocol (e.g., SSH) -->
- <string name="terminal_connecting">Connecting to %1$s:%2$d via %3$s</string>
+ <string name="terminal_connecting">連接到 %1$s:%2$d,通過 %3$s</string>
<!-- Displays the host key to the user in the terminal -->
<string name="terminal_sucess">Verified host \'%1$s\' key: %2$s</string>
- <string name="terminal_failed">Host key verification failed.</string>
+ <string name="terminal_failed">主機驗證失敗</string>
<!-- Displayed on the terminal describing the cryptographic algorithm names -->
- <string name="terminal_using_s2c_algorithm">Server-to-client algorithm: %1$s %2$s</string>
+ <string name="terminal_using_s2c_algorithm">服務器到客戶端算法:%1$s %2$s</string>
<!-- Displayed on the terminal describing the cryptographic algorithm names -->
- <string name="terminal_using_c2s_algorithm">Client-to-server algorithm: %1$s %2$s</string>
+ <string name="terminal_using_c2s_algorithm">客戶端到服務器算法:%1$s %2$s</string>
<!-- Displayed on the terminal describing the cryptographic algorithm names -->
- <string name="terminal_using_algorithm">Using algorithm: %1$s %2$s</string>
+ <string name="terminal_using_algorithm">使用算法:%1$s %2$s</string>
- <string name="terminal_auth">Trying to authenticate</string>
+ <string name="terminal_auth">嘗試驗證</string>
<string name="terminal_auth_pass">Attempting \'password\' authentication</string>
<string name="terminal_auth_pass_fail">Authentication method \'password\' failed</string>
<string name="terminal_auth_pubkey_any">Attempting \'publickey\' authentication with any in-memory public keys</string>
- <string name="terminal_auth_pubkey_invalid">Selected public key is invalid, try reselecting key in host editor</string>
+ <string name="terminal_auth_pubkey_invalid">所選擇的公鑰無法使用,請在主機編輯中嘗試重新選擇</string>
<string name="terminal_auth_pubkey_specific">Attempting \'publickey\' authentication with a specific public key</string>
<string name="terminal_auth_pubkey_fail">Authentication method \'publickey\' with key \'%1$s\' failed</string>
<string name="terminal_auth_fail">[Your host doesn\'t support \'password\' or \'keyboard-interactive\' authentication.]</string>
- <string name="terminal_no_session">Session will not be started due to host preference.</string>
- <string name="terminal_enable_portfoward">Enable port forward: %1$s</string>
+ <string name="terminal_no_session">因為主機的相關設置,不會啓動會話。</string>
+ <string name="terminal_enable_portfoward">啓用端口轉發:%1$s</string>
- <string name="local_shell_unavailable">Failure! Local shell is unavailable on this phone.</string>
+ <string name="local_shell_unavailable">失敗! 本地Shell在該手機上不可用</string>
<!-- Text sent to the user to alert them that a Terminal Bell is received in a background session -->
- <string name="notification_text">%1$s希望你注意</string>
+ <string name="notification_text">%1$s 需要你的註意</string>
<!-- Dialog title when a new version of ConnectBot is detected. -->
- <string name="upgrade">New version</string>
+ <string name="upgrade">新版本</string>
<!-- Button selection to upgrade to the latest ConnectBot when one is available. -->
- <string name="upgrade_pos">Yes, upgrade</string>
+ <string name="upgrade_pos">是,昇級</string>
<!-- Button selection to skip upgrading to the latest ConnectBot when one is available. -->
- <string name="upgrade_neg">Not right now</string>
+ <string name="upgrade_neg">暫時不</string>
<!-- Preference selection for SSH Authentication Agent to never use pubkeys -->
- <string name="no">No</string>
+ <string name="no">不</string>
<!-- Preference selection for SSH Authentication Agent to be able to use pubkeys "with confirmation" only -->
- <string name="with_confirmation">With confirmation</string>
+ <string name="with_confirmation">已確認過</string>
<!-- Preference selection for SSH Authentication Agent to be able to use pubkeys -->
- <string name="yes">Yes</string>
+ <string name="yes">是</string>
<!-- String displayed to user when they're asked to submit exceptions to the ConnectBot developers -->
- <string name="exceptions_submit_message">It appears ConnectBot had a problem last time it ran. Submit error report to ConnectBot developers?</string>
+ <string name="exceptions_submit_message">似乎ConnectBot在最後運行時出現異常. 請回報給ConnectBot開發者</string>
<!-- Menu selection to reset colors to their defaults. -->
- <string name="menu_colors_reset">Reset</string>
+ <string name="menu_colors_reset">重設</string>
<!-- Displayed in the notification bar that connections are active -->
<string name="app_is_running">ConnectBot is running</string>
- <string name="color_red">紅色</string>
- <string name="color_green">綠色</string>
- <string name="color_blue">藍色</string>
- <string name="color_gray">灰色</string>
+ <string name="color_red">紅</string>
+ <string name="color_green">綠</string>
+ <string name="color_blue">藍</string>
+ <string name="color_gray">灰</string>
</resources>
<item>@string/list_camera_ctrlaspace</item>
<item>@string/list_camera_ctrla</item>
<item>@string/list_camera_esc</item>
+ <item>@string/list_camera_esc_a</item>
<item>@string/list_camera_none</item>
</string-array>
<item>Ctrl+A then Space</item>
<item>Ctrl+A</item>
<item>Esc</item>
+ <item>Esc+A</item>
<item>None</item>
</string-array>
<string name="list_camera_ctrla">Ctrl+A</string>
<!-- Selection to indicate pressing the Camera button should send the "Esc" key. -->
<string name="list_camera_esc">Esc</string>
+ <!-- Selection to indicate pressing the Camera button should send "Esc+A". -->
+ <string name="list_camera_esc_a">Esc+A</string>
<!-- Selection to indicate pressing the Camera button should send nothing at all. -->
<string name="list_camera_none">None</string>
import java.lang.ref.WeakReference;
import java.util.List;
-import org.connectbot.bean.HostBean;
-import org.connectbot.bean.PortForwardBean;
import org.connectbot.bean.SelectionArea;
import org.connectbot.service.PromptHelper;
import org.connectbot.service.TerminalBridge;
private static final float MAX_CLICK_DISTANCE = 25f;
private static final int KEYBOARD_DISPLAY_TIME = 1250;
+ // Direction to shift the ViewFlipper
+ private static final int SHIFT_LEFT = 0;
+ private static final int SHIFT_RIGHT = 1;
+
protected ViewFlipper flip = null;
protected TerminalManager bound = null;
protected LayoutInflater inflater = null;
// clear out any existing bridges and record requested index
flip.removeAllViews();
- String requestedNickname = (requested != null) ? requested.getFragment() : null;
- int requestedIndex = 0;
- // first check if we need to create a new session for requested
- boolean found = false;
- for (TerminalBridge bridge : bound.bridges) {
- String nick = bridge.host.getNickname();
- if (nick == null)
- continue;
+ final String requestedNickname = (requested != null) ? requested.getFragment() : null;
+ int requestedIndex = 0;
- if (nick.equals(requestedNickname)) {
- found = true;
- break;
- }
- }
+ TerminalBridge requestedBridge = bound.getConnectedBridge(requestedNickname);
// If we didn't find the requested connection, try opening it
- if (!found) {
+ if (requestedNickname != null && requestedBridge == null) {
try {
Log.d(TAG, String.format("We couldnt find an existing bridge with URI=%s (nickname=%s), so creating one now", requested.toString(), requestedNickname));
- bound.openConnection(requested);
+ requestedBridge = bound.openConnection(requested);
} catch(Exception e) {
Log.e(TAG, "Problem while trying to create new requested bridge from URI", e);
}
// create views for all bridges on this service
for (TerminalBridge bridge : bound.bridges) {
- // let them know about our prompt handler services
- bridge.promptHelper.setHandler(promptHandler);
- bridge.refreshKeymode();
-
- // inflate each terminal view
- RelativeLayout view = (RelativeLayout)inflater.inflate(R.layout.item_terminal, flip, false);
-
- // set the terminal overlay text
- TextView overlay = (TextView)view.findViewById(R.id.terminal_overlay);
- overlay.setText(bridge.host.getNickname());
-
- // and add our terminal view control, using index to place behind overlay
- TerminalView terminal = new TerminalView(ConsoleActivity.this, bridge);
- terminal.setId(R.id.console_flip);
- view.addView(terminal, 0);
-
- // finally attach to the flipper
- flip.addView(view);
+ final int currentIndex = addNewTerminalView(bridge);
// check to see if this bridge was requested
- if (bridge.host.getNickname().equals(requestedNickname))
- requestedIndex = flip.getChildCount() - 1;
+ if (bridge == requestedBridge)
+ requestedIndex = currentIndex;
}
- try {
- // show the requested bridge if found, also fade out overlay
- flip.setDisplayedChild(requestedIndex);
- flip.getCurrentView().findViewById(R.id.terminal_overlay).startAnimation(fade_out_delayed);
- } catch (NullPointerException npe) {
- Log.d(TAG, "View went away when we were about to display it", npe);
- }
-
- updatePromptVisible();
- updateEmptyVisible();
+ setDisplayedTerminal(requestedIndex);
}
public void onServiceDisconnected(ComponentName className) {
// tell each bridge to forget about our prompt handler
- for(TerminalBridge bridge : bound.bridges)
- bridge.promptHelper.setHandler(null);
+ synchronized (bound.bridges) {
+ for(TerminalBridge bridge : bound.bridges)
+ bridge.promptHelper.setHandler(null);
+ }
flip.removeAllViews();
updateEmptyVisible();
/**
* @param bridge
*/
- private void closeBridge(TerminalBridge bridge) {
- for(int i = 0; i < flip.getChildCount(); i++) {
- View child = flip.getChildAt(i).findViewById(R.id.console_flip);
+ private void closeBridge(final TerminalBridge bridge) {
+ synchronized (flip) {
+ final int flipIndex = getFlipIndex(bridge);
- if (!(child instanceof TerminalView)) continue;
-
- TerminalView terminal = (TerminalView) child;
-
- if (terminal.bridge.equals(bridge)) {
- // we've found the terminal to remove
- // shift something into its place if currently visible
- if(flip.getDisplayedChild() == i)
- shiftLeft();
- flip.removeViewAt(i);
+ if (flipIndex >= 0) {
+ if (flip.getDisplayedChild() == flipIndex) {
+ shiftCurrentTerminal(SHIFT_LEFT);
+ }
+ flip.removeViewAt(flipIndex);
/* TODO Remove this workaround when ViewFlipper is fixed to listen
* to view removals. Android Issue 1784
*/
final int numChildren = flip.getChildCount();
if (flip.getDisplayedChild() >= numChildren &&
- numChildren > 0)
+ numChildren > 0) {
flip.setDisplayedChild(numChildren - 1);
+ }
updateEmptyVisible();
- break;
}
- }
-
- // If we just closed the last bridge, go back to the previous activity.
- if (flip.getChildCount() == 0) {
- finish();
- }
- }
-
- // TODO review use (apparently unused)
- protected void createPortForward(TerminalView target, String nickname, String type, String source, String dest) {
- String summary = getString(R.string.portforward_problem);
- try {
- long hostId = target.bridge.host.getId();
-
- PortForwardBean pfb = new PortForwardBean(hostId, nickname, type, source, dest);
- target.bridge.addPortForward(pfb);
- if (target.bridge.enablePortForward(pfb)) {
- summary = getString(R.string.portforward_done);
+ // If we just closed the last bridge, go back to the previous activity.
+ if (flip.getChildCount() == 0) {
+ finish();
}
- } catch(Exception e) {
- Log.e(TAG, "Problem trying to create portForward", e);
}
-
- Toast.makeText(ConsoleActivity.this, summary, Toast.LENGTH_LONG).show();
}
protected View findCurrentView(int id) {
return view.findViewById(id);
}
- // TODO review use (apparently unused)
- protected HostBean getCurrentHost() {
- View view = findCurrentView(R.id.console_flip);
- if(!(view instanceof TerminalView)) return null;
- return ((TerminalView)view).bridge.host;
- }
-
protected PromptHelper getCurrentPromptHelper() {
View view = findCurrentView(R.id.console_flip);
if(!(view instanceof TerminalView)) return null;
// handle requested console from incoming intent
requested = getIntent().getData();
- inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ inflater = LayoutInflater.from(this);
flip = (ViewFlipper)findViewById(R.id.console_flip);
empty = (TextView)findViewById(android.R.id.empty);
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- float distx = e2.getRawX() - e1.getRawX();
- float disty = e2.getRawY() - e1.getRawY();
- int goalwidth = flip.getWidth() / 2;
+ final float distx = e2.getRawX() - e1.getRawX();
+ final float disty = e2.getRawY() - e1.getRawY();
+ final int goalwidth = flip.getWidth() / 2;
// need to slide across half of display to trigger console change
// make sure user kept a steady hand horizontally
- if(Math.abs(disty) < 100) {
- if(distx > goalwidth) {
- shiftRight();
+ if (Math.abs(disty) < (flip.getHeight() / 4)) {
+ if (distx > goalwidth) {
+ shiftCurrentTerminal(SHIFT_RIGHT);
return true;
}
- if(distx < -goalwidth) {
- shiftLeft();
+ if (distx < -goalwidth) {
+ shiftCurrentTerminal(SHIFT_LEFT);
return true;
}
return false;
// if releasing then reset total scroll
- if(e2.getAction() == MotionEvent.ACTION_UP) {
+ if (e2.getAction() == MotionEvent.ACTION_UP) {
totalY = 0;
}
// activate consider if within x tolerance
- if(Math.abs(e1.getX() - e2.getX()) < ViewConfiguration.getTouchSlop() * 4) {
+ if (Math.abs(e1.getX() - e2.getX()) < ViewConfiguration.getTouchSlop() * 4) {
View flip = findCurrentView(R.id.console_flip);
if(flip == null) return false;
// estimate how many rows we have scrolled through
// accumulate distance that doesn't trigger immediate scroll
totalY += distanceY;
- int moved = (int)(totalY / terminal.bridge.charHeight);
+ final int moved = (int)(totalY / terminal.bridge.charHeight);
// consume as scrollback only if towards right half of screen
- if (e2.getX() > flip.getWidth() / 2.0) {
- if(moved != 0) {
+ if (e2.getX() > flip.getWidth() / 2) {
+ if (moved != 0) {
int base = terminal.bridge.buffer.getWindowBase();
terminal.bridge.buffer.setWindowBase(base + moved);
totalY = 0;
}
} else {
// otherwise consume as pgup/pgdown for every 5 lines
- if(moved > 5) {
+ if (moved > 5) {
((vt320)terminal.bridge.buffer).keyPressed(vt320.KEY_PAGE_DOWN, ' ', 0);
terminal.bridge.tryKeyVibrate();
totalY = 0;
return true;
- } else if(moved < -5) {
+ } else if (moved < -5) {
((vt320)terminal.bridge.buffer).keyPressed(vt320.KEY_PAGE_UP, ' ', 0);
terminal.bridge.tryKeyVibrate();
totalY = 0;
// connect with manager service to find all bridges
// when connected it will insert all views
bindService(new Intent(this, TerminalManager.class), connection, Context.BIND_AUTO_CREATE);
-
- // make sure we dont let the screen fall asleep
- // this also keeps the wifi chipset from disconnecting us
- if(wakelock != null && prefs.getBoolean(PreferenceConstants.KEEP_ALIVE, true))
- wakelock.acquire();
}
@Override
super.onPause();
Log.d(TAG, "onPause called");
+ // Allow the screen to dim and fall asleep.
+ if (wakelock != null && wakelock.isHeld())
+ wakelock.release();
+
if (forcedOrientation && bound != null)
bound.setResizeAllowed(false);
}
super.onResume();
Log.d(TAG, "onResume called");
+ // Make sure we don't let the screen fall asleep.
+ // This also keeps the Wi-Fi chipset from disconnecting us.
+ if (wakelock != null && prefs.getBoolean(PreferenceConstants.KEEP_ALIVE, true))
+ wakelock.acquire();
+
configureOrientation();
if (forcedOrientation && bound != null)
bound.setResizeAllowed(true);
}
+ /* (non-Javadoc)
+ * @see android.app.Activity#onNewIntent(android.content.Intent)
+ */
@Override
- public void onStop() {
- super.onStop();
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
- unbindService(connection);
+ Log.d(TAG, "onNewIntent called");
- // allow the screen to dim and fall asleep
- if(wakelock != null && wakelock.isHeld())
- wakelock.release();
- }
+ requested = intent.getData();
- protected void shiftLeft() {
- View overlay;
- boolean shouldAnimate = flip.getChildCount() > 1;
-
- // Only show animation if there is something else to go to.
- if (shouldAnimate) {
- // keep current overlay from popping up again
- overlay = findCurrentView(R.id.terminal_overlay);
- if (overlay != null)
- overlay.startAnimation(fade_stay_hidden);
-
- flip.setInAnimation(slide_left_in);
- flip.setOutAnimation(slide_left_out);
- flip.showNext();
+ if (requested == null) {
+ Log.e(TAG, "Got null intent data in onNewIntent()");
+ return;
+ }
+
+ if (bound == null) {
+ Log.e(TAG, "We're not bound in onNewIntent()");
+ return;
}
- ConsoleActivity.this.updateDefault();
+ TerminalBridge requestedBridge = bound.getConnectedBridge(requested.getFragment());
+ int requestedIndex = 0;
+
+ synchronized (flip) {
+ if (requestedBridge == null) {
+ // If we didn't find the requested connection, try opening it
- if (shouldAnimate) {
- // show overlay on new slide and start fade
- overlay = findCurrentView(R.id.terminal_overlay);
- if (overlay != null)
- overlay.startAnimation(fade_out_delayed);
+ try {
+ Log.d(TAG, String.format("We couldnt find an existing bridge with URI=%s (nickname=%s),"+
+ "so creating one now", requested.toString(), requested.getFragment()));
+ requestedBridge = bound.openConnection(requested);
+ } catch(Exception e) {
+ Log.e(TAG, "Problem while trying to create new requested bridge from URI", e);
+ }
+
+ requestedIndex = addNewTerminalView(requestedBridge);
+ } else {
+ final int flipIndex = getFlipIndex(requestedBridge);
+ if (flipIndex > requestedIndex) {
+ requestedIndex = flipIndex;
+ }
+ }
+
+ setDisplayedTerminal(requestedIndex);
}
+ }
- updatePromptVisible();
+ @Override
+ public void onStop() {
+ super.onStop();
+
+ unbindService(connection);
}
- protected void shiftRight() {
+ protected void shiftCurrentTerminal(final int direction) {
View overlay;
- boolean shouldAnimate = flip.getChildCount() > 1;
-
- // Only show animation if there is something else to go to.
- if (shouldAnimate) {
- // keep current overlay from popping up again
- overlay = findCurrentView(R.id.terminal_overlay);
- if (overlay != null)
- overlay.startAnimation(fade_stay_hidden);
-
- flip.setInAnimation(slide_right_in);
- flip.setOutAnimation(slide_right_out);
- flip.showPrevious();
- }
+ synchronized (flip) {
+ boolean shouldAnimate = flip.getChildCount() > 1;
+
+ // Only show animation if there is something else to go to.
+ if (shouldAnimate) {
+ // keep current overlay from popping up again
+ overlay = findCurrentView(R.id.terminal_overlay);
+ if (overlay != null)
+ overlay.startAnimation(fade_stay_hidden);
+
+ if (direction == SHIFT_LEFT) {
+ flip.setInAnimation(slide_left_in);
+ flip.setOutAnimation(slide_left_out);
+ flip.showNext();
+ } else if (direction == SHIFT_RIGHT) {
+ flip.setInAnimation(slide_right_in);
+ flip.setOutAnimation(slide_right_out);
+ flip.showPrevious();
+ }
+ }
- ConsoleActivity.this.updateDefault();
+ ConsoleActivity.this.updateDefault();
- if (shouldAnimate) {
- // show overlay on new slide and start fade
- overlay = findCurrentView(R.id.terminal_overlay);
- if (overlay != null)
- overlay.startAnimation(fade_out_delayed);
- }
+ if (shouldAnimate) {
+ // show overlay on new slide and start fade
+ overlay = findCurrentView(R.id.terminal_overlay);
+ if (overlay != null)
+ overlay.startAnimation(fade_out_delayed);
+ }
- updatePromptVisible();
+ updatePromptVisible();
+ }
}
/**
bound.setResizeAllowed(false);
else
bound.setResizeAllowed(true);
+
+ bound.hardKeyboardHidden = (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES);
+ }
+ }
+
+ /**
+ * Adds a new TerminalBridge to the current set of views in our ViewFlipper.
+ *
+ * @param bridge TerminalBridge to add to our ViewFlipper
+ * @return the child index of the new view in the ViewFlipper
+ */
+ private int addNewTerminalView(TerminalBridge bridge) {
+ // let them know about our prompt handler services
+ bridge.promptHelper.setHandler(promptHandler);
+
+ // inflate each terminal view
+ RelativeLayout view = (RelativeLayout)inflater.inflate(R.layout.item_terminal, flip, false);
+
+ // set the terminal overlay text
+ TextView overlay = (TextView)view.findViewById(R.id.terminal_overlay);
+ overlay.setText(bridge.host.getNickname());
+
+ // and add our terminal view control, using index to place behind overlay
+ TerminalView terminal = new TerminalView(ConsoleActivity.this, bridge);
+ terminal.setId(R.id.console_flip);
+ view.addView(terminal, 0);
+
+ synchronized (flip) {
+ // finally attach to the flipper
+ flip.addView(view);
+ return flip.getChildCount() - 1;
+ }
+ }
+
+ private int getFlipIndex(TerminalBridge bridge) {
+ synchronized (flip) {
+ final int children = flip.getChildCount();
+ for (int i = 0; i < children; i++) {
+ final View view = flip.getChildAt(i).findViewById(R.id.console_flip);
+
+ if (view == null || !(view instanceof TerminalView)) {
+ // How did that happen?
+ continue;
+ }
+
+ final TerminalView tv = (TerminalView) view;
+
+ if (tv.bridge == bridge) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ }
+
+ /**
+ * Displays the child in the ViewFlipper at the requestedIndex and updates the prompts.
+ *
+ * @param requestedIndex the index of the terminal view to display
+ */
+ private void setDisplayedTerminal(int requestedIndex) {
+ synchronized (flip) {
+ try {
+ // show the requested bridge if found, also fade out overlay
+ flip.setDisplayedChild(requestedIndex);
+ flip.getCurrentView().findViewById(R.id.terminal_overlay)
+ .startAnimation(fade_out_delayed);
+ } catch (NullPointerException npe) {
+ Log.d(TAG, "View went away when we were about to display it", npe);
+ }
+
+ updatePromptVisible();
+ updateEmptyVisible();
}
}
}
save = (Button) findViewById(R.id.save);
- inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ inflater = LayoutInflater.from(this);
nickname.addTextChangedListener(textChecker);
password1.addTextChangedListener(textChecker);
public void onServiceConnected(ComponentName className, IBinder service) {
TerminalManager bound = ((TerminalManager.TerminalBinder) service).getService();
- for (TerminalBridge bridge: bound.bridges) {
- if (bridge.host.equals(host)) {
- hostBridge = bridge;
- Log.d(TAG, "Found host bridge; charset updates will be made live");
- break;
- }
- }
+ hostBridge = bound.getConnectedBridge(host);
}
public void onServiceDisconnected(ComponentName name) {
});
transportSpinner.setAdapter(transportSelection);
- this.inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ this.inflater = LayoutInflater.from(this);
}
@Override
// edit, disconnect, delete
MenuItem connect = menu.add(R.string.list_host_disconnect);
- final TerminalBridge bridge = bound.findBridge(host);
+ final TerminalBridge bridge = bound.getConnectedBridge(host);
connect.setEnabled((bridge != null));
connect.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if (this.manager == null)
return STATE_UNKNOWN;
- if (manager.findBridge(host) != null)
+ if (manager.getConnectedBridge(host) != null)
return STATE_CONNECTED;
if (manager.disconnected.contains(host))
public void onServiceConnected(ComponentName className, IBinder service) {
TerminalManager bound = ((TerminalManager.TerminalBinder) service).getService();
- for (TerminalBridge bridge: bound.bridges) {
- if (bridge.host.equals(host)) {
- hostBridge = bridge;
- updateHandler.sendEmptyMessage(-1);
- Log.d(TAG, "Found host bridge; using that instead of database");
- break;
- }
- }
-
-
+ hostBridge = bound.getConnectedBridge(host);
+ updateHandler.sendEmptyMessage(-1);
}
public void onServiceDisconnected(ComponentName name) {
}
});
- this.inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ this.inflater = LayoutInflater.from(this);
}
@Override
clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
- inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ inflater = LayoutInflater.from(this);
}
/**
Log.d(TAG, String.format("Unlocked key '%s'", pubkey.getNickname()));
- // save this key in-memory if option enabled
- if(bound.isSavingKeys()) {
- bound.addKey(pubkey, trileadKey);
- }
+ // save this key in memory
+ bound.addKey(pubkey, trileadKey);
updateHandler.sendEmptyMessage(-1);
}
import org.connectbot.bean.SelectionArea;
import org.connectbot.service.FontSizeChangedListener;
import org.connectbot.service.TerminalBridge;
+import org.connectbot.service.TerminalKeyListener;
import android.app.Activity;
import android.content.Context;
bridge.addFontSizeChangedListener(this);
// connect our view up to the bridge
- setOnKeyListener(bridge);
+ setOnKeyListener(bridge.getKeyHandler());
}
public void destroy() {
// also draw cursor if visible
if (bridge.buffer.isCursorVisible()) {
int cursorColumn = bridge.buffer.getCursorColumn();
- int columns = bridge.buffer.getColumns();
+ final int cursorRow = bridge.buffer.getCursorRow();
+
+ final int columns = bridge.buffer.getColumns();
if (cursorColumn == columns)
cursorColumn = columns - 1;
+ if (cursorColumn < 0 || cursorRow < 0)
+ return;
+
int currentAttribute = bridge.buffer.getAttributes(
- cursorColumn,
- bridge.buffer.getCursorRow());
+ cursorColumn, cursorRow);
boolean onWideCharacter = (currentAttribute & VDUBuffer.FULLWIDTH) != 0;
int x = cursorColumn * bridge.charWidth;
// Make sure we scale our decorations to the correct size.
canvas.concat(scaleMatrix);
- int metaState = bridge.getMetaState();
+ int metaState = bridge.getKeyHandler().getMetaState();
- if ((metaState & TerminalBridge.META_SHIFT_ON) != 0)
+ if ((metaState & TerminalKeyListener.META_SHIFT_ON) != 0)
canvas.drawPath(shiftCursor, cursorStrokePaint);
- else if ((metaState & TerminalBridge.META_SHIFT_LOCK) != 0)
+ else if ((metaState & TerminalKeyListener.META_SHIFT_LOCK) != 0)
canvas.drawPath(shiftCursor, cursorPaint);
- if ((metaState & TerminalBridge.META_ALT_ON) != 0)
+ if ((metaState & TerminalKeyListener.META_ALT_ON) != 0)
canvas.drawPath(altCursor, cursorStrokePaint);
- else if ((metaState & TerminalBridge.META_ALT_LOCK) != 0)
+ else if ((metaState & TerminalKeyListener.META_ALT_LOCK) != 0)
canvas.drawPath(altCursor, cursorPaint);
- if ((metaState & TerminalBridge.META_CTRL_ON) != 0)
+ if ((metaState & TerminalKeyListener.META_CTRL_ON) != 0)
canvas.drawPath(ctrlCursor, cursorStrokePaint);
- else if ((metaState & TerminalBridge.META_CTRL_LOCK) != 0)
+ else if ((metaState & TerminalKeyListener.META_CTRL_LOCK) != 0)
canvas.drawPath(ctrlCursor, cursorPaint);
// Restore previous clip region
this.flipper = (ViewFlipper) findViewById(R.id.wizard_flipper);
// inflate the layout for EULA step
- LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ LayoutInflater inflater = LayoutInflater.from(this);
this.flipper.addView(inflater.inflate(R.layout.wiz_eula, this.flipper, false));
// Add a view for each help topic we want the user to see.
--- /dev/null
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2010 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.connectbot.service;
+
+import java.io.IOException;
+
+import org.connectbot.util.HostDatabase;
+import org.connectbot.util.PreferenceConstants;
+import org.connectbot.util.PubkeyDatabase;
+
+import android.app.backup.BackupAgentHelper;
+import android.app.backup.BackupDataInput;
+import android.app.backup.BackupDataOutput;
+import android.app.backup.FileBackupHelper;
+import android.app.backup.SharedPreferencesBackupHelper;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+/**
+ * @author kroot
+ *
+ */
+public class BackupAgent extends BackupAgentHelper {
+ @Override
+ public void onCreate() {
+ Log.d("ConnectBot.BackupAgent", "onCreate called");
+
+ SharedPreferencesBackupHelper prefs = new SharedPreferencesBackupHelper(this, getPackageName() + "_preferences");
+ addHelper(PreferenceConstants.BACKUP_PREF_KEY, prefs);
+
+ FileBackupHelper hosts = new FileBackupHelper(this, "../databases/" + HostDatabase.DB_NAME);
+ addHelper(HostDatabase.DB_NAME, hosts);
+
+ FileBackupHelper pubkeys = new FileBackupHelper(this, "../databases/" + PubkeyDatabase.DB_NAME);
+ addHelper(PubkeyDatabase.DB_NAME, pubkeys);
+
+ }
+
+ @Override
+ public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
+ ParcelFileDescriptor newState) throws IOException {
+ synchronized (HostDatabase.dbLock) {
+ super.onBackup(oldState, data, newState);
+ }
+ }
+
+ @Override
+ public void onRestore(BackupDataInput data, int appVersionCode,
+ ParcelFileDescriptor newState) throws IOException {
+ Log.d("ConnectBot.BackupAgent", "onRestore called");
+
+ synchronized (HostDatabase.dbLock) {
+ Log.d("ConnectBot.BackupAgent", "onRestore in-lock");
+
+ super.onRestore(data, appVersionCode, newState);
+ }
+ }
+}
--- /dev/null
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2010 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.connectbot.service;
+
+import org.connectbot.util.PreferenceConstants;
+
+import android.app.backup.BackupManager;
+import android.content.Context;
+
+/**
+ * @author kroot
+ *
+ */
+public abstract class BackupWrapper {
+ public static BackupWrapper getInstance() {
+ if (PreferenceConstants.PRE_FROYO)
+ return PreFroyo.Holder.sInstance;
+ else
+ return FroyoAndBeyond.Holder.sInstance;
+ }
+
+ public abstract void onDataChanged(Context context);
+
+ private static class PreFroyo extends BackupWrapper {
+ private static class Holder {
+ private static final PreFroyo sInstance = new PreFroyo();
+ }
+
+ @Override
+ public void onDataChanged(Context context) {
+ // do nothing for now
+ }
+ }
+
+ private static class FroyoAndBeyond extends BackupWrapper {
+ private static class Holder {
+ private static final FroyoAndBeyond sInstance = new FroyoAndBeyond();
+ }
+
+ private static BackupManager mBackupManager;
+
+ @Override
+ public void onDataChanged(Context context) {
+ checkBackupManager(context);
+ if (mBackupManager != null) {
+ mBackupManager.dataChanged();
+ }
+ }
+
+ private void checkBackupManager(Context context) {
+ if (mBackupManager == null) {
+ mBackupManager = new BackupManager(context);
+ }
+ }
+ }
+}
/*
* ConnectBot: simple, powerful, open-source SSH client for Android
- * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ * Copyright 2010 Kenny Root, Jeffrey Sharkey
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import org.connectbot.ConsoleActivity;
import org.connectbot.R;
import org.connectbot.bean.HostBean;
+import org.connectbot.util.HostDatabase;
import org.connectbot.util.PreferenceConstants;
import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.graphics.Color;
/**
* @author Kenny Root
notification.flags = Notification.FLAG_AUTO_CANCEL;
+ notification.flags |= Notification.DEFAULT_LIGHTS;
+ if (HostDatabase.COLOR_RED.equals(host.getColor()))
+ notification.ledARGB = Color.RED;
+ else if (HostDatabase.COLOR_GREEN.equals(host.getColor()))
+ notification.ledARGB = Color.GREEN;
+ else if (HostDatabase.COLOR_BLUE.equals(host.getColor()))
+ notification.ledARGB = Color.BLUE;
+ else
+ notification.ledARGB = Color.WHITE;
+ notification.ledOnMS = 300;
+ notification.ledOffMS = 1000;
+ notification.flags |= Notification.FLAG_SHOW_LIGHTS;
+
return notification;
}
--- /dev/null
+/**
+ *
+ */
+package org.connectbot.service;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.NetworkInfo.State;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiManager.WifiLock;
+import android.util.Log;
+
+/**
+ * @author kroot
+ *
+ */
+public class ConnectivityReceiver extends BroadcastReceiver {
+ private static final String TAG = "ConnectBot.ConnectivityManager";
+
+ private boolean mIsConnected = false;
+
+ final private TerminalManager mTerminalManager;
+
+ final private WifiLock mWifiLock;
+
+ private int mNetworkRef = 0;
+
+ private boolean mLockingWifi;
+
+ private Object[] mLock = new Object[0];
+
+ public ConnectivityReceiver(TerminalManager manager, boolean lockingWifi) {
+ mTerminalManager = manager;
+
+ final ConnectivityManager cm =
+ (ConnectivityManager) manager.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+ final WifiManager wm = (WifiManager) manager.getSystemService(Context.WIFI_SERVICE);
+ mWifiLock = wm.createWifiLock(TAG);
+
+ final NetworkInfo info = cm.getActiveNetworkInfo();
+ if (info != null) {
+ mIsConnected = (info.getState() == State.CONNECTED);
+ }
+
+ mLockingWifi = lockingWifi;
+
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+ manager.registerReceiver(this, filter);
+ }
+
+ /* (non-Javadoc)
+ * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
+ */
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+
+ if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
+ Log.w(TAG, "onReceived() called: " + intent);
+ return;
+ }
+
+ boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
+ boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
+
+ Log.d(TAG, "onReceived() called; noConnectivity? " + noConnectivity + "; isFailover? " + isFailover);
+
+ if (noConnectivity && !isFailover && mIsConnected) {
+ mIsConnected = false;
+ mTerminalManager.onConnectivityLost();
+ } else if (!mIsConnected) {
+ NetworkInfo info = (NetworkInfo) intent.getExtras()
+ .get(ConnectivityManager.EXTRA_NETWORK_INFO);
+
+ if (mIsConnected = (info.getState() == State.CONNECTED)) {
+ mTerminalManager.onConnectivityRestored();
+ }
+ }
+ }
+
+ /**
+ *
+ */
+ public void cleanup() {
+ if (mWifiLock.isHeld())
+ mWifiLock.release();
+
+ mTerminalManager.unregisterReceiver(this);
+ }
+
+ /**
+ * Increase the number of things using the network. Acquire a Wi-Fi lock
+ * if necessary.
+ */
+ public void incRef() {
+ synchronized (mLock) {
+ acquireWifiLockIfNecessaryLocked();
+
+ mNetworkRef += 1;
+ }
+ }
+
+ /**
+ * Decrease the number of things using the network. Release the Wi-Fi lock
+ * if necessary.
+ */
+ public void decRef() {
+ synchronized (mLock) {
+ mNetworkRef -= 1;
+
+ releaseWifiLockIfNecessaryLocked();
+ }
+ }
+
+ /**
+ * @param mLockingWifi
+ */
+ public void setWantWifiLock(boolean lockingWifi) {
+ synchronized (mLock) {
+ mLockingWifi = lockingWifi;
+
+ if (mLockingWifi) {
+ acquireWifiLockIfNecessaryLocked();
+ } else {
+ releaseWifiLockIfNecessaryLocked();
+ }
+ }
+ }
+
+ private void acquireWifiLockIfNecessaryLocked() {
+ if (mLockingWifi && mNetworkRef > 0 && !mWifiLock.isHeld()) {
+ mWifiLock.acquire();
+ }
+ }
+
+ private void releaseWifiLockIfNecessaryLocked() {
+ if (mNetworkRef == 0 && mWifiLock.isHeld()) {
+ mWifiLock.release();
+ }
+ }
+
+ /**
+ * @return whether we're connected to a network
+ */
+ public boolean isConnected() {
+ return mIsConnected;
+ }
+}
*/
public void setResponse(Object value) {
response = value;
+ promptRequested = null;
+ promptInstructions = null;
+ promptHint = null;
promptResponse.release();
}
// acquire lock until user passes back value
promptResponse.acquire();
- promptInstructions = null;
- promptHint = null;
- promptRequested = null;
response = popResponse();
} finally {
import org.connectbot.transport.AbsTransport;
import org.connectbot.transport.TransportFactory;
import org.connectbot.util.HostDatabase;
-import org.connectbot.util.PreferenceConstants;
import android.content.Context;
-import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint.FontMetrics;
import android.text.ClipboardManager;
import android.util.Log;
-import android.view.KeyCharacterMap;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnKeyListener;
import de.mud.terminal.VDUBuffer;
import de.mud.terminal.VDUDisplay;
import de.mud.terminal.vt320;
* This class also provides SSH hostkey verification prompting, and password
* prompting.
*/
-public class TerminalBridge implements VDUDisplay, OnKeyListener {
+public class TerminalBridge implements VDUDisplay {
public final static String TAG = "ConnectBot.TerminalBridge";
public final static int DEFAULT_FONT_SIZE = 10;
+ private final static int FONT_SIZE_STEP = 2;
public Integer[] color;
public HostBean host;
- private AbsTransport transport;
+ /* package */ AbsTransport transport;
final Paint defaultPaint;
private TerminalView parent = null;
private final Canvas canvas = new Canvas();
- private int metaState = 0;
-
- public final static int META_CTRL_ON = 0x01;
- public final static int META_CTRL_LOCK = 0x02;
- public final static int META_ALT_ON = 0x04;
- public final static int META_ALT_LOCK = 0x08;
- public final static int META_SHIFT_ON = 0x10;
- public final static int META_SHIFT_LOCK = 0x20;
- public final static int META_SLASH = 0x40;
- public final static int META_TAB = 0x80;
-
- // The bit mask of momentary and lock states for each
- public final static int META_CTRL_MASK = META_CTRL_ON | META_CTRL_LOCK;
- public final static int META_ALT_MASK = META_ALT_ON | META_ALT_LOCK;
- public final static int META_SHIFT_MASK = META_SHIFT_ON | META_SHIFT_LOCK;
-
- // All the transient key codes
- public final static int META_TRANSIENT = META_CTRL_ON | META_ALT_ON
- | META_SHIFT_ON;
-
private boolean disconnected = false;
private boolean awaitingClose = false;
private int columns;
private int rows;
- private String keymode = null;
-
- private boolean hardKeyboard = false;
+ /* package */ final TerminalKeyListener keyListener;
private boolean selectingForCopy = false;
private final SelectionArea selectionArea;
private ClipboardManager clipboard;
- protected KeyCharacterMap keymap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
-
public int charWidth = -1;
public int charHeight = -1;
private int charTop = -1;
fontSizeChangedListeners = new LinkedList<FontSizeChangedListener>();
transport = null;
+
+ keyListener = new TerminalKeyListener(manager, this, buffer, null);
}
/**
* and password authentication.
*/
public TerminalBridge(final TerminalManager manager, final HostBean host) throws IOException {
-
this.manager = manager;
this.host = host;
selectionArea = new SelectionArea();
- hardKeyboard = (manager.res.getConfiguration().keyboard
- == Configuration.KEYBOARD_QWERTY);
+ keyListener = new TerminalKeyListener(manager, this, buffer, host.getEncoding());
}
public PromptHelper getPromptHelper() {
public void setCharset(String encoding) {
if (relay != null)
relay.setCharset(encoding);
+ keyListener.setCharset(encoding);
}
/**
if (disconnectListener != null)
disconnectListener.onDisconnected(TerminalBridge.this);
} else {
+ {
+ final String line = manager.res.getString(R.string.alert_disconnect_msg);
+ ((vt320) buffer).putString("\r\n" + line + "\r\n");
+ }
if (host.getStayConnected()) {
- startConnection();
+ manager.requestReconnect(this);
return;
}
Thread disconnectPromptThread = new Thread(new Runnable() {
}
}
- public void refreshKeymode() {
- keymode = manager.getKeyMode();
- }
-
- /**
- * Handle onKey() events coming down from a {@link TerminalView} above us.
- * Modify the keys to make more sense to a host then pass it to the transport.
- */
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- try {
-
- boolean hardKeyboardHidden =
- manager.res.getConfiguration().hardKeyboardHidden ==
- Configuration.HARDKEYBOARDHIDDEN_YES;
-
- // Ignore all key-up events except for the special keys
- if (event.getAction() == KeyEvent.ACTION_UP) {
- // There's nothing here for virtual keyboard users.
- if (!hardKeyboard || (hardKeyboard && hardKeyboardHidden))
- return false;
-
- // skip keys if we aren't connected yet or have been disconnected
- if (disconnected || transport == null)
- return false;
-
- if (PreferenceConstants.KEYMODE_RIGHT.equals(keymode)) {
- if (keyCode == KeyEvent.KEYCODE_ALT_RIGHT
- && (metaState & META_SLASH) != 0) {
- metaState &= ~(META_SLASH | META_TRANSIENT);
- transport.write('/');
- return true;
- } else if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT
- && (metaState & META_TAB) != 0) {
- metaState &= ~(META_TAB | META_TRANSIENT);
- transport.write(0x09);
- return true;
- }
- } else if (PreferenceConstants.KEYMODE_LEFT.equals(keymode)) {
- if (keyCode == KeyEvent.KEYCODE_ALT_LEFT
- && (metaState & META_SLASH) != 0) {
- metaState &= ~(META_SLASH | META_TRANSIENT);
- transport.write('/');
- return true;
- } else if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT
- && (metaState & META_TAB) != 0) {
- metaState &= ~(META_TAB | META_TRANSIENT);
- transport.write(0x09);
- return true;
- }
- }
-
- return false;
- }
-
- // check for terminal resizing keys
- if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
- forcedSize = false;
- setFontSize(fontSize + 2);
- return true;
- } else if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
- forcedSize = false;
- setFontSize(fontSize - 2);
- return true;
- }
-
- // skip keys if we aren't connected yet or have been disconnected
- if (disconnected || transport == null)
- return false;
-
- // if we're in scrollback, scroll to bottom of window on input
- if (buffer.windowBase != buffer.screenBase)
- buffer.setWindowBase(buffer.screenBase);
-
- boolean printing = (keymap.isPrintingKey(keyCode) || keyCode == KeyEvent.KEYCODE_SPACE);
-
- // otherwise pass through to existing session
- // print normal keys
- if (printing) {
- int curMetaState = event.getMetaState();
-
- metaState &= ~(META_SLASH | META_TAB);
-
- if ((metaState & META_SHIFT_MASK) != 0) {
- curMetaState |= KeyEvent.META_SHIFT_ON;
- metaState &= ~META_SHIFT_ON;
- redraw();
- }
-
- if ((metaState & META_ALT_MASK) != 0) {
- curMetaState |= KeyEvent.META_ALT_ON;
- metaState &= ~META_ALT_ON;
- redraw();
- }
-
- int key = keymap.get(keyCode, curMetaState);
-
- if ((metaState & META_CTRL_MASK) != 0) {
- metaState &= ~META_CTRL_ON;
- redraw();
-
- if ((!hardKeyboard || (hardKeyboard && hardKeyboardHidden))
- && sendFunctionKey(keyCode))
- return true;
-
- // Support CTRL-a through CTRL-z
- if (key >= 0x61 && key <= 0x7A)
- key -= 0x60;
- // Support CTRL-A through CTRL-_
- else if (key >= 0x41 && key <= 0x5F)
- key -= 0x40;
- else if (key == 0x20)
- key = 0x00;
- else if (key == 0x3F)
- key = 0x7F;
- }
-
- // handle pressing f-keys
- if ((hardKeyboard && !hardKeyboardHidden)
- && (curMetaState & KeyEvent.META_SHIFT_ON) != 0
- && sendFunctionKey(keyCode))
- return true;
-
- if (key < 0x80)
- transport.write(key);
- else
- // TODO write encoding routine that doesn't allocate each time
- transport.write(new String(Character.toChars(key))
- .getBytes(host.getEncoding()));
-
- return true;
- }
-
- if (keyCode == KeyEvent.KEYCODE_UNKNOWN &&
- event.getAction() == KeyEvent.ACTION_MULTIPLE) {
- byte[] input = event.getCharacters().getBytes(host.getEncoding());
- transport.write(input);
- return true;
- }
-
- // try handling keymode shortcuts
- if (hardKeyboard && !hardKeyboardHidden &&
- event.getRepeatCount() == 0) {
- if (PreferenceConstants.KEYMODE_RIGHT.equals(keymode)) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_ALT_RIGHT:
- metaState |= META_SLASH;
- return true;
- case KeyEvent.KEYCODE_SHIFT_RIGHT:
- metaState |= META_TAB;
- return true;
- case KeyEvent.KEYCODE_SHIFT_LEFT:
- metaPress(META_SHIFT_ON);
- return true;
- case KeyEvent.KEYCODE_ALT_LEFT:
- metaPress(META_ALT_ON);
- return true;
- }
- } else if (PreferenceConstants.KEYMODE_LEFT.equals(keymode)) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_ALT_LEFT:
- metaState |= META_SLASH;
- return true;
- case KeyEvent.KEYCODE_SHIFT_LEFT:
- metaState |= META_TAB;
- return true;
- case KeyEvent.KEYCODE_SHIFT_RIGHT:
- metaPress(META_SHIFT_ON);
- return true;
- case KeyEvent.KEYCODE_ALT_RIGHT:
- metaPress(META_ALT_ON);
- return true;
- }
- } else {
- switch (keyCode) {
- case KeyEvent.KEYCODE_ALT_LEFT:
- case KeyEvent.KEYCODE_ALT_RIGHT:
- metaPress(META_ALT_ON);
- return true;
- case KeyEvent.KEYCODE_SHIFT_LEFT:
- case KeyEvent.KEYCODE_SHIFT_RIGHT:
- metaPress(META_SHIFT_ON);
- return true;
- }
- }
- }
-
- // look for special chars
- switch(keyCode) {
- case KeyEvent.KEYCODE_CAMERA:
-
- // check to see which shortcut the camera button triggers
- String camera = manager.prefs.getString(
- PreferenceConstants.CAMERA,
- PreferenceConstants.CAMERA_CTRLA_SPACE);
- if(PreferenceConstants.CAMERA_CTRLA_SPACE.equals(camera)) {
- transport.write(0x01);
- transport.write(' ');
- } else if(PreferenceConstants.CAMERA_CTRLA.equals(camera)) {
- transport.write(0x01);
- } else if(PreferenceConstants.CAMERA_ESC.equals(camera)) {
- ((vt320)buffer).keyTyped(vt320.KEY_ESCAPE, ' ', 0);
- }
-
- break;
-
- case KeyEvent.KEYCODE_DEL:
- ((vt320) buffer).keyPressed(vt320.KEY_BACK_SPACE, ' ',
- getStateForBuffer());
- metaState &= ~META_TRANSIENT;
- return true;
- case KeyEvent.KEYCODE_ENTER:
- ((vt320)buffer).keyTyped(vt320.KEY_ENTER, ' ', 0);
- metaState &= ~META_TRANSIENT;
- return true;
-
- case KeyEvent.KEYCODE_DPAD_LEFT:
- if (selectingForCopy) {
- selectionArea.decrementColumn();
- redraw();
- } else {
- ((vt320) buffer).keyPressed(vt320.KEY_LEFT, ' ',
- getStateForBuffer());
- metaState &= ~META_TRANSIENT;
- tryKeyVibrate();
- }
- return true;
-
- case KeyEvent.KEYCODE_DPAD_UP:
- if (selectingForCopy) {
- selectionArea.decrementRow();
- redraw();
- } else {
- ((vt320) buffer).keyPressed(vt320.KEY_UP, ' ',
- getStateForBuffer());
- metaState &= ~META_TRANSIENT;
- tryKeyVibrate();
- }
- return true;
-
- case KeyEvent.KEYCODE_DPAD_DOWN:
- if (selectingForCopy) {
- selectionArea.incrementRow();
- redraw();
- } else {
- ((vt320) buffer).keyPressed(vt320.KEY_DOWN, ' ',
- getStateForBuffer());
- metaState &= ~META_TRANSIENT;
- tryKeyVibrate();
- }
- return true;
-
- case KeyEvent.KEYCODE_DPAD_RIGHT:
- if (selectingForCopy) {
- selectionArea.incrementColumn();
- redraw();
- } else {
- ((vt320) buffer).keyPressed(vt320.KEY_RIGHT, ' ',
- getStateForBuffer());
- metaState &= ~META_TRANSIENT;
- tryKeyVibrate();
- }
- return true;
-
- case KeyEvent.KEYCODE_DPAD_CENTER:
- if (selectingForCopy) {
- if (selectionArea.isSelectingOrigin())
- selectionArea.finishSelectingOrigin();
- else {
- if (parent != null && clipboard != null) {
- // copy selected area to clipboard
- String copiedText = selectionArea.copyFrom(buffer);
-
- clipboard.setText(copiedText);
- parent.notifyUser(parent.getContext().getString(
- R.string.console_copy_done,
- copiedText.length()));
-
- selectingForCopy = false;
- selectionArea.reset();
- }
- }
- } else {
- if ((metaState & META_CTRL_ON) != 0) {
- ((vt320)buffer).keyTyped(vt320.KEY_ESCAPE, ' ', 0);
- metaState &= ~META_CTRL_ON;
- } else
- metaState |= META_CTRL_ON;
- }
-
- redraw();
-
- return true;
- }
-
- } catch (IOException e) {
- Log.e(TAG, "Problem while trying to handle an onKey() event", e);
- try {
- transport.flush();
- } catch (IOException ioe) {
- Log.d(TAG, "Our transport was closed, dispatching disconnect event");
- dispatchDisconnect(false);
- }
- } catch (NullPointerException npe) {
- Log.d(TAG, "Input before connection established ignored.");
- return true;
- }
-
- return false;
- }
-
- /**
- * @param key
- * @return successful
- */
- private boolean sendFunctionKey(int keyCode) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_1:
- ((vt320) buffer).keyPressed(vt320.KEY_F1, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_2:
- ((vt320) buffer).keyPressed(vt320.KEY_F2, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_3:
- ((vt320) buffer).keyPressed(vt320.KEY_F3, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_4:
- ((vt320) buffer).keyPressed(vt320.KEY_F4, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_5:
- ((vt320) buffer).keyPressed(vt320.KEY_F5, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_6:
- ((vt320) buffer).keyPressed(vt320.KEY_F6, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_7:
- ((vt320) buffer).keyPressed(vt320.KEY_F7, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_8:
- ((vt320) buffer).keyPressed(vt320.KEY_F8, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_9:
- ((vt320) buffer).keyPressed(vt320.KEY_F9, ' ', 0);
- return true;
- case KeyEvent.KEYCODE_0:
- ((vt320) buffer).keyPressed(vt320.KEY_F10, ' ', 0);
- return true;
- default:
- return false;
- }
- }
-
- /**
- * Handle meta key presses where the key can be locked on.
- * <p>
- * 1st press: next key to have meta state<br />
- * 2nd press: meta state is locked on<br />
- * 3rd press: disable meta state
- *
- * @param code
- */
- private void metaPress(int code) {
- if ((metaState & (code << 1)) != 0) {
- metaState &= ~(code << 1);
- } else if ((metaState & code) != 0) {
- metaState &= ~code;
- metaState |= code << 1;
- } else
- metaState |= code;
- redraw();
- }
-
- public int getMetaState() {
- return metaState;
- }
-
- private int getStateForBuffer() {
- int bufferState = 0;
-
- if ((metaState & META_CTRL_MASK) != 0)
- bufferState |= vt320.KEY_CONTROL;
- if ((metaState & META_SHIFT_MASK) != 0)
- bufferState |= vt320.KEY_SHIFT;
- if ((metaState & META_ALT_MASK) != 0)
- bufferState |= vt320.KEY_ALT;
-
- return bufferState;
- }
-
public void setSelectingForCopy(boolean selectingForCopy) {
this.selectingForCopy = selectingForCopy;
}
* Request a different font size. Will make call to parentChanged() to make
* sure we resize PTY if needed.
*/
- private final void setFontSize(float size) {
+ /* package */ final void setFontSize(float size) {
if (size <= 0.0)
return;
host.setFontSize((int) fontSize);
manager.hostdb.updateFontSize(host);
+
+ forcedSize = false;
}
/**
}
this.parent = parent;
- int width = parent.getWidth();
- int height = parent.getHeight();
+ final int width = parent.getWidth();
+ final int height = parent.getHeight();
// Something has gone wrong with our layout; we're 0 width or height!
if (width <= 0 || height <= 0)
return;
clipboard = (ClipboardManager) parent.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
+ keyListener.setClipboardManager(clipboard);
if (!forcedSize) {
// recalculate buffer size
if (direction > 0)
size -= step;
- forcedSize = true;
this.columns = cols;
this.rows = rows;
setFontSize(size);
+ forcedSize = true;
}
private int fontSizeCompare(float size, int cols, int rows, int width, int height) {
return urls;
}
+
+ /**
+ * @return
+ */
+ public boolean isUsingNetwork() {
+ return transport.usesNetwork();
+ }
+
+ /**
+ * @return
+ */
+ public TerminalKeyListener getKeyHandler() {
+ return keyListener;
+ }
+
+ /**
+ *
+ */
+ public void resetScrollPosition() {
+ // if we're in scrollback, scroll to bottom of window on input
+ if (buffer.windowBase != buffer.screenBase)
+ buffer.setWindowBase(buffer.screenBase);
+ }
+
+ /**
+ *
+ */
+ public void increaseFontSize() {
+ setFontSize(fontSize + FONT_SIZE_STEP);
+ }
+
+ /**
+ *
+ */
+ public void decreaseFontSize() {
+ setFontSize(fontSize - FONT_SIZE_STEP);
+ }
}
--- /dev/null
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2010 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.connectbot.service;
+
+import java.io.IOException;
+
+import org.connectbot.TerminalView;
+import org.connectbot.bean.SelectionArea;
+import org.connectbot.util.PreferenceConstants;
+
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.content.res.Configuration;
+import android.preference.PreferenceManager;
+import android.text.ClipboardManager;
+import android.util.Log;
+import android.view.KeyCharacterMap;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnKeyListener;
+import de.mud.terminal.VDUBuffer;
+import de.mud.terminal.vt320;
+
+/**
+ * @author kenny
+ *
+ */
+public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceChangeListener {
+ private static final String TAG = "ConnectBot.OnKeyListener";
+
+ public final static int META_CTRL_ON = 0x01;
+ public final static int META_CTRL_LOCK = 0x02;
+ public final static int META_ALT_ON = 0x04;
+ public final static int META_ALT_LOCK = 0x08;
+ public final static int META_SHIFT_ON = 0x10;
+ public final static int META_SHIFT_LOCK = 0x20;
+ public final static int META_SLASH = 0x40;
+ public final static int META_TAB = 0x80;
+
+ // The bit mask of momentary and lock states for each
+ public final static int META_CTRL_MASK = META_CTRL_ON | META_CTRL_LOCK;
+ public final static int META_ALT_MASK = META_ALT_ON | META_ALT_LOCK;
+ public final static int META_SHIFT_MASK = META_SHIFT_ON | META_SHIFT_LOCK;
+
+ // All the transient key codes
+ public final static int META_TRANSIENT = META_CTRL_ON | META_ALT_ON
+ | META_SHIFT_ON;
+
+ private final TerminalManager manager;
+ private final TerminalBridge bridge;
+ private final VDUBuffer buffer;
+
+ protected KeyCharacterMap keymap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
+
+ private String keymode = null;
+ private boolean hardKeyboard = false;
+
+ private int metaState = 0;
+
+ private ClipboardManager clipboard = null;
+ private boolean selectingForCopy = false;
+ private final SelectionArea selectionArea;
+
+ private String encoding;
+
+ private final SharedPreferences prefs;
+
+ public TerminalKeyListener(TerminalManager manager,
+ TerminalBridge bridge,
+ VDUBuffer buffer,
+ String encoding) {
+ this.manager = manager;
+ this.bridge = bridge;
+ this.buffer = buffer;
+ this.encoding = encoding;
+
+ selectionArea = new SelectionArea();
+
+ prefs = PreferenceManager.getDefaultSharedPreferences(manager);
+ prefs.registerOnSharedPreferenceChangeListener(this);
+
+ hardKeyboard = (manager.res.getConfiguration().keyboard
+ == Configuration.KEYBOARD_QWERTY);
+
+ updateKeymode();
+ }
+
+ /**
+ * Handle onKey() events coming down from a {@link TerminalView} above us.
+ * Modify the keys to make more sense to a host then pass it to the transport.
+ */
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ try {
+ final boolean hardKeyboardHidden = manager.hardKeyboardHidden;
+
+ // Ignore all key-up events except for the special keys
+ if (event.getAction() == KeyEvent.ACTION_UP) {
+ // There's nothing here for virtual keyboard users.
+ if (!hardKeyboard || (hardKeyboard && hardKeyboardHidden))
+ return false;
+
+ // skip keys if we aren't connected yet or have been disconnected
+ if (bridge.isDisconnected() || bridge.transport == null)
+ return false;
+
+ if (PreferenceConstants.KEYMODE_RIGHT.equals(keymode)) {
+ if (keyCode == KeyEvent.KEYCODE_ALT_RIGHT
+ && (metaState & META_SLASH) != 0) {
+ metaState &= ~(META_SLASH | META_TRANSIENT);
+ bridge.transport.write('/');
+ return true;
+ } else if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT
+ && (metaState & META_TAB) != 0) {
+ metaState &= ~(META_TAB | META_TRANSIENT);
+ bridge.transport.write(0x09);
+ return true;
+ }
+ } else if (PreferenceConstants.KEYMODE_LEFT.equals(keymode)) {
+ if (keyCode == KeyEvent.KEYCODE_ALT_LEFT
+ && (metaState & META_SLASH) != 0) {
+ metaState &= ~(META_SLASH | META_TRANSIENT);
+ bridge.transport.write('/');
+ return true;
+ } else if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT
+ && (metaState & META_TAB) != 0) {
+ metaState &= ~(META_TAB | META_TRANSIENT);
+ bridge.transport.write(0x09);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ // check for terminal resizing keys
+ if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
+ bridge.increaseFontSize();
+ return true;
+ } else if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
+ bridge.decreaseFontSize();
+ return true;
+ }
+
+ // skip keys if we aren't connected yet or have been disconnected
+ if (bridge.isDisconnected() || bridge.transport == null)
+ return false;
+
+ bridge.resetScrollPosition();
+
+ boolean printing = (keymap.isPrintingKey(keyCode) || keyCode == KeyEvent.KEYCODE_SPACE);
+
+ // otherwise pass through to existing session
+ // print normal keys
+ if (printing) {
+ int curMetaState = event.getMetaState();
+
+ metaState &= ~(META_SLASH | META_TAB);
+
+ if ((metaState & META_SHIFT_MASK) != 0) {
+ curMetaState |= KeyEvent.META_SHIFT_ON;
+ metaState &= ~META_SHIFT_ON;
+ bridge.redraw();
+ }
+
+ if ((metaState & META_ALT_MASK) != 0) {
+ curMetaState |= KeyEvent.META_ALT_ON;
+ metaState &= ~META_ALT_ON;
+ bridge.redraw();
+ }
+
+ int key = keymap.get(keyCode, curMetaState);
+
+ if ((metaState & META_CTRL_MASK) != 0) {
+ metaState &= ~META_CTRL_ON;
+ bridge.redraw();
+
+ if ((!hardKeyboard || (hardKeyboard && hardKeyboardHidden))
+ && sendFunctionKey(keyCode))
+ return true;
+
+ // Support CTRL-a through CTRL-z
+ if (key >= 0x61 && key <= 0x7A)
+ key -= 0x60;
+ // Support CTRL-A through CTRL-_
+ else if (key >= 0x41 && key <= 0x5F)
+ key -= 0x40;
+ else if (key == 0x20)
+ key = 0x00;
+ else if (key == 0x3F)
+ key = 0x7F;
+ }
+
+ // handle pressing f-keys
+ if ((hardKeyboard && !hardKeyboardHidden)
+ && (curMetaState & KeyEvent.META_SHIFT_ON) != 0
+ && sendFunctionKey(keyCode))
+ return true;
+
+ if (key < 0x80)
+ bridge.transport.write(key);
+ else
+ // TODO write encoding routine that doesn't allocate each time
+ bridge.transport.write(new String(Character.toChars(key))
+ .getBytes(encoding));
+
+ return true;
+ }
+
+ if (keyCode == KeyEvent.KEYCODE_UNKNOWN &&
+ event.getAction() == KeyEvent.ACTION_MULTIPLE) {
+ byte[] input = event.getCharacters().getBytes(encoding);
+ bridge.transport.write(input);
+ return true;
+ }
+
+ // try handling keymode shortcuts
+ if (hardKeyboard && !hardKeyboardHidden &&
+ event.getRepeatCount() == 0) {
+ if (PreferenceConstants.KEYMODE_RIGHT.equals(keymode)) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_ALT_RIGHT:
+ metaState |= META_SLASH;
+ return true;
+ case KeyEvent.KEYCODE_SHIFT_RIGHT:
+ metaState |= META_TAB;
+ return true;
+ case KeyEvent.KEYCODE_SHIFT_LEFT:
+ metaPress(META_SHIFT_ON);
+ return true;
+ case KeyEvent.KEYCODE_ALT_LEFT:
+ metaPress(META_ALT_ON);
+ return true;
+ }
+ } else if (PreferenceConstants.KEYMODE_LEFT.equals(keymode)) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_ALT_LEFT:
+ metaState |= META_SLASH;
+ return true;
+ case KeyEvent.KEYCODE_SHIFT_LEFT:
+ metaState |= META_TAB;
+ return true;
+ case KeyEvent.KEYCODE_SHIFT_RIGHT:
+ metaPress(META_SHIFT_ON);
+ return true;
+ case KeyEvent.KEYCODE_ALT_RIGHT:
+ metaPress(META_ALT_ON);
+ return true;
+ }
+ } else {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_ALT_LEFT:
+ case KeyEvent.KEYCODE_ALT_RIGHT:
+ metaPress(META_ALT_ON);
+ return true;
+ case KeyEvent.KEYCODE_SHIFT_LEFT:
+ case KeyEvent.KEYCODE_SHIFT_RIGHT:
+ metaPress(META_SHIFT_ON);
+ return true;
+ }
+ }
+ }
+
+ // look for special chars
+ switch(keyCode) {
+ case KeyEvent.KEYCODE_CAMERA:
+
+ // check to see which shortcut the camera button triggers
+ String camera = manager.prefs.getString(
+ PreferenceConstants.CAMERA,
+ PreferenceConstants.CAMERA_CTRLA_SPACE);
+ if(PreferenceConstants.CAMERA_CTRLA_SPACE.equals(camera)) {
+ bridge.transport.write(0x01);
+ bridge.transport.write(' ');
+ } else if(PreferenceConstants.CAMERA_CTRLA.equals(camera)) {
+ bridge.transport.write(0x01);
+ } else if(PreferenceConstants.CAMERA_ESC.equals(camera)) {
+ ((vt320)buffer).keyTyped(vt320.KEY_ESCAPE, ' ', 0);
+ } else if(PreferenceConstants.CAMERA_ESC_A.equals(camera)) {
+ ((vt320)buffer).keyTyped(vt320.KEY_ESCAPE, ' ', 0);
+ bridge.transport.write('a');
+ }
+
+ break;
+
+ case KeyEvent.KEYCODE_DEL:
+ ((vt320) buffer).keyPressed(vt320.KEY_BACK_SPACE, ' ',
+ getStateForBuffer());
+ metaState &= ~META_TRANSIENT;
+ return true;
+ case KeyEvent.KEYCODE_ENTER:
+ ((vt320)buffer).keyTyped(vt320.KEY_ENTER, ' ', 0);
+ metaState &= ~META_TRANSIENT;
+ return true;
+
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ if (selectingForCopy) {
+ selectionArea.decrementColumn();
+ bridge.redraw();
+ } else {
+ ((vt320) buffer).keyPressed(vt320.KEY_LEFT, ' ',
+ getStateForBuffer());
+ metaState &= ~META_TRANSIENT;
+ bridge.tryKeyVibrate();
+ }
+ return true;
+
+ case KeyEvent.KEYCODE_DPAD_UP:
+ if (selectingForCopy) {
+ selectionArea.decrementRow();
+ bridge.redraw();
+ } else {
+ ((vt320) buffer).keyPressed(vt320.KEY_UP, ' ',
+ getStateForBuffer());
+ metaState &= ~META_TRANSIENT;
+ bridge.tryKeyVibrate();
+ }
+ return true;
+
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ if (selectingForCopy) {
+ selectionArea.incrementRow();
+ bridge.redraw();
+ } else {
+ ((vt320) buffer).keyPressed(vt320.KEY_DOWN, ' ',
+ getStateForBuffer());
+ metaState &= ~META_TRANSIENT;
+ bridge.tryKeyVibrate();
+ }
+ return true;
+
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ if (selectingForCopy) {
+ selectionArea.incrementColumn();
+ bridge.redraw();
+ } else {
+ ((vt320) buffer).keyPressed(vt320.KEY_RIGHT, ' ',
+ getStateForBuffer());
+ metaState &= ~META_TRANSIENT;
+ bridge.tryKeyVibrate();
+ }
+ return true;
+
+ case KeyEvent.KEYCODE_DPAD_CENTER:
+ if (selectingForCopy) {
+ if (selectionArea.isSelectingOrigin())
+ selectionArea.finishSelectingOrigin();
+ else {
+ if (clipboard != null) {
+ // copy selected area to clipboard
+ String copiedText = selectionArea.copyFrom(buffer);
+
+ clipboard.setText(copiedText);
+ // XXX STOPSHIP
+// manager.notifyUser(manager.getString(
+// R.string.console_copy_done,
+// copiedText.length()));
+
+ selectingForCopy = false;
+ selectionArea.reset();
+ }
+ }
+ } else {
+ if ((metaState & META_CTRL_ON) != 0) {
+ ((vt320)buffer).keyTyped(vt320.KEY_ESCAPE, ' ', 0);
+ metaState &= ~META_CTRL_ON;
+ } else
+ metaState |= META_CTRL_ON;
+ }
+
+ bridge.redraw();
+
+ return true;
+ }
+
+ } catch (IOException e) {
+ Log.e(TAG, "Problem while trying to handle an onKey() event", e);
+ try {
+ bridge.transport.flush();
+ } catch (IOException ioe) {
+ Log.d(TAG, "Our transport was closed, dispatching disconnect event");
+ bridge.dispatchDisconnect(false);
+ }
+ } catch (NullPointerException npe) {
+ Log.d(TAG, "Input before connection established ignored.");
+ return true;
+ }
+
+ return false;
+ }
+
+
+ /**
+ * @param key
+ * @return successful
+ */
+ private boolean sendFunctionKey(int keyCode) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_1:
+ ((vt320) buffer).keyPressed(vt320.KEY_F1, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_2:
+ ((vt320) buffer).keyPressed(vt320.KEY_F2, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_3:
+ ((vt320) buffer).keyPressed(vt320.KEY_F3, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_4:
+ ((vt320) buffer).keyPressed(vt320.KEY_F4, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_5:
+ ((vt320) buffer).keyPressed(vt320.KEY_F5, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_6:
+ ((vt320) buffer).keyPressed(vt320.KEY_F6, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_7:
+ ((vt320) buffer).keyPressed(vt320.KEY_F7, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_8:
+ ((vt320) buffer).keyPressed(vt320.KEY_F8, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_9:
+ ((vt320) buffer).keyPressed(vt320.KEY_F9, ' ', 0);
+ return true;
+ case KeyEvent.KEYCODE_0:
+ ((vt320) buffer).keyPressed(vt320.KEY_F10, ' ', 0);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Handle meta key presses where the key can be locked on.
+ * <p>
+ * 1st press: next key to have meta state<br />
+ * 2nd press: meta state is locked on<br />
+ * 3rd press: disable meta state
+ *
+ * @param code
+ */
+ private void metaPress(int code) {
+ if ((metaState & (code << 1)) != 0) {
+ metaState &= ~(code << 1);
+ } else if ((metaState & code) != 0) {
+ metaState &= ~code;
+ metaState |= code << 1;
+ } else
+ metaState |= code;
+ bridge.redraw();
+ }
+
+ public void setTerminalKeyMode(String keymode) {
+ this.keymode = keymode;
+ }
+
+ private int getStateForBuffer() {
+ int bufferState = 0;
+
+ if ((metaState & META_CTRL_MASK) != 0)
+ bufferState |= vt320.KEY_CONTROL;
+ if ((metaState & META_SHIFT_MASK) != 0)
+ bufferState |= vt320.KEY_SHIFT;
+ if ((metaState & META_ALT_MASK) != 0)
+ bufferState |= vt320.KEY_ALT;
+
+ return bufferState;
+ }
+
+ public int getMetaState() {
+ return metaState;
+ }
+
+ public void setClipboardManager(ClipboardManager clipboard) {
+ this.clipboard = clipboard;
+ }
+
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+ String key) {
+ if (PreferenceConstants.KEYMODE.equals(key)) {
+ updateKeymode();
+ }
+ }
+
+ private void updateKeymode() {
+ keymode = prefs.getString(PreferenceConstants.KEYMODE, PreferenceConstants.KEYMODE_RIGHT);
+ }
+
+ public void setCharset(String encoding) {
+ this.encoding = encoding;
+ }
+}
package org.connectbot.service;
import java.io.IOException;
+import java.lang.ref.WeakReference;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Arrays;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.AssetFileDescriptor;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
import android.net.Uri;
-import android.net.wifi.WifiManager;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
public final static String TAG = "ConnectBot.TerminalManager";
public List<TerminalBridge> bridges = new LinkedList<TerminalBridge>();
+ public Map<HostBean, WeakReference<TerminalBridge>> mHostBridgeMap =
+ new HashMap<HostBean, WeakReference<TerminalBridge>>();
+ public Map<String, WeakReference<TerminalBridge>> mNicknameBridgeMap =
+ new HashMap<String, WeakReference<TerminalBridge>>();
+
public TerminalBridge defaultBridge = null;
public List<HostBean> disconnected = new LinkedList<HostBean>();
protected SharedPreferences prefs;
- private final IBinder binder = new TerminalBinder();
+ final private IBinder binder = new TerminalBinder();
- private ConnectivityManager connectivityManager;
- private WifiManager.WifiLock wifilock;
+ private ConnectivityReceiver connectivityManager;
private MediaPlayer mediaPlayer;
private boolean resizeAllowed = true;
+ private boolean savingKeys;
+
+ protected List<WeakReference<TerminalBridge>> mPendingReconnect
+ = new LinkedList<WeakReference<TerminalBridge>>();
+
+ public boolean hardKeyboardHidden;
+
@Override
public void onCreate() {
Log.i(TAG, "Starting background service");
}
}
- connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-
- WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
- wifilock = manager.createWifiLock(TAG);
-
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
wantKeyVibration = prefs.getBoolean(PreferenceConstants.BUMPY_ARROWS, true);
wantBellVibration = prefs.getBoolean(PreferenceConstants.BELL_VIBRATE, true);
enableMediaPlayer();
+
+ hardKeyboardHidden = (res.getConfiguration().hardKeyboardHidden ==
+ Configuration.HARDKEYBOARDHIDDEN_YES);
+
+ final boolean lockingWifi = prefs.getBoolean(PreferenceConstants.WIFI_LOCK, true);
+
+ connectivityManager = new ConnectivityReceiver(this, lockingWifi);
+
+ updateSavingKeys();
+ }
+
+ private void updateSavingKeys() {
+ savingKeys = prefs.getBoolean(PreferenceConstants.MEMKEYS, true);
}
@Override
public void onDestroy() {
Log.i(TAG, "Destroying background service");
- if (bridges.size() > 0) {
- TerminalBridge[] tmpBridges = bridges.toArray(new TerminalBridge[bridges.size()]);
-
- // disconnect and dispose of any existing bridges
- for (int i = 0; i < tmpBridges.length; i++)
- tmpBridges[i].dispatchDisconnect(true);
- }
+ disconnectAll(true);
if(hostdb != null) {
hostdb.close();
pubkeyTimer.cancel();
}
- if (wifilock != null && wifilock.isHeld())
- wifilock.release();
+ connectivityManager.cleanup();
ConnectionNotifier.getInstance().hideRunningNotification(this);
}
/**
+ * Disconnect all currently connected bridges.
+ */
+ private void disconnectAll(final boolean immediate) {
+ TerminalBridge[] tmpBridges = null;
+
+ synchronized (bridges) {
+ if (bridges.size() > 0) {
+ tmpBridges = bridges.toArray(new TerminalBridge[bridges.size()]);
+ }
+ }
+
+ if (tmpBridges != null) {
+ // disconnect and dispose of any existing bridges
+ for (int i = 0; i < tmpBridges.length; i++)
+ tmpBridges[i].dispatchDisconnect(immediate);
+ }
+ }
+
+ /**
* Open a new SSH session using the given parameters.
*/
- private void openConnection(HostBean host) throws IllegalArgumentException, IOException {
+ private TerminalBridge openConnection(HostBean host) throws IllegalArgumentException, IOException {
// throw exception if terminal already open
- if (findBridge(host) != null) {
+ if (getConnectedBridge(host) != null) {
throw new IllegalArgumentException("Connection already open for that nickname");
}
TerminalBridge bridge = new TerminalBridge(this, host);
bridge.setOnDisconnectedListener(this);
bridge.startConnection();
- bridges.add(bridge);
- // Add a reference to the WifiLock
- NetworkInfo info = connectivityManager.getActiveNetworkInfo();
- if (isLockingWifi() &&
- info != null &&
- info.getType() == ConnectivityManager.TYPE_WIFI) {
- Log.d(TAG, "Acquiring WifiLock");
- wifilock.acquire();
+ synchronized (bridges) {
+ bridges.add(bridge);
+ WeakReference<TerminalBridge> wr = new WeakReference<TerminalBridge>(bridge);
+ mHostBridgeMap.put(bridge.host, wr);
+ mNicknameBridgeMap.put(bridge.host.getNickname(), wr);
+ }
+
+ synchronized (disconnected) {
+ disconnected.remove(bridge.host);
+ }
+
+ if (bridge.isUsingNetwork()) {
+ connectivityManager.incRef();
+ }
+
+ if (prefs.getBoolean(PreferenceConstants.CONNECTION_PERSIST, true)) {
+ ConnectionNotifier.getInstance().showRunningNotification(this);
}
// also update database with new connected time
touchHost(host);
+
+ return bridge;
}
public String getEmulation() {
return scrollback;
}
- public boolean isSavingKeys() {
- return prefs.getBoolean(PreferenceConstants.MEMKEYS, true);
- }
-
- public String getKeyMode() {
- return prefs.getString(PreferenceConstants.KEYMODE, PreferenceConstants.KEYMODE_RIGHT); // "Use right-side keys"
- }
-
- public boolean isLockingWifi() {
- return prefs.getBoolean(PreferenceConstants.WIFI_LOCK, true);
- }
-
/**
* Open a new connection by reading parameters from the given URI. Follows
* format specified by an individual transport.
*/
- public void openConnection(Uri uri) throws Exception {
+ public TerminalBridge openConnection(Uri uri) throws Exception {
HostBean host = TransportFactory.findHost(hostdb, uri);
if (host == null)
host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
- openConnection(host);
+ return openConnection(host);
}
/**
}
/**
- * Find the {@link TerminalBridge} with the given nickname.
+ * Find a connected {@link TerminalBridge} with the given HostBean.
+ *
+ * @param host the HostBean to search for
+ * @return TerminalBridge that uses the HostBean
*/
- public TerminalBridge findBridge(HostBean host) {
- // find the first active bridge with given nickname
- for(TerminalBridge bridge : bridges) {
- if (bridge.host.equals(host))
- return bridge;
+ public TerminalBridge getConnectedBridge(HostBean host) {
+ WeakReference<TerminalBridge> wr = mHostBridgeMap.get(host);
+ if (wr != null) {
+ return wr.get();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Find a connected {@link TerminalBridge} using its nickname.
+ *
+ * @param nickname
+ * @return TerminalBridge that matches nickname
+ */
+ public TerminalBridge getConnectedBridge(final String nickname) {
+ if (nickname == null) {
+ return null;
+ }
+ WeakReference<TerminalBridge> wr = mNicknameBridgeMap.get(nickname);
+ if (wr != null) {
+ return wr.get();
+ } else {
+ return null;
}
- return null;
}
/**
* Called by child bridge when somehow it's been disconnected.
*/
public void onDisconnected(TerminalBridge bridge) {
- // remove this bridge from our list
- bridges.remove(bridge);
+ boolean shouldHideRunningNotification = false;
+
+ synchronized (bridges) {
+ // remove this bridge from our list
+ bridges.remove(bridge);
+
+ mHostBridgeMap.remove(bridge.host);
+ mNicknameBridgeMap.remove(bridge.host.getNickname());
+
+ if (bridge.isUsingNetwork()) {
+ connectivityManager.decRef();
+ }
+
+ if (bridges.size() == 0 &&
+ mPendingReconnect.size() == 0) {
+ shouldHideRunningNotification = true;
+ }
+ }
- if (bridges.size() == 0 && wifilock.isHeld()) {
- Log.d(TAG, "WifiLock was held, releasing");
- wifilock.release();
+ synchronized (disconnected) {
+ disconnected.add(bridge.host);
}
- disconnected.add(bridge.host);
+ if (shouldHideRunningNotification) {
+ ConnectionNotifier.getInstance().hideRunningNotification(this);
+ }
// pass notification back up to gui
if (disconnectHandler != null)
Message.obtain(disconnectHandler, -1, bridge).sendToTarget();
-
}
public boolean isKeyLoaded(String nickname) {
}
public void addKey(PubkeyBean pubkey, Object trileadKey) {
+ if (!savingKeys)
+ return;
+
removeKey(pubkey.getNickname());
byte[] sshPubKey = PubkeyUtils.extractOpenSSHPublic(trileadKey);
setResizeAllowed(true);
- ConnectionNotifier.getInstance().hideRunningNotification(this);
-
stopIdleTimer();
// Make sure we stay running to maintain the bridges
setResizeAllowed(true);
- ConnectionNotifier.getInstance().hideRunningNotification(this);
-
Log.i(TAG, "Someone rebound to TerminalManager");
stopIdleTimer();
if (bridges.size() == 0) {
stopWithDelay();
- } else {
- /* If user wants the connections to stay alive at all costs,
- * set the service to be "foreground."
- */
- if (prefs.getBoolean(PreferenceConstants.CONNECTION_PERSIST, true)) {
- ConnectionNotifier.getInstance().showRunningNotification(this);
- }
}
return true;
vibrate();
}
- class BeepListener implements OnCompletionListener {
+ private static class BeepListener implements OnCompletionListener {
public void onCompletion(MediaPlayer mp) {
mp.seekTo(0);
}
} else if (PreferenceConstants.BUMPY_ARROWS.equals(key)) {
wantKeyVibration = sharedPreferences.getBoolean(
PreferenceConstants.BUMPY_ARROWS, true);
+ } else if (PreferenceConstants.WIFI_LOCK.equals(key)) {
+ final boolean lockingWifi = prefs.getBoolean(PreferenceConstants.WIFI_LOCK, true);
+ connectivityManager.setWantWifiLock(lockingWifi);
+ } else if (PreferenceConstants.MEMKEYS.equals(key)) {
+ updateSavingKeys();
}
}
return resizeAllowed;
}
- public class KeyHolder {
+ public static class KeyHolder {
public PubkeyBean bean;
public Object trileadKey;
public byte[] openSSHPubkey;
}
+
+ /**
+ * Called when connectivity to the network is lost and it doesn't appear
+ * we'll be getting a different connection any time soon.
+ */
+ public void onConnectivityLost() {
+ final Thread t = new Thread() {
+ @Override
+ public void run() {
+ disconnectAll(false);
+ }
+ };
+ t.setName("Disconnector");
+ t.start();
+ }
+
+ /**
+ * Called when connectivity to the network is restored.
+ */
+ public void onConnectivityRestored() {
+ final Thread t = new Thread() {
+ @Override
+ public void run() {
+ reconnectPending();
+ }
+ };
+ t.setName("Reconnector");
+ t.start();
+ }
+
+ /**
+ * Insert request into reconnect queue to be executed either immediately
+ * or later when connectivity is restored depending on whether we're
+ * currently connected.
+ *
+ * @param bridge the TerminalBridge to reconnect when possible
+ */
+ public void requestReconnect(TerminalBridge bridge) {
+ synchronized (mPendingReconnect) {
+ mPendingReconnect.add(new WeakReference<TerminalBridge>(bridge));
+ if (!bridge.isUsingNetwork() ||
+ connectivityManager.isConnected()) {
+ reconnectPending();
+ }
+ }
+ }
+
+ /**
+ * Reconnect all bridges that were pending a reconnect when connectivity
+ * was lost.
+ */
+ private void reconnectPending() {
+ synchronized (mPendingReconnect) {
+ for (WeakReference<TerminalBridge> ref : mPendingReconnect) {
+ TerminalBridge bridge = ref.get();
+ if (bridge == null) {
+ continue;
+ }
+ bridge.startConnection();
+ }
+ mPendingReconnect.clear();
+ }
+ }
}
public static String getFormatHint(Context context) {
return "???";
}
+
+ /**
+ * @return
+ */
+ public abstract boolean usesNetwork();
}
public static String getFormatHint(Context context) {
return context.getString(R.string.hostpref_nickname_title);
}
+
+ /* (non-Javadoc)
+ * @see org.connectbot.transport.AbsTransport#usesNetwork()
+ */
+ @Override
+ public boolean usesNetwork() {
+ return false;
+ }
}
Log.d(TAG, String.format("Found unlocked key '%s' already in-memory", pubkey.getNickname()));
if (pubkey.isConfirmUse()) {
- if (promptForPubkeyUse(pubkey.getNickname()))
+ if (!promptForPubkeyUse(pubkey.getNickname()))
return false;
}
Log.d(TAG, String.format("Unlocked key '%s'", pubkey.getNickname()));
- // save this key in-memory if option enabled
- if(manager.isSavingKeys()) {
- manager.addKey(pubkey, trileadKey);
- }
+ // save this key in memory
+ manager.addKey(pubkey, trileadKey);
}
return tryPublicKey(host.getUsername(), pubkey.getNickname(), trileadKey);
agentLockPassphrase = lockPassphrase;
return true;
}
+
+ /* (non-Javadoc)
+ * @see org.connectbot.transport.AbsTransport#usesNetwork()
+ */
+ @Override
+ public boolean usesNetwork() {
+ return true;
+ }
}
context.getString(R.string.format_hostname),
context.getString(R.string.format_port));
}
+
+ /* (non-Javadoc)
+ * @see org.connectbot.transport.AbsTransport#usesNetwork()
+ */
+ @Override
+ public boolean usesNetwork() {
+ return true;
+ }
}
addIndexName(TABLE_COLOR_DEFAULTS + FIELD_COLOR_SCHEME + "index");
}
- private Object dbLock;
+ public static final Object[] dbLock = new Object[0];
public HostDatabase(Context context) {
super(context, DB_NAME, null, DB_VERSION);
getWritableDatabase().close();
-
- dbLock = new Object();
}
@Override
--- /dev/null
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2010 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.connectbot.util;
+
+/**
+ * @author kroot
+ *
+ */
+public interface OnDbWrittenListener {
+ public void onDbWritten();
+}
*/
public class PreferenceConstants {
public static final boolean PRE_ECLAIR = (Integer.parseInt(Build.VERSION.SDK) <= 4);
+ public static final boolean PRE_FROYO = PRE_ECLAIR ? true :
+ (Build.VERSION.SDK_INT <= 7);
public static final String MEMKEYS = "memkeys";
public static final String UPDATE = "update";
public static final String CAMERA_CTRLA_SPACE = "Ctrl+A then Space";
public static final String CAMERA_CTRLA = "Ctrl+A";
public static final String CAMERA_ESC = "Esc";
+ public static final String CAMERA_ESC_A = "Esc+A";
public static final String KEEP_ALIVE = "keepalive";
public static final float DEFAULT_BELL_VOLUME = 0.25f;
public static final String CONNECTION_PERSIST = "connPersist";
+
+ /* Backup identifiers */
+ public static final String BACKUP_PREF_KEY = "prefs";
}
}
/**
- * Convert a slider position in the range [0,PALETTE_DIM] to a byte value in the range [0,255].
- * @param sliderPos in the range [0,PALETTE_DIM].
- * @return
- */
- public int sliderPosTo255(int sliderPos) {
- int int255 = (int)(255.0f * ((float)sliderPos / (float)PALETTE_DIM));
- int255 = pinToByte(int255);
- return int255;
- }
-
- /**
* Wrap Math.round(). I'm not a Java expert. Is this the only way to avoid writing "(int)Math.round" everywhere?
* @param x
* @return
}
/**
- * Limit a value to a min and max range.
- * @param n
- * @return
- */
- private int pinToByte(int n) {
- if (n < 0) {
- n = 0;
- } else if (n > 255) {
- n = 255;
- }
- return n;
- }
-
- /**
* Limit a value to the range [0,1].
* @param n
* @return