<?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] -->
    <string name="app_name">Kalkulilo</string>
    <!-- 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]
      -->
    <string name="dec_point">,</string>
    <!-- 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] -->
    <string name="desc_fun_cos">kosinuso</string>
    <!-- Content description for 'ln' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'log' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'sin' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_sin">sinuso</string>
    <!-- Content description for 'tan' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'arccos' button. [CHAR_LIMIT=NONE] -->
    <!-- Content description for 'arcsin' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_arcsin">inversa sinuso</string>
    <!-- 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]
      -->
    <string name="desc_del">forigi</string>
    <!-- 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>
