<?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">"Text copiat"</string>
    <string name="call_custom" msgid="2786306789889210756">"Apelaţi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
    <string name="call_home" msgid="1479549630992276827">"Apelaţi numărul de domiciliu"</string>
    <string name="call_mobile" msgid="8618334085824709009">"Apelaţi numărul de mobil"</string>
    <string name="call_work" msgid="8299062439076337075">"Apelaţi numărul de serviciu"</string>
    <string name="call_fax_work" msgid="3770754834467992571">"Apelaţi numărul de fax de serviciu"</string>
    <string name="call_fax_home" msgid="6219051113573396065">"Apelaţi numărul de fax de domiciliu"</string>
    <string name="call_pager" msgid="3038080882899955112">"Apelaţi numărul de pager"</string>
    <string name="call_other" msgid="4472141328347894937">"Apelaţi"</string>
    <string name="call_callback" msgid="687494744634190411">"Apelaţi un număr cu apelare inversă"</string>
    <string name="call_car" msgid="9078083109758282133">"Apelaţi numărul de maşină"</string>
    <string name="call_company_main" msgid="8768047233970315359">"Apelaţi numărul principal al companiei"</string>
    <string name="call_isdn" msgid="3342482563847537747">"Apelaţi ISDN"</string>
    <string name="call_main" msgid="4640261071249938558">"Apelaţi numărul principal"</string>
    <string name="call_other_fax" msgid="2536328553125487877">"Apelaţi numărul de fax"</string>
    <string name="call_radio" msgid="9055749313292712021">"Apelaţi un număr radio"</string>
    <string name="call_telex" msgid="2909886619224843563">"Apelaţi un număr de telex"</string>
    <string name="call_tty_tdd" msgid="6704940636171078852">"Apelaţi TTY/TDD"</string>
    <string name="call_work_mobile" msgid="4408630608955148641">"Apelaţi numărul de mobil de la serviciu"</string>
    <string name="call_work_pager" msgid="3036932765279753793">"Apelaţi numărul de pager de serviciu"</string>
    <string name="call_assistant" msgid="5188990854852312696">"Apelaţi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
    <string name="call_mms" msgid="8998771923464696960">"Apelaţi MMS"</string>
    <string name="sms_custom" msgid="4601748252470175865">"Trimiteţi un mesaj text către <xliff:g id="CUSTOM">%s</xliff:g>"</string>
    <string name="sms_home" msgid="7765831490534280540">"Trimiteţi un mesaj text către telefonul de domiciliu"</string>
    <string name="sms_mobile" msgid="8387632124165893103">"Trimiteţi un mesaj text către numărul de mobil"</string>
    <string name="sms_work" msgid="3910570578912367742">"Trimiteţi un mesaj text către numărul de serviciu"</string>
    <string name="sms_fax_work" msgid="909086167151248212">"Trimiteţi un mesaj text către un număr de fax de serviciu"</string>
    <string name="sms_fax_home" msgid="4145442497939634875">"Trimiteţi un mesaj text către un număr de fax de domiciliu"</string>
    <string name="sms_pager" msgid="5664381349583724906">"Trimiteţi un mesaj text către un număr de pager"</string>
    <string name="sms_other" msgid="910895193552957097">"Trimiteţi un mesaj text"</string>
    <string name="sms_callback" msgid="728414485478941361">"Trimiteţi un mesaj text către un număr cu apelare inversă"</string>
    <string name="sms_car" msgid="8543669230270954512">"Trimiteţi un mesaj text către un număr de telefon de maşină"</string>
    <string name="sms_company_main" msgid="5441902128445061862">"Trimiteţi un mesaj text către numărul principal al companiei"</string>
    <string name="sms_isdn" msgid="7142483128948042667">"Trimiteţi un mesaj text către un număr ISDN"</string>
    <string name="sms_main" msgid="6815987840926184815">"Trimiteţi un mesaj text către numărul principal"</string>
    <string name="sms_other_fax" msgid="8649822154879781466">"Trimiteţi un mesaj text către un număr de fax"</string>
    <string name="sms_radio" msgid="8750339218480745940">"Trimiteţi un mesaj text către un număr radio"</string>
    <string name="sms_telex" msgid="5469333785775443999">"Trimiteţi un mesaj text către un număr de telex"</string>
    <string name="sms_tty_tdd" msgid="5057886576150816002">"Trimiteţi un mesaj text către TTY/TDD"</string>
    <string name="sms_work_mobile" msgid="8426872094268475047">"Trimiteţi un mesaj text către numărul de mobil de serviciu"</string>
    <string name="sms_work_pager" msgid="499303540738557836">"Trimiteţi un mesaj text către un număr de pager de serviciu"</string>
    <string name="sms_assistant" msgid="2677586547377136683">"Trimiteţi un mesaj text către <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
    <string name="sms_mms" msgid="4887206338311086612">"Trimiteţi un mesaj text către un număr MMS"</string>
    <!-- no translation found for clearFrequentsConfirmation_title (1482750234535491083) -->
    <skip />
    <!-- no translation found for clearFrequentsConfirmation (2101370440975269958) -->
    <skip />
    <!-- no translation found for clearFrequentsProgress_title (3738406170865048982) -->
    <skip />
    <!-- no translation found for status_available (4832569677396634846) -->
    <skip />
    <!-- no translation found for status_away (6267905184545881094) -->
    <skip />
    <!-- no translation found for status_busy (7111912905211403545) -->
    <skip />
</resources>
