#
# 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=拓墣

# Message when no devices are connected
no_devices_are_connected=沒有設備連接

# Action Key Toolbar Tooltips ...
tbtt_tog_instances=切換到 ONOS 實例面板
tbtt_tog_summary=切換到 ONOS 總結面板
tbtt_tog_use_detail=停用/啟用 詳細資料
tbtt_tog_host=是否顯示主機
tbtt_tog_offline=是否顯示離線主機／設備
tbtt_tog_porthi=是否突顯連結埠
tbtt_bad_links=顯示不良連結
tbtt_tog_map=切換背景地理地圖
tbtt_sel_map=選擇背景地理地圖
tbtt_tog_sprite=是否顯示 sprite 圖層
tbtt_reset_loc=重設節點位置
tbtt_tog_oblique=切換至多層次視角 (實驗功能)
tbtt_cyc_layers=循環節點圖層
tbtt_cyc_dev_labs=循環設備標籤
tbtt_cyc_host_labs=循環主機標籤
tbtt_unpin_node=解除節點鎖定（將滑鼠掃過）
tbtt_reset_zoom=重設縮放比例
tbtt_tog_toolbar=切換工具欄
tbtt_eq_master=平衡交換器控制權

# Quick Help Gestures
qh_gest_click=選擇一個項目並且顯示其詳細資訊
qh_gest_shift_click=切換選擇的狀態
qh_gest_drag=恢復設備/主機的位置
qh_gest_cmd_scroll=拉近/拉遠
qh_gest_cmd_drag=平移

# Flash Messages
fl_background_map=背景地圖
fl_sprite_layer=sprite 圖層
fl_pan_zoom_reset=重設縮放比例
fl_eq_masters=平衡交換器控制權

fl_device_labels_hide=隱藏設備的標籤
fl_device_labels_show_friendly=顯示易讀的設備標籤
fl_device_labels_show_id=顯示設備 ID 的標籤
fl_host_labels_show_friendly=顯示易讀主機的標籤
fl_host_labels_show_ip=顯示主機的 IP 位址
fl_host_labels_show_mac=顯示主機的 MAC 位址

fl_offline_devices=離線設備
fl_bad_links=不良的連結
fl_reset_node_locations=重設節點位置

fl_layer_all=顯示所有圖層
fl_layer_pkt=顯示封包圖層
fl_layer_opt=顯示光傳輸圖層

fl_panel_instances=實例面板
fl_panel_summary=總結面板
fl_panel_details=詳細資訊面板

fl_oblique_view=多層次視角
fl_normal_view=正常視角

fl_monitoring_canceled=監控已取消
fl_selecting_intent=正在選取 Intent

# Core Overlays
ov_tt_protected_intents=保護 Intents 的圖層
ov_tt_traffic=流量圖層
ov_tt_none=沒有圖層

# Traffic Overlay
tr_btn_create_h2h_flow=創造主機到主機間的流表規則
tr_btn_create_msrc_flow=創造多重來源的流表規則
tr_btn_show_device_flows=顯示設備的流表規則
tr_btn_show_related_traffic=顯示相關流量
tr_btn_cancel_monitoring=取消流量監控
tr_btn_monitor_all=監控所有流量
tr_btn_show_dev_link_flows=顯示設備上的連結劉表規則
tr_btn_show_all_rel_intents=顯示所有相關的 Intents
tr_btn_show_prev_rel_intent=顯示前一個相關的 Intent
tr_btn_show_next_rel_intent=顯示下一個相關的 Intent
tr_btn_monitor_sel_intent=監控選定 Intent 的流量
tr_fl_fstats_bytes=流表狀態 (位元組)
tr_fl_pstats_bits=連接埠狀態 (位元/秒)
tr_fl_pstats_pkts=連接埠狀態 (封包/秒)
tr_fl_dev_flows=設備的流表
tr_fl_rel_paths=相關路徑
tr_fl_prev_rel_int=前一個相關的 Intent
tr_fl_next_rel_int=下一個相關的 Intent
tr_fl_traf_on_path=選定路徑上的流量
tr_fl_h2h_flow_added=主機到主機間的流表規則已加入
tr_fl_multisrc_flow=多重來源的流表規則

# Button tooltips
btn_show_view_device=顯示設備觀點
btn_show_view_flow=顯示當前設備的流表規則觀點
btn_show_view_port=顯示當前設備的連接埠觀點
btn_show_view_group=顯示當前設備的 Group 觀點
btn_show_view_meter=顯示當前設備的 Meter 觀點

# Panel Titles
title_select_map=選取地圖
title_panel_summary=ONOS 總結
title_selected_items=選取的項目
title_edge_link=設備到主機間的連結
title_infra_link=設備到設備間的連結

# Custom Panel Labels / Values
lp_label_friendly=Friendly

lp_label_a_type=A 種類
lp_label_a_id=A ID
lp_label_a_friendly=A friendly
lp_label_a_port=A 連接埠

lp_label_b_type=B 種類
lp_label_b_id=B ID
lp_label_b_friendly=B friendly
lp_label_b_port=B 連接埠

lp_label_a2b=A 到 B
lp_label_b2a=B 到 A

lp_value_no_link=[沒有連接]

