<?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">"Stemmeopkald"</string>
    <string name="tool_tip_title" msgid="9092247761265706709">"Vidste du ..."</string>
    <string name="tool_tip_message" msgid="8624998371709530611">"Hvis du trykker og holder på den grønne opkaldsknap åbnes Stemmeopkald."</string>
    <string name="examples" msgid="2100807337052050741">" Eksempler: "<b>" \n\"Ring til Peter Hansen\" \n\"Ring til Peter Hansen hjemme, …\" \n\"Ring til voicemail\" \n\"Ring til 55 12 34 56\" \n\"Ring til 119, 118, …\" \n\"Ring til +45 55 44 33 22\" \n\"Ring igen\" \n\"Åbn kalender\" "</b></string>
    <string name="title" msgid="60788431860720964">"Stemmeopkald"</string>
    <string name="bluetooth_title" msgid="1018603170854746529">"Stemmeopkald via Bluetooth"</string>
    <string name="initializing" msgid="1455696989718692334">"Starter..."</string>
    <string name="listening" msgid="6886486282595802147">"Lytter ..."</string>
    <string name="please_try_again" msgid="6612157920739645345">"Prøv igen."</string>
    <string name="failure" msgid="4363633038755445209">"Der kunne ikke initialiseres"</string>
    <string name="recognition_error" msgid="6171111971593859630">"Genstart telefonen, og prøv igen."</string>
    <string name="headset_connection_lost" msgid="3809295858472462650">"Forbindelsen til headsettet blev afbrudt."</string>
    <string name="at_home" msgid="8478880812967663328">" hjemme"</string>
    <string name="on_mobile" msgid="5739841127369724804">" på mobilen"</string>
    <string name="at_work" msgid="2946111016850670818">" på arbejde"</string>
    <string name="at_other" msgid="1863773841760953063">" på andet"</string>
    <string name="logging_enabled" msgid="1797105104286961324">"Logføring i Stemmeopkald er aktiveret."</string>
    <string name="logging_disabled" msgid="5851271054900000063">"Logføring i Stemmeopkald er deaktiveret."</string>
    <string name="speak_now_tts" msgid="1343363077871348876">"Tal nu."</string>
    <string name="no_results_tts" msgid="7292876061536755253">"Ingen resultater. Prøv igen."</string>
    <string name="invalid_choice_tts" msgid="1871918597940504468">"Ugyldigt valg."</string>
    <string name="goodbye_tts" msgid="2034746843726531134">"Farvel."</string>
</resources>
