<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2023 The Android Open Source 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:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="energy_mode_low_title" msgid="1975446673545235501">"Modo de baixo consumo"</string>
    <string name="energy_mode_low_subtitle" msgid="2138250509057251435">"funcionalidades de rede essenciais"</string>
    <string name="energy_mode_low_info" msgid="8586799718140263220">"Desligue a ligação de rede quando a TV não estiver a ser usada (modo de espera)."</string>
  <string-array name="energy_mode_low_features">
    <item msgid="4976202876230149030">"Funções e atualizações críticas"</item>
  </string-array>
    <string name="energy_mode_low_eco_hint" msgid="2421460758847643655"></string>
    <string name="energy_mode_moderate_title" msgid="8306916492188176732">"Modo de energia otimizado"</string>
    <string name="energy_mode_moderate_subtitle" msgid="7478438819421632774">"com funcionalidades de rede recomendadas"</string>
    <string name="energy_mode_moderate_info" msgid="7254958508156484301">"Permite funcionalidades para ativar a TV através da rede (modo de espera em rede)."</string>
    <string name="energy_mode_moderate_all_low_features" msgid="2417504172139004649">"Todas as funcionalidades essenciais"</string>
  <string-array name="energy_mode_moderate_features">
    <item msgid="2654586107956150296">"[Introduzir funcionalidade 1]"</item>
    <item msgid="8724721267222341891">"[Introduzir funcionalidade 2]"</item>
  </string-array>
    <string name="energy_mode_moderate_eco_hint" msgid="252189162446856286"></string>
    <string name="energy_mode_high_title" msgid="6636328986387241066">"Modo de maior consumo"</string>
    <string name="energy_mode_high_subtitle" msgid="8710109098343358567">"com funcionalidades de rede adicionais"</string>
    <string name="energy_mode_high_info" msgid="7089288229870320944">"Permite funcionalidades adicionais mesmo quando a TV não está a ser usada."</string>
    <string name="energy_mode_moderate_all_moderate_features" msgid="1518972636963419872">"Todas as funcionalidades recomendadas"</string>
  <string-array name="energy_mode_high_features">
    <item msgid="3018897868803319747">"[Introduzir funcionalidade 1]"</item>
    <item msgid="170760143032597722">"[Introduzir funcionalidade 2]"</item>
  </string-array>
    <!-- no translation found for energy_mode_high_eco_hint (3266580507783627848) -->
    <skip />
</resources>
