/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
const m = {
  hourTip: 'Select Hour',
  minuteTip: 'Select Minute',
  secondTip: 'Select Second',
  second: 's',
  yearSuffix: 'Year',
  monthsHead: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec',
  months: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec',
  weeks: 'Mon_Tue_Wed_Thu_Fir_Sat_Sun',
  hello: 'Hello',
  helloMessage: 'Welcome Back, Apache SkyWalking APM System !',
  username: 'Username',
  password: 'Password',
  title: 'Title',
  width: 'Width',
  height: 'Height',
  login: 'Login Now',
  signout: 'Sign Out',
  dashboard: 'Dashboard',
  topology: 'Topology',
  trace: 'Trace',
  alarm: 'Alarm',
  event: 'Event',
  auto: 'Auto',
  reload: 'Reload',
  usermode: 'User Mode',
  editmode: 'Edit Mode',
  currentService: 'Current Service',
  currentEndpoint: 'Current Endpoint',
  currentInstance: 'Current Instance',
  currentVersion: 'Current Version',
  currentPage: 'Current Page',
  version: 'Version',
  page: 'Page',
  currentDatabase: 'Current Database',
  templateConfig: 'Template Configuration',
  copy: 'Copy',
  reset: 'Reset',
  apply: 'Apply',
  createTemplate: 'Create Template',
  templateType: 'Template Type',
  templateName: 'Template Name',
  template: 'Template',
  confirm: 'Confirm',
  cancel: 'Cancel',
  createTab: 'Create Tab',
  tabName: 'Tab Name',
  nouse: 'No Use',
  allServices: 'All Services',
  serviceDetail: 'Service Detail',
  detectPoint: 'Detect Point',
  callType: 'Call Type',
  server: 'Server',
  client: 'Client',
  name: 'Name',
  type: 'Type',
  cpm: 'Cpm',
  sla: 'SLA',
  latency: 'Latency',
  avgResponseTime: 'Avg Response Time ( ms )',
  avgThroughput: 'Load (CPM - calls per minute)',
  avgSLA: 'Successful Rate ( % )',
  all: 'All',
  success: 'Success',
  error: 'Error',
  service: 'Service',
  instance: 'Instance',
  database: 'Database',
  endpoint: 'Endpoint',
  cache: 'Cache',
  global: 'Global',
  serviceendpoint: 'ServiceEndpoint',
  serviceinstance: 'ServiceInstance',
  databaseaccess: 'DatabaseAccess',
  servicerelation: 'ServiceRelation',
  serviceinstancerelation: 'ServiceInstanceRelation',
  endpointrelation: 'EndpointRelation',
  status: 'Status',
  endpointName: 'Endpoint Name',
  search: 'Search',
  clear: 'Clear',
  more: 'More',
  traceID: 'Trace ID',
  range: 'Range',
  timeRange: 'Time Range',
  duration: 'Duration',
  startTime: 'Start Time',
  start: 'Start',
  spans: 'Spans',
  spanInfo: 'Span Info',
  spanType: 'Span Type',
  time: 'Time',
  tags: 'Tags',
  logs: 'Logs',
  component: 'Component',
  table: 'Table',
  list: 'List',
  tree: 'Tree',
  filterScope: 'Filter Scope',
  searchKeyword: 'Search Keyword',
  quarterHourCutTip: 'Last 15 mins',
  halfHourCutTip: 'Last 30 mins',
  hourCutTip: 'Last 1 hour',
  dayCutTip: 'Last 1 day',
  weekCutTip: 'Last 1 week',
  monthCutTip: 'Last 1 month',
  serverZone: 'Server Zone',
  percentResponse: 'Response Time Percentile ( ms )',
  exportImage: 'Export image',
  queryData: 'Query',
  previousService: 'Previous Service',
  nextService: 'Next Service',
  object: 'Object',
  metrics: 'Metrics',
  ShowInstanceDependency: 'Show Instance Dependency',
  InstanceDependencyTitle: 'Service Instance Dependency',
  profile: 'Profile',
  newTask: 'New Task',
  monitorTime: 'Monitor Time',
  monitorDuration: 'Monitor Duration',
  minThreshold: 'Min Duration Threshold',
  dumpPeriod: 'Dump Period',
  createTask: 'Create Task',
  maxSamplingCount: 'Max Sampling Count',
  analyze: 'Analyze',
  noData: 'No Data',
  taskInfo: 'Task Information',
  task: 'Task',
  operationType: 'Operation Type',
  operationTime: 'Operation Time',
  taskView: 'View Task',
  includeChildren: 'Include Children',
  excludeChildren: 'Exclude Children',
  view: 'View',
  timeTips: 'Time interval cannot exceed 60 days',
  standardAPM: 'Standard',
  entityType: 'Entity type',
  maxItemNum: 'Max number of Item',
  independentSelector: 'Selectors',
  unknownMetrics: 'Unknown Metrics',
  labels: 'Labels',
  aggregation: 'Data Calculation',
  unit: 'Unit',
  labelsIndex: 'Label Subscript',
  parentService: 'Parent Service',
  isParentService: 'Set Parent Service',
  noneParentService: 'No Parent Service',
  serviceGroup: 'Service Group',
  endpointFilter: 'Endpoint Filter',
  editConfig: 'Edit Config',
  databaseView: 'Database',
  browserView: 'Browser',
  metricsView: 'NOC - Network Operation Center',
  sortOrder: 'Sort Order',
  descendOrder: 'Descend Order',
  increaseOrder: 'Increase Order',
  defaultOrder: 'Default Order',
  chartType: 'Chart Type',
  currentDepth: 'Current Depth',
  traceTagsTip: `Only tags defined in the core/default/searchableTracesTags are searchable.
  Check more details on the Configuration Vocabulary page`,
  tagsLink: 'Configuration Vocabulary page',
  addTag: 'Please add a tag',
  log: 'Log',
  logCategory: 'Log Category',
  errorCatalog: 'Error Catalog',
  logDetail: 'Log Detail ',
  timeReload: 'The time interval must be greater than 0',
  errorInfo: 'Error Info',
  stack: 'Stack',
  serviceVersion: 'Service Version',
  errorPage: 'Error Page',
  category: 'Category',
  grade: 'Grade',
  relatedTraceLogs: 'Related Logs',
  setConditions: 'More Conditions',
  metricName: 'Metric Name',
  keywordsOfContent: 'Keys Of Content',
  excludingKeywordsOfContent: 'Exclude Keys Of Content',
  return: 'Return',
  isError: 'Error',
  contentType: 'Content Type',
  content: 'Content',
  viewLogs: 'View Logs',
  logsTagsTip: `Only tags defined in the core/default/searchableLogsTags are searchable.
  Check more details on the Configuration Vocabulary page`,
  keywordsOfContentLogTips: 'Current storage of SkyWalking OAP server does not support this.',
  setEvent: 'Set Event',
  instanceAttributes: 'Instance Attributes',
  serviceEvents: 'Service Events',
  select: 'Select',
  eventID: 'Event ID',
  eventName: 'Event Name',
  endTime: 'End Time',
  instanceEvents: 'Instance Events',
  endpointEvents: 'Endpoint Events',
  enableEvents: 'Enable Events',
  disableEvents: 'Disable Events',
  eventSeries: 'Events Series',
  eventsType: 'Event Type',
  eventsMessage: 'Event Message',
  eventsParameters: 'Event Parameters',
  eventDetail: 'Event Detail',
  value: 'Value',
  tableHeader: 'Header Names',
  tableValues: 'Table Values',
  show: 'Show',
  hide: 'Hide',
  statistics: 'Statistics',
  message: 'Message',
  tooltipsContent: 'Tooltip Content',
  alarmDetail: 'Alarm Detail',
  scope: 'Scope',
  destService: 'Destination Service',
  destServiceInstance: 'Destination Service Instance',
  eventSource: 'Event Source',
  modalTitle: 'Inspection',
  selectRedirectPage: 'Do you want to inspect Traces or Logs of %s service?',
  logAnalysis: 'Log Analysis Language',
  logDataBody: 'The content of the log',
  addType: 'Please input a type',
  traceContext: 'Logs with trace context',
  traceSegmentId: 'Trace Segment ID',
  spanId: 'Span ID',
  inputTraceSegmentId: 'Please input the trace segment ID',
  inputSpanId: 'Please input the span ID',
  inputTraceId: 'Please input the trace ID',
  dsl: 'Script input for LAL',
  logContentType: 'The type of the log content',
  logRespContent: 'Log Content',
  analysis: 'Analysis',
  waitLoading: 'Loading',
  dslEmpty: 'Script input of LAL should not be empty',
  logContentEmpty: 'The content of the log should not not be empty.',
  debug: 'Debug',
};

export default m;
