diff --git a/apps/dashboard/Gemfile b/apps/dashboard/Gemfile index 3fad5f2970..7d04308e71 100644 --- a/apps/dashboard/Gemfile +++ b/apps/dashboard/Gemfile @@ -39,6 +39,10 @@ end group :development do # Access an IRB console on exception pages or by using <%= console %> in views # gem 'web-console', '~> 2.0' + gem 'i18n-tasks' + gem 'highline', '2.1.0' + # gem 'easy_translate' + # gem 'ruby-openai' end # lock gems to versions that are compatible with ruby 2.7.0, diff --git a/apps/dashboard/Gemfile.lock b/apps/dashboard/Gemfile.lock index 9fe094b5f3..eea65a9af7 100644 --- a/apps/dashboard/Gemfile.lock +++ b/apps/dashboard/Gemfile.lock @@ -68,6 +68,7 @@ GEM tzinfo (~> 2.0) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) + ast (2.4.2) autoprefixer-rails (10.2.5.1) execjs (> 0) base64 (0.2.0) @@ -115,11 +116,22 @@ GEM ffi (1.16.3) globalid (1.2.1) activesupport (>= 6.1) + highline (2.1.0) http-accept (1.7.0) http-cookie (1.0.8) domain_name (~> 0.5) i18n (1.14.6) concurrent-ruby (~> 1.0) + i18n-tasks (1.0.14) + activesupport (>= 4.0.2) + ast (>= 2.1.0) + erubi + highline (>= 2.0.0) + i18n + parser (>= 3.2.2.1) + rails-i18n + rainbow (>= 2.2.2, < 4.0) + terminal-table (>= 1.5.1) jbuilder (2.13.0) actionview (>= 5.0.0) activesupport (>= 5.0.0) @@ -181,6 +193,9 @@ GEM ood_support (~> 0.0.2) rexml (~> 3.2) ood_support (0.0.5) + parser (3.3.6.0) + ast (~> 2.4.1) + racc pry (0.15.0) coderay (~> 1.1) method_source (~> 1.0) @@ -216,6 +231,9 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + rails-i18n (7.0.10) + i18n (>= 0.7, < 2) + railties (>= 6.0.0, < 8) railties (7.0.8.5) actionpack (= 7.0.8.5) activesupport (= 7.0.8.5) @@ -223,6 +241,7 @@ GEM rake (>= 12.2) thor (~> 1.0) zeitwerk (~> 2.5) + rainbow (3.1.1) rake (13.2.1) rdoc (6.10.0) psych (>= 4.0.0) @@ -266,6 +285,8 @@ GEM activesupport (>= 6.1) sprockets (>= 3.0.0) stringio (3.1.2) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) thor (1.3.2) tilt (2.4.0) timecop (0.9.10) @@ -276,6 +297,7 @@ GEM railties (>= 6.0.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) + unicode-display_width (2.6.0) webrick (1.9.1) websocket (1.2.11) websocket-driver (0.7.6) @@ -302,6 +324,8 @@ DEPENDENCIES dotenv-rails (~> 2.1) dotiw erubi + highline (= 2.1.0) + i18n-tasks jbuilder (~> 2.0) jsbundling-rails (~> 1.0) local_time (~> 1.0.3) diff --git a/apps/dashboard/config/i18n-tasks.yml.erb b/apps/dashboard/config/i18n-tasks.yml.erb new file mode 100644 index 0000000000..fe432c4813 --- /dev/null +++ b/apps/dashboard/config/i18n-tasks.yml.erb @@ -0,0 +1,181 @@ +# i18n-tasks finds and manages missing and unused translations: https://github.com/glebm/i18n-tasks + +# The "main" locale. +base_locale: en +## All available locales are inferred from the data by default. Alternatively, specify them explicitly: +# locales: [es, fr] +## Reporting locale, default: en. Available: en, ru. +# internal_locale: en + +# Read and write translations. +data: + ## Translations are read from the file system. Supported format: YAML, JSON. + ## Provide a custom adapter: + # adapter: I18n::Tasks::Data::FileSystem + + # Locale files or `Dir.glob` patterns where translations are read from: + read: + ## Default: + # - config/locales/%{locale}.yml + ## More files: + # - config/locales/**/*.%{locale}.yml + + # Locale files to write new keys to, based on a list of key pattern => file rules. Matched from top to bottom: + # `i18n-tasks normalize -p` will force move the keys according to these rules + write: + ## For example, write devise and simple form keys to their respective files: + # - ['{devise, simple_form}.*', 'config/locales/\1.%{locale}.yml'] + ## Catch-all default: + # - config/locales/%{locale}.yml + + # External locale data (e.g. gems). + # This data is not considered unused and is never written to. + external: + ## Example (replace %#= with %=): + # - "<%#= %x[bundle info vagrant --path].chomp %>/templates/locales/%{locale}.yml" + + ## Specify the router (see Readme for details). Valid values: conservative_router, pattern_router, isolating_router, or a custom class. + # router: conservative_router + + yaml: + write: + # do not wrap lines at 80 characters + line_width: -1 + + ## Pretty-print JSON: + # json: + # write: + # indent: ' ' + # space: ' ' + # object_nl: "\n" + # array_nl: "\n" + +# Find translate calls +search: + ## Paths or `Find.find` patterns to search in: + # paths: + # - app/ + + ## Root directories for relative keys resolution. + # relative_roots: + # - app/controllers + # - app/helpers + # - app/mailers + # - app/presenters + # - app/views + + ## Directories where method names which should not be part of a relative key resolution. + # By default, if a relative translation is used inside a method, the name of the method will be considered part of the resolved key. + # Directories listed here will not consider the name of the method part of the resolved key + # + # relative_exclude_method_name_paths: + # - + + ## Files or `File.fnmatch` patterns to exclude from search. Some files are always excluded regardless of this setting: + ## *.jpg *.jpeg *.png *.gif *.svg *.ico *.eot *.otf *.ttf *.woff *.woff2 *.pdf *.css *.sass *.scss *.less + ## *.yml *.json *.zip *.tar.gz *.swf *.flv *.mp3 *.wav *.flac *.webm *.mp4 *.ogg *.opus *.webp *.map *.xlsx + exclude: + - app/assets/images + - app/assets/fonts + - app/assets/videos + - app/assets/builds + + ## Alternatively, the only files or `File.fnmatch patterns` to search in `paths`: + ## If specified, this settings takes priority over `exclude`, but `exclude` still applies. + # only: ["*.rb", "*.html.slim"] + + ## If `strict` is `false`, guess usages such as t("categories.#{category}.title"). The default is `true`. + # strict: true + + ## Allows adding ast_matchers for finding translations using the AST-scanners + ## The available matchers are: + ## - RailsModelMatcher + ## Matches ActiveRecord translations like + ## User.human_attribute_name(:email) and User.model_name.human + ## - DefaultI18nSubjectMatcher + ## Matches ActionMailer's default_i18n_subject method + ## + ## To implement your own, please see `I18n::Tasks::Scanners::AstMatchers::BaseMatcher`. + # ast_matchers: + # - 'I18n::Tasks::Scanners::AstMatchers::RailsModelMatcher' + # - 'I18n::Tasks::Scanners::AstMatchers::DefaultI18nSubjectMatcher' + + ## Multiple scanners can be used. Their results are merged. + ## The options specified above are passed down to each scanner. Per-scanner options can be specified as well. + ## See this example of a custom scanner: https://github.com/glebm/i18n-tasks/wiki/A-custom-scanner-example + +## Translation Services +# translation: +# # Google Translate +# # Get an API key and set billing info at https://code.google.com/apis/console to use Google Translate +# google_translate_api_key: "AbC-dEf5" +# # DeepL Pro Translate +# # Get an API key and subscription at https://www.deepl.com/pro to use DeepL Pro +# deepl_api_key: "48E92789-57A3-466A-9959-1A1A1A1A1A1A" +# # deepl_host: "https://api.deepl.com" +# # deepl_version: "v2" +# # deepl_glossary_ids: +# # - f28106eb-0e06-489e-82c6-8215d6f95089 +# # - 2c6415be-1852-4f54-9e1b-d800463496b4 +# # add additional options to the DeepL.translate call: https://www.deepl.com/docs-api/translate-text/translate-text/ +# deepl_options: +# formality: prefer_less +# # OpenAI +# openai_api_key: "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +# # openai_model: "gpt-3.5-turbo" # see https://platform.openai.com/docs/models +# # may contain `%{from}` and `%{to}`, which will be replaced by source and target locale codes, respectively (using `Kernel.format`) +# # openai_system_prompt: >- +# # You are a professional translator that translates content from the %{from} locale +# # to the %{to} locale in an i18n locale array. +# # +# # The array has a structured format and contains multiple strings. Your task is to translate +# # each of these strings and create a new array with the translated strings. +# # +# # HTML markups (enclosed in < and > characters) must not be changed under any circumstance. +# # Variables (starting with %%{ and ending with }) must not be changed under any circumstance. +# # +# # Keep in mind the context of all the strings for a more accurate translation. +translation: + backend: openai + openai_api_key: <%= ENV["OPENAI_API_KEY"] %> + +## Do not consider these keys missing: +# ignore_missing: +# - 'errors.messages.{accepted,blank,invalid,too_short,too_long}' +# - '{devise,simple_form}.*' + +## Consider these keys used: +# ignore_unused: +# - 'activerecord.attributes.*' +# - '{devise,kaminari,will_paginate}.*' +# - 'simple_form.{yes,no}' +# - 'simple_form.{placeholders,hints,labels}.*' +# - 'simple_form.{error_notification,required}.:' + +## Exclude these keys from the `i18n-tasks eq-base' report: +# ignore_eq_base: +# all: +# - common.ok +# fr,es: +# - common.brand + +## Exclude these keys from the `i18n-tasks check-consistent-interpolations` report: +# ignore_inconsistent_interpolations: +# - 'activerecord.attributes.*' + +## Ignore these keys completely: +# ignore: +# - kaminari.* + +## Sometimes, it isn't possible for i18n-tasks to match the key correctly, +## e.g. in case of a relative key defined in a helper method. +## In these cases you can use the built-in PatternMapper to map patterns to keys, e.g.: +# +# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper', +# only: %w(*.html.haml *.html.slim), +# patterns: [['= title\b', '.page_title']] %> +# +# The PatternMapper can also match key literals via a special %{key} interpolation, e.g.: +# +# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper', +# patterns: [['\bSpree\.t[( ]\s*%{key}', 'spree.%{key}']] %> diff --git a/apps/dashboard/config/locales/en.yml b/apps/dashboard/config/locales/en.yml index 5e37ebd24c..9bb12c056a 100644 --- a/apps/dashboard/config/locales/en.yml +++ b/apps/dashboard/config/locales/en.yml @@ -1,75 +1,21 @@ -# Files in the config/locales directory are used for internationalization -# and are automatically loaded by Rails. If you want to use locales other -# than English, add the necessary files in this directory. -# -# To use the locales, use `I18n.t`: -# -# I18n.t 'hello' -# -# In views, this is aliased to just `t`: -# -# <%= t('hello') %> -# -# To use a different locale, set it with `I18n.locale`: -# -# I18n.locale = :es -# -# This would use the information in config/locales/es.yml. -# -# The following keys must be escaped otherwise they will not be retrieved by -# the default I18n backend: -# -# true, false, on, off, yes, no -# -# Instead, surround them with single quotes. -# -# en: -# 'true': 'foo' -# -# To learn more, please read the Rails Internationalization guide -# available at https://guides.rubyonrails.org/i18n.html. - +--- en: activemodel: errors: messages: - required: "%{attribute} is required" format: "%{attribute} format invalid or missing" invalid: "%{attribute} is invalid" + required: "%{attribute} is required" used: "%{attribute} is already used" - dashboard: - # Site specific translations - batch_connect_sessions_status_bad: "Your session has entered a bad state. Feel free to contact support for - further information." - batch_connect_sessions_status_missing_connection: | - This app is missing information required to establish a connection. Please - contact support if you see this message. - batch_connect_sessions_status_queued: | - Please be patient as your job currently sits in queue. The wait time depends - on the number of cores as well as time requested. - - motd_erb_render_error: "MOTD was not parsed or rendered correctly: %{error_message}" - nav_help_change_password: "Change HPC Password" - nav_help_docs: "Online Documentation" - nav_help_support: "Contact Support" - nav_help_two_factor: "Configure Two-Factor Authentication" - nav_help_support_ticket: "Submit Support Ticket" - - quota_additional_message: "Consider deleting or archiving files to free up disk space." - quota_reload_message: "Reload page to see updated quota. Quotas are updated every 5 minutes." - quota_warning_prefix_html: "Quota limit warning for" - - balance_additional_message: "Consider requesting additional %{balanace_units}" - balance_reload_message_html: "Reload page to see updated balance. Balances are updated daily.
Last update was %{last_update}" - balance_warning_prefix_html: "%{units_balance} warning for" - balance_message: "%{units_balance} is %{value}" - - welcome_html: | - %{logo_img_tag} -

