<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<!--
  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>
    <!-- Name of the application. [CHAR_LIMIT=NONE] -->
    <!-- Constant for Euler's number (i.e. "2.7182…"). [CHAR_LIMIT=1] -->
    <!-- Constant for pi (i.e. "3.1415…"). [CHAR_LIMIT=1] -->
    <!-- Left parenthesis (e.g. "log(", "2 × (3 - 1)". [CHAR_LIMIT=1] -->
    <!-- Right parenthesis (e.g. "log(2)", "(3 - 1) × 2". [CHAR_LIMIT=1] -->
    <!--
      Decimal separator (e.g. "1.23" or "1,23").

      This should be whatever character is appropriate for use as a decimal sign for a given locale
      when used with Arabic numerals (i.e. 0, 1, 2, 3, ...)

      [CHAR_LIMIT=1]
      -->
    <!-- Decimal representation of zero (e.g. "0", "10", "1.0", "1e0"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of one (e.g. "1", "11", "1.1", "1e1"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of two (e.g. "2", "22", "2.2", "2e2"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of three (e.g. "3", "33", "3.3", "3e3"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of four (e.g. "4", "44", "4.4", "4e4"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of five (e.g. "5", "55", "5.5", "5e5"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of six (e.g. "6", "66", "6.6", "6e6"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of seven (e.g. "7", "77", "7.7", "7e7"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of eight (e.g. "8", "88", "8.8", "8e8"). [CHAR_LIMIT=1] -->
    <!-- Decimal representation of eight (e.g. "9", "99", "9.9", "9e9"). [CHAR_LIMIT=1] -->
    <!-- Addition operator (e.g. "1 + 2"). [CHAR_LIMIT=1] -->
    <!-- Divide operator (e.g. "1 ÷ 2"). [CHAR_LIMIT=1] -->
    <!-- Factorial operator (e.g. "2!"). [CHAR_LIMIT=1] -->
    <!-- Multiply operator (e.g. "1 × 2"). [CHAR_LIMIT=1] -->
    <!-- Percent operator (e.g. "25%"). [CHAR_LIMIT=1] -->
    <!-- Power operator (e.g. "1 ^ 2"). [CHAR_LIMIT=1] -->
    <!-- Square root operator (e.g. "√1"). [CHAR_LIMIT=1] -->
    <!-- Subtraction operator (e.g. "1 - 2"). [CHAR_LIMIT=1] -->
    <!-- Abbrev. name of cosine function (e.g. "cos(π)"). [CHAR_LIMIT=4] -->
    <!-- Natural logarithm function (e.g. "ln(2)"). [CHAR_LIMIT=4] -->
    <!-- Logarithm function (e.g. "log(10)"). [CHAR_LIMIT=4] -->
    <!-- Abbrev. name of sine function (e.g. "sin(π)"). [CHAR_LIMIT=4] -->
    <!-- Abbrev. name of tangent function (e.g. "tan(π)"). [CHAR_LIMIT=4] -->
    <!-- Abbrev. name of cosine function (e.g. "arccos(π)"). [CHAR_LIMIT=5] -->
    <!-- Abbrev. name of sine function (e.g. "arcsin(π)"). [CHAR_LIMIT=5] -->
    <!-- Abbrev. name of tangent function (e.g. "arctan(π)"). [CHAR_LIMIT=5] -->
    <!-- Abbrev. name of base 10 exponential function (e.g. "10^6"). [CHAR_LIMIT=5] -->
    <!-- Abbrev. name of exponential function (e.g. "e^6"). [CHAR_LIMIT=5] -->
    <!-- Abbrev. name of suffix square function on key (e.g. "17^2"). [CHAR_LIMIT=5] -->
    <!--
      Abbrev. name of suffix square function in formula.
      "^2" does not work, since it blends into a later constant.
      -->
    <!-- Abbrev. name of exponential function in formula.  -->
    <!-- Abbrev. name of degree mode [CHAR_LIMIT=4] -->
    <!-- Abbrev. name of radian mode. [CHAR_LIMIT=4] -->
    <!-- Equals button (e.g. "1 + 2 = ?"). [CHAR_LIMIT=1] -->
    <!-- Clear button to clear the currently entered expression. [CHAR_LIMIT=4] -->
    <!--
      Announced when all characters are removed from Formula, e.g. after clear. [CHAR_LIMIT=NONE]
      -->
    <!-- Delete button to remove last entered token. [CHAR_LIMIT=4] -->
    <!-- Toggle button to show/hide inverse functions. [CHAR_LIMIT=4] -->
    <!--
      Item on Formula context menu used to paste from the Memory into the edit field. [CHAR_LIMIT=2]
      -->
    <!-- Item on Result context menu used to store the result in memory. [CHAR_LIMIT=2]
      -->
    <!-- Item on Result context menu, which subtracts the current result from the number in memory.
      [CHAR_LIMIT=2]
      -->
    <!-- Item on Result context menu, which adds the current result to the number in memory.
      [CHAR_LIMIT=2]
      -->
    <!-- Content description for 'e' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'π' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '.' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '(' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for ')' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'cos' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'ln' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'log' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'sin' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'tan' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'arccos' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'arcsin' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'arctan' button. [CHAR_LIMIT=NONE] -->
    <!--
      Content description for 10^ button. This button is used to raise 10 to the subsequently
      entered power. E.g. <10^>3 would yield 1000.
      [CHAR_LIMIT=NONE]
      -->
    <!-- Content description for e^ (exponential function) button. [CHAR_LIMIT=NONE] -->
    <!--
      Content description for ^2 button. This button is used to square the previously entered
      number. E.g. 3<^2> would yield 9.
      [CHAR_LIMIT=NONE]
      -->
    <!-- Content description for '+' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '÷' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '!' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '×' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '%' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '^' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '√' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '-' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for degree mode. [CHAR_LIMIT=NONE] -->
    <!-- Content description for radian mode. [CHAR_LIMIT=NONE] -->
    <!-- Content description for switch to degree button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for switch to radian button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for '=' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for "clr" button. Deletes entire formula. [CHAR_LIMIT=NONE] -->
    <!--
      Content description for "del" button. Deletes single character. Should differ
      from desc_clr. [CHAR_LIMIT=NONE]
      -->
    <!-- Content description for "inv" button to show inverse functions. [CHAR_LIMIT=NONE] -->
    <!-- Content description for "inv" button to hide inverse functions. [CHAR_LIMIT=NONE] -->
    <!-- Content description for formula field when it is empty. [CHAR_LIMIT=NONE] -->
    <!-- Content description for result field when it is empty. [CHAR_LIMIT=NONE] -->
    <!-- Content description for the numeric/operation pad when slide-able. [CHAR_LIMIT=NONE] -->
    <!-- Content description for the advanced pad when slide-able. [CHAR_LIMIT=NONE] -->
    <!-- Content description for the pad pages when slide-able. -->
    <!-- Error displayed when expression evaluates to an undefined result. [CHAR_LIMIT=20] -->
    <!-- Error displayed when expression contains a syntax error. [CHAR_LIMIT=20] -->
    <!-- Error displayed when evaluation is manually aborted. [CHAR_LIMIT=20] -->
    <!-- Error displayed when excessive precision is required. [CHAR_LIMIT=20] -->
    <!--
      Error displayed when division by zero is detected.

      If the translation does not fit within the given limit, then a shortened version must
      be used, e.g. "Division by 0". Exceeding the limit will result in a truncated string.

      [CHAR_LIMIT=20]
      -->
    <!-- Toast shown when text is copied to the clipboard. [CHAR_LIMIT=40] -->
    <!-- Dialog message when a computation is cancelled by the user. [CHAR_LIMIT=NONE] -->
    <!-- Dialog message when a computation times out. [CHAR_LIMIT=NONE] -->
    <!--
      Button label to allow future computations with a longer timeout.

      When evaluating a result takes too long, we show a "timed out" dialog. This button allows
      the user to increase the maximum amount of time we attempt to evaluate the expression before
      "timing out".

      [CHAR_LIMIT=40]
      -->
    <!-- Button label to dismiss informative text message. [CHAR_LIMIT=40] -->
    <!-- Appended indicator (for "leading" display) that result is exact. [CHAR_LIMIT=NONE] -->
    <!-- Indicator (for "leading" display) that result is inexact. [CHAR_LIMIT=NONE] -->
    <!-- Menu option to display result including leading digits. [CHAR_LIMIT=40] -->
    <!-- Menu option to display result as fraction. [CHAR_LIMIT=40] -->
    <!-- Menu option to view the app's open source licenses. [CHAR_LIMIT=40] -->
    <!-- Menu option to access calculation history. [CHAR_LIMIT=40] -->
    <!-- Menu option to clear calculation history and memory. [CHAR_LIMIT=40] -->
    <!-- Action bar title in history page. [CHAR_LIMIT=40] -->
    <!-- Action bar navigate up description in history page. [CHAR_LIMIT=40] -->
    <!-- Title for alert dialog when calculation takes too long (timeout). [CHAR_LIMIT=30] -->
    <!--
      Message for alert dialog when user is about to clear history and memory. [CHAR_LIMIT=NONE]
    -->
    <!-- Title for "current expression" in history page. [CHAR_LIMIT=40] -->
    <!-- Placeholder string when there is no history to be shown. [CHAR_LIMIT=40] -->
</resources>
