<?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:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="app_name">Search</string>

    <!-- Search widget -->
    <string name="search_widget">Search</string>

    <!-- Text in the dialog for confirming whether to remove an item from the search
         history. [CHAR_LIMIT=NONE] -->
    <string name="remove_from_history">Do you want to remove this item from the search history?</string>

    <!-- Toast text shown when the app fails to remove an item from
         the search history. [CHAR_LIMIT=60] -->
    <string name="remove_from_history_failed">Couldn\'t remove item from history.</string>

    <!-- Source selector -->
    <string name="corpus_selection_heading">Search</string>
    <string name="corpus_label_global">All</string>

    <!-- Name of the combined Web source shown in QSB -->
    <string name="corpus_label_web">Web</string>
    <!-- Description of the combined Web source shown in QSB -->
    <string name="corpus_description_web">Web search, bookmarks, and browser history</string>

    <!-- Name of the Apps source shown in QSB -->
    <string name="corpus_label_apps">Apps</string>
    <!-- Settings description for the Apps source shown in QSB -->
    <string name="corpus_description_apps">Names of installed applications</string>
    <!-- Search hint for the Apps source shown in QSB -->
    <string name="corpus_hint_apps">Search apps</string>

    <!-- Search settings stuff -->

    <!-- Search settings menu item -->
    <string name="menu_settings">Search settings</string>

    <!-- Search settings title -->
    <string name="search_settings">Search settings</string>

    <!-- Title for Google Account category of search settings.
         [CHAR LIMIT=20] -->
    <string name="google_settings_category_title">Google Search</string>

    <!-- Title for 'device' category of search settings 
        [CHAR LIMIT=20] -->
    <string name="device_settings_category_title">Clear shortcuts</string>

    <!-- Title for 'system search' category of search settings -->
    <string name="system_search_category_title">Phone</string>

    <!-- Title and summary for 'search sources' link for system search -->
    <string name="search_sources">Searchable items</string>
    <string name="search_sources_summary">Choose what to search on the phone</string>

    <!-- Title and summary used for the option to clear search shortcuts from the system
         search history -->
    <string name="clear_shortcuts">Clear shortcuts</string>
    <string name="clear_shortcuts_summary">Clear shortcuts to recently chosen search suggestions</string>

    <!--[CHAR LIMIT=200] Title used in the dialog shown after choosing the 'clear search shortcuts' setting. -->
    <string name="clear_shortcuts_prompt">"Do you want to clear all shortcuts to recently chosen search suggestions?"\n\n"To clear your Browser history, use the Browser's settings."</string>
    <!--[CHAR LIMIT=30] Text used on the button to clear shortcuts in the dialog shown after choosing the 'clear search shortcuts' setting. -->
    <string name="clear_shortcuts_agree">Clear shortcuts</string>
    <!--[CHAR LIMIT=30] Text used on the button to cancel in the dialog shown after choosing the 'clear search shortcuts' setting. -->
    <string name="clear_shortcuts_disagree">"Don't clear shortcuts"</string>

    <!-- Help menu item. Opens a web page with information about how to use Quick Search Box.
         [CHAR LIMIT=20] -->
    <string name="menu_help">Help</string>

    <!-- Search source label for the Google search source. -->
    <string name="google_search_label">Google</string>

    <!-- The search activity label. -->
    <string name="google_app_label">Google Search</string>

    <!-- This is the hint text shown in the search widget, before text is entered. -->
    <!-- This translation MUST MATCH the string "search_hint" which is found in
         Home/res/values/strings.xml -->
    <string name="google_search_hint">Google Search</string>

    <!-- Search settings description for the Google search source. [CHAR LIMIT=50] -->
    <string name="google_search_description">Google Search suggestions</string>

    <!-- Title for Voice Search hints bubble -->
    <string name="voice_search_hint_title">Try saying:</string>
    <!-- Starting quotation marks of the voice search hint -->
    <string name="voice_search_hint_quotation_start">\"</string>
    <!-- Ending quotation marks of the voice search hint -->
    <string name="voice_search_hint_quotation_end">\"</string>

</resources>