OnDemand provides an integrated, single access point for all of your HPC resources.

- - # General translations + active_sessions_caption_html: view all (%{number_of_sessions}) + active_sessions_title: Active interactive sessions + add: Add + all_apps_table_app_column: Name + all_apps_table_category_column: Category + all_apps_table_sub_category_column: Sub Category + announcements_dismissible_button: OK + announcements_required_button: Accept apps_setup_failure_html: |

A problem occurred while initializing your data for this app.

@@ -84,242 +30,226 @@ en:

%{exception_message}

Stack trace:

%{exception_trace}
- apps_system_apps_title: "System Apps" # Not used anywhere - system_apps_caption: "System Installed App" - - shell_app_title: "%{cluster_title} Shell Access" - - batch_connect_form_attr_cache_error: "Unable to use previously cached values, using defaults instead. (%{error_message})" - batch_connect_form_choose_template_name: "Choose a template name" - batch_connect_form_data_root: "data root directory" - batch_connect_form_launch: "Launch" - batch_connect_form_prefill: "Use saved settings" - batch_connect_form_prefill_error: "Oops... Something is wrong with your template" - batch_connect_form_reset_resolution: "Reset Resolution" - batch_connect_form_save: "Save settings" - batch_connect_form_save_submit: "Save settings and close" - batch_connect_form_save_new_template: "save new settings" - batch_connect_form_select_template: "select saved settings" - batch_connect_form_template_name_label: "setting name" + apps_system_apps_title: System Apps + auto_log_location_title: Log Location + balance_additional_message: Consider requesting additional %{balanace_units} + balance_message: "%{units_balance} is %{value}" + balance_reload_message_html: Reload page to see updated balance. Balances are updated daily.
Last update was %{last_update} + balance_warning_prefix_html: "%{units_balance} warning for" + batch_connect_apps_menu_title: Interactive Apps + batch_connect_form_attr_cache_error: Unable to use previously cached values, using defaults instead. (%{error_message}) + batch_connect_form_choose_template_name: Choose a template name + batch_connect_form_data_root: data root directory + batch_connect_form_invalid: The form.yml has missing options in the %{id} form field. + batch_connect_form_launch: Launch + batch_connect_form_prefill: Use saved settings + batch_connect_form_prefill_error: Oops... Something is wrong with your template + batch_connect_form_reset_resolution: Reset Resolution + batch_connect_form_save: Save settings + batch_connect_form_save_new_template: save new settings + batch_connect_form_save_submit: Save settings and close + batch_connect_form_select_template: select saved settings batch_connect_form_session_data_html: | * The %{title} session data for this session can be accessed under the %{data_link_tag}. - batch_connect_form_type_new_name: "App settings name" - batch_connect_form_type_new_name_error: "Please type a valid name to continue" - batch_connect_form_invalid: "The form.yml has missing options in the %{id} form field." + batch_connect_form_template_name_label: setting name + batch_connect_form_type_new_name: App settings name + batch_connect_form_type_new_name_error: Please type a valid name to continue batch_connect_invalid_form_array: "'form' element in form.yml is not an Array" batch_connect_invalid_form_attributes: "'attributes' element in form.yml is not a Map" - batch_connect_no_apps: "There are no available Interactive Apps." - batch_connect_no_sessions: "You have no active sessions." - batch_connect_sandbox: " [Sandbox]" batch_connect_missing_cluster: | The cluster was never set. Either set it in form.yml.erb with `cluster` or `form.cluster` or set `cluster` in submit.yml.erb. - batch_connect_sessions_word: 'Session' + batch_connect_no_apps: There are no available Interactive Apps. + batch_connect_no_sessions: You have no active sessions. + batch_connect_sandbox: " [Sandbox]" + batch_connect_sessions_cancel_confirm: Are you sure? + batch_connect_sessions_cancel_title: Cancel batch_connect_sessions_data_html: | The %{title} session data for this session can be accessed under the %{data_link_tag}. + batch_connect_sessions_delete_confirm: Are you sure? + batch_connect_sessions_delete_hover: 删除会话 + batch_connect_sessions_delete_title: Delete + batch_connect_sessions_edit_title: Edit new %{title} with this session parameters batch_connect_sessions_error_invalid_job_name_html: | If this job failed to submit because of an invalid job name please ask your administrator to configure OnDemand to set the environment variable OOD_JOB_NAME_ILLEGAL_CHARS. - batch_connect_sessions_delete_confirm: "Are you sure?" - batch_connect_sessions_delete_title: "Delete" - batch_connect_sessions_cancel_confirm: "Are you sure?" - batch_connect_sessions_cancel_title: "Cancel" - batch_connect_sessions_relaunch_title: "Relaunch" - batch_connect_sessions_edit_title: "Edit new %{title} with this session parameters" - batch_connect_sessions_errors_staging: "Failed to stage the template with the following error:" - batch_connect_sessions_errors_submission: "Failed to submit session with the following error:" - batch_connect_sessions_novnc_launch: "Launch %{app_title}" - batch_connect_sessions_novnc_view_only: "View Only (Share-able Link)" - batch_connect_sessions_staged_root: "staged root directory" - batch_connect_sessions_stats_created_at: "Created at:" - batch_connect_sessions_stats_host: "Host:" - batch_connect_sessions_stats_session_id: "Session ID:" - batch_connect_sessions_stats_time_remaining: "Time Remaining:" - batch_connect_sessions_stats_time_requested: "Time Requested:" - batch_connect_sessions_stats_time_used: "Time Used:" - batch_connect_sessions_stats_undetermined_host: "Undetermined" - batch_connect_sessions_stats_support_ticket: "Problems with this session?" - batch_connect_sessions_stats_support_ticket_link_text: "Submit support ticket" - batch_connect_sessions_status_blurb_create_success: "Session was successfully created." - batch_connect_sessions_status_blurb_delete_failure: "Failed to delete session." - batch_connect_sessions_status_blurb_delete_success: "Session was successfully deleted." - batch_connect_sessions_status_blurb_cancel_failure: "Failed to cancel session." - batch_connect_sessions_status_blurb_cancel_success: "Session was successfully canceled." + batch_connect_sessions_errors_staging: 'Failed to stage the template with the following error:' + batch_connect_sessions_errors_submission: 'Failed to submit session with the following error:' + batch_connect_sessions_novnc_launch: Launch %{app_title} + batch_connect_sessions_novnc_view_only: View Only (Share-able Link) + batch_connect_sessions_path_selector_forbidden_error: You do not have permission to select that directory or file. + batch_connect_sessions_relaunch_title: Relaunch + batch_connect_sessions_staged_root: staged root directory + batch_connect_sessions_stats_created_at: 'Created at:' + batch_connect_sessions_stats_host: 'Host:' + batch_connect_sessions_stats_session_id: 'Session ID:' + batch_connect_sessions_stats_support_ticket: Problems with this session? + batch_connect_sessions_stats_support_ticket_link_text: Submit support ticket + batch_connect_sessions_stats_time_remaining: 'Time Remaining:' + batch_connect_sessions_stats_time_requested: 'Time Requested:' + batch_connect_sessions_stats_time_used: 'Time Used:' + batch_connect_sessions_stats_undetermined_host: Undetermined + batch_connect_sessions_status_bad: Your session has entered a bad state. Feel free to contact support for further information. + batch_connect_sessions_status_blurb_cancel_failure: Failed to cancel session. + batch_connect_sessions_status_blurb_cancel_success: Session was successfully canceled. + batch_connect_sessions_status_blurb_create_success: Session was successfully created. + batch_connect_sessions_status_blurb_delete_failure: Failed to delete session. + batch_connect_sessions_status_blurb_delete_success: Session was successfully deleted. + batch_connect_sessions_status_completed: For debugging purposes, this card will be retained for %{days} more days + batch_connect_sessions_status_missing_connection: | + This app is missing information required to establish a connection. Please + contact support if you see this message. + batch_connect_sessions_status_queued: | + Please be patient as your job currently sits in queue. The wait time depends + on the number of cores as well as time requested. batch_connect_sessions_status_starting: | Your session is currently starting... Please be patient as this process can take a few minutes. - - batch_connect_sessions_status_completed: "For debugging purposes, this card will be retained for %{days} more days" - batch_connect_sessions_path_selector_forbidden_error: "You do not have permission to select that directory or file." - batch_connect_apps_menu_title: "Interactive Apps" - breadcrumbs_all_apps: "All Apps" - breadcrumbs_home: "Home" - breadcrumbs_my_sessions: "My Interactive Sessions" - - motd_title: "Message of the Day" - - nav_all_apps: "All Apps" - nav_develop_docs: "Developer Documentation" - nav_develop_my_sandbox_apps_dev: "My Sandbox Apps (Development)" - nav_develop_my_sandbox_apps_prod: "My Shared Apps (Production)" - nav_develop_title: "Develop" - nav_help_title: "Help" - nav_logout: "Log Out" - nav_restart_server: "Restart Web Server" - nav_sessions: "My Interactive Sessions" # Note duplication with breadcrumbs_my_sessions - nav_user: "Logged in as %{username}" - - quota_block: "Using %{used} of quota %{available}" + batch_connect_sessions_word: Session + bc_saved_settings: + delete_confirm: Are you sure? + delete_title: Delete %{settings_name} saved settings + deleted_message: Saved settings %{settings_name} deleted. + edit_title: Edit %{settings_name} saved settings + launch_title: Launch %{app_title} with %{settings_name} parameters + missing_settings: Selected saved settings not found. + no_settings_title: You have no saved settings. + outdated_message: "%{app_title} parameters have changed since these settings were created." + saved_message: "%{settings_name} settings saved" + settings_values_label: Values + title: Saved Settings + breadcrumbs_all_apps: All Apps + breadcrumbs_home: Home + breadcrumbs_my_sessions: My Interactive Sessions + breadcrumbs_support_ticket: Support Ticket + close: Close + custom_pages: + invalid: 'Invalid page code: %{page}. This page has not been configured' + delete: Delete + development_apps_caption: Sandbox App + directory: Directory + edit: Edit + files_directory_download_error_modal_title: Directory too large to download + files_directory_download_unauthorized: You can only download a directory as zip that you have read and execute access to + files_directory_size_calculation_error: Timeout while trying to determine directory size. + files_directory_size_calculation_timeout: Timeout while trying to determine directory size. + files_directory_size_unknown: 'Error with status %{exit_code} when trying to determine directory size: %{error}' + files_directory_too_large: The directory is too large to download as a zip. The directory should be less than %{download_directory_size_limit} bytes. + files_download_not_enabled: Downloading files is not enabled on this server. + files_remote_dir_not_created: Did not create directory %{path} + files_remote_disabled: Remote file support is not enabled + files_remote_empty_dir_unsupported: Remote does not support empty directories + files_remote_error_listing_remotes: 'Error listing Rclone remotes: %{error}' + jobs_create_blank_project: Create a new project + jobs_create_template_project: Create a new project from a template + jobs_launchers: Launchers + jobs_launchers_created: Launcher successfully created! + jobs_launchers_default_created: A 'hello_world.sh' was also added to this project. + jobs_launchers_delete_script_confirmation: Delete all contents of launcher? + jobs_launchers_deleted: Launcher successfully deleted! + jobs_launchers_fixed_field: Fixed Value + jobs_launchers_not_found: Cannot find Launcher %{launcher_id} + jobs_launchers_submitted: Successfully submitted job %{job_id}. + jobs_launchers_updated: Launcher manifest updated! + jobs_new_launcher: New Launcher + jobs_project_created: Project successfully created! + jobs_project_delete_project_confirmation: Delete all contents of project directory? + jobs_project_deleted: Project successfully deleted! + jobs_project_description_placeholder: Project description + jobs_project_directory_help_html: 'Leave empty and a new directory will be created.
Default location: %{root_directory}' + jobs_project_directory_placeholder: Project directory absolute path + jobs_project_generic_error: 'There was an error processing your request: %{error}' + jobs_project_invalid_configuration_clusters: An HPC cluster is required. Contact your administrator to add one to the system. + jobs_project_invalid_configuration_scripts: An executable script is required for your project. Upload a script using the file application. + jobs_project_job_deleted: Successfully deleted job %{job_id} + jobs_project_job_not_deleted: Cannot delete job %{job_id} + jobs_project_job_stopped: Successfully stopped job %{job_id} + jobs_project_manifest_updated: Project manifest updated! + jobs_project_name_placeholder: Project name + jobs_project_name_validation: Project name may only contain letters, digits, dashes, underscores, and spaces + jobs_project_not_found: Cannot find project %{project_id} + jobs_project_save_error: Cannot save manifest to %{path} + jobs_project_validation_error: Invalid Request. Please review the errors below + launch: Launch + motd_erb_render_error: 'MOTD was not parsed or rendered correctly: %{error_message}' + motd_title: Message of the Day + nav_all_apps: All Apps + nav_develop_docs: Developer Documentation + nav_develop_my_sandbox_apps_dev: My Sandbox Apps (Development) + nav_develop_my_sandbox_apps_prod: My Shared Apps (Production) + nav_develop_title: Develop + nav_help_change_password: Change HPC Password + nav_help_custom: Nav help custom + nav_help_docs: Online Documentation + nav_help_support: Contact Support + nav_help_support_ticket: Submit Support Ticket + nav_help_title: Help + nav_help_two_factor: Configure Two-Factor Authentication + nav_limit_caption: showing %{subset_count} of %{total_count} + nav_logout: Log Out + nav_restart_server: Restart Web Server + nav_sessions: My Interactive Sessions + nav_user: Logged in as %{username} + not_grouped: Other Apps + pinned_apps_caption_html: A featured subset of all available apps + pinned_apps_category: Apps + pinned_apps_title: Pinned Apps + project: Project + quota_additional_message: Consider deleting or archiving files to free up disk space. + quota_block: Using %{used} of quota %{available} quota_block_shared: "(%{used_exclusive} are yours)" - quota_file: "Using %{used} files of quota %{available} files" + quota_file: Using %{used} files of quota %{available} files quota_file_shared: "(%{used_exclusive} files are yours)" - + quota_reload_message: Reload page to see updated quota. Quotas are updated every 5 minutes. + quota_warning_prefix_html: Quota limit warning for + recently_used_apps_title: Recently Used Apps + remove: Remove restart_msg_html: | Your group membership has changed, which affects your access to apps. Your dashboard should restart automatically. If it doesn't please, click: restart web server. - - shared_apps_title: "Shared Apps" - shared_apps_caption: "Shared by %{owner_title} (%{owner})" - shared_apps_caption_short: "Shared by %{owner}" - sharing_catalog_title: "App Catalog" - sharing_no_shared_apps_html: | - No custom shared apps available. - sharing_catalog_msg_html: | -
A subset of the apps available can be viewed on the %{catalog_link_tag}. + save: Save + saved_settings_title: Saved Settings + settings_invalid_request: Invalid settings submitted + settings_updated: Settings updated + shared_apps_caption: Shared by %{owner_title} (%{owner}) + shared_apps_caption_short: Shared by %{owner} + shared_apps_title: Shared Apps + sharing_catalog_msg_html: "
A subset of the apps available can be viewed on the %{catalog_link_tag}.\n" + sharing_catalog_title: App Catalog + sharing_no_shared_apps_html: "No custom shared apps available.\n" sharing_support_msg_html: | If you don't see the app you are looking for, please contact support. sharing_welcome_msg_html: | Cluster access applications are available from the dropdown menus in the navbar above.
Custom shared apps are available below. - - all_apps_table_app_column: "Name" - all_apps_table_category_column: "Category" - all_apps_table_sub_category_column: "Sub Category" - - not_grouped: "Other Apps" - - nav_limit_caption: 'showing %{subset_count} of %{total_count}' - pinned_apps_category: "Apps" - pinned_apps_title: 'Pinned Apps' - pinned_apps_caption_html: 'A featured subset of all available apps' - development_apps_caption: "Sandbox App" - - active_sessions_title: 'Active interactive sessions' - active_sessions_caption_html: ' view all (%{number_of_sessions})' - - recently_used_apps_title: 'Recently Used Apps' - - saved_settings_title: 'Saved Settings' - - files_download_not_enabled: "Downloading files is not enabled on this server." - files_directory_download_error_modal_title: "Directory too large to download" - files_directory_download_unauthorized: "You can only download a directory as zip that you have read and execute access to" - files_directory_too_large: "The directory is too large to download as a zip. The directory should be less than %{download_directory_size_limit} bytes." - files_directory_size_calculation_error: "Timeout while trying to determine directory size." - files_directory_size_calculation_timeout: "Timeout while trying to determine directory size." - files_directory_size_unknown: "Error with status %{exit_code} when trying to determine directory size: %{error}" - - files_remote_disabled: "Remote file support is not enabled" - files_remote_empty_dir_unsupported: "Remote does not support empty directories" - files_remote_dir_not_created: "Did not create directory %{path}" - files_remote_error_listing_remotes: "Error listing Rclone remotes: %{error}" - - jobs_project_created: "Project successfully created!" - jobs_project_deleted: "Project successfully deleted!" - jobs_project_delete_project_confirmation: "Delete all contents of project directory?" - jobs_project_not_found: "Cannot find project %{project_id}" - jobs_project_manifest_updated: "Project manifest updated!" - jobs_project_name_placeholder: "Project name" - jobs_project_name_validation: "Project name may only contain letters, digits, dashes, underscores, and spaces" - jobs_project_directory_placeholder: "Project directory absolute path" - jobs_project_directory_help_html: "Leave empty and a new directory will be created.
Default location: %{root_directory}" - jobs_project_description_placeholder: "Project description" - jobs_create_blank_project: "Create a new project" - jobs_create_template_project: "Create a new project from a template" - jobs_new_launcher: "New Launcher" - jobs_launchers: "Launchers" - - - jobs_project_validation_error: "Invalid Request. Please review the errors below" - jobs_project_save_error: "Cannot save manifest to %{path}" - jobs_project_generic_error: "There was an error processing your request: %{error}" - jobs_project_invalid_configuration_clusters: "An HPC cluster is required. Contact your administrator to add one to the system." - jobs_project_invalid_configuration_scripts: "An executable script is required for your project. Upload a script using the file application." - - jobs_project_job_stopped: "Successfully stopped job %{job_id}" - jobs_project_job_deleted: "Successfully deleted job %{job_id}" - jobs_project_job_not_deleted: "Cannot delete job %{job_id}" - - jobs_launchers_created: "Launcher successfully created!" - jobs_launchers_default_created: "A 'hello_world.sh' was also added to this project." - jobs_launchers_updated: "Launcher manifest updated!" - jobs_launchers_not_found: "Cannot find Launcher %{launcher_id}" - jobs_launchers_deleted: "Launcher successfully deleted!" - jobs_launchers_submitted: "Successfully submitted job %{job_id}." - jobs_launchers_delete_script_confirmation: "Delete all contents of launcher?" - jobs_launchers_fixed_field: "Fixed Value" - - settings_updated: "Settings updated" - settings_invalid_request: "Invalid settings submitted" - - announcements_required_button: "Accept" - announcements_dismissible_button: "OK" - - bc_saved_settings: - title: "Saved Settings" - no_settings_title: "You have no saved settings." - missing_settings: "Selected saved settings not found." - launch_title: "Launch %{app_title} with %{settings_name} parameters" - edit_title: "Edit %{settings_name} saved settings" - saved_message: "%{settings_name} settings saved" - delete_title: "Delete %{settings_name} saved settings" - delete_confirm: "Are you sure?" - deleted_message: "Saved settings %{settings_name} deleted." - settings_values_label: "Values" - outdated_message: "%{app_title} parameters have changed since these settings were created." - - auto_log_location_title: "Log Location" - - user_configuration: - support_ticket_error: "support_ticket is misconfigured. \"email\" or \"rt_api\" sections are required in the configuration YAML." - - breadcrumbs_support_ticket: "Support Ticket" + shell_app_title: "%{cluster_title} Shell Access" + show: Show support_ticket: - title: "Support Ticket" - header: "Support Ticket" - creation_success: "Support ticket email sent to: %{to}" - generic_error: "There was an error processing your request: %{error}" - validation_error: "Invalid Request. Please review the error messages below" + creation_success: 'Support ticket email sent to: %{to}' + generic_error: 'There was an error processing your request: %{error}' + header: Support Ticket + rt: + creation_success: 'Support ticket created in RequestTracker system. TicketId: %{ticket_id}' + title: Support Ticket validation: - required: "The %{id} is required" - email: "The %{id} format is invalid. Expected a valid email address" - attachments_items: "The %{id} are invalid. %{items} added, maximum number of attachments is %{max}" - attachments_size: "The %{id} are invalid. Maximum attachment size is %{max}" + attachments_items: The %{id} are invalid. %{items} added, maximum number of attachments is %{max} + attachments_size: The %{id} are invalid. Maximum attachment size is %{max} + email: The %{id} format is invalid. Expected a valid email address items: - attachments_js: "No more attachments allowed" + attachments_js: No more attachments allowed + required: The %{id} is required size: - attachments_js: "Max attachment size is %{max}. Selected file size is %{size}" - - rt: - creation_success: "Support ticket created in RequestTracker system. TicketId: %{ticket_id}" - - custom_pages: - invalid: "Invalid page code: %{page}. This page has not been configured" - - - # These are basic words that many partials can use - unknown: "Unknown" - save: "Save" - add: "Add" - remove: "Remove" - delete: "Delete" - edit: "Edit" - show: "Show" - launch: "Launch" - project: "Project" - directory: "Directory" - close: "Close" + attachments_js: Max attachment size is %{max}. Selected file size is %{size} + validation_error: Invalid Request. Please review the error messages below + system_apps_caption: System Installed App + unknown: Unknown + uppy: Uppy + user_configuration: + support_ticket_error: support_ticket is misconfigured. "email" or "rt_api" sections are required in the configuration YAML. + welcome_html: | + %{logo_img_tag} +

