<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2009 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="9095072584761066851">"Installer ng Certificate"</string>
    <string name="pick_file_title" msgid="4481949485108233297">"Pumili ng certificate"</string>
    <string name="pkcs12_password_dialog_title" msgid="5997624645207427161">"I-extract ang certificate"</string>
    <string name="extracting_pkcs12" msgid="1881267738821799771">"Ine-extract…"</string>
    <string name="pkcs12_file_password_dialog_title" msgid="8102721384767269510">"I-extract mula sa %s"</string>
    <string name="name_credential_dialog_title" msgid="277729846491554437">"Pangalanan ang certificate"</string>
    <string name="credential_name" msgid="1974979771369744378">"Pangalan ng certificate:"</string>
    <string name="credential_password" msgid="3520176519550993326">"I-type ang password upang i-extract ang mga certificate."</string>
    <string name="credential_info" msgid="2436768402308470397">"Naglalaman ang package ng:"</string>
    <string name="p12_description" msgid="4128352087331630024">"Mga certificate sa PKCS12 keystore."</string>
    <string name="one_userkey" msgid="3500697912370644881">"isang key ng user"</string>
    <string name="one_usercrt" msgid="7690798336332403106">"isang certificate ng user"</string>
    <string name="one_cacrt" msgid="2667950425420663146">"isang certficate ng CA"</string>
    <string name="n_cacrts" msgid="2141498640685639208">"%d Mga certificate ng CA"</string>
    <string name="password_error" msgid="2042471639556516356">"I-type ang tamang password."</string>
    <string name="password_empty_error" msgid="591713406761723025">"I-type ang password."</string>
    <string name="name_empty_error" msgid="3808800768660110354">"Mag-type ng pangalan."</string>
    <string name="name_char_error" msgid="3176618568784938968">"Mag-type ng pangalan na naglalaman lamang ng mga titik at numero."</string>
    <string name="storage_error" msgid="8306802455802770779">"Hindi mai-save ang certificate. Pindutin ang OK upang subukang muli."</string>
    <string name="unable_to_save_cert" msgid="9178604087335389686">"Hindi mai-save ang certificate. Hindi pinagana o maayos na nasimulan ang storage ng kredensyal."</string>
    <string name="cert_not_saved" msgid="4037698479662830270">"Hindi naka-install ang certificate."</string>
    <string name="no_cert_to_saved" msgid="5708884372817309068">"Walang ii-install na certificate."</string>
    <string name="invalid_cert" msgid="7704228670980743590">"Di-wasto ang certificate."</string>
    <string name="cert_is_added" msgid="6996557598167000500">"Naka-install ang <xliff:g id="CREDENTIAL">%s</xliff:g>."</string>
    <string name="cert_too_large_error" msgid="8715414972725646285">"Hindi ma-install dahil masyadong malaki ang certificate."</string>
    <string name="cert_missing_error" msgid="7040527352278728220">"Hindi ma-install dahil hindi mahanap ang file ng certificate."</string>
    <string name="cert_read_error" msgid="7353463360652419796">"Hindi mai-install dahil hindi mabasa ang file ng certificate."</string>
    <string name="no_cert_file_found" product="nosdcard" msgid="3555332946357131929">"Walang nakitang file ng certificate sa imbakan na USB."</string>
    <string name="no_cert_file_found" product="default" msgid="1942077544887243999">"Walang nakitang file ng certificate sa SD card."</string>
    <string name="sdcard_not_present" product="nosdcard" msgid="9197143240492611196">"Hindi available imbakan na USB"</string>
    <string name="sdcard_not_present" product="default" msgid="3866952732541932947">"Wala ang SD card."</string>
    <string name="only_primary_user_allowed" msgid="4005084935023047716">"Ang may-ari lang ng device na ito ang maaaring mag-install ng mga certificate."</string>
    <string name="credential_usage_label" msgid="1513892208033156805">"Paggamit ng kredensyal:"</string>
  <string-array name="credential_usage">
    <item msgid="375085478373011304">"VPN at apps"</item>
    <item msgid="692322974985472861">"Wi-Fi"</item>
  </string-array>
</resources>
