<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 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>
    <!-- Application name -->
    <string name="app_name">Calculator</string>
    <!-- If there is a syntax error in the user entered calculation, an error dialog will appear.  This is the title. -->
    <string name="error">Error</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit0">0</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit1">1</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit2">2</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit3">3</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit4">4</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit5">5</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit6">6</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit7">7</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit8">8</string>
    <!-- Displayed numbers for the digit buttons -->
    <string name="digit9">9</string>
    <!-- Button name on screen to delete the last entered digit or operator -->
    <string name="del">DELETE</string>
    <!-- Button name on screen to clear the entire calculation field. [CHAR LIMIT=6] -->
    <string name="clear">CLR</string>
    <!-- Do not translate. Unicode division sign; don't translate. Displayed as button on screen. -->
    <string name="div">\u00f7</string>
    <!-- Do not translate. Unicode multiplication sign; don't translate. Displayed as button on screen. -->
    <string name="mul">\u00d7</string>
    <!-- Do not translate. Plus sign, displayed as button on screen -->
    <string name="plus">+</string>
    <!-- Do not translate. Unicode minus sign; don't translate. Displayed as button on screen. -->
    <string name="minus">\u2212</string>
    <!-- Do not translate. Decimal point; don't translate. Displayed as button on screen. -->
    <string name="dot">.</string>
    <!-- Do not translate. Equal sign; don't translate. Displayed as button on screen. -->
    <string name="equal">=</string>
    <!-- Do not translate. Down arrow; don't translate. Displayed as button on screen. -->
    <string name="enter">\u2193</string>
    <!-- Displayed on buttons on screen for the sin function. -->
    <string name="sin">sin</string>
    <!-- Displayed on buttons on screen for the cos function. -->
    <string name="cos">cos</string>
    <!-- Displayed on buttons on screen for the tan function. -->
    <string name="tan">tan</string>
       
    <!-- Do not translate. Unicode pi sign; don't translate. Displayed as button on screen. -->
    <string name="pi">\u03c0</string>
    <!-- Displayed on buttons on screen for the e function. -->
    <string name="e">e</string>
    <!-- Displayed on buttons on screen for the ln function. -->
    <string name="ln">ln</string>
    <!-- Displayed on buttons on screen for the log function. -->
    <string name="lg">log</string>
    <!-- Displayed on buttons on screen for a left parenthesis. -->
    <string name="leftParen">(</string>
    <!-- Displayed on buttons on screen for a right parenthesis. -->
    <string name="rightParen">)</string>
    <!-- Do not translate. Unicode square root sign; don't translate. Displayed on button on screen. -->
    <string name="sqrt">\u221a</string>
    <!-- Do not translate. Displayed on buttons on screen. -->
    <string name="power">^</string>
    <!-- Do not translate. -->
    <string name="factorial">!</string>
    <!-- Menu item text to take user to the screen with the basic digits and operators. -->
    <string name="basic">Basic panel</string>
    <!-- Menu item text to take user to the screen with the advanced functions, such as sin, cos, ln, log, etc. -->
    <string name="advanced">Advanced panel</string>
    <!-- Menu item text to clear the calculation history. -->
    <string name="clear_history">Clear history</string>
    <!-- Toast shown when text is copied to the clipboard. -->
    <string name="text_copied_toast">Text copied.</string>
</resources>