OnDemand provides an integrated, single access point for all of your HPC resources.

diff --git a/apps/dashboard/config/locales/ja_JP.yml b/apps/dashboard/config/locales/ja_JP.yml index e3b3282fdf..224800146a 100644 --- a/apps/dashboard/config/locales/ja_JP.yml +++ b/apps/dashboard/config/locales/ja_JP.yml @@ -1,15 +1,255 @@ -# Japanese locale - +--- ja_JP: + activemodel: + errors: + messages: + format: "%{attribute} format invalid or missing" + invalid: "%{attribute} is invalid" + required: "%{attribute} is required" + used: "%{attribute} is already used" dashboard: - # unknown: "Unknown" - save: "溜める" - add: "付け加え" - remove: "抜かす" - delete: "消す" - edit: "編集する" - show: "見せる" - launch: "起動する" - # project: "Project" - # directory: "Directory" - auto_log_location_title: "ログの場所" \ No newline at end of file + active_sessions_caption_html: view all (%{number_of_sessions}) + active_sessions_title: Active interactive sessions + add: 付け加え + all_apps_table_app_column: Name + all_apps_table_category_column: Category + all_apps_table_sub_category_column: Sub Category + announcements_dismissible_button: OK + announcements_required_button: Accept + apps_setup_failure_html: | +

