#
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#

# Text that appears in the navigation panel
nav_item_topo=Topology

# Message when no devices are connected
no_devices_are_connected=No Devices Are Connected

# Action Key Toolbar Tooltips ...
tbtt_tog_instances=Toggle ONOS instances panel
tbtt_tog_summary=Toggle ONOS summary panel
tbtt_tog_use_detail=Disable / enable details panel
tbtt_tog_host=Toggle host visibility
tbtt_tog_offline=Toggle offline visibility
tbtt_tog_porthi=Toggle port highlighting
tbtt_bad_links=Show bad links
tbtt_tog_map=Toggle background geo map
tbtt_sel_map=Select background geo map
tbtt_tog_sprite=Toggle sprite layer
tbtt_reset_loc=Reset node locations
tbtt_tog_oblique=Toggle oblique view (experimental)
tbtt_cyc_layers=Cycle node layers
tbtt_cyc_dev_labs=Cycle device labels
tbtt_cyc_host_labs=Cycle host labels
tbtt_cyc_grid_display=Cycle grid display
tbtt_unpin_node=Unpin node (hover mouse over)
tbtt_reset_zoom=Reset pan / zoom
tbtt_tog_toolbar=Toggle Toolbar
tbtt_eq_master=Equalize mastership roles

# Quick Help Gestures
qh_gest_click=Select the item and show details
qh_gest_shift_click=Toggle selection state
qh_gest_drag=Reposition (and pin) device / host
qh_gest_cmd_scroll=Zoom in / out
qh_gest_cmd_drag=Pan

# Flash Messages
fl_background_map=background map
fl_sprite_layer=sprite layer
fl_pan_zoom_reset=Pan and zoom reset
fl_eq_masters=Equalizing master roles

fl_device_labels_hide=Hide device labels
fl_device_labels_show_friendly=Show friendly device labels
fl_device_labels_show_id=Show device ID labels
fl_host_labels_show_friendly=Show friendly host labels
fl_host_labels_show_ip=Show host IP addresses
fl_host_labels_show_mac=Show host MAC addresses
fl_host_labels_hide=Hide host labels

fl_grid_display_hide=Hide grid
fl_grid_display_1000=Show XY grid
fl_grid_display_geo=Show Geo grid
fl_grid_display_both=Show both grids

fl_offline_devices=Offline Devices
fl_bad_links=Bad Links
fl_reset_node_locations=Reset Node Locations

fl_layer_all=All Layers Shown
fl_layer_pkt=Packet Layer Shown
fl_layer_opt=Optical Layer Shown

fl_panel_instances=Instances Panel
fl_panel_summary=Summary Panel
fl_panel_details=Details Panel

fl_port_highlighting=Port Highlighting

fl_oblique_view=Oblique View
fl_normal_view=Normal View

fl_monitoring_canceled=Monitoring Canceled
fl_selecting_intent=Selecting Intent

# Core Overlays
ov_tt_protected_intents=Protected Intents Overlay
ov_tt_traffic=Traffic Overlay
ov_tt_none=No Overlay

# Traffic Overlay
tr_btn_create_h2h_flow=Create Host-to-Host Flow
tr_btn_create_msrc_flow=Create Multi-Source Flow
tr_btn_show_device_flows=Show Device Flows
tr_btn_show_related_traffic=Show Related Traffic
tr_btn_cancel_monitoring=Cancel traffic monitoring
tr_btn_monitor_all=Monitor all traffic
tr_btn_show_dev_link_flows=Show device link flows
tr_btn_show_all_rel_intents=Show all related intents
tr_btn_show_prev_rel_intent=Show previous related intent
tr_btn_show_next_rel_intent=Show next related intent
tr_btn_monitor_sel_intent=Monitor traffic of selected intent
tr_fl_fstats_bytes=Flow Stats (bytes)
tr_fl_pstats_bits=Port Stats (bits / second)
tr_fl_pstats_pkts=Port Stats (packets / second)
tr_fl_dev_flows=Device Flows
tr_fl_rel_paths=Related Paths
tr_fl_prev_rel_int=Previous related intent
tr_fl_next_rel_int=Next related intent
tr_fl_traf_on_path=Traffic on Selected Path
tr_fl_h2h_flow_added=Host-to-Host flow added
tr_fl_multisrc_flow=Multi-Source Flow

# Button tooltips
btn_show_view_device=Show Device View
btn_show_view_flow=Show Flow View for this Device
btn_show_view_port=Show Port View for this Device
btn_show_view_group=Show Group View for this Device
btn_show_view_meter=Show Meter View for this Device

# Panel Titles
title_select_map=Select Map
title_panel_summary=ONOS Summary
title_selected_items=Selected Items
title_edge_link=Edge Link
title_infra_link=Infrastructure Link

# Custom Panel Labels / Values
lp_label_friendly=Friendly

lp_label_a_type=A type
lp_label_a_id=A id
lp_label_a_friendly=A name
lp_label_a_port=A port

lp_label_b_type=B type
lp_label_b_id=B id
lp_label_b_friendly=B name
lp_label_b_port=B port

lp_label_a2b=A to B
lp_label_b2a=B to A

lp_value_no_link=[no link]

