<?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>

    <!-- Search widget config -->
    <string name="search_widget_config_ok">OK</string>

    <!-- Source selector -->
    <string name="corpus_selection_heading">Search</string>
    <string name="corpus_selection_edit_items">Add / Remove</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>

    <!-- Name of the Apps and Market source shown in QSB -->
    <string name="corpus_label_apps_market">Apps and Market</string>
    <!-- Settings description for the Apps and Market source shown in QSB -->
    <string name="corpus_description_apps_market">Installed Apps and Apps from Market</string>
    <!-- Search hint for the Apps source shown in QSB -->
    <string name="corpus_hint_apps_market">Search Apps and Market</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 'web search' category of search settings -->
    <string name="web_search_category_title">Web</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>

    <!-- Strings used in the dialog shown after choosing the 'clear search shortcuts' setting. -->
    <string name="clear_shortcuts_prompt">"This will clear all shortcuts to recently chosen search suggestions."\n\n"(To clear your Browser history, use the Browser's settings.)"</string>
    <string name="agree">OK</string>
    <string name="disagree">Cancel</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. -->
    <string name="google_search_description">Google search suggestions</string>

    <!-- Settings category title for 'Google search settings' settings activity -->
    <string name="google_search_settings">Google search</string>

    <!-- Title and summaries for 'show web suggestions' check box setting -->
    <string name="google_show_web_suggestions">Show web suggestions</string>
    <string name="google_show_web_suggestions_summary_enabled">Show suggestions from Google as you type</string>
    <string name="google_show_web_suggestions_summary_disabled">Don\'t show suggestions from Google as you type</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>

    <!-- Note that this is the standard search url.  It uses the current locale for language -->
    <!-- (%1$s) and country (%2$s) and shouldn't need to be replaced by locale or mcc selected -->
    <!-- resources. -->
    <!-- Any changes to this (especially in terms of adding/removing the MCC-specific flavors) -->
    <!-- should be mirrored by changes in GenieProvider. -->
    <!-- Do not translate.  This string is an internal URI, not seen in the UI. -->
    <string name="google_search_base" translatable="false">
        http://www.google.com/m?hl=%1$s&amp;gl=%2$s</string>

    <!-- Note that this is the standard suggest url.  It uses the current locale for language -->
    <!-- (t%1$s) and country (%2$s) and should not need to be replaced by locale or mcc -->
    <!-- selected resources. -->
    <!-- Any changes to this (especially in terms of adding/removing the MCC-specific flavors) -->
    <!-- should be mirrored by changes in GenieProvider -->
    <!-- Do not translate.  This string is an internal URI, not seen in the UI. -->
    <string name="google_suggest_base" translatable="false">
        http://www.google.com/complete/search?hl=%1$s&amp;gl=%2$s&amp;</string>

</resources>
