<?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">"Hlasové vytáčanie"</string>
    <string name="tool_tip_title" msgid="9092247761265706709">"Vedeli ste..."</string>
    <string name="tool_tip_message" msgid="8624998371709530611">"Stlačením a podržaním zeleného tlačidla Zavolať spustíte Hlasové vytáčanie."</string>
    <string name="examples" msgid="2100807337052050741">" Príklady: "<b>" "\n"„Zavolať Peter Kováč“ "\n"„Zavolať Peter Kováč domov, ...“ "\n"„Zavolať hlasová schránka“ "\n"„Vytočiť 2 22 33 911 55“ "\n"„Vytočiť 155, 555, ...“ "\n"„Vytočiť +421 2 22 33 44 55“ "\n"„Znova vytočiť“ "\n"„Otvoriť Kalendár“ "</b></string>
    <string name="title" msgid="60788431860720964">"Hlasové vytáčanie"</string>
    <string name="bluetooth_title" msgid="1018603170854746529">"Hlasové vytáčanie Bluetooth"</string>
    <string name="initializing" msgid="3146934028021025628">"Prebieha spúšťanie."</string>
    <string name="listening" msgid="6886486282595802147">"Počúvam..."</string>
    <string name="please_try_again" msgid="1427744152996396950">"Skúste to znova."</string>
    <string name="failure" msgid="3985785889820564626">"Zlyhanie"</string>
    <string name="recognition_error" msgid="1807947152844267364">"Môžete tiež skúsiť reštartovať svoj telefón."</string>
    <string name="headset_connection_lost" msgid="3809295858472462650">"Pripojenie k náhlavnej súprave bolo prerušené."</string>
    <string name="at_home" msgid="8478880812967663328">" domov"</string>
    <string name="on_mobile" msgid="5739841127369724804">" na mobil"</string>
    <string name="at_work" msgid="2946111016850670818">" do práce"</string>
    <string name="at_other" msgid="1863773841760953063">" na iné"</string>
    <string name="logging_enabled" msgid="8702018587287436548">"Protokol hlasového vytáčania je povolený."</string>
    <string name="logging_disabled" msgid="5992352601321824322">"Protokol hlasového vytáčanie je zakázaný."</string>
    <string name="speak_now_tts" msgid="1343363077871348876">"Hovorte."</string>
    <string name="no_results_tts" msgid="7292876061536755253">"Žiadne výsledky, skúste to znova."</string>
    <string name="invalid_choice_tts" msgid="1871918597940504468">"Neplatná voľba."</string>
    <string name="goodbye_tts" msgid="2034746843726531134">"Dovidenia."</string>
</resources>
