<?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">"Numerio rinkiklis balsu"</string>
    <string name="tool_tip_title" msgid="9092247761265706709">"Ar žinojote..."</string>
    <string name="tool_tip_message" msgid="8624998371709530611">"Paspaudus ir palaikius žalią mygtuką „Skambinti“, atsidaro numerio rinkiklis balsu."</string>
    <string name="examples" msgid="2100807337052050741">" Pavyzdžiai: "<b>" "\n"„Call John Doe“ "\n"„Call John Doe at home, …“ "\n"„Call voicemail“ "\n"„Dial (866) 555 0123“ "\n"„Dial 911, 811, …“ "\n"„Dial +44 7333 444 555“ "\n"„Redial“ "\n"„Open Calendar“ "</b></string>
    <string name="title" msgid="60788431860720964">"Numerio rinkiklis balsu"</string>
    <string name="bluetooth_title" msgid="1018603170854746529">"„Bluetooth“ numerio rinkiklis balsu"</string>
    <string name="initializing" msgid="1455696989718692334">"Paleidžiama..."</string>
    <string name="listening" msgid="6886486282595802147">"Klausoma..."</string>
    <string name="please_try_again" msgid="6612157920739645345">"Bandykite dar kartą."</string>
    <string name="failure" msgid="4363633038755445209">"Nepavyko inicijuoti"</string>
    <string name="recognition_error" msgid="6171111971593859630">"Paleiskite telefoną iš naujo ir bandykite dar kartą."</string>
    <string name="headset_connection_lost" msgid="3809295858472462650">"Prarastas ryšys su ausinėmis."</string>
    <string name="at_home" msgid="8478880812967663328">" namų numeriu"</string>
    <string name="on_mobile" msgid="5739841127369724804">" mobiliojo telefono numeriu"</string>
    <string name="at_work" msgid="2946111016850670818">" darbo telefonu"</string>
    <string name="at_other" msgid="1863773841760953063">" kitu numeriu"</string>
    <string name="logging_enabled" msgid="1797105104286961324">"Skambučių balsu registravimas įjungtas."</string>
    <string name="logging_disabled" msgid="5851271054900000063">"Skambučių balsu registravimas išjungtas."</string>
    <string name="speak_now_tts" msgid="1343363077871348876">"Kalbėkite dabar."</string>
    <string name="no_results_tts" msgid="7292876061536755253">"Nėra rezultatų, bandykite dar kartą."</string>
    <string name="invalid_choice_tts" msgid="1871918597940504468">"Neteisingas pasirinkimas."</string>
    <string name="goodbye_tts" msgid="2034746843726531134">"Viso gero."</string>
</resources>