A problem occurred while initializing your data for this app.

+

+ At your own risk you can still open the app + or you can just go back to the dashboard +

+

+ Share this with the developer of your app: + The setup production script is supposed to be idempotent and is run each time + the user opens the app through the dashboard.

+

Exception: %{exception_class}

+
%{exception_message}
+

Stack trace:

+
%{exception_trace}
+ apps_system_apps_title: System Apps + auto_log_location_title: ログの場所 + balance_additional_message: Consider requesting additional %{balanace_units} + balance_message: "%{units_balance} is %{value}" + balance_reload_message_html: Reload page to see updated balance. Balances are updated daily.
Last update was %{last_update} + balance_warning_prefix_html: "%{units_balance} warning for" + batch_connect_apps_menu_title: Interactive Apps + batch_connect_form_attr_cache_error: Unable to use previously cached values, using defaults instead. (%{error_message}) + batch_connect_form_choose_template_name: Choose a template name + batch_connect_form_data_root: data root directory + batch_connect_form_invalid: The form.yml has missing options in the %{id} form field. + batch_connect_form_launch: Launch + batch_connect_form_prefill: Use saved settings + batch_connect_form_prefill_error: Oops... Something is wrong with your template + batch_connect_form_reset_resolution: Reset Resolution + batch_connect_form_save: Save settings + batch_connect_form_save_new_template: save new settings + batch_connect_form_save_submit: Save settings and close + batch_connect_form_select_template: select saved settings + batch_connect_form_session_data_html: | + * The %{title} session data for this session can be accessed + under the %{data_link_tag}. + batch_connect_form_template_name_label: setting name + batch_connect_form_type_new_name: App settings name + batch_connect_form_type_new_name_error: Please type a valid name to continue + batch_connect_invalid_form_array: "'form' element in form.yml is not an Array" + batch_connect_invalid_form_attributes: "'attributes' element in form.yml is not a Map" + batch_connect_missing_cluster: | + The cluster was never set. Either set it in form.yml.erb with `cluster` or `form.cluster` or + set `cluster` in submit.yml.erb. + batch_connect_no_apps: There are no available Interactive Apps. + batch_connect_no_sessions: You have no active sessions. + batch_connect_sandbox: " [Sandbox]" + batch_connect_sessions_cancel_confirm: Are you sure? + batch_connect_sessions_cancel_title: Cancel + batch_connect_sessions_data_html: | + The %{title} session data for this session can be accessed + under the %{data_link_tag}. + batch_connect_sessions_delete_confirm: Are you sure? + batch_connect_sessions_delete_hover: 删除会话 + batch_connect_sessions_delete_title: Delete + batch_connect_sessions_edit_title: Edit new %{title} with this session parameters + batch_connect_sessions_error_invalid_job_name_html: | + If this job failed to submit because of an invalid job name + please ask your administrator to configure OnDemand to set the + environment variable OOD_JOB_NAME_ILLEGAL_CHARS. + batch_connect_sessions_errors_staging: 'Failed to stage the template with the following error:' + batch_connect_sessions_errors_submission: 'Failed to submit session with the following error:' + batch_connect_sessions_novnc_launch: Launch %{app_title} + batch_connect_sessions_novnc_view_only: View Only (Share-able Link) + batch_connect_sessions_path_selector_forbidden_error: You do not have permission to select that directory or file. + batch_connect_sessions_relaunch_title: Relaunch + batch_connect_sessions_staged_root: staged root directory + batch_connect_sessions_stats_created_at: 'Created at:' + batch_connect_sessions_stats_host: 'Host:' + batch_connect_sessions_stats_session_id: 'Session ID:' + batch_connect_sessions_stats_support_ticket: Problems with this session? + batch_connect_sessions_stats_support_ticket_link_text: Submit support ticket + batch_connect_sessions_stats_time_remaining: 'Time Remaining:' + batch_connect_sessions_stats_time_requested: 'Time Requested:' + batch_connect_sessions_stats_time_used: 'Time Used:' + batch_connect_sessions_stats_undetermined_host: Undetermined + batch_connect_sessions_status_bad: Your session has entered a bad state. Feel free to contact support for further information. + batch_connect_sessions_status_blurb_cancel_failure: Failed to cancel session. + batch_connect_sessions_status_blurb_cancel_success: Session was successfully canceled. + batch_connect_sessions_status_blurb_create_success: Session was successfully created. + batch_connect_sessions_status_blurb_delete_failure: Failed to delete session. + batch_connect_sessions_status_blurb_delete_success: Session was successfully deleted. + batch_connect_sessions_status_completed: For debugging purposes, this card will be retained for %{days} more days + batch_connect_sessions_status_missing_connection: | + This app is missing information required to establish a connection. Please + contact support if you see this message. + batch_connect_sessions_status_queued: | + Please be patient as your job currently sits in queue. The wait time depends + on the number of cores as well as time requested. + batch_connect_sessions_status_starting: | + Your session is currently starting... Please be patient as this process can + take a few minutes. + batch_connect_sessions_word: Session + bc_saved_settings: + delete_confirm: Are you sure? + delete_title: Delete %{settings_name} saved settings + deleted_message: Saved settings %{settings_name} deleted. + edit_title: Edit %{settings_name} saved settings + launch_title: Launch %{app_title} with %{settings_name} parameters + missing_settings: Selected saved settings not found. + no_settings_title: You have no saved settings. + outdated_message: "%{app_title} parameters have changed since these settings were created." + saved_message: "%{settings_name} settings saved" + settings_values_label: Values + title: Saved Settings + breadcrumbs_all_apps: All Apps + breadcrumbs_home: Home + breadcrumbs_my_sessions: My Interactive Sessions + breadcrumbs_support_ticket: Support Ticket + close: Close + custom_pages: + invalid: 'Invalid page code: %{page}. This page has not been configured' + delete: 消す + development_apps_caption: Sandbox App + directory: Directory + edit: 編集する + files_directory_download_error_modal_title: Directory too large to download + files_directory_download_unauthorized: You can only download a directory as zip that you have read and execute access to + files_directory_size_calculation_error: Timeout while trying to determine directory size. + files_directory_size_calculation_timeout: Timeout while trying to determine directory size. + files_directory_size_unknown: 'Error with status %{exit_code} when trying to determine directory size: %{error}' + files_directory_too_large: The directory is too large to download as a zip. The directory should be less than %{download_directory_size_limit} bytes. + files_download_not_enabled: Downloading files is not enabled on this server. + files_remote_dir_not_created: Did not create directory %{path} + files_remote_disabled: Remote file support is not enabled + files_remote_empty_dir_unsupported: Remote does not support empty directories + files_remote_error_listing_remotes: 'Error listing Rclone remotes: %{error}' + jobs_create_blank_project: Create a new project + jobs_create_template_project: Create a new project from a template + jobs_launchers: Launchers + jobs_launchers_created: Launcher successfully created! + jobs_launchers_default_created: A 'hello_world.sh' was also added to this project. + jobs_launchers_delete_script_confirmation: Delete all contents of launcher? + jobs_launchers_deleted: Launcher successfully deleted! + jobs_launchers_fixed_field: Fixed Value + jobs_launchers_not_found: Cannot find Launcher %{launcher_id} + jobs_launchers_submitted: Successfully submitted job %{job_id}. + jobs_launchers_updated: Launcher manifest updated! + jobs_new_launcher: New Launcher + jobs_project_created: Project successfully created! + jobs_project_delete_project_confirmation: Delete all contents of project directory? + jobs_project_deleted: Project successfully deleted! + jobs_project_description_placeholder: Project description + jobs_project_directory_help_html: 'Leave empty and a new directory will be created.
Default location: %{root_directory}' + jobs_project_directory_placeholder: Project directory absolute path + jobs_project_generic_error: 'There was an error processing your request: %{error}' + jobs_project_invalid_configuration_clusters: An HPC cluster is required. Contact your administrator to add one to the system. + jobs_project_invalid_configuration_scripts: An executable script is required for your project. Upload a script using the file application. + jobs_project_job_deleted: Successfully deleted job %{job_id} + jobs_project_job_not_deleted: Cannot delete job %{job_id} + jobs_project_job_stopped: Successfully stopped job %{job_id} + jobs_project_manifest_updated: Project manifest updated! + jobs_project_name_placeholder: Project name + jobs_project_name_validation: Project name may only contain letters, digits, dashes, underscores, and spaces + jobs_project_not_found: Cannot find project %{project_id} + jobs_project_save_error: Cannot save manifest to %{path} + jobs_project_validation_error: Invalid Request. Please review the errors below + launch: 起動する + motd_erb_render_error: 'MOTD was not parsed or rendered correctly: %{error_message}' + motd_title: Message of the Day + nav_all_apps: All Apps + nav_develop_docs: Developer Documentation + nav_develop_my_sandbox_apps_dev: My Sandbox Apps (Development) + nav_develop_my_sandbox_apps_prod: My Shared Apps (Production) + nav_develop_title: Develop + nav_help_change_password: Change HPC Password + nav_help_custom: Nav help custom + nav_help_docs: Online Documentation + nav_help_support: Contact Support + nav_help_support_ticket: Submit Support Ticket + nav_help_title: Help + nav_help_two_factor: Configure Two-Factor Authentication + nav_limit_caption: showing %{subset_count} of %{total_count} + nav_logout: Log Out + nav_restart_server: Restart Web Server + nav_sessions: My Interactive Sessions + nav_user: Logged in as %{username} + not_grouped: Other Apps + pinned_apps_caption_html: A featured subset of all available apps + pinned_apps_category: Apps + pinned_apps_title: Pinned Apps + project: Project + quota_additional_message: Consider deleting or archiving files to free up disk space. + quota_block: Using %{used} of quota %{available} + quota_block_shared: "(%{used_exclusive} are yours)" + quota_file: Using %{used} files of quota %{available} files + quota_file_shared: "(%{used_exclusive} files are yours)" + quota_reload_message: Reload page to see updated quota. Quotas are updated every 5 minutes. + quota_warning_prefix_html: Quota limit warning for + recently_used_apps_title: Recently Used Apps + remove: 抜かす + restart_msg_html: | + Your group membership has changed, which affects your access to apps. Your dashboard should restart automatically. + If it doesn't please, click: restart web server. + save: 溜める + saved_settings_title: Saved Settings + settings_invalid_request: Invalid settings submitted + settings_updated: Settings updated + shared_apps_caption: Shared by %{owner_title} (%{owner}) + shared_apps_caption_short: Shared by %{owner} + shared_apps_title: Shared Apps + sharing_catalog_msg_html: "
A subset of the apps available can be viewed on the %{catalog_link_tag}.\n" + sharing_catalog_title: App Catalog + sharing_no_shared_apps_html: "No custom shared apps available.\n" + sharing_support_msg_html: | + If you don't see the app you are looking for, please + contact support. + sharing_welcome_msg_html: | + Cluster access applications are available from the dropdown menus in the navbar above. +
Custom shared apps are available below. + shell_app_title: "%{cluster_title} Shell Access" + show: 見せる + support_ticket: + creation_success: 'Support ticket email sent to: %{to}' + generic_error: 'There was an error processing your request: %{error}' + header: Support Ticket + rt: + creation_success: 'Support ticket created in RequestTracker system. TicketId: %{ticket_id}' + title: Support Ticket + validation: + attachments_items: The %{id} are invalid. %{items} added, maximum number of attachments is %{max} + attachments_size: The %{id} are invalid. Maximum attachment size is %{max} + email: The %{id} format is invalid. Expected a valid email address + items: + attachments_js: No more attachments allowed + required: The %{id} is required + size: + attachments_js: Max attachment size is %{max}. Selected file size is %{size} + validation_error: Invalid Request. Please review the error messages below + system_apps_caption: System Installed App + unknown: Unknown + uppy: Uppy + user_configuration: + support_ticket_error: support_ticket is misconfigured. "email" or "rt_api" sections are required in the configuration YAML. + welcome_html: | + %{logo_img_tag} +

