<?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=40] -->
    <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>
