{
  "LOADING": "Loading...",
  "MENU": {
    "OVERVIEW": "Overview",
    "QUEUES": "QUEUES",
    "SEARCH_INPUT_PLACEHOLDER": "Filter queues",
    "PAUSED": "Paused",
    "EXPAND_ALL": "Expand all groups",
    "COLLAPSE_ALL": "Collapse all groups",
    "EXPAND_SIDEBAR": "Expand sidebar",
    "COLLAPSE_SIDEBAR": "Collapse sidebar",
    "METRICS_HISTORY": "Metrics history",
    "SCHEDULERS": "Schedulers"
  },
  "DASHBOARD": {
    "JOBS_COUNT_one": "{{count}} Job",
    "JOBS_COUNT": "{{count}} Jobs",
    "EMPTY_STATE": "No queues to display.",
    "EMPTY_STATE_FILTERED": "No queues have {{status}} jobs.",
    "SORTING": {
      "TITLE": "Sort by",
      "FAILED": "Failed Jobs",
      "DELAYED": "Delayed Jobs",
      "WAITING": "Waiting Jobs",
      "ACTIVE": "Active Jobs",
      "COMPLETED": "Completed Jobs",
      "ALPHABETICAL": "Alphabetical (A-Z)"
    },
    "VIEW": {
      "TITLE": "View",
      "FLAT": "Flat",
      "GROUPED": "Grouped"
    }
  },
  "JOB": {
    "DELAY_CHANGED": "*Delay changed; the new run time is currently unknown",
    "NOT_FOUND": "Job Not found",
    "STATUS": "Status: {{status}}",
    "ADDED_AT": "Added at",
    "WILL_RUN_AT": "Will run at",
    "DELAYED_FOR": "delayed for",
    "PROCESS_STARTED_AT": "Process started at",
    "PROCESSED_BY": "by {{processedBy}}",
    "FAILED_AT": "Failed at",
    "FINISHED_AT": "Finished at",
    "ATTEMPTS": "attempt #{{attempts}}",
    "REPEAT": "repeat {{count}}",
    "REPEAT_WITH_LIMIT": "$t(JOB.REPEAT) / {{limit}}",
    "DURATION": {
      "SECS": "{{duration}} seconds",
      "MILLI_SECS": "{{duration}} milliseconds"
    },
    "SHOW_DATA_BTN": "Show data",
    "SHOW_PROGRESS_BTN": "Show progress",
    "SHOW_OPTIONS_BTN": "Show options",
    "SHOW_ERRORS_BTN": "Show errors",
    "NA": "NA",
    "NO_PROGRESS": "No progress data available",
    "NO_ERRORS": "No errors recorded",
    "NO_LOGS": "No logs available",
    "LOGS": {
      "FILTER_PLACEHOLDER": "Filters"
    },
    "ACTIONS": {
      "PROMOTE": "Promote",
      "CLEAN": "Clean",
      "RETRY": "Retry",
      "UPDATE_DATA": "Update Data",
      "DUPLICATE": "Duplicate",
      "CONFIRM": {
        "PROMOTE": "Are you sure that you want to promote this job?",
        "RETRY": "Are you sure that you want to retry this job?",
        "CLEAN": "Are you sure that you want to clean this job?",
        "REMOVE_JOB_SCHEDULER_TITLE": "Remove the whole schedule?",
        "REMOVE_JOB_SCHEDULER": "This job is the next run of job scheduler \"{{schedulerId}}\" and cannot be removed on its own. Removing the scheduler stops the schedule and deletes this job."
      }
    },
    "TABS": {
      "DEFAULT": "Default",
      "DATA": "Data",
      "PROGRESS": "Progress",
      "OPTIONS": "Options",
      "LOGS": "Logs",
      "ERROR": "Error",
      "TIMELINE": "Timeline"
    }
  },
  "QUEUE": {
    "NOT_FOUND": "Queue Not found",
    "EMPTY_STATE": "No {{status}} jobs in this queue.",
    "ACTIONS": {
      "MODAL_TITLE": "",
      "RETRY_ALL": "Retry all",
      "RETRY_ALL_FAILED": "Retry all {{count}} failed jobs",
      "RETRY_FAILED_IN_ALL_QUEUES": "Retry {{count}} failed jobs in all queues",
      "RETRY_FAILED_IN_GROUP": "Retry {{count}} failed jobs in group",
      "PROMOTE_ALL": "Promote all",
      "CLEAN_ALL": "Clean all",
      "RESUME": "Resume",
      "PAUSE": "Pause",
      "RESUME_ALL": "Resume all",
      "PAUSE_ALL": "Pause all",
      "EMPTY": "Empty",
      "OBLITERATE": "Obliterate",
      "ADD_JOB": "Add job",
      "SET_CONCURRENCY": "Set concurrency",
      "CONFIRM": {
        "RETRY_ALL": "Are you sure that you want to retry all {{status}} jobs?",
        "RETRY_FAILED_QUEUES": "Are you sure that you want to retry {{jobs}} failed jobs across {{count}} queues?",
        "CLEAN_ALL": "Are you sure that you want to clean all {{status}} jobs?",
        "PROMOTE_ALL": "Are you sure that you want to promote all delayed jobs?",
        "PAUSE_QUEUE": "Are you sure that you want to pause queue processing?",
        "EMPTY_QUEUE": "Are you sure that you want to empty the queue?",
        "OBLITERATE_QUEUE": "Are you sure you want to obliterate this queue?\n\nThis will completely remove the queue and all its Redis keys.\nThe queue must be paused first.",
        "RESUME_QUEUE": "Are you sure that you want to resume queue processing?",
        "PAUSE_ALL": "Are you sure that you want to pause all queues?",
        "RESUME_ALL": "Are you sure that you want to resume all queues?",
        "PAUSE_GROUP": "Are you sure that you want to pause all {{count}} queues in this group?",
        "RESUME_GROUP": "Are you sure that you want to resume all {{count}} queues in this group?"
      },
      "TOAST": {
        "RETRY_PENDING": "Retrying all {{status}} jobs...",
        "RETRY_DONE": "All {{status}} jobs were sent back to the queue",
        "RETRY_SKIPPED": "Skipped {{count}} ids with no job data behind them. The job data is usually lost to a Redis eviction policy other than noeviction.",
        "RETRY_QUEUES_PENDING": "Retrying {{jobs}} failed jobs in {{count}} queues...",
        "RETRY_QUEUES_DONE": "{{jobs}} failed jobs in {{count}} queues were sent back to their queues"
      },
      "PAUSE_GROUP": "Pause all queues in group",
      "RESUME_GROUP": "Resume all queues in group",
      "GROUP_ACTIONS": "Group actions"
    },
    "STATUS": {
      "LATEST": "Latest",
      "ACTIVE": "Active",
      "WAITING": "Waiting",
      "WAITING-CHILDREN": "Waiting Children",
      "PRIORITIZED": "Prioritized",
      "COMPLETED": "Completed",
      "FAILED": "Failed",
      "DELAYED": "Delayed",
      "PAUSED": "Paused"
    },
    "INFO": {
      "TITLE": "Queue info",
      "OVERVIEW": "Overview",
      "NAME": "Name",
      "DISPLAY_NAME": "Display name",
      "TYPE": "Type",
      "STATE": "State",
      "RUNNING": "Running",
      "PAUSED": "Paused",
      "READ_ONLY": "Read-only",
      "RETRIES": "Retries allowed",
      "GLOBAL_CONCURRENCY": "Global concurrency",
      "WORKERS": "Workers",
      "DELIMITER": "Group delimiter",
      "TOTAL_JOBS": "Total jobs",
      "DEFAULTS": "Default job options",
      "DESCRIPTION": "Description",
      "NOT_SET": "Not set",
      "YES": "Yes",
      "NO": "No"
    },
    "SCHEDULERS_LINK": "Schedulers ({{count}})",
    "WORKERS": {
      "TITLE": "Connected workers",
      "NONE": "No workers",
      "NONE_TOOLTIP": "Nothing is consuming this queue",
      "CONNECTED": "connected {{since}}",
      "EMPTY": "Nothing is consuming this queue.",
      "EMPTY_HINT": "Check that a worker process is running and pointed at the same Redis.",
      "EMPTY_PAUSED": "This queue is paused, so no workers are expected."
    }
  },
  "METRICS": {
    "TITLE": "Throughput (jobs / min)",
    "COMPLETED": "Completed",
    "FAILED": "Failed",
    "COMPLETED_PER_MIN": "Completed / min",
    "FAILED_PER_MIN": "Failed / min",
    "PEAK_PER_MIN": "Peak / min",
    "WINDOW_COMPLETED": "Completed (last {{minutes}} min)",
    "NOW": "Now",
    "MINUTES_AGO": "{{minutes}} min ago",
    "PER_MIN_UNIT": "/min",
    "SHOW": "Show metrics",
    "HIDE": "Hide metrics",
    "EMPTY": "No metrics collected yet. Enable metrics on your worker (e.g. metrics: { maxDataPoints: MetricsTime.ONE_WEEK }) to see throughput.",
    "RANGE_60M": "60m",
    "RANGE_7D": "7d",
    "RANGE_30D": "30d",
    "RANGE_90D": "90d",
    "HISTORY_EMPTY": "No history recorded yet for this range.",
    "DAILY_COMPLETED": "Completed total",
    "DAILY_FAILED": "Failed total",
    "PARTIAL_PERIOD": "This period is still in progress.",
    "TAB_THROUGHPUT": "Throughput",
    "TAB_LATENCY": "Latency",
    "P95_RUN_TIME": "Run p95",
    "P95_WAIT_TIME": "Wait p95",
    "NOT_AVAILABLE": "n/a"
  },
  "LATENCY": {
    "TITLE": "Job latency",
    "GROUP_RUN": "Run",
    "GROUP_WAIT": "Wait",
    "RUN_P50": "Run p50",
    "RUN_P95": "Run p95",
    "RUN_P99": "Run p99",
    "WAIT_P50": "Wait p50",
    "WAIT_P95": "Wait p95",
    "WAIT_P99": "Wait p99",
    "QUEUE_AGE": "Oldest job waiting",
    "P50": "p50",
    "P95": "p95",
    "P99": "p99",
    "LOG_SCALE_NOTE": "log scale",
    "LOW_CONFIDENCE": "Low confidence: {{count}} samples",
    "LOW_CONFIDENCE_one": "Low confidence: {{count}} sample",
    "EMPTY_NO_DATA": "No latency recorded yet for this range.",
    "EMPTY_NO_COMPLETIONS": "This queue hasn't completed any jobs in this range.",
    "HOURLY_GRANULARITY_ONLY": "Latency history is recorded at hourly granularity, so there's nothing to show for the last 60 minutes. Switch to 7d, 30d, or 90d to see it."
  },
  "CONFIRM": {
    "DEFAULT_TITLE": "Are you sure?",
    "CONFIRM_BTN": "Confirm",
    "CANCEL_BTN": "Cancel"
  },
  "MODAL": {
    "CLOSE_BTN": "Close"
  },
  "REDIS": {
    "TITLE": "Redis details",
    "TITLE_POSTGRES": "PostgreSQL details",
    "PORT": "Port",
    "MEMORY_USAGE": "Memory usage",
    "PEEK_MEMORY": "Peak memory usage",
    "FRAGMENTATION_RATIO": "Fragmentation ratio",
    "CONNECTED_CLIENTS": "Connected clients",
    "BLOCKED_CLIENTS": "Blocked clients",
    "VERSION": "Version",
    "MODE": "Mode",
    "OS": "OS",
    "UP_TIME": "Up time",
    "ERROR": {
      "MEMORY_USAGE": "Could not retrieve memory stats"
    }
  },
  "SETTINGS": {
    "TITLE": "Settings",
    "LANGUAGE": "Language",
    "POLLING_INTERVAL": "Polling interval",
    "POLLING_OPTIONS": {
      "OFF": "Off",
      "SECS": "{{count}} seconds",
      "MINS": "{{count}} minutes",
      "MINS_one": "{{count}} minute"
    },
    "DEFAULT_JOB_TAB": "Default job tab",
    "JOBS_PER_PAGE": "Jobs per page (1-50)",
    "CONFIRM_QUEUE_ACTIONS": "Confirm queue actions",
    "CONFIRM_JOB_ACTIONS": "Confirm job actions",
    "USE_COLLAPSIBLE_JSON": "Use collapsible JSON",
    "COLLAPSE_JOB": "Collapse job",
    "COLLAPSE_JOB_DATA": "Collapse job data",
    "COLLAPSE_JOB_PROGRESS": "Collapse job progress",
    "COLLAPSE_JOB_OPTIONS": "Collapse job options",
    "COLLAPSE_JOB_ERROR": "Collapse job error",
    "DEFAULT_COLLAPSE_DEPTH": "Default JSON collapse depth (0-10)",
    "SORT_QUEUES": "Sort queues (A-Z, groups first)",
    "DARK_MODE": "Dark mode",
    "SECTIONS": {
      "GENERAL": "General",
      "QUEUES": "Queues",
      "JOBS": "Jobs"
    },
    "GROUP_QUEUES": "Group queues by category",
    "GROUP_QUEUES_HELP": "Split the overview into collapsible sections from the delimiter in queue names, the same grouping the sidebar uses."
  },
  "CONCURRENCY": {
    "TITLE": "Global Concurrency",
    "DESCRIPTION": "Maximum number of jobs processed in parallel across all workers. Set to 0 to remove the limit.",
    "CONCURRENCY": "Concurrency",
    "SAVE": "Save"
  },
  "ADD_JOB": {
    "TITLE": "Add job",
    "TITLE_duplicate": "Duplicate job",
    "QUEUE_NAME": "Queue name",
    "JOB_NAME": "Job name",
    "JOB_DATA": "Job data",
    "JOB_OPTIONS": "Job options",
    "ADD": "Add",
    "DUPLICATE": "Duplicate"
  },
  "UPDATE_JOB_DATA": {
    "TITLE": "Update job data",
    "UPDATE": "Update",
    "JOB_DATA": "Job data"
  },
  "CLIPBOARD": {
    "COPY_FAILED": "Failed to copy to clipboard. Your browser may not support this feature or the page is not served over HTTPS."
  },
  "ERRORS": {
    "INTERNAL_SERVER_ERROR": "Internal server error",
    "INVALID_BEFORE_DATE": "Invalid before: expected YYYY-MM-DD",
    "INVALID_CONCURRENCY": "Invalid concurrency value",
    "INVALID_DATE_RANGE": "Invalid from/to range",
    "INVALID_GRANULARITY": "Invalid granularity: {{granularity}}",
    "INVALID_QUEUE": "Invalid queue",
    "INVALID_SCHEDULER_END_DATE": "End date must be in the future",
    "INVALID_SCHEDULER_INTERVAL": "Interval must be a positive number of milliseconds",
    "INVALID_SCHEDULER_LIMIT": "Max runs must be a positive whole number",
    "INVALID_SCHEDULER_PATTERN": "The schedule was rejected, check the cron pattern",
    "INVALID_SCHEDULER_SCHEDULE": "Set either a cron pattern or an interval, not both",
    "JOB_BELONGS_TO_JOB_SCHEDULER": "Job belongs to a job scheduler",
    "JOB_BELONGS_TO_JOB_SCHEDULER_DETAILS": "Job {{jobId}} is the next run of job scheduler \"{{jobSchedulerId}}\" and cannot be removed on its own. Remove the job scheduler to stop the schedule.",
    "JOB_IS_ACTIVE": "Job is currently active",
    "JOB_IS_ACTIVE_DETAILS": "Job {{jobId}} is being processed by a worker and cannot be removed until it finishes.",
    "JOB_NOT_FOUND": "Job not found",
    "JOB_NOT_RETRIABLE": "Job is in \"{{state}}\" state and cannot be retried",
    "JOB_SCHEDULER_EDIT_NOT_SUPPORTED": "This queue type does not support editing a schedule",
    "JOB_SCHEDULER_NOT_FOUND": "Job scheduler not found",
    "QUEUE_NOT_FOUND": "Queue not found",
    "QUEUE_NOT_PAUSED": "Queue must be paused before obliteration",
    "QUEUE_READ_ONLY": "Method not allowed on read only queue",
    "REDIS_STATS_UNAVAILABLE": "Redis details are not available for this queue's backend",
    "STATUS_NOT_RETRIABLE": "\"{{status}}\" is not a retriable status",
    "WORKERS_DISABLED": "Worker reporting is disabled",
    "INVALID_METRIC": "Invalid metric"
  },
  "METRICS_HISTORY": {
    "TITLE": "Metrics history",
    "EMPTY": "No history recorded yet.",
    "TOTAL_COMPLETED": "Completed total",
    "TOTAL_FAILED": "Failed total",
    "RANGE_7D": "7d",
    "RANGE_30D": "30d",
    "RANGE_90D": "90d",
    "BY_QUEUE": "By queue",
    "ACTIONS": "Metrics history actions",
    "QUEUE": "Queue",
    "COMPLETED": "Completed",
    "FAILED": "Failed",
    "RUNS": "Runs",
    "P95_RUNTIME": "Run p95",
    "P95_RUN_TIME": "Run p95",
    "P95_WAIT_TIME": "Wait p95",
    "NOT_AVAILABLE": "n/a",
    "BAR_LABEL": "{{completed}} completed, {{failed}} failed",
    "FAILURE_RATE": "{{rate}} of runs failed",
    "STORAGE": {
      "TITLE": "Storage",
      "EMPTY": "Nothing stored yet.",
      "TOTAL": "Total",
      "MINUTE_TIER": "Minute detail",
      "HOUR_TIER": "Hourly",
      "DAY_TIER": "Daily totals",
      "RANGE": "Recorded",
      "SIZE": "Size",
      "MINUTES": "Minutes",
      "TIER_NOTE": "Minute detail is by far the largest tier. The charts read the daily totals, so a shorter minute retention shrinks storage without changing what you see here.",
      "TRIM_BTN": "Keep only the last {{range}}",
      "CLEAR_BTN": "Clear all history",
      "CONFIRM_TITLE": "Delete recorded metrics history?",
      "CONFIRM_TRIM": "Everything recorded before {{date}} will be deleted, keeping the last {{range}}. This cannot be undone, and the deleted days will no longer appear in any chart.",
      "CONFIRM_CLEAR": "All {{size}} of recorded history will be deleted for every queue. This cannot be undone. Recording continues, so new data starts accumulating from the next snapshot."
    }
  },
  "SCHEDULERS": {
    "TITLE": "Schedulers",
    "EMPTY": "No schedulers registered.",
    "FILTER_BY_QUEUE": "Filter by queue",
    "ALL_QUEUES": "All queues",
    "TEMPLATE": "Job template",
    "EVERY": "every {{interval}}",
    "OF_LIMIT": "of {{limit}}",
    "COLUMNS": {
      "SCHEDULER": "Scheduler",
      "QUEUE": "Queue",
      "SCHEDULE": "Schedule",
      "NEXT_RUN": "Next run",
      "LAST_RUN": "Last run",
      "RUNS": "Runs"
    },
    "INTERVAL": {
      "MILLISECONDS": "{{count}}ms",
      "SECONDS": "{{count}}s",
      "MINUTES": "{{count}}m",
      "HOURS": "{{count}}h",
      "DAYS": "{{count}}d"
    },
    "ACTIONS": {
      "EDIT": "Edit schedule",
      "REMOVE": "Remove scheduler"
    },
    "CONFIRM": {
      "REMOVE": "Are you sure that you want to remove scheduler \"{{id}}\"? Its future runs stop until the application registers it again."
    },
    "TOAST": {
      "REMOVE_PENDING": "Removing scheduler {{id}}",
      "REMOVE_DONE": "Scheduler {{id}} removed",
      "UPDATE_PENDING": "Updating scheduler {{id}}",
      "UPDATE_DONE": "Scheduler {{id}} updated"
    },
    "EDIT": {
      "TITLE": "Edit scheduler {{id}}",
      "DESCRIPTION": "Only the schedule changes. The job this scheduler creates keeps its name, data and options.",
      "OVERWRITE_NOTE": "The application can register this scheduler again when it restarts, which overwrites the schedule set here.",
      "SAVE": "Save",
      "KIND": "Schedule type",
      "KIND_PATTERN": "Cron pattern",
      "KIND_EVERY": "Interval",
      "PATTERN": "Cron pattern",
      "TZ": "Time zone",
      "EVERY": "Interval (ms)",
      "LIMIT": "Max runs",
      "END_DATE": "End date"
    }
  }
}