OnDemand provides an integrated, single access point for all of your HPC resources.

diff --git a/apps/dashboard/config/locales/zh-CN.yml b/apps/dashboard/config/locales/zh-CN.yml index bb3c798bdb..e8e0819042 100644 --- a/apps/dashboard/config/locales/zh-CN.yml +++ b/apps/dashboard/config/locales/zh-CN.yml @@ -1,50 +1,21 @@ -# Files in the config/locales directory are used for internationalization -# and are automatically loaded by Rails. If you want to use locales other -# than English, add the necessary files in this directory. -# -# To use the locales, use `I18n.t`: -# -# I18n.t 'hello' -# -# In views, this is aliased to just `t`: -# -# <%= t('hello') %> -# -# To use a different locale, set it with `I18n.locale`: -# -# I18n.locale = :es -# -# This would use the information in config/locales/es.yml. -# -# To learn more, please read the Rails Internationalization guide -# available at http://guides.rubyonrails.org/i18n.html. - +--- zh-CN: + activemodel: + errors: + messages: + format: "%{attribute} format invalid or missing" + invalid: "%{attribute} is invalid" + required: "%{attribute} is required" + used: "%{attribute} is already used" dashboard: - # Site specific translations - batch_connect_sessions_status_bad: "你的会话出现问题。请与支持人员联系以获取更多信息。" - batch_connect_sessions_status_missing_connection: | - 此应用缺少建立连接所需的信息。 如果看到此消息,请与支持人员联系。 - batch_connect_sessions_status_queued: | - 由于您的工作目前正在排队,请耐心等待。 等待时间取决于内核数以及请求的时间。 - nav_help_change_password: "修改HPC密码" - nav_help_docs: "帮助文档" - nav_help_support: "联系支持人员" - nav_help_two_factor: "配置双重身份验证" - - quota_additional_message: "考虑删除或归档文件以释放磁盘空间。" - quota_reload_message: "重新加载页面以查看更新的配额。 配额每5分钟更新一次。" - quota_warning_prefix_html: "配额限制警告" - - balance_additional_message: "考虑申请额外的 %{balanace_units}" - balance_reload_message_html: "重新加载页面以查看更新后的余额。 余额每天更新。
最后一次更新是 %{last_update}" - balance_warning_prefix_html: "%{units_balance} 警告" - balance_message: "%{units_balance} 是 %{value}" - - welcome_html: | - %{logo_img_tag} -

