<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  ~ Copyright (C) 2015 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="bt_app_name" msgid="5515382901862469770">"TV Tuner"</string>
    <string name="ut_app_name" msgid="8557698013780762454">"USB TV Tuner"</string>
    <string name="ut_setup_on" msgid="7755608253387551795">"On"</string>
    <string name="ut_setup_off" msgid="1333878787059290524">"Off"</string>
    <string name="ut_setup_cancel" msgid="5318292052302751909">"Please wait to finish processing"</string>
    <string name="ut_select_channel_map" msgid="4831940000362338865">"Select your channel source"</string>
    <string name="ut_no_signal" msgid="7390099185275997984">"No Signal"</string>
    <string name="ut_fail_to_tune" msgid="2964582177222053143">"Failed to tune to <xliff:g id="CHANNEL_NAME">%s</xliff:g>"</string>
    <string name="ut_fail_to_tune_to_unknown_channel" msgid="7078953579048783762">"Failed to tune"</string>
    <string name="ut_rescan_needed" msgid="2273655435759849436">"Tuner software has been recently updated. Please re-scan the channels."</string>
    <string name="ut_surround_sound_disabled" msgid="6465044734143962900">"To enable audio, enable surround sound in system sound settings"</string>
    <string name="ut_setup_breadcrumb" msgid="2810318605327367247">"Channel tuner setup"</string>
    <string name="bt_setup_new_title" msgid="8447554965697762891">"TV Tuner setup"</string>
    <string name="ut_setup_new_title" msgid="2118880835101453405">"USB channel tuner setup"</string>
    <string name="bt_setup_new_description" msgid="256690722062003128">"Check that your TV is connected to a TV signal source.\n\nIf using an over-the-air aerial, you may need to adjust its placement or direction to receive the most channels. For best results, place it high and near a window."</string>
    <string name="ut_setup_new_description" msgid="2610122936163002137">"Check that the USB tuner is plugged in and connected to a TV signal source.\n\nIf using an over-the-air aerial, you may need to adjust its placement or direction to receive the most channels. For best results, place it high and near a window."</string>
  <string-array name="ut_setup_new_choices">
    <item msgid="8728069574888601683">"Continue"</item>
    <item msgid="727245208787621142">"Not now"</item>
  </string-array>
    <string name="bt_setup_again_title" msgid="884713873101099572">"Re-run channel setup?"</string>
    <string name="bt_setup_again_description" msgid="1247792492948741337">"This will remove the channels found from the TV tuner and scan for new channels again.\n\nCheck that your TV is connected to a TV signal source.\n\nIf using an over-the-air aerial, you may need to adjust its placement or direction to receive the most channels. For best results, place it high and near a window."</string>
    <string name="ut_setup_again_description" msgid="7837706010887799255">"This will remove the channels found from the USB tuner and scan for new channels again.\n\nCheck that the USB tuner is plugged in and connected to a TV signal source.\n\nIf using an over-the-air antenna, you may need to adjust its placement or direction to receive the most channels. For best results, place it high and near a window."</string>
  <string-array name="ut_setup_again_choices">
    <item msgid="2557527790311851317">"Continue"</item>
    <item msgid="235450158666155406">"Cancel"</item>
  </string-array>
    <string name="ut_connection_title" msgid="8435949189164677545">"Select the connection type"</string>
    <string name="ut_connection_description" msgid="7234582943233286192">"Choose Aerial if there is an external Aerial connected to the tuner. Choose Cable if your channels come from a cable service provider. If you are not sure, both types will be scanned, but this may take longer."</string>
  <string-array name="ut_connection_choices">
    <item msgid="1499878461856892555">"Aerial"</item>
    <item msgid="2670079958754180142">"Cable"</item>
    <item msgid="36774059871728525">"Not sure"</item>
    <item msgid="6881204453182153978">"Development only"</item>
  </string-array>
    <string name="bt_channel_scan" msgid="3291924771702347469">"TV tuner setup"</string>
    <string name="ut_channel_scan" msgid="6100090671500464604">"USB channel tuner setup"</string>
    <string name="ut_channel_scan_time" msgid="1844845425359642393">"This may take several minutes"</string>
    <string name="ut_channel_scan_tuner_unavailable" msgid="3135723754380409658">"Tuner is temporarily unavailable or already used by recording."</string>
    <plurals name="ut_channel_scan_message" formatted="false" msgid="3131606783282632056">
      <item quantity="other">%1$d channels found</item>
      <item quantity="one">%1$d channel found</item>
    </plurals>
    <string name="ut_stop_channel_scan" msgid="566811986747774193">"STOP CHANNEL SCAN"</string>
    <plurals name="ut_result_found_title" formatted="false" msgid="1448908152026339099">
      <item quantity="other">%1$d channels found</item>
      <item quantity="one">%1$d channel found</item>
    </plurals>
    <plurals name="ut_result_found_description" formatted="false" msgid="4132691388395648565">
      <item quantity="other">Nice! %1$d channels were found during the channel scan. If this doesn’t seem right, try adjusting the antenna position and scan again.</item>
      <item quantity="one">Nice! %1$d channel was found during the channel scan. If this doesn’t seem right, try adjusting the antenna position and scan again.</item>
    </plurals>
  <string-array name="ut_result_found_choices">
    <item msgid="3220617441427115421">"Finished"</item>
    <item msgid="2480490326672924828">"Scan again"</item>
  </string-array>
    <string name="ut_result_not_found_title" msgid="4649533929056795595">"No channels found"</string>
    <string name="bt_result_not_found_description" msgid="7378208337325024042">"The scan did not find any channels. Check that your TV is connected to a TV signal source.\n\nIf using an over-the-air aerial, adjust its placement or direction. For best results, place it high and near a window and scan again."</string>
    <string name="ut_result_not_found_description" msgid="1080746285957681414">"The scan did not find any channels. Check that the USB tuner is plugged in and connected to a TV signal source.\n\nIf using an over-the-air aerial, adjust its placement or direction. For best results, place it high and near a window and scan again."</string>
  <string-array name="ut_result_not_found_choices">
    <item msgid="5436884968471542030">"Scan again"</item>
    <item msgid="2092797862490235174">"Finished"</item>
  </string-array>
    <string name="ut_setup_recommendation_card_focused_title" msgid="7434151993964505386">"Scan for TV channels"</string>
    <string name="bt_setup_recommendation_card_title" msgid="1026906771141769829">"TV Tuner setup"</string>
    <string name="ut_setup_recommendation_card_title" msgid="1093869817128338226">"USB TV Tuner setup"</string>
    <string name="msg_usb_device_detached" msgid="5123930566630230724">"USB TV tuner disconnected."</string>
</resources>
