#
# Copyright 2017-present Open Networking Laboratory
#
# 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.
#
#

# =======================================================================
# | Plea to Translators:                                                |
# | --------------------                                                |
# |   I know you are all keen to add your own language localization     |
# |   bundles for these files as soon as they appear in Gerrit reviews, |
# |   but please refrain from doing so immediately, until given the     |
# |   "green light"...                                                  |
# |                                                                     |
# |   The reason is, sometimes localization keys need to be renamed, or |
# |   strings moved to other bundles, while we work out how to localize |
# |   each UI component. If there are multiple files while a bundle is  |
# |   "in flux", it means modifications need to be done in 4-or-more    |
# |   places instead of just 1.                                         |
# |                                                                     |
# |   I promise I will mark a bundle as "ready for translation" as      |
# |   soon as the localization work has been completed for the default  |
# |   bundle, and the "dust has settled".                               |
# |                                                                     |
# |   Thank you in advance for your patience and restraint  :)          |
# =======================================================================


# ==========================================
# |  WIP -- Not Yet Ready For Translation  |
# ==========================================

# Text that appears in the navigation panel
nav_item_app=Applications

# View title
title_apps=Applications

# Control button tooltips
tt_ctl_upload=Upload an application (.oar file)
tt_ctl_activate=Activate selected application
tt_ctl_deactivate=Deactivate selected application
tt_ctl_uninstall=Uninstall selected application

# Quick-Help panel
qh_hint_click=Select a row to show application details
qh_hint_scroll_down=See more applications

# App details panel
dp_features=Features
dp_required_apps=Required Apps
dp_permissions=Permissions

# App dialog panel
dlg_confirm_action=Confirm Action

dlg_warn_deactivate=Deactivating or uninstalling this component \
  can have serious negative consequences!
dlg_warn_own_risk=** DO SO AT YOUR OWN RISK **