OnDemand为您的所有HPC资源提供了一个集成的单一访问点。

- # General translations + active_sessions_caption_html: view all (%{number_of_sessions}) + active_sessions_title: Active interactive sessions + add: Add + all_apps_table_app_column: Name + all_apps_table_category_column: Category + all_apps_table_sub_category_column: Sub Category + announcements_dismissible_button: OK + announcements_required_button: Accept apps_setup_failure_html: |

初始化此应用程序的数据时出现问题。

@@ -58,97 +29,223 @@ zh-CN:

%{exception_message}

堆栈跟踪:

%{exception_trace}
- apps_system_apps_title: "系统应用" - - batch_connect_form_choose_template_name: "选择模版名称" - batch_connect_form_data_root: "数据根目录" - batch_connect_form_launch: "启动" - batch_connect_form_prefill: "使用模版预填写" - batch_connect_form_prefill_error: "诶呀,你的模版有问题" - batch_connect_form_reset_resolution: "重置分辨率" - batch_connect_form_save: "保存为模版" - batch_connect_form_save_new_template: "保存为一个新模版" - batch_connect_form_select_template: "选择一个模版" - batch_connect_form_session_data_html: | - * 你可以通过%{data_link_tag}来获取会话数据%{title}。 - batch_connect_form_type_new_name: "在这里输入你的新模版名称" - batch_connect_form_type_new_name_error: "请输入一个有效的名称以继续" - batch_connect_no_apps: "没有可用的互动应用程序。" - batch_connect_no_sessions: "您没有可运行的会话。" + apps_system_apps_title: 系统应用 + auto_log_location_title: 日志位置 + balance_additional_message: 考虑申请额外的 %{balanace_units} + balance_message: "%{units_balance} 是 %{value}" + balance_reload_message_html: 重新加载页面以查看更新后的余额。 余额每天更新。
最后一次更新是 %{last_update} + balance_warning_prefix_html: "%{units_balance} 警告" + batch_connect_apps_menu_title: Interactive Apps + batch_connect_form_attr_cache_error: Unable to use previously cached values, using defaults instead. (%{error_message}) + batch_connect_form_choose_template_name: 选择模版名称 + batch_connect_form_data_root: 数据根目录 + batch_connect_form_invalid: The form.yml has missing options in the %{id} form field. + batch_connect_form_launch: 启动 + batch_connect_form_prefill: 使用模版预填写 + batch_connect_form_prefill_error: 诶呀,你的模版有问题 + batch_connect_form_reset_resolution: 重置分辨率 + batch_connect_form_save: 保存为模版 + batch_connect_form_save_new_template: 保存为一个新模版 + batch_connect_form_save_submit: Save settings and close + batch_connect_form_select_template: 选择一个模版 + batch_connect_form_session_data_html: "* 你可以通过%{data_link_tag}来获取会话数据%{title}。\n" + batch_connect_form_template_name_label: setting name + batch_connect_form_type_new_name: 在这里输入你的新模版名称 + batch_connect_form_type_new_name_error: 请输入一个有效的名称以继续 + batch_connect_invalid_form_array: "'form' element in form.yml is not an Array" + batch_connect_invalid_form_attributes: "'attributes' element in form.yml is not a Map" + batch_connect_missing_cluster: | + The cluster was never set. Either set it in form.yml.erb with `cluster` or `form.cluster` or + set `cluster` in submit.yml.erb. + batch_connect_no_apps: 没有可用的互动应用程序。 + batch_connect_no_sessions: 您没有可运行的会话。 batch_connect_sandbox: " [Sandbox]" - batch_connect_sessions_data_html: | - 你可以通过%{data_link_tag}来获取会话数据%{title}。 - batch_connect_sessions_error_invalid_job_name_html: | - 如果由于作业名称无效而导致该作业提交失败,请要求管理员配置OnDemand来设置环境变量OOD_JOB_NAME_ILLEGAL_CHARS。 - batch_connect_sessions_delete_confirm: "你确定吗?" - batch_connect_sessions_delete_hover: "删除会话" - batch_connect_sessions_delete_title: "删除" - batch_connect_sessions_errors_staging: "无法调用模板,并显示以下错误:" - batch_connect_sessions_errors_submission: "提交会话失败,出现以下错误:" - batch_connect_sessions_novnc_launch: "启动%{app_title}" - batch_connect_sessions_novnc_view_only: "只读 (共享链接)" - batch_connect_sessions_staged_root: "暂存根目录" - batch_connect_sessions_stats_created_at: "创建于:" - batch_connect_sessions_stats_host: "主机:" - batch_connect_sessions_stats_session_id: "会话ID:" - batch_connect_sessions_stats_time_remaining: "剩余时间:" - batch_connect_sessions_stats_time_requested: "所需时间:" - batch_connect_sessions_stats_time_used: "使用时间:" - batch_connect_sessions_stats_undetermined_host: "未定" - batch_connect_sessions_status_blurb_create_success: "会话已成功创建。" - batch_connect_sessions_status_blurb_delete_failure: "删除会话失败。" - batch_connect_sessions_status_blurb_delete_success: "会话已成功删除." - batch_connect_sessions_status_starting: | - 您的会话目前正在启动...请耐心等待,因为此过程可能需要几分钟。 - breadcrumbs_all_apps: "所有应用" - breadcrumbs_home: "主页" - breadcrumbs_my_sessions: "我的交互会话" + batch_connect_sessions_cancel_confirm: Are you sure? + batch_connect_sessions_cancel_title: Cancel + batch_connect_sessions_data_html: '你可以通过%{data_link_tag}来获取会话数据%{title}。 + +' + batch_connect_sessions_delete_confirm: 你确定吗? + batch_connect_sessions_delete_hover: 删除会话 + batch_connect_sessions_delete_title: 删除 + batch_connect_sessions_edit_title: Edit new %{title} with this session parameters + batch_connect_sessions_error_invalid_job_name_html: '如果由于作业名称无效而导致该作业提交失败,请要求管理员配置OnDemand来设置环境变量OOD_JOB_NAME_ILLEGAL_CHARS。 + +' + batch_connect_sessions_errors_staging: 无法调用模板,并显示以下错误: + batch_connect_sessions_errors_submission: 提交会话失败,出现以下错误: + batch_connect_sessions_novnc_launch: 启动%{app_title} + batch_connect_sessions_novnc_view_only: 只读 (共享链接) + batch_connect_sessions_path_selector_forbidden_error: You do not have permission to select that directory or file. + batch_connect_sessions_relaunch_title: Relaunch + batch_connect_sessions_staged_root: 暂存根目录 + batch_connect_sessions_stats_created_at: 创建于: + batch_connect_sessions_stats_host: 主机: + batch_connect_sessions_stats_session_id: 会话ID: + batch_connect_sessions_stats_support_ticket: Problems with this session? + batch_connect_sessions_stats_support_ticket_link_text: Submit support ticket + batch_connect_sessions_stats_time_remaining: 剩余时间: + batch_connect_sessions_stats_time_requested: 所需时间: + batch_connect_sessions_stats_time_used: 使用时间: + batch_connect_sessions_stats_undetermined_host: 未定 + batch_connect_sessions_status_bad: 你的会话出现问题。请与支持人员联系以获取更多信息。 + batch_connect_sessions_status_blurb_cancel_failure: Failed to cancel session. + batch_connect_sessions_status_blurb_cancel_success: Session was successfully canceled. + batch_connect_sessions_status_blurb_create_success: 会话已成功创建。 + batch_connect_sessions_status_blurb_delete_failure: 删除会话失败。 + batch_connect_sessions_status_blurb_delete_success: 会话已成功删除. + batch_connect_sessions_status_completed: For debugging purposes, this card will be retained for %{days} more days + batch_connect_sessions_status_missing_connection: '此应用缺少建立连接所需的信息。 如果看到此消息,请与支持人员联系。 - motd_title: "每日信息" +' + batch_connect_sessions_status_queued: '由于您的工作目前正在排队,请耐心等待。 等待时间取决于内核数以及请求的时间。 - nav_all_apps: "所有应用" - nav_develop_docs: "开发者文档" - nav_develop_my_sandbox_apps_dev: "我的沙盒应用 (Development)" - nav_develop_my_sandbox_apps_prod: "我的沙盒应用 (Production)" - nav_develop_title: "开发" - nav_help_title: "帮助" - nav_logout: "登出" - nav_restart_server: "重启网页服务器" - nav_sessions: "我的交互会话" # Note duplication with breadcrumbs_my_sessions - nav_user: "以用户名:%{username}登陆" +' + batch_connect_sessions_status_starting: '您的会话目前正在启动...请耐心等待,因为此过程可能需要几分钟。 - quota_block: "配额使用量%{used} 可用 %{available}" +' + batch_connect_sessions_word: Session + bc_saved_settings: + delete_confirm: Are you sure? + delete_title: Delete %{settings_name} saved settings + deleted_message: Saved settings %{settings_name} deleted. + edit_title: Edit %{settings_name} saved settings + launch_title: Launch %{app_title} with %{settings_name} parameters + missing_settings: Selected saved settings not found. + no_settings_title: You have no saved settings. + outdated_message: "%{app_title} parameters have changed since these settings were created." + saved_message: "%{settings_name} settings saved" + settings_values_label: Values + title: Saved Settings + breadcrumbs_all_apps: 所有应用 + breadcrumbs_home: 主页 + breadcrumbs_my_sessions: 我的交互会话 + breadcrumbs_support_ticket: Support Ticket + close: Close + custom_pages: + invalid: 'Invalid page code: %{page}. This page has not been configured' + delete: 删除 + development_apps_caption: Sandbox App + directory: Directory + edit: 编辑 + files_directory_download_error_modal_title: Directory too large to download + files_directory_download_unauthorized: You can only download a directory as zip that you have read and execute access to + files_directory_size_calculation_error: Timeout while trying to determine directory size. + files_directory_size_calculation_timeout: Timeout while trying to determine directory size. + files_directory_size_unknown: 'Error with status %{exit_code} when trying to determine directory size: %{error}' + files_directory_too_large: The directory is too large to download as a zip. The directory should be less than %{download_directory_size_limit} bytes. + files_download_not_enabled: Downloading files is not enabled on this server. + files_remote_dir_not_created: Did not create directory %{path} + files_remote_disabled: Remote file support is not enabled + files_remote_empty_dir_unsupported: Remote does not support empty directories + files_remote_error_listing_remotes: 'Error listing Rclone remotes: %{error}' + jobs_create_blank_project: Create a new project + jobs_create_template_project: Create a new project from a template + jobs_launchers: Launchers + jobs_launchers_created: Launcher successfully created! + jobs_launchers_default_created: A 'hello_world.sh' was also added to this project. + jobs_launchers_delete_script_confirmation: Delete all contents of launcher? + jobs_launchers_deleted: Launcher successfully deleted! + jobs_launchers_fixed_field: Fixed Value + jobs_launchers_not_found: Cannot find Launcher %{launcher_id} + jobs_launchers_submitted: Successfully submitted job %{job_id}. + jobs_launchers_updated: Launcher manifest updated! + jobs_new_launcher: New Launcher + jobs_project_created: Project successfully created! + jobs_project_delete_project_confirmation: Delete all contents of project directory? + jobs_project_deleted: Project successfully deleted! + jobs_project_description_placeholder: Project description + jobs_project_directory_help_html: 'Leave empty and a new directory will be created.
Default location: %{root_directory}' + jobs_project_directory_placeholder: Project directory absolute path + jobs_project_generic_error: 'There was an error processing your request: %{error}' + jobs_project_invalid_configuration_clusters: An HPC cluster is required. Contact your administrator to add one to the system. + jobs_project_invalid_configuration_scripts: An executable script is required for your project. Upload a script using the file application. + jobs_project_job_deleted: Successfully deleted job %{job_id} + jobs_project_job_not_deleted: Cannot delete job %{job_id} + jobs_project_job_stopped: Successfully stopped job %{job_id} + jobs_project_manifest_updated: Project manifest updated! + jobs_project_name_placeholder: Project name + jobs_project_name_validation: Project name may only contain letters, digits, dashes, underscores, and spaces + jobs_project_not_found: Cannot find project %{project_id} + jobs_project_save_error: Cannot save manifest to %{path} + jobs_project_validation_error: Invalid Request. Please review the errors below + launch: 启动 + motd_erb_render_error: 'MOTD was not parsed or rendered correctly: %{error_message}' + motd_title: 每日信息 + nav_all_apps: 所有应用 + nav_develop_docs: 开发者文档 + nav_develop_my_sandbox_apps_dev: 我的沙盒应用 (Development) + nav_develop_my_sandbox_apps_prod: 我的沙盒应用 (Production) + nav_develop_title: 开发 + nav_help_change_password: 修改HPC密码 + nav_help_custom: Nav help custom + nav_help_docs: 帮助文档 + nav_help_support: 联系支持人员 + nav_help_support_ticket: Submit Support Ticket + nav_help_title: 帮助 + nav_help_two_factor: 配置双重身份验证 + nav_limit_caption: showing %{subset_count} of %{total_count} + nav_logout: 登出 + nav_restart_server: 重启网页服务器 + nav_sessions: 我的交互会话 + nav_user: 以用户名:%{username}登陆 + not_grouped: Other Apps + pinned_apps_caption_html: A featured subset of all available apps + pinned_apps_category: Apps + pinned_apps_title: Pinned Apps + project: Project + quota_additional_message: 考虑删除或归档文件以释放磁盘空间。 + quota_block: 配额使用量%{used} 可用 %{available} quota_block_shared: "(您的配额%{used_exclusive} )" - quota_file: "文件配额使用量%{used} 可用 %{available}" + quota_file: 文件配额使用量%{used} 可用 %{available} quota_file_shared: "(您的文件配额%{used_exclusive})" - + quota_reload_message: 重新加载页面以查看更新的配额。 配额每5分钟更新一次。 + quota_warning_prefix_html: 配额限制警告 + recently_used_apps_title: Recently Used Apps + remove: Remove restart_msg_html: | 您的小组成员资格已更改,这会影响您对应用程序的访问。 您的dashboard将自动重启。 如果没有重启,请点击 来重启网页服务器. - shared_apps_title: "共享应用" - # shared_apps_caption: "Shared by %{owner_title} (%{owner})" - # shared_apps_caption_short: "Shared by %{owner}" - sharing_catalog_title: "应用目录" - sharing_no_shared_apps_html: | - 没有可用的自定义共享应用。 - sharing_catalog_msg_html: | -
可以在%{catalog_link_tag}上查看可用应用程序的子集。 + save: Save + saved_settings_title: Saved Settings + settings_invalid_request: Invalid settings submitted + settings_updated: Settings updated + shared_apps_caption: Shared by %{owner_title} (%{owner}) + shared_apps_caption_short: Shared by %{owner} + shared_apps_title: 共享应用 + sharing_catalog_msg_html: "
可以在%{catalog_link_tag}上查看可用应用程序的子集。\n" + sharing_catalog_title: 应用目录 + sharing_no_shared_apps_html: "没有可用的自定义共享应用。\n" sharing_support_msg_html: | 如果您没有找到所需的应用程序,请 联系支持. sharing_welcome_msg_html: | 可以从上方导航栏中的下拉菜单访问群集访问应用程序。
自定义共享应用程序可以在下面使用。 - - auto_log_location_title: "日志位置" - - # all_apps_table_app_column: "Name" - # all_apps_table_category_column: "Category" - # all_apps_table_sub_category_column: "Sub Category" - - # unknown: "Unknown" - delete: "删除" - edit: "编辑" - show: "显示" - launch: "启动" - # development_apps_caption: "Sandbox App" + shell_app_title: "%{cluster_title} Shell Access" + show: 显示 + support_ticket: + creation_success: 'Support ticket email sent to: %{to}' + generic_error: 'There was an error processing your request: %{error}' + header: Support Ticket + rt: + creation_success: 'Support ticket created in RequestTracker system. TicketId: %{ticket_id}' + title: Support Ticket + validation: + attachments_items: The %{id} are invalid. %{items} added, maximum number of attachments is %{max} + attachments_size: The %{id} are invalid. Maximum attachment size is %{max} + email: The %{id} format is invalid. Expected a valid email address + items: + attachments_js: No more attachments allowed + required: The %{id} is required + size: + attachments_js: Max attachment size is %{max}. Selected file size is %{size} + validation_error: Invalid Request. Please review the error messages below + system_apps_caption: System Installed App + unknown: Unknown + uppy: Uppy + user_configuration: + support_ticket_error: support_ticket is misconfigured. "email" or "rt_api" sections are required in the configuration YAML. + welcome_html: | + %{logo_img_tag} +

