<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  ~ Copyright (C) 2021 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="cancel" msgid="1942863792086990604">"रद्द करें"</string>
    <string name="emergency_action_title" msgid="4329795972111990414">"इमरजेंसी एसओएस"</string>
    <string name="emergency_action_subtitle" msgid="8290952869293991564">"धैर्य रखें. हम आपके लिए, <xliff:g id="EMERGENCY_NUMBER">%1$s</xliff:g> पर कॉल कर रहे हैं."</string>
    <string name="count_down_unit" msgid="7461042666268976220">"से॰"</string>
    <string name="countdown_text_content_description" msgid="322778383478285712">"{seconds_left,plural, =1{1 सेकंड}one{# सेकंड}other{# सेकंड}}"</string>
    <string name="slider_seek_bar_content_description" msgid="811285658152645524">"चालू करने के लिए, दो उंगलियों से स्लाइड करें"</string>
</resources>
