<?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">"Häälvalimismoodul"</string>
    <string name="tool_tip_title" msgid="9092247761265706709">"Kas teadsite ..."</string>
    <string name="tool_tip_message" msgid="8624998371709530611">"Häälvalimismooduli avab rohelise nupu Helista vajutamine ja all hoidmine."</string>
    <string name="examples" msgid="2100807337052050741">" Näited: "<b>\n"„Helista Jaan Tamm” "\n"„Helista Jaan Tamm kodus”, … "\n"„Helista kõneposti” "\n"„Vali (372) 555 0123” "\n"„Vali 112, 212, …” "\n"„Vali + 44 7333 444 555” "\n"„Vali uuesti” "\n"„Ava kalender” "</b></string>
    <string name="title" msgid="60788431860720964">"Häälvalimismoodul"</string>
    <string name="bluetooth_title" msgid="1018603170854746529">"Bluetoothi häälvalija"</string>
    <string name="initializing" msgid="1455696989718692334">"Käivitamine ..."</string>
    <string name="listening" msgid="6886486282595802147">"Kuulamine ..."</string>
    <string name="please_try_again" msgid="6612157920739645345">"Proovige uuesti."</string>
    <string name="failure" msgid="4363633038755445209">"Ei saanud installida"</string>
    <string name="recognition_error" msgid="6171111971593859630">"Taaskäivitage telefon ja proovige uuesti."</string>
    <string name="headset_connection_lost" msgid="3809295858472462650">"Ühendus peakomplektiga katkes."</string>
    <string name="at_home" msgid="8478880812967663328">" kodus"</string>
    <string name="on_mobile" msgid="5739841127369724804">" mobiilil"</string>
    <string name="at_work" msgid="2946111016850670818">" tööl"</string>
    <string name="at_other" msgid="1863773841760953063">" muudel"</string>
    <string name="logging_enabled" msgid="1797105104286961324">"Häälvalija logimine on sisse lülitatud."</string>
    <string name="logging_disabled" msgid="5851271054900000063">"Häälvalija logimine on välja lülitatud."</string>
    <string name="speak_now_tts" msgid="1343363077871348876">"Alustage rääkimist."</string>
    <string name="no_results_tts" msgid="7292876061536755253">"Tulemusi pole, proovige uuesti."</string>
    <string name="invalid_choice_tts" msgid="1871918597940504468">"Kehtetu valik."</string>
    <string name="goodbye_tts" msgid="2034746843726531134">"Kohtumiseni."</string>
</resources>