OnDemand为您的所有HPC资源提供了一个集成的单一访问点。

diff --git a/apps/dashboard/test/unit/i18n_test.rb b/apps/dashboard/test/unit/i18n_test.rb new file mode 100644 index 0000000000..770097814c --- /dev/null +++ b/apps/dashboard/test/unit/i18n_test.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true +=begin +require 'i18n/tasks' + +class I18nTest < ActiveSupport::TestCase + def setup + @i18n = I18n::Tasks::BaseTask.new + end + + def test_no_missing_keys + missing_keys = @i18n.missing_keys + assert_empty missing_keys, + "Missing #{missing_keys.leaves.count} i18n keys, run `i18n-tasks missing' to show them" + end + + def test_no_unused_keys + unused_keys = @i18n.unused_keys + assert_empty unused_keys, + "#{unused_keys.leaves.count} unused i18n keys, run `i18n-tasks unused' to show them" + end + + def test_files_are_normalized + non_normalized = @i18n.non_normalized_paths + error_message = "The following files need to be normalized:\n" \ + "#{non_normalized.map { |path| " #{path}" }.join("\n")}\n" \ + "Please run `i18n-tasks normalize' to fix" + assert_empty non_normalized, error_message + end + + def test_no_inconsistent_interpolations + inconsistent_interpolations = @i18n.inconsistent_interpolations + error_message = "#{inconsistent_interpolations.leaves.count} i18n keys have inconsistent interpolations.\n" \ + "Please run `i18n-tasks check-consistent-interpolations' to show them" + assert_empty inconsistent_interpolations, error_message + end +end +=end \ No newline at end of file