#
# 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_app=Applications

# View title
title_apps=Applications

# Control button tooltips
tt_ctl_upload=télécharger une application (.oar fichier)
tt_ctl_activate=Activer l'application sélectionnée 
tt_ctl_deactivate=désactiver l'application sélectionnée
tt_ctl_uninstall=désinstaller l'application sélectionnée
tt_ctl_download=télécharger l'application sélectionnée(.oar fichier)

# Quick-Help panel
qh_hint_esc=déselectionner l'application
qh_hint_click_row=sélectionner / déselectionner l'application
qh_hint_scroll_down=voir plus d'applications

# App details panel
dp_features=fonctionnalités
dp_required_apps=applications requises
dp_permissions=Permissions

# App dialog panel
dlg_confirm_action=Confirmer l'action

dlg_warn_deactivate=Désactiver ou désinstaller ce composant \
  peut avoir des sérieuses conséquences négatives!
dlg_warn_own_risk=** Faites le a vos propres risques **
