<?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="3768482698061677257">"SIP-beállítások"</string>
    <string name="sip_accounts" msgid="85559497282185405">"SIP-fiókok"</string>
    <string name="sip_accounts_title" msgid="2082527045326874519">"Fiókok"</string>
    <string name="sip_receive_calls" msgid="426678617137462173">"Beérkező hívások fogadása"</string>
    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Több energiát használ"</string>
    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-hívás használata"</string>
    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-hívás használata (csak Wi-Fin)"</string>
    <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Minden hívásnál, amikor nincs elérhető adathálózat"</string>
    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Csak SIP-hívásokhoz"</string>
    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Minden híváshoz"</string>
    <string name="add_sip_account" msgid="800843669753980091">"Fiók hozzáadása"</string>
    <string name="remove_sip_account" msgid="1367664438506503690">"Fiók eltávolítása"</string>
    <string name="sip_account_list" msgid="5610858485304821480">"SIP-fiókok"</string>
    <string name="saving_account" msgid="5336529880235177448">"A fiók mentése…"</string>
    <string name="removing_account" msgid="5537351356808985756">"A fiók törlése…"</string>
    <string name="sip_menu_save" msgid="7882219814563869225">"Mentés"</string>
    <string name="sip_menu_discard" msgid="2350421645423888438">"Elvetés"</string>
    <string name="alert_dialog_close" msgid="1326011828713435134">"A profil bezárása"</string>
    <string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
    <string name="close_profile" msgid="3122414058856309881">"Bezárás"</string>
    <string name="registration_status_checking_status" msgid="6136793741862200337">"Állapot ellenőrzése…"</string>
    <string name="registration_status_registering" msgid="2677183977796278749">"Regisztrálás…"</string>
    <string name="registration_status_still_trying" msgid="7648151061205513458">"Még próbálkozik…"</string>
    <string name="registration_status_not_receiving" msgid="7620333886153361090">"Nem fogad hívásokat."</string>
    <string name="registration_status_no_data" msgid="2541999976218192413">"A fiók regisztrálása leállt, mert nincs internetkapcsolat."</string>
    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"A fiók regisztrálása leállt, mert nincs Wi-Fi-kapcsolat."</string>
    <string name="registration_status_not_running" msgid="514205414303796800">"A fiók regisztrálása sikertelen."</string>
    <string name="registration_status_done" msgid="3264961069247314253">"Hívások fogadása."</string>
    <string name="registration_status_failed_try_later" msgid="2199970021756384317">"A fiók regisztrálása sikertelen: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); próbálja újra később"</string>
    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"A fiók regisztrálása nem sikerült: a felhasználónév vagy a jelszó helytelen."</string>
    <string name="registration_status_server_unreachable" msgid="7710275557045148634">"A fiók regisztrálása nem sikerült: ellenőrizze a szerver nevét."</string>
    <string name="third_party_account_summary" msgid="9041060473615403041">"Ezt a fiókot jelenleg a(z) <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> alkalmazás használja."</string>
    <string name="sip_edit_title" msgid="1967247832635750410">"SIP-fiók részletei"</string>
    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP-fiók részletei"</string>
    <string name="domain_address_title" msgid="1968479941328225423">"Szerver"</string>
    <string name="username_title" msgid="6770064611005663470">"Felhasználónév"</string>
    <string name="password_title" msgid="5289013731515564295">"Jelszó"</string>
    <string name="display_name_title" msgid="579241787583079773">"Megjelenítendő név"</string>
    <string name="proxy_address_title" msgid="6890163365640631841">"Kimenő proxy címe"</string>
    <string name="port_title" msgid="6693965912656593862">"Port száma"</string>
    <string name="transport_title" msgid="889155457465372527">"Átvitel típusa"</string>
    <string name="send_keepalive_title" msgid="599627072150501159">"Kapcsolat megtartása"</string>
    <string name="advanced_settings" msgid="6622996380747040711">"További beállítások"</string>
    <string name="auth_username_title" msgid="8262491689004708265">"Azonosításhoz használt felhasználónév"</string>
    <string name="auth_username_summary" msgid="941160241371436473">"Azonosításhoz használt felhasználónév"</string>
    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nincs megadva&gt;"</string>
    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nincs megadva&gt;"</string>
    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nincs megadva&gt;"</string>
    <string name="display_name_summary" msgid="7155076491675565407">"&lt;Ugyanaz, mint a felhasználónév&gt;"</string>
    <string name="optional_summary" msgid="2363105560396317624">"&lt;Nem kötelező&gt;"</string>
    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Érintse meg az összes megjelenítéséhez"</string>
    <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Érintse meg az összes elrejtéséhez"</string>
    <string name="all_empty_alert" msgid="4087734950375192387">"Adja meg az új SIP-fiók részleteit."</string>
    <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> megadása kötelező, nem maradhat üresen."</string>
    <string name="not_a_valid_port" msgid="7931422555587011830">"A port számának 1000 és 65534 között kell lennie."</string>
    <string name="no_internet_available" msgid="5523747991760017298">"SIP-hívás indításához előbb ellenőrizze az internetkapcsolatát."</string>
    <string name="no_wifi_available" msgid="1955023904229673488">"SIP-hívás használatához csatlakoznia kell egy Wi-Fi-hálózathoz (használja a Vezeték nélküli és egyéb hálózatok menü beállításait)."</string>
    <string name="no_voip" msgid="3038021971231952704">"A SIP-hívás nem támogatott"</string>
    <string name="sip_system_decide" msgid="5577696249416700671">"Automatikus"</string>
    <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Mindig küldjön"</string>
    <string name="sip_connection_service_label" msgid="6935325004265884453">"Beépített SIP-hívás"</string>
</resources>
