diff options
-rw-r--r-- | onionshare/web/web.py | 9 | ||||
-rw-r--r-- | onionshare_gui/mode/__init__.py | 6 | ||||
-rw-r--r-- | onionshare_gui/mode/history.py | 83 | ||||
-rw-r--r-- | onionshare_gui/mode/receive_mode/__init__.py | 27 | ||||
-rw-r--r-- | onionshare_gui/mode/share_mode/__init__.py | 24 | ||||
-rw-r--r-- | onionshare_gui/onionshare_gui.py | 3 | ||||
-rw-r--r-- | share/images/receive_icon.png (renamed from share/images/downloads.png) | bin | 2120 -> 2120 bytes | |||
-rw-r--r-- | share/images/receive_icon_toggle.png (renamed from share/images/downloads_toggle.png) | bin | 380 -> 380 bytes | |||
-rw-r--r-- | share/images/receive_icon_toggle_selected.png (renamed from share/images/downloads_toggle_selected.png) | bin | 468 -> 468 bytes | |||
-rw-r--r-- | share/images/receive_icon_transparent.png (renamed from share/images/downloads_transparent.png) | bin | 2138 -> 2138 bytes | |||
-rw-r--r-- | share/images/share_icon.png (renamed from share/images/uploads.png) | bin | 2076 -> 2076 bytes | |||
-rw-r--r-- | share/images/share_icon_toggle.png (renamed from share/images/uploads_toggle.png) | bin | 389 -> 389 bytes | |||
-rw-r--r-- | share/images/share_icon_toggle_selected.png (renamed from share/images/uploads_toggle_selected.png) | bin | 473 -> 473 bytes | |||
-rw-r--r-- | share/images/share_icon_transparent.png (renamed from share/images/uploads_transparent.png) | bin | 2096 -> 2096 bytes | |||
-rw-r--r-- | share/locale/en.json | 61 |
15 files changed, 100 insertions, 113 deletions
diff --git a/onionshare/web/web.py b/onionshare/web/web.py index 0f156941..df838df7 100644 --- a/onionshare/web/web.py +++ b/onionshare/web/web.py @@ -35,11 +35,10 @@ class Web(object): REQUEST_OTHER = 3 REQUEST_CANCELED = 4 REQUEST_RATE_LIMIT = 5 - REQUEST_CLOSE_SERVER = 6 - REQUEST_UPLOAD_FILE_RENAMED = 7 - REQUEST_UPLOAD_SET_DIR = 8 - REQUEST_UPLOAD_FINISHED = 9 - REQUEST_ERROR_DOWNLOADS_DIR_CANNOT_CREATE = 10 + REQUEST_UPLOAD_FILE_RENAMED = 6 + REQUEST_UPLOAD_SET_DIR = 7 + REQUEST_UPLOAD_FINISHED = 8 + REQUEST_ERROR_DOWNLOADS_DIR_CANNOT_CREATE = 9 def __init__(self, common, is_gui, mode='share'): self.common = common diff --git a/onionshare_gui/mode/__init__.py b/onionshare_gui/mode/__init__.py index 5110289f..edc1777d 100644 --- a/onionshare_gui/mode/__init__.py +++ b/onionshare_gui/mode/__init__.py @@ -312,12 +312,6 @@ class Mode(QtWidgets.QWidget): """ pass - def handle_request_close_server(self, event): - """ - Handle REQUEST_CLOSE_SERVER event. - """ - pass - def handle_request_upload_file_renamed(self, event): """ Handle REQUEST_UPLOAD_FILE_RENAMED event. diff --git a/onionshare_gui/mode/history.py b/onionshare_gui/mode/history.py index e72a3838..bb419ec7 100644 --- a/onionshare_gui/mode/history.py +++ b/onionshare_gui/mode/history.py @@ -40,13 +40,36 @@ class HistoryItem(QtWidgets.QWidget): def cancel(self): pass + def get_finished_label_text(self, started): + """ + When an item finishes, returns a string displaying the start/end datetime range. + started is a datetime object. + """ + ended = datetime.now() + if started.year == ended.year and started.month == ended.month and started.day == ended.day: + if started.hour == ended.hour and started.minute == ended.minute: + text = strings._('gui_all_modes_transfer_finished').format( + started.strftime("%b %d, %I:%M%p") + ) + else: + text = strings._('gui_all_modes_transfer_finished_range').format( + started.strftime("%b %d, %I:%M%p"), + ended.strftime("%I:%M%p") + ) + else: + text = strings._('gui_all_modes_transfer_finished_range').format( + started.strftime("%b %d, %I:%M%p"), + ended.strftime("%b %d, %I:%M%p") + ) + return text -class DownloadHistoryItem(HistoryItem): + +class ShareHistoryItem(HistoryItem): """ Download history item, for share mode """ def __init__(self, common, id, total_bytes): - super(DownloadHistoryItem, self).__init__() + super(ShareHistoryItem, self).__init__() self.common = common self.id = id @@ -56,7 +79,7 @@ class DownloadHistoryItem(HistoryItem): self.started_dt = datetime.fromtimestamp(self.started) # Label - self.label = QtWidgets.QLabel(strings._('gui_download_in_progress').format(self.started_dt.strftime("%b %d, %I:%M%p"))) + self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started_dt.strftime("%b %d, %I:%M%p"))) # Progress bar self.progress_bar = QtWidgets.QProgressBar() @@ -83,18 +106,22 @@ class DownloadHistoryItem(HistoryItem): self.progress_bar.setValue(downloaded_bytes) if downloaded_bytes == self.progress_bar.total_bytes: - pb_fmt = strings._('gui_download_upload_progress_complete').format( + pb_fmt = strings._('gui_all_modes_progress_complete').format( self.common.format_seconds(time.time() - self.started)) + + # Change the label + self.label.setText(self.get_finished_label_text(self.started_dt)) + else: elapsed = time.time() - self.started if elapsed < 10: # Wait a couple of seconds for the download rate to stabilize. # This prevents a "Windows copy dialog"-esque experience at # the beginning of the download. - pb_fmt = strings._('gui_download_upload_progress_starting').format( + pb_fmt = strings._('gui_all_modes_progress_starting').format( self.common.human_readable_filesize(downloaded_bytes)) else: - pb_fmt = strings._('gui_download_upload_progress_eta').format( + pb_fmt = strings._('gui_all_modes_progress_eta').format( self.common.human_readable_filesize(downloaded_bytes), self.estimated_time_remaining) @@ -110,12 +137,12 @@ class DownloadHistoryItem(HistoryItem): self.started) -class UploadHistoryItemFile(QtWidgets.QWidget): +class ReceiveHistoryItemFile(QtWidgets.QWidget): def __init__(self, common, filename): - super(UploadHistoryItemFile, self).__init__() + super(ReceiveHistoryItemFile, self).__init__() self.common = common - self.common.log('UploadHistoryItemFile', '__init__', 'filename: {}'.format(filename)) + self.common.log('ReceiveHistoryItemFile', '__init__', 'filename: {}'.format(filename)) self.filename = filename self.dir = None @@ -166,10 +193,10 @@ class UploadHistoryItemFile(QtWidgets.QWidget): """ Open the downloads folder, with the file selected, in a cross-platform manner """ - self.common.log('UploadHistoryItemFile', 'open_folder') + self.common.log('ReceiveHistoryItemFile', 'open_folder') if not self.dir: - self.common.log('UploadHistoryItemFile', 'open_folder', "dir has not been set yet, can't open folder") + self.common.log('ReceiveHistoryItemFile', 'open_folder', "dir has not been set yet, can't open folder") return abs_filename = os.path.join(self.dir, self.filename) @@ -184,22 +211,22 @@ class UploadHistoryItemFile(QtWidgets.QWidget): # macOS elif self.common.platform == 'Darwin': - subprocess.call(['open', '-R', abs_filename]) + subprocess.call(['open', '-R', abs_filename]) # Windows elif self.common.platform == 'Windows': subprocess.Popen(['explorer', '/select,{}'.format(abs_filename)]) -class UploadHistoryItem(HistoryItem): +class ReceiveHistoryItem(HistoryItem): def __init__(self, common, id, content_length): - super(UploadHistoryItem, self).__init__() + super(ReceiveHistoryItem, self).__init__() self.common = common self.id = id self.content_length = content_length self.started = datetime.now() # Label - self.label = QtWidgets.QLabel(strings._('gui_upload_in_progress').format(self.started.strftime("%b %d, %I:%M%p"))) + self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started.strftime("%b %d, %I:%M%p"))) # Progress bar self.progress_bar = QtWidgets.QProgressBar() @@ -244,14 +271,14 @@ class UploadHistoryItem(HistoryItem): elapsed = datetime.now() - self.started if elapsed.seconds < 10: - pb_fmt = strings._('gui_download_upload_progress_starting').format( + pb_fmt = strings._('gui_all_modes_progress_starting').format( self.common.human_readable_filesize(total_uploaded_bytes)) else: estimated_time_remaining = self.common.estimated_time_remaining( total_uploaded_bytes, self.content_length, self.started.timestamp()) - pb_fmt = strings._('gui_download_upload_progress_eta').format( + pb_fmt = strings._('gui_all_modes_progress_eta').format( self.common.human_readable_filesize(total_uploaded_bytes), estimated_time_remaining) @@ -259,7 +286,7 @@ class UploadHistoryItem(HistoryItem): for filename in list(data['progress']): # Add a new file if needed if filename not in self.files: - self.files[filename] = UploadHistoryItemFile(self.common, filename) + self.files[filename] = ReceiveHistoryItemFile(self.common, filename) self.files_layout.addWidget(self.files[filename]) # Update the file @@ -277,23 +304,7 @@ class UploadHistoryItem(HistoryItem): self.progress_bar.hide() # Change the label - self.ended = self.started = datetime.now() - if self.started.year == self.ended.year and self.started.month == self.ended.month and self.started.day == self.ended.day: - if self.started.hour == self.ended.hour and self.started.minute == self.ended.minute: - text = strings._('gui_upload_finished').format( - self.started.strftime("%b %d, %I:%M%p") - ) - else: - text = strings._('gui_upload_finished_range').format( - self.started.strftime("%b %d, %I:%M%p"), - self.ended.strftime("%I:%M%p") - ) - else: - text = strings._('gui_upload_finished_range').format( - self.started.strftime("%b %d, %I:%M%p"), - self.ended.strftime("%b %d, %I:%M%p") - ) - self.label.setText(text) + self.label.setText(self.get_finished_label_text(self.started)) class HistoryItemList(QtWidgets.QScrollArea): @@ -386,7 +397,7 @@ class History(QtWidgets.QWidget): # Header self.header_label = QtWidgets.QLabel(header_text) self.header_label.setStyleSheet(self.common.css['downloads_uploads_label']) - clear_button = QtWidgets.QPushButton(strings._('gui_clear_history')) + clear_button = QtWidgets.QPushButton(strings._('gui_all_modes_clear_history')) clear_button.setStyleSheet(self.common.css['downloads_uploads_clear']) clear_button.setFlat(True) clear_button.clicked.connect(self.reset) diff --git a/onionshare_gui/mode/receive_mode/__init__.py b/onionshare_gui/mode/receive_mode/__init__.py index c53f1ea1..90a1f731 100644 --- a/onionshare_gui/mode/receive_mode/__init__.py +++ b/onionshare_gui/mode/receive_mode/__init__.py @@ -22,7 +22,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui from onionshare import strings from onionshare.web import Web -from ..history import History, ToggleHistory, UploadHistoryItem +from ..history import History, ToggleHistory, ReceiveHistoryItem from .. import Mode class ReceiveMode(Mode): @@ -49,17 +49,17 @@ class ReceiveMode(Mode): # Upload history self.history = History( self.common, - QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/uploads_transparent.png'))), - strings._('gui_no_uploads'), - strings._('gui_uploads') + QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/receive_icon_transparent.png'))), + strings._('gui_receive_mode_no_files'), + strings._('gui_all_modes_history') ) self.history.hide() # Toggle history self.toggle_history = ToggleHistory( self.common, self, self.history, - QtGui.QIcon(self.common.get_resource_path('images/uploads_toggle.png')), - QtGui.QIcon(self.common.get_resource_path('images/uploads_toggle_selected.png')) + QtGui.QIcon(self.common.get_resource_path('images/receive_icon_toggle.png')), + QtGui.QIcon(self.common.get_resource_path('images/receive_icon_toggle_selected.png')) ) # Receive mode warning @@ -103,7 +103,7 @@ class ReceiveMode(Mode): return True # An upload is probably still running - hold off on stopping the share, but block new shares. else: - self.server_status_label.setText(strings._('timeout_upload_still_running')) + self.server_status_label.setText(strings._('gui_receive_mode_timeout_waiting')) self.web.receive_mode.can_upload = False return False @@ -136,19 +136,19 @@ class ReceiveMode(Mode): """ Handle REQUEST_LOAD event. """ - self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_upload_page_loaded_message')) + self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_page_loaded_message')) def handle_request_started(self, event): """ Handle REQUEST_STARTED event. """ - item = UploadHistoryItem(self.common, event["data"]["id"], event["data"]["content_length"]) + item = ReceiveHistoryItem(self.common, event["data"]["id"], event["data"]["content_length"]) self.history.add(event["data"]["id"], item) self.toggle_history.update_indicator(True) self.history.in_progress_count += 1 self.history.update_in_progress() - self.system_tray.showMessage(strings._('systray_upload_started_title'), strings._('systray_upload_started_message')) + self.system_tray.showMessage(strings._('systray_receive_started_title'), strings._('systray_receive_started_message')) def handle_request_progress(self, event): """ @@ -159,13 +159,6 @@ class ReceiveMode(Mode): 'progress': event["data"]["progress"] }) - def handle_request_close_server(self, event): - """ - Handle REQUEST_CLOSE_SERVER event. - """ - self.stop_server() - self.system_tray.showMessage(strings._('systray_close_server_title'), strings._('systray_close_server_message')) - def handle_request_upload_file_renamed(self, event): """ Handle REQUEST_UPLOAD_FILE_RENAMED event. diff --git a/onionshare_gui/mode/share_mode/__init__.py b/onionshare_gui/mode/share_mode/__init__.py index 0cc00f92..d0806cfa 100644 --- a/onionshare_gui/mode/share_mode/__init__.py +++ b/onionshare_gui/mode/share_mode/__init__.py @@ -28,7 +28,7 @@ from onionshare.web import Web from .file_selection import FileSelection from .threads import CompressThread from .. import Mode -from ..history import History, ToggleHistory, DownloadHistoryItem +from ..history import History, ToggleHistory, ShareHistoryItem from ...widgets import Alert @@ -74,9 +74,9 @@ class ShareMode(Mode): # Download history self.history = History( self.common, - QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/downloads_transparent.png'))), - strings._('gui_no_downloads'), - strings._('gui_downloads') + QtGui.QPixmap.fromImage(QtGui.QImage(self.common.get_resource_path('images/share_icon_transparent.png'))), + strings._('gui_share_mode_no_files'), + strings._('gui_all_modes_history') ) self.history.hide() @@ -87,8 +87,8 @@ class ShareMode(Mode): # Toggle history self.toggle_history = ToggleHistory( self.common, self, self.history, - QtGui.QIcon(self.common.get_resource_path('images/downloads_toggle.png')), - QtGui.QIcon(self.common.get_resource_path('images/downloads_toggle_selected.png')) + QtGui.QIcon(self.common.get_resource_path('images/share_icon_toggle.png')), + QtGui.QIcon(self.common.get_resource_path('images/share_icon_toggle_selected.png')) ) # Top bar @@ -138,7 +138,7 @@ class ShareMode(Mode): return True # A download is probably still running - hold off on stopping the share else: - self.server_status_label.setText(strings._('timeout_download_still_running')) + self.server_status_label.setText(strings._('gui_share_mode_timeout_waiting')) return False def start_server_custom(self): @@ -229,7 +229,7 @@ class ShareMode(Mode): """ Handle REQUEST_LOAD event. """ - self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_download_page_loaded_message')) + self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_page_loaded_message')) def handle_request_started(self, event): """ @@ -240,13 +240,13 @@ class ShareMode(Mode): else: filesize = self.web.share_mode.download_filesize - item = DownloadHistoryItem(self.common, event["data"]["id"], filesize) + item = ShareHistoryItem(self.common, event["data"]["id"], filesize) self.history.add(event["data"]["id"], item) self.toggle_history.update_indicator(True) self.history.in_progress_count += 1 self.history.update_in_progress() - self.system_tray.showMessage(strings._('systray_download_started_title'), strings._('systray_download_started_message')) + self.system_tray.showMessage(strings._('systray_share_started_title'), strings._('systray_share_started_message')) def handle_request_progress(self, event): """ @@ -256,7 +256,7 @@ class ShareMode(Mode): # Is the download complete? if event["data"]["bytes"] == self.web.share_mode.filesize: - self.system_tray.showMessage(strings._('systray_download_completed_title'), strings._('systray_download_completed_message')) + self.system_tray.showMessage(strings._('systray_share_completed_title'), strings._('systray_share_completed_message')) # Update completed and in progress labels self.history.completed_count += 1 @@ -284,7 +284,7 @@ class ShareMode(Mode): # Update in progress count self.history.in_progress_count -= 1 self.history.update_in_progress() - self.system_tray.showMessage(strings._('systray_download_canceled_title'), strings._('systray_download_canceled_message')) + self.system_tray.showMessage(strings._('systray_share_canceled_title'), strings._('systray_share_canceled_message')) def on_reload_settings(self): """ diff --git a/onionshare_gui/onionshare_gui.py b/onionshare_gui/onionshare_gui.py index eab3261e..3d5f5f0a 100644 --- a/onionshare_gui/onionshare_gui.py +++ b/onionshare_gui/onionshare_gui.py @@ -384,9 +384,6 @@ class OnionShareGui(QtWidgets.QMainWindow): elif event["type"] == Web.REQUEST_CANCELED: mode.handle_request_canceled(event) - elif event["type"] == Web.REQUEST_CLOSE_SERVER: - mode.handle_request_close_server(event) - elif event["type"] == Web.REQUEST_UPLOAD_FILE_RENAMED: mode.handle_request_upload_file_renamed(event) diff --git a/share/images/downloads.png b/share/images/receive_icon.png Binary files differindex ad879b6e..ad879b6e 100644 --- a/share/images/downloads.png +++ b/share/images/receive_icon.png diff --git a/share/images/downloads_toggle.png b/share/images/receive_icon_toggle.png Binary files differindex 846ececb..846ececb 100644 --- a/share/images/downloads_toggle.png +++ b/share/images/receive_icon_toggle.png diff --git a/share/images/downloads_toggle_selected.png b/share/images/receive_icon_toggle_selected.png Binary files differindex 127ce208..127ce208 100644 --- a/share/images/downloads_toggle_selected.png +++ b/share/images/receive_icon_toggle_selected.png diff --git a/share/images/downloads_transparent.png b/share/images/receive_icon_transparent.png Binary files differindex 99207097..99207097 100644 --- a/share/images/downloads_transparent.png +++ b/share/images/receive_icon_transparent.png diff --git a/share/images/uploads.png b/share/images/share_icon.png Binary files differindex cd9bd98e..cd9bd98e 100644 --- a/share/images/uploads.png +++ b/share/images/share_icon.png diff --git a/share/images/uploads_toggle.png b/share/images/share_icon_toggle.png Binary files differindex 87303c9f..87303c9f 100644 --- a/share/images/uploads_toggle.png +++ b/share/images/share_icon_toggle.png diff --git a/share/images/uploads_toggle_selected.png b/share/images/share_icon_toggle_selected.png Binary files differindex 0ba52cff..0ba52cff 100644 --- a/share/images/uploads_toggle_selected.png +++ b/share/images/share_icon_toggle_selected.png diff --git a/share/images/uploads_transparent.png b/share/images/share_icon_transparent.png Binary files differindex 3648c3fb..3648c3fb 100644 --- a/share/images/uploads_transparent.png +++ b/share/images/share_icon_transparent.png diff --git a/share/locale/en.json b/share/locale/en.json index 44eff150..8bcc738b 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -11,21 +11,10 @@ "no_available_port": "Could not find an available port to start the onion service", "other_page_loaded": "Address loaded", "close_on_timeout": "Stopped because auto-stop timer ran out", - "closing_automatically": "Stopped because download finished", - "timeout_download_still_running": "Waiting for download to complete", - "timeout_upload_still_running": "Waiting for upload to complete", + "closing_automatically": "Stopped because transfer is complete", "large_filesize": "Warning: Sending a large share could take hours", - "systray_menu_exit": "Quit", - "systray_download_started_title": "OnionShare Download Started", - "systray_download_started_message": "A user started downloading your files", - "systray_download_completed_title": "OnionShare Download Finished", - "systray_download_completed_message": "The user finished downloading your files", - "systray_download_canceled_title": "OnionShare Download Canceled", - "systray_download_canceled_message": "The user canceled the download", - "systray_upload_started_title": "OnionShare Upload Started", - "systray_upload_started_message": "A user started uploading files to your computer", "help_local_only": "Don't use Tor (only for development)", - "help_stay_open": "Keep sharing after first download", + "help_stay_open": "Continue sharing after files have been sent", "help_shutdown_timeout": "Stop sharing after a given amount of seconds", "help_stealth": "Use client authorization (advanced)", "help_receive": "Receive shares instead of sending them", @@ -48,17 +37,12 @@ "gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}", "gui_copy_url": "Copy Address", "gui_copy_hidservauth": "Copy HidServAuth", - "gui_downloads": "Download History", - "gui_no_downloads": "No Downloads Yet", "gui_canceled": "Canceled", "gui_copied_url_title": "Copied OnionShare Address", "gui_copied_url": "OnionShare address copied to clipboard", "gui_copied_hidservauth_title": "Copied HidServAuth", "gui_copied_hidservauth": "HidServAuth line copied to clipboard", "gui_please_wait": "Starting… Click to cancel.", - "gui_download_upload_progress_complete": "%p%, {0:s} elapsed.", - "gui_download_upload_progress_starting": "{0:s}, %p% (calculating)", - "gui_download_upload_progress_eta": "{0:s}, ETA: {1:s}, %p%", "version_string": "OnionShare {0:s} | https://onionshare.org/", "gui_quit_title": "Not so fast", "gui_share_quit_warning": "You're in the process of sending files. Are you sure you want to quit OnionShare?", @@ -80,7 +64,7 @@ "gui_settings_autoupdate_check_button": "Check for New Version", "gui_settings_general_label": "General settings", "gui_settings_sharing_label": "Sharing settings", - "gui_settings_close_after_first_download_option": "Stop sharing after first download", + "gui_settings_close_after_first_download_option": "Stop sharing after files have been sent", "gui_settings_connection_type_label": "How should OnionShare connect to Tor?", "gui_settings_connection_type_bundled_option": "Use the Tor version built into OnionShare", "gui_settings_connection_type_automatic_option": "Attempt auto-configuration with Tor Browser", @@ -156,8 +140,6 @@ "gui_file_info_single": "{} file, {}", "history_in_progress_tooltip": "{} in progress", "history_completed_tooltip": "{} completed", - "info_in_progress_uploads_tooltip": "{} upload(s) in progress", - "info_completed_uploads_tooltip": "{} upload(s) completed", "error_cannot_create_downloads_dir": "Could not create receive mode folder: {}", "receive_mode_downloads_dir": "Files sent to you appear in this folder: {}", "receive_mode_warning": "Warning: Receive mode lets people upload files to your computer. Some files can potentially take control of your computer if you open them. Only open things from people you trust, or if you know what you are doing.", @@ -170,19 +152,30 @@ "gui_settings_downloads_label": "Save files to", "gui_settings_downloads_button": "Browse", "gui_settings_public_mode_checkbox": "Public mode", - "systray_close_server_title": "OnionShare Server Closed", - "systray_close_server_message": "A user closed the server", - "systray_page_loaded_title": "OnionShare Page Loaded", - "systray_download_page_loaded_message": "A user loaded the download page", - "systray_upload_page_loaded_message": "A user loaded the upload page", - "gui_uploads": "Upload History", - "gui_no_uploads": "No Uploads Yet", - "gui_clear_history": "Clear All", - "gui_upload_in_progress": "Upload Started {}", - "gui_upload_finished_range": "Uploaded {} to {}", - "gui_upload_finished": "Uploaded {}", - "gui_download_in_progress": "Download Started {}", "gui_open_folder_error_nautilus": "Cannot open folder because nautilus is not available. The file is here: {}", "gui_settings_language_label": "Preferred language", - "gui_settings_language_changed_notice": "Restart OnionShare for your change in language to take effect." + "gui_settings_language_changed_notice": "Restart OnionShare for your change in language to take effect.", + "systray_menu_exit": "Quit", + "systray_page_loaded_title": "Page Loaded", + "systray_page_loaded_message": "OnionShare address loaded", + "systray_share_started_title": "Sharing Started", + "systray_share_started_message": "Starting to send files to someone", + "systray_share_completed_title": "Sharing Complete", + "systray_share_completed_message": "Finished sending files", + "systray_share_canceled_title": "Sharing Canceled", + "systray_share_canceled_message": "Someone canceled receiving your files", + "systray_receive_started_title": "Receiving Started", + "systray_receive_started_message": "Someone is sending files to you", + "gui_all_modes_history": "History", + "gui_all_modes_clear_history": "Clear All", + "gui_all_modes_transfer_started": "Started {}", + "gui_all_modes_transfer_finished_range": "Transferred {} - {}", + "gui_all_modes_transfer_finished": "Transferred {}", + "gui_all_modes_progress_complete": "%p%, {0:s} elapsed.", + "gui_all_modes_progress_starting": "{0:s}, %p% (calculating)", + "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", + "gui_share_mode_no_files": "No Files Sent Yet", + "gui_share_mode_timeout_waiting": "Waiting to finish sending", + "gui_receive_mode_no_files": "No Files Received Yet", + "gui_receive_mode_timeout_waiting": "Waiting to finish receiving" } |