<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2022 The LeafOS Project

     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.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- About device -->
    <string name="build_date">Build date</string>
    <string name="leaf_version">LeafOS version</string>
    <string name="leaf_vendor_security_patch">Vendor security patch level</string>

    <!-- AdBlock -->
    <string name="enable_adblock">Enable AdBlock</string>
    <string name="enable_adblock_summary">Blocks various ads and trackers system-wide.</string>

    <!-- Back gesture height -->
    <string name="back_height_low_label">Full</string>
    <string name="back_height_high_label">Bottom</string>
    <string name="back_options_dialog_title">Options</string>
    <string name="back_height_message">Amount of screen height used as touchable region for back gesture.</string>

    <!-- Three-fingers-swipe to screenshot -->
    <string name="three_finger_gesture">Swipe to screenshot</string>
    <string name="three_finger_gesture_summary">Swipe down with three fingers to take a screenshot</string>

   <!-- Hide power menu on lockscreen -->
    <string name="hide_powermenu_lockscreen">Hide power menu on lockscreen</string>

    <!-- QS customization -->
    <string name="qs_panel_options_title">Quick settings</string>
    <string name="qs_panel_options_summary">Customize quick settings appearance</string>
    <string name="category_name_qs_tiles">QS tiles</string>

    <!-- QS tile shape -->
    <string name="qs_tile_shape">QS tile shape</string>
    <string name="qs_tile_round">Round</string>
    <string name="qs_tile_rect">Rounded Rectangle</string>
    <string name="qs_tile_mix">Round for active tiles and Rounded Rectangle for inactive tiles</string>

    <!-- QS brightness slider -->
    <string name="category_name_qs_brightness_slider">Brightness slider</string>
    <string name="qs_brightness_slider_title">Brightness slider</string>
    <string name="qs_brightness_slider_summary">Adjust brightness slider from the Quick Settings</string>
    <string name="qs_brightness_slider_never">Never show</string>
    <string name="qs_brightness_slider_expanded">Show when expanded</string>
    <string name="qs_brightness_slider_always">Show always</string>
    <string name="qs_brightness_slider_position_title">Brightness slider position</string>
    <string name="qs_brightness_slider_position_top">Top</string>
    <string name="qs_brightness_slider_position_bottom">Bottom</string>
    <!-- QS auto brightness icon -->
    <string name="qs_auto_brightness_title">Auto brightness icon</string>
    <string name="qs_auto_brightness_summary">Show toggle for adaptive brightness near the slider</string>
    <!-- Brightness slider styles -->
    <string name="brightness_slider_style_title">Brightness slider style</string>
    <string name="brightness_slider_style_default">Default</string>
    <string name="brightness_slider_style_filled">Filled</string>
    <string name="brightness_slider_style_thin">Thin</string>

    <!-- QS style -->
    <string name="qs_style_title">QS Panel style</string>
    <string name="qs_style_default">Large pill</string>
    <string name="qs_style_round">Small circle</string>

    <!-- QS columns customization -->
    <string name="qs_columns">QS columns in portrait</string>
    <string name="qs_columns_min" translatable="false">2</string>
    <string name="qs_columns_max" translatable="false">5</string>
    <string name="qs_columns_landscape">QS columns in landscape</string>
    <string name="qs_columns_landscape_min" translatable="false">@string/qs_columns_min</string>
    <string name="qs_columns_landscape_max" translatable="false">6</string>
    <string name="qqs_columns">QQS columns in portrait</string>
    <string name="qqs_columns_min" translatable="false">@string/qs_columns_min</string>
    <string name="qqs_columns_max" translatable="false">@string/qs_columns_max</string>
    <string name="qqs_columns_landscape">QQS columns in landscape</string>
    <string name="qqs_columns_landscape_min" translatable="false">@string/qs_columns_landscape_min</string>
    <string name="qqs_columns_landscape_max" translatable="false">@string/qs_columns_landscape_max</string>

    <!-- Annoying Notifications -->
    <string name="notification_sound_vib_screen_on_title">Annoying Notifications</string>
    <string name="notification_sound_vib_screen_on_summary">Play sound and vibration for notifications when screen is on</string>

    <!-- Hardware info -->
    <string name="soc_model">SoC Model</string>
    <string name="total_ram">Total RAM</string>

    <!-- fingerprint lockout -->
    <string name="fingerprint_lockout_title">Disable fingerprint lockout</string>
    <string name="fingerprint_lockout_summary">Deactivates 30 second timeout as well as permanent lockout after multiple failed fingerprint unlock attempts</string>

    <!-- Hotspot -->
    <string name="wifi_hotspot_hidden_ssid_title">Hidden network</string>
    <string name="wifi_hotspot_hidden_ssid_summary">Your mobile hotspot\'s name won\'t appear in the list of available WLAN networks.</string>
    <string name="wifi_hotspot_client_manager_title">Connected devices</string>
    <string name="wifi_hotspot_client_manager_summary">List and manage devices connected to the hotspot</string>
    <string name="wifi_hotspot_client_manager_list_only_summary">List devices connected to the hotspot</string>
    <string name="wifi_hotspot_client_limit_title">Limit of connected devices</string>
    <string name="wifi_hotspot_blocked_clients_list_title">Blocked Devices</string>
    <string name="wifi_hotspot_connected_clients_list_title">Connected Devices</string>
    <string name="wifi_hotspot_block_client_dialog_title">Block device</string>
    <string name="wifi_hotspot_block_client_dialog_text">This action will disconnect \"<xliff:g id="device_name">%1$s</xliff:g>\" from this device and add it to blocklist</string>
    <string name="wifi_hotspot_unblock_client_dialog_title">Unblock device</string>
    <string name="wifi_hotspot_unblock_client_dialog_text">The device \"<xliff:g id="device_name">%1$s</xliff:g>\" will be able to connect to this hotspot</string>
    <string name="wifi_hotspot_client_manager_footer_text">No clients are currently available. Connected and blocked devices will be listed here when available.</string>
</resources>
