<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2014 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="sip_settings" msgid="7452587325305604702">"Setări SIP"</string>
    <string name="sip_accounts" msgid="7297896885665783239">"Conturi SIP"</string>
    <string name="sip_accounts_title" msgid="3061686404598143943">"Conturi"</string>
    <string name="sip_receive_calls" msgid="3403644006618369349">"Primiți apeluri"</string>
    <string name="sip_receive_calls_summary" msgid="5306603671778761443">"Consumă mai multă baterie"</string>
    <string name="sip_call_options_title" msgid="5027066677561068192">"Folosiți apelarea SIP"</string>
    <string name="sip_call_options_wifi_only_title" msgid="6663105297927456484">"Folosiți apelarea SIP (numai prin Wi-Fi)"</string>
    <string name="sip_call_options_entry_1" msgid="4722647332760934261">"Pentru toate apelurile, când rețeaua de date este disponibilă"</string>
    <string name="sip_call_options_entry_2" msgid="7338504256051655013">"Numai pentru apeluri SIP"</string>
    <string name="sip_call_options_wifi_only_entry_1" msgid="922329055414010991">"Pentru toate apelurile"</string>
    <string name="add_sip_account" msgid="5754758646745144384">"Adăugați un cont"</string>
    <string name="remove_sip_account" msgid="8272617403399636513">"Eliminați contul"</string>
    <string name="sip_account_list" msgid="2596262496233721769">"Conturi SIP"</string>
    <string name="saving_account" msgid="3390358043846687266">"Se salvează contul..."</string>
    <string name="removing_account" msgid="1544132880414780408">"Se elimină contul..."</string>
    <string name="sip_menu_save" msgid="4377112554203123060">"Salvați"</string>
    <string name="sip_menu_discard" msgid="1883166691772895243">"Renunțați"</string>
    <string name="alert_dialog_close" msgid="1734746505531110706">"Închideți profilul"</string>
    <string name="alert_dialog_ok" msgid="7806760618798687406">"OK"</string>
    <string name="close_profile" msgid="3756064641769751774">"Închideți"</string>
    <string name="registration_status_checking_status" msgid="884179594507591180">"Se verifică starea..."</string>
    <string name="registration_status_registering" msgid="7986331597809521791">"Se înregistrează..."</string>
    <string name="registration_status_still_trying" msgid="7178623685868766282">"Se încearcă în continuare..."</string>
    <string name="registration_status_not_receiving" msgid="3873074208531938401">"Nu se primesc apeluri."</string>
    <string name="registration_status_no_data" msgid="2987064560116584121">"Înregistrarea contului s-a oprit deoarece nu există conexiune la internet."</string>
    <string name="registration_status_no_wifi_data" msgid="685470618241482948">"Înregistrarea contului s-a oprit deoarece nu există conexiune Wi-Fi."</string>
    <string name="registration_status_not_running" msgid="6236403137652262659">"Înregistrarea contului nu a reușit."</string>
    <string name="registration_status_done" msgid="6787397199273357721">"Se primesc apeluri."</string>
    <string name="registration_status_failed_try_later" msgid="7855389184910312091">"Înregistrarea contului nu a reușit: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); se va încerca mai târziu"</string>
    <string name="registration_status_invalid_credentials" msgid="8896714049938660777">"Înregistrarea contului nu a reușit: nume de utilizator sau parolă incorectă."</string>
    <string name="registration_status_server_unreachable" msgid="3832339558868965604">"Înregistrarea contului nu a reușit: verificați numele serverului."</string>
    <string name="third_party_account_summary" msgid="5918779106950859167">"Acest cont este utilizat în prezent de aplicația <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
    <string name="sip_edit_title" msgid="7438891546610820307">"Detalii cont SIP"</string>
    <string name="sip_edit_new_title" msgid="8394790068979636381">"Detalii cont SIP"</string>
    <string name="domain_address_title" msgid="8238078615181248579">"Server"</string>
    <string name="username_title" msgid="298416796886107970">"Nume de utilizator"</string>
    <string name="password_title" msgid="8035579335591959021">"Parolă"</string>
    <string name="display_name_title" msgid="3730105783656830160">"Numele afișat"</string>
    <string name="proxy_address_title" msgid="4120361943254795287">"Adresă proxy de ieșire"</string>
    <string name="port_title" msgid="1703586046264385110">"Numărul portului"</string>
    <string name="transport_title" msgid="1661659138226029178">"Tip de transport"</string>
    <string name="send_keepalive_title" msgid="5319788151608946049">"Trimite keep-alive"</string>
    <string name="advanced_settings" msgid="2704644977548662872">"Setări opționale"</string>
    <string name="auth_username_title" msgid="9002505242616662698">"Nume de utilizator pentru autentificare"</string>
    <string name="auth_username_summary" msgid="6346313945275377230">"Numele de utilizator folosit pentru autentificare"</string>
    <string name="default_preference_summary_username" msgid="8788114717555599222">"&lt;Nesetat&gt;"</string>
    <string name="default_preference_summary_password" msgid="3695366978153175549">"&lt;Nesetat&gt;"</string>
    <string name="default_preference_summary_domain_address" msgid="443247296785732364">"&lt;Nesetat&gt;"</string>
    <string name="display_name_summary" msgid="6749135030093260358">"&lt;Identic cu numele de utilizator&gt;"</string>
    <string name="optional_summary" msgid="620379377865437488">"&lt;Opțional&gt;"</string>
    <string name="advanced_settings_show" msgid="2318728080037568529">"▷ Atingeți pentru a afișa tot"</string>
    <string name="advanced_settings_hide" msgid="6200816937370652083">"▽ Atingeți pentru a ascunde tot"</string>
    <string name="all_empty_alert" msgid="6085603517610199098">"Introduceți detaliile noului cont SIP."</string>
    <string name="empty_alert" msgid="3693655518612836718">"Câmpul <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> este obligatoriu și nu poate fi lăsat necompletat."</string>
    <string name="not_a_valid_port" msgid="3664668836663491376">"Numărul portului trebuie să fie cuprins între 1000 și 65534."</string>
    <string name="no_internet_available" msgid="161720645084325479">"Pentru a efectua un apel SIP, mai întâi verificați conexiunea la internet."</string>
    <string name="no_wifi_available" msgid="1179092018692306312">"Pentru apeluri SIP trebuie să fiți conectat(ă) la o rețea Wi-Fi (folosiți setările din Wireless și rețea)."</string>
    <string name="no_voip" msgid="3366395789297981738">"Apelarea SIP nu este acceptată"</string>
    <string name="sip_system_decide" msgid="197230378376326430">"Automat"</string>
    <string name="sip_always_send_keepalive" msgid="4986533673960084769">"Se trimite întotdeauna"</string>
    <string name="sip_connection_service_label" msgid="8796284274240316006">"Apelare SIP integrată"</string>
</resources>
