<?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">"Marcación por voz"</string>
    <string name="tool_tip_title" msgid="9092247761265706709">"¿Sabías que...?"</string>
    <string name="tool_tip_message" msgid="8624998371709530611">"Para abrir la ventana de marcación por voz, mantén pulsado el botón verde de llamada."</string>
    <string name="examples" msgid="2100807337052050741">" Ejemplos: "<b>" "\n"\"Llamar a Juan Díaz\" "\n"\"Llamar a Juan Díaz a casa, …\" "\n"\"Llamar al buzón de voz\" "\n"\"Marcar (866) 555 0123\" "\n"\"Marcar 911, 811, …\" "\n"\"Marcar +44 7333 444 555\" "\n"\"Volver a marcar\" "\n"\"Abrir Calendar\" "</b></string>
    <string name="title" msgid="60788431860720964">"Marcación por voz"</string>
    <string name="bluetooth_title" msgid="1018603170854746529">"Marcación por voz a través de Bluetooth"</string>
    <string name="initializing" msgid="3146934028021025628">"Iniciando..."</string>
    <string name="listening" msgid="6886486282595802147">"Escuchando..."</string>
    <string name="please_try_again" msgid="1427744152996396950">"Inténtalo de nuevo."</string>
    <string name="failure" msgid="3985785889820564626">"Error"</string>
    <string name="recognition_error" msgid="1807947152844267364">"También puedes probar a reiniciar el teléfono."</string>
    <string name="headset_connection_lost" msgid="3809295858472462650">"Se ha perdido la conexión con los auriculares."</string>
    <string name="at_home" msgid="8478880812967663328">" a casa"</string>
    <string name="on_mobile" msgid="5739841127369724804">" en móvil"</string>
    <string name="at_work" msgid="2946111016850670818">" al trabajo"</string>
    <string name="at_other" msgid="1863773841760953063">" a otro número"</string>
    <string name="logging_enabled" msgid="8702018587287436548">"Se ha habilitado el registro de la marcación por voz."</string>
    <string name="logging_disabled" msgid="5992352601321824322">"Se ha inhabilitado el registro de la marcación por voz."</string>
    <string name="speak_now_tts" msgid="1343363077871348876">"Habla ahora"</string>
    <string name="no_results_tts" msgid="7292876061536755253">"No se ha encontrado ningún resultado. Vuelve a intentarlo."</string>
    <string name="invalid_choice_tts" msgid="1871918597940504468">"La selección no es válida."</string>
    <string name="goodbye_tts" msgid="2034746843726531134">"Adiós"</string>
</resources>
