<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2006 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="voiceDialer" msgid="5948204210436590941">"Renconuschientscha vocala"</string>
    <string name="tool_tip_title" msgid="9092247761265706709">"Avais Vus savì che…"</string>
    <string name="tool_tip_message" msgid="8624998371709530611">"Smatgai e tegnai il buttun da telefon verd per avrir l\'applicaziun da renconuschientscha vocala."</string>
    <string name="examples" msgid="2100807337052050741">" \"Exempels: "<b>" "\n"«Telefonar a Gieri Arquint» "\n"«Telefonar a Gieri Arquint, privat» "\n"«Telefonar a Mailbox» "\n"«Cumponer 081 258 32 22» "\n"«Cumponer 117, 118, … » "\n"«Cumponer +44 7333 444 555» "\n"«Repetiziun dal clom» "\n"«Avrir il chalender» "</b>"\""</string>
    <string name="title" msgid="60788431860720964">"Renconuschientscha vocala"</string>
    <string name="bluetooth_title" msgid="1018603170854746529">"Telefonar per bluetooth cun renconuschientscha vocala"</string>
    <!-- no translation found for initializing (1455696989718692334) -->
    <skip />
    <string name="listening" msgid="6886486282595802147">"Endataziun vocala…"</string>
    <!-- no translation found for please_try_again (6612157920739645345) -->
    <skip />
    <!-- no translation found for failure (4363633038755445209) -->
    <skip />
    <!-- no translation found for recognition_error (6171111971593859630) -->
    <skip />
    <string name="headset_connection_lost" msgid="3809295858472462650">"Nagina connexiun als uregliers"</string>
    <string name="at_home" msgid="8478880812967663328">" Privat"</string>
    <string name="on_mobile" msgid="5739841127369724804">" telefonin"</string>
    <string name="at_work" msgid="2946111016850670818">" da fatschenta"</string>
    <string name="at_other" msgid="1863773841760953063">" auter"</string>
    <!-- no translation found for logging_enabled (1797105104286961324) -->
    <skip />
    <!-- no translation found for logging_disabled (5851271054900000063) -->
    <skip />
    <string name="speak_now_tts" msgid="1343363077871348876">"Dictai ussa."</string>
    <string name="no_results_tts" msgid="7292876061536755253">"\"Nagins resultats, empruvai danovamain.\""</string>
    <string name="invalid_choice_tts" msgid="1871918597940504468">"Tscherna nunvalida"</string>
    <string name="goodbye_tts" msgid="2034746843726531134">"A revair"</string>
</resources>
