<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2007 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="app_name" msgid="2738748390251381682">"Program d\'installaziun dal pachet"</string>
    <!-- no translation found for next (3057143178373252333) -->
    <skip />
    <string name="install" msgid="5896438203900042068">"Installar"</string>
    <string name="done" msgid="3889387558374211719">"Finì"</string>
    <!-- no translation found for security_settings_desc (2706691034244052604) -->
    <skip />
    <string name="cancel" msgid="8360346460165114585">"Interrumper"</string>
    <string name="unknown" msgid="4742479012767208045">"Nunenconuschent"</string>
    <string name="installing" msgid="8613631001631998372">"Installar…"</string>
    <!-- no translation found for install_done (3682715442154357097) -->
    <skip />
    <!-- no translation found for install_confirm_question (7295206719219043890) -->
    <skip />
    <!-- no translation found for install_confirm_question_no_perms (5918305641302873520) -->
    <skip />
    <!-- no translation found for install_confirm_question_update (4624159567361487964) -->
    <skip />
    <!-- no translation found for install_confirm_question_update_system (1302330093676416336) -->
    <skip />
    <!-- no translation found for install_confirm_question_update_no_perms (4885928136844618944) -->
    <skip />
    <!-- no translation found for install_confirm_question_update_system_no_perms (7676593512694724374) -->
    <skip />
    <!-- no translation found for install_failed (6579998651498970899) -->
    <skip />
    <!-- no translation found for install_failed_invalid_apk (1287935707565682604) -->
    <skip />
    <!-- no translation found for install_failed_inconsistent_certificates (1517751954440692054) -->
    <skip />
    <!-- no translation found for install_failed_older_sdk (7947925824732917665) -->
    <skip />
    <!-- no translation found for install_failed_cpu_abi_incompatible (7098684468842750800) -->
    <skip />
    <!-- no translation found for install_failed_cpu_abi_incompatible (4433316303249711331) -->
    <skip />
    <!-- no translation found for install_failed_file_not_found (1958430133396322619) -->
    <skip />
    <!-- no translation found for install_failed_verify_failed (5567372439890440205) -->
    <skip />
    <!-- no translation found for install_failed_verify_timeout (7083090219270140373) -->
    <skip />
    <!-- no translation found for install_failed_msg (8368835262605608787) -->
    <skip />
    <!-- no translation found for install_failed_msg (8554909560982962052) -->
    <skip />
    <string name="launch" msgid="4826921505917605463">"Avrir"</string>
    <string name="unknown_apps_dlg_title" msgid="2855558586206583032">"Installaziun bloccada"</string>
    <!-- no translation found for unknown_apps_dlg_text (7504186369474734767) -->
    <skip />
    <!-- no translation found for unknown_apps_dlg_text (133213135679009316) -->
    <skip />
    <string name="ok" msgid="3468756155452870475">"OK"</string>
    <string name="settings" msgid="6743583734099755409">"Parameters"</string>
    <!-- no translation found for allow_source_dlg_title (7568985073502399415) -->
    <skip />
    <!-- no translation found for allow_source_dlg_text (3927580956764099076) -->
    <skip />
    <!-- no translation found for manage_applications (4033876279091996596) -->
    <skip />
    <!-- no translation found for dlg_app_replacement_title (1232230739563820951) -->
    <skip />
    <!-- no translation found for dlg_app_replacement_statement (2992911899989907492) -->
    <skip />
    <!-- no translation found for dlg_sys_app_replacement_statement (1900046590819605929) -->
    <skip />
    <string name="out_of_space_dlg_title" msgid="7843674437613797326">"Capacitad da memorisar nunsuffizienta"</string>
    <!-- no translation found for out_of_space_dlg_text (4774775404294282216) -->
    <skip />
    <string name="dlg_ok" msgid="6944357727705699232">"OK"</string>
    <!-- no translation found for app_not_found_dlg_title (2692335460569505484) -->
    <skip />
    <!-- no translation found for app_not_found_dlg_text (6107465056055095930) -->
    <skip />
    <!-- no translation found for uninstall_application_title (1860074100811653963) -->
    <skip />
    <!-- no translation found for uninstall_update_title (4146940097553335390) -->
    <skip />
    <!-- no translation found for uninstall_activity_text (6680688689803932550) -->
    <skip />
    <!-- no translation found for uninstall_application_text (6691975835951187030) -->
    <skip />
    <!-- no translation found for uninstall_application_text_all_users (5574704453233525222) -->
    <skip />
    <!-- no translation found for uninstall_update_text (2056387942084605027) -->
    <skip />
    <string name="uninstalling" msgid="5556217435895938250">"Deinstallar…"</string>
    <!-- no translation found for uninstall_done (3792487853420281888) -->
    <skip />
    <!-- no translation found for uninstall_failed (631122574306299512) -->
    <skip />
    <!-- no translation found for uninstall_failed_device_policy_manager (3493789239037852035) -->
    <skip />
    <!-- no translation found for manage_device_administrators (891392489300312370) -->
    <skip />
    <!-- no translation found for uninstall_failed_msg (8969754702803951175) -->
    <skip />
    <string name="Parse_error_dlg_title" msgid="6079580916889596257">"Errur da parsing"</string>
    <!-- no translation found for Parse_error_dlg_text (7623286983621067011) -->
    <skip />
    <!-- no translation found for newPerms (6039428254474104210) -->
    <skip />
    <!-- no translation found for allPerms (1024385515840703981) -->
    <skip />
    <!-- no translation found for privacyPerms (1850527049572617) -->
    <skip />
    <!-- no translation found for devicePerms (6733560207731294504) -->
    <skip />
    <!-- no translation found for no_new_perms (6657813692169565975) -->
    <skip />
</resources>
