<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2016 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_label" msgid="3832318668025860600">"Nouzové informace"</string>
    <string name="edit_emergency_info_label" msgid="7023565992774864407">"Úprava nouzových informací"</string>
    <string name="edit_info" msgid="5973929805855224805">"Upravit nouzové informace"</string>
    <string name="tab_title_info" msgid="1402033103294855812">"Informace"</string>
    <string name="tab_title_contacts" msgid="4298341166404791209">"Kontakty"</string>
    <string name="name" msgid="4286267457738861977">"Jméno"</string>
    <string name="unknown_name" msgid="2834802479170495056">"Neznámé"</string>
    <string name="address" msgid="6449303483151189969">"Adresa"</string>
    <string name="unknown_address" msgid="4212576729941786121">"Neznámé"</string>
    <string name="date_of_birth" msgid="777979232444227891">"Datum narození"</string>
    <string name="unknown_date_of_birth" msgid="7416355536916066758">"Neznámé"</string>
    <string name="dob" msgid="2813161080307245706">"(<xliff:g id="DATE_OF_BIRTH">%1$s</xliff:g>)"</string>
    <string name="age" msgid="8327537794752630199">"Věk: <xliff:g id="NUMERICAL_AGE">%1$d</xliff:g>"</string>
    <string name="remove_dob_icon_text" msgid="4413507180967999944">"Odstranit datum narození"</string>
    <string name="blood_type" msgid="6947022772999974608">"Krevní skupina"</string>
    <string name="unknown_blood_type" msgid="6337228278125085668">"Neznámé"</string>
    <string name="oplus" msgid="7759756742377867011">"O+"</string>
    <string name="ominus" msgid="5227278501191741055">"O-"</string>
    <string name="aplus" msgid="4982472245421753463">"A+"</string>
    <string name="aminus" msgid="1469727296074783670">"A-"</string>
    <string name="bplus" msgid="5395850743718234762">"B+"</string>
    <string name="bminus" msgid="3813367242072886088">"B-"</string>
    <string name="abplus" msgid="8061792867513932701">"AB+"</string>
    <string name="abminus" msgid="2510867828094325481">"AB-"</string>
    <string name="hh" msgid="3071675674015857183">"H/H"</string>
    <!-- no translation found for blood_type_entries:0 (5051829403671092348) -->
    <!-- no translation found for blood_type_entries:1 (5289547171251363498) -->
    <!-- no translation found for blood_type_entries:2 (1998151664134824279) -->
    <!-- no translation found for blood_type_entries:3 (8861834946033182783) -->
    <!-- no translation found for blood_type_entries:4 (3936437251649109847) -->
    <!-- no translation found for blood_type_entries:5 (891231420183639230) -->
    <!-- no translation found for blood_type_entries:6 (8911255985148284758) -->
    <!-- no translation found for blood_type_entries:7 (2352690820681480000) -->
    <!-- no translation found for blood_type_entries:8 (8050126448069904266) -->
    <!-- no translation found for blood_type_entries:9 (6638754103385431982) -->
    <!-- no translation found for blood_type_content_description:9 (1362921785855892976) -->
    <string name="allergies" msgid="2789200777539258165">"Alergie"</string>
    <string name="unknown_allergies" msgid="4383115953418061237">"Neznámé"</string>
    <string name="allergies_hint" msgid="5488918780522184147">"Např. arašídy"</string>
    <string name="medications" msgid="644428945685557183">"Užívané léky"</string>
    <string name="unknown_medications" msgid="2764171064510423734">"Neznámé"</string>
    <string name="medications_hint" msgid="3221620025945593723">"Např. aspirin"</string>
    <string name="medical_conditions" msgid="6147422114803729239">"Zdravotní stav a poznámky"</string>
    <string name="unknown_medical_conditions" msgid="8051364895172053770">"Neznámé"</string>
    <string name="medical_conditions_hint" msgid="6959152183029062882">"Např. astma"</string>
    <string name="organ_donor" msgid="5953509460007124827">"Dárce orgánů"</string>
    <string name="unknown_organ_donor" msgid="2780515342875494225">"Neznámé"</string>
    <string name="yes" msgid="5829765567799916128">"Ano"</string>
    <string name="no" msgid="1681689233660683509">"Ne"</string>
    <!-- no translation found for organ_donor_entries:0 (4680498266537823362) -->
    <!-- no translation found for organ_donor_entries:1 (4906312680266515592) -->
    <!-- no translation found for organ_donor_entries:2 (9037713957399818892) -->
    <string name="emergency_contacts_title" msgid="5462202017417821030">"Nouzové kontakty"</string>
    <string name="add_emergency_contact" msgid="4987882226775581405">"Přidat nouzový kontakt"</string>
    <string name="remove_contact" msgid="6934983445723096759">"Odstranit uživatele <xliff:g id="CONTACT_NAME">%1$s</xliff:g> z nouzových kontaktů?"</string>
    <string name="remove_contact_icon_text" msgid="4576641386490101363">"Odstranit kontakt"</string>
    <string name="remove" msgid="1243949503772376064">"Odstranit"</string>
    <string name="cancel" msgid="7401575239009060939">"Zrušit"</string>
    <string name="ok" msgid="163967937451981024">"OK"</string>
    <string name="phone_type_and_phone_number" msgid="5034188169563878371">"<xliff:g id="PHONE_TYPE">%1$s</xliff:g> • <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
    <string name="user_emergency_info_title" msgid="7827058167207376581">"Nouzové informace"</string>
    <!-- no translation found for user_emergency_info_consent (5636028073450797246) -->
    <skip />
    <string name="emergency_info_continue" msgid="5453201508537906087">"Pokračovat"</string>
    <!-- no translation found for no_info_provided (6775035037534954056) -->
    <skip />
</resources>
