<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Teksten er kopiert"</string>
    <string name="call_custom" msgid="2786306789889210756">"Ring <xliff:g id="CUSTOM">%s</xliff:g>"</string>
    <string name="call_home" msgid="1479549630992276827">"Ring hjem"</string>
    <string name="call_mobile" msgid="8618334085824709009">"Ring mobilnummer"</string>
    <string name="call_work" msgid="8299062439076337075">"Ring arbeidsnummer"</string>
    <string name="call_fax_work" msgid="3770754834467992571">"Ring faksnummer (arbeid)"</string>
    <string name="call_fax_home" msgid="6219051113573396065">"Ring faksnummer (hjemme)"</string>
    <string name="call_pager" msgid="3038080882899955112">"Ring personsøkernummer"</string>
    <string name="call_other" msgid="4472141328347894937">"Ring"</string>
    <string name="call_callback" msgid="687494744634190411">"Ring tilbakeringingsnummer"</string>
    <string name="call_car" msgid="9078083109758282133">"Ring til bilnummer"</string>
    <string name="call_company_main" msgid="8768047233970315359">"Ring til firma (hovednummer)"</string>
    <string name="call_isdn" msgid="3342482563847537747">"Ring ISDN-nummer"</string>
    <string name="call_main" msgid="4640261071249938558">"Ring hovednummer"</string>
    <string name="call_other_fax" msgid="2536328553125487877">"Ring faksnummer"</string>
    <string name="call_radio" msgid="9055749313292712021">"Ring radionummer"</string>
    <string name="call_telex" msgid="2909886619224843563">"Ring teleksnummer"</string>
    <string name="call_tty_tdd" msgid="6704940636171078852">"Ring TTY/TDD"</string>
    <string name="call_work_mobile" msgid="4408630608955148641">"Ring mobilnummer (arbeid)"</string>
    <string name="call_work_pager" msgid="3036932765279753793">"Ring personsøkernummer (arbeid)"</string>
    <string name="call_assistant" msgid="5188990854852312696">"Ring <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
    <string name="call_mms" msgid="8998771923464696960">"Ring multimediemeldingnummer"</string>
    <string name="sms_custom" msgid="4601748252470175865">"Send tekstmelding til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
    <string name="sms_home" msgid="7765831490534280540">"Send tekstmelding til hjemmenummer"</string>
    <string name="sms_mobile" msgid="8387632124165893103">"Send tekstmelding til mobilnummer"</string>
    <string name="sms_work" msgid="3910570578912367742">"Send tekstmelding til arbeidsnummer"</string>
    <string name="sms_fax_work" msgid="909086167151248212">"Send tekstmelding til faksnummer (arbeid)"</string>
    <string name="sms_fax_home" msgid="4145442497939634875">"Send tekstmelding til faksnummer (hjemme)"</string>
    <string name="sms_pager" msgid="5664381349583724906">"Send tekstmelding til personsøkernummer"</string>
    <string name="sms_other" msgid="910895193552957097">"Send tekstmelding"</string>
    <string name="sms_callback" msgid="728414485478941361">"Send tekstmelding til tilbakeringingsnummer"</string>
    <string name="sms_car" msgid="8543669230270954512">"Send tekstmelding til bilnummer"</string>
    <string name="sms_company_main" msgid="5441902128445061862">"Send tekstmelding til firma (hovednummer)"</string>
    <string name="sms_isdn" msgid="7142483128948042667">"Send tekstmelding til ISDN-nummer"</string>
    <string name="sms_main" msgid="6815987840926184815">"Send tekstmelding til hovednummer"</string>
    <string name="sms_other_fax" msgid="8649822154879781466">"Send tekstmelding til faksnummer"</string>
    <string name="sms_radio" msgid="8750339218480745940">"Send tekstmelding til radionummer"</string>
    <string name="sms_telex" msgid="5469333785775443999">"Send tekstmelding til teleksnummer"</string>
    <string name="sms_tty_tdd" msgid="5057886576150816002">"Send tekstmelding til TTY/TDD"</string>
    <string name="sms_work_mobile" msgid="8426872094268475047">"Send tekstmelding til mobilnummer (arbeid)"</string>
    <string name="sms_work_pager" msgid="499303540738557836">"Send tekstmelding til personsøkernummer (arbeid)"</string>
    <string name="sms_assistant" msgid="2677586547377136683">"Send tekstmelding til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
    <string name="sms_mms" msgid="4887206338311086612">"Send tekstmelding til multimediemeldingnummer"</string>
    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Vil du fjerne ofte kontaktede personer?"</string>
    <string name="clearFrequentsConfirmation" msgid="2101370440975269958">"Du fjerner listen over ofte kontaktede personer i Personer- og Telefon-appen, og tvinger e-postappene til å bli kjent med adresseinnstillingene dine på nytt."</string>
    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Fjerner ofte kontaktede personer ..."</string>
    <string name="status_available" msgid="4832569677396634846">"Tilgjengelig"</string>
    <string name="status_away" msgid="6267905184545881094">"Borte"</string>
    <string name="status_busy" msgid="7111912905211403545">"Opptatt"</string>
    <string name="contactsList" msgid="7140022347217602605">"Kontakter"</string>
    <string name="local_invisible_directory" msgid="8934840494825588347">"Andre"</string>
    <string name="directory_search_label" msgid="4484648822765516947">"Katalog"</string>
    <string name="local_search_label" msgid="9094584931063745728">"Alle kontakter"</string>
    <string name="user_profile_contacts_list_header" msgid="8436133790234197565">"Meg"</string>
    <string name="search_results_searching" msgid="9022794597388306615">"Søker ..."</string>
    <string name="foundTooManyContacts" msgid="3060037437459313616">"Fant mer enn <xliff:g id="COUNT">%d</xliff:g>."</string>
    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Ingen kontakter"</string>
  <plurals name="searchFoundContacts">
    <item quantity="one" msgid="1013734912609351182">"Én funnet"</item>
    <item quantity="other" msgid="4649647748678161594">"<xliff:g id="COUNT">%d</xliff:g> funnet"</item>
  </plurals>
    <string name="description_quick_contact_for" msgid="6355240770807101947">"Hurtigkontakt for <xliff:g id="NAME">%1$s</xliff:g>"</string>
    <string name="missing_name" msgid="2633118852693000081">"(Uten navn)"</string>
    <!-- no translation found for favoritesFrequentCalled (6600127125011757687) -->
    <skip />
    <!-- no translation found for favoritesFrequentContacted (2849493314447751970) -->
    <skip />
    <string name="description_view_contact_detail" msgid="2756753096193839285">"Se på kontakt"</string>
    <!-- no translation found for list_filter_phones (3692815632088465422) -->
    <skip />
</resources>
