<?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">Cyfrifiannell</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] -->
    <string name="mode_deg">deg</string>
    <!-- Abbrev. name of radian mode. [CHAR_LIMIT=4] -->
    <string name="mode_rad">rad</string>
    <!-- Equals button (e.g. "1 + 2 = ?"). [CHAR_LIMIT=1] -->
    <!-- Clear button to clear the currently entered expression. [CHAR_LIMIT=4] -->
    <string name="clr">clr</string>
    <!--
      Announced when all characters are removed from Formula, e.g. after clear. [CHAR_LIMIT=NONE]
      -->
    <string name="cleared">cliriwyd</string>
    <!-- Delete button to remove last entered token. [CHAR_LIMIT=4] -->
    <string name="del">del</string>
    <!-- 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] -->
    <string name="desc_const_e">Rhif Euler</string>
    <!-- Content description for 'π' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_const_pi">pi</string>
    <!-- Content description for '.' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_dec_point">pwynt</string>
    <!-- Content description for '(' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_lparen">cromfach chwith</string>
    <!-- Content description for ')' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_rparen">cromfach dde</string>
    <!-- Content description for 'cos' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_cos">cosine</string>
    <!-- Content description for 'ln' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_ln">logarithm naturiol</string>
    <!-- Content description for 'log' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_log">logarithm</string>
    <!-- Content description for 'sin' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_sin">sine</string>
    <!-- Content description for 'tan' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_tan">tangiad</string>
    <!-- Content description for 'arccos' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_arccos">cosine gwrthdro</string>
    <!-- Content description for 'arcsin' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_arcsin">sine gwrthdro</string>
    <!-- Content description for 'arctan' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_arctan">tangent gwrthdro</string>
    <!--
      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]
      -->
    <string name="desc_fun_10pow">deg i\'r pŵer o</string>
    <!-- Content description for e^ (exponential function) button. [CHAR_LIMIT=NONE] -->
    <string name="desc_fun_exp">ffwythiant esbonyddol</string>
    <!--
      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]
      -->
    <string name="desc_op_sqr">wedi\'i sgwario</string>
    <!-- Content description for '+' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_add">plws</string>
    <!-- Content description for '÷' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_div">rhannu</string>
    <!-- Content description for '!' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_fact">ffactorol</string>
    <!-- Content description for '×' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_mul">lluosi</string>
    <!-- Content description for '%' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_pct">y cant</string>
    <!-- Content description for '^' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_pow">pŵer</string>
    <!-- Content description for '√' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_sqrt">ail isradd</string>
    <!-- Content description for '-' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_op_sub">minws</string>
    <!-- Content description for degree mode. [CHAR_LIMIT=NONE] -->
    <string name="desc_mode_deg">modd graddau</string>
    <!-- Content description for radian mode. [CHAR_LIMIT=NONE] -->
    <string name="desc_mode_rad">modd radianau</string>
    <!-- Content description for switch to degree button. [CHAR_LIMIT=NONE] -->
    <string name="desc_switch_deg">newid i graddau</string>
    <!-- Content description for switch to radian button. [CHAR_LIMIT=NONE] -->
    <string name="desc_switch_rad">newid i radianau</string>
    <!-- Content description for '=' button. [CHAR_LIMIT=NONE] -->
    <string name="desc_eq">yn hafal i</string>
    <!-- Content description for "clr" button. Deletes entire formula. [CHAR_LIMIT=NONE] -->
    <string name="desc_clr">clirio</string>
    <!--
      Content description for "del" button. Deletes single character. Should differ
      from desc_clr. [CHAR_LIMIT=NONE]
      -->
    <string name="desc_del">dileu</string>
    <!-- Content description for "inv" button to show inverse functions. [CHAR_LIMIT=NONE] -->
    <string name="desc_inv_off">dangos ffwythiannau gwrthdro</string>
    <!-- Content description for "inv" button to hide inverse functions. [CHAR_LIMIT=NONE] -->
    <string name="desc_inv_on">cuddio ffwythiannau gwrthdro</string>
    <!-- Content description for formula field when it is empty. [CHAR_LIMIT=NONE] -->
    <string name="desc_formula">Dim fformiwla</string>
    <!-- Content description for result field when it is empty. [CHAR_LIMIT=NONE] -->
    <string name="desc_result">Dim canlyniad</string>
    <!-- Content description for the numeric/operation pad when slide-able. [CHAR_LIMIT=NONE] -->
    <string name="desc_num_pad">Rhifau a gweithrediadau sylfaenol</string>
    <!-- Content description for the advanced pad when slide-able. [CHAR_LIMIT=NONE] -->
    <string name="desc_adv_pad">Gweithrediadau uwch</string>
    <!-- Content description for the pad pages when slide-able. -->
    <!-- Error displayed when expression evaluates to an undefined result. [CHAR_LIMIT=20] -->
    <string name="error_nan">Dim yn rhif</string>
    <!-- Error displayed when expression contains a syntax error. [CHAR_LIMIT=20] -->
    <string name="error_syntax">Mynegiad gwael</string>
    <!-- Error displayed when evaluation is manually aborted. [CHAR_LIMIT=20] -->
    <string name="error_aborted">Ataliwyd</string>
    <!-- Error displayed when excessive precision is required. [CHAR_LIMIT=20] -->
    <string name="error_overflow">Diderfyn?</string>
    <!--
      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]
      -->
    <string name="error_zero_divide">Meth ei rannu â 0</string>
    <!-- Toast shown when text is copied to the clipboard. [CHAR_LIMIT=40] -->
    <string name="text_copied_toast">Testun wedi\'i gopïo</string>
    <!-- Dialog message when a computation is cancelled by the user. [CHAR_LIMIT=NONE] -->
    <string name="cancelled">Diddymwyd y cyfrifiannu</string>
    <!-- Dialog message when a computation times out. [CHAR_LIMIT=NONE] -->
    <string name="timeout">Gall fod y gwerth yn ddiddiwedd neu heb ei ddiffinio.</string>
    <!--
      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]
      -->
    <string name="ok_remove_timeout">Caniatáu amser hirach</string>
    <!-- Button label to dismiss informative text message. [CHAR_LIMIT=40] -->
    <string name="dismiss">Diystyru</string>
    <!-- Appended indicator (for "leading" display) that result is exact. [CHAR_LIMIT=NONE] -->
    <string name="exact">(union)</string>
    <!-- Indicator (for "leading" display) that result is inexact. [CHAR_LIMIT=NONE] -->
    <string name="approximate">(±1 yn digid olaf)</string>
    <!-- Menu option to display result including leading digits. [CHAR_LIMIT=40] -->
    <string name="menu_leading">Ateb gyda digidau arweiniol</string>
    <!-- Menu option to display result as fraction. [CHAR_LIMIT=40] -->
    <string name="menu_fraction">Ateb fel ffracsiwn</string>
    <!-- Menu option to view the app's open source licenses. [CHAR_LIMIT=40] -->
    <string name="menu_licenses">Trwyddedau cod agored</string>
    <!-- Menu option to access calculation history. [CHAR_LIMIT=40] -->
    <string name="menu_history">Hanes</string>
    <!-- Menu option to clear calculation history and memory. [CHAR_LIMIT=40] -->
    <string name="menu_clear_history">Clirio</string>
    <!-- Action bar title in history page. [CHAR_LIMIT=40] -->
    <string name="title_history">Hanes</string>
    <!-- Action bar navigate up description in history page. [CHAR_LIMIT=40] -->
    <string name="desc_navigate_up">Llywio i fyny</string>
    <!-- Title for alert dialog when calculation takes too long (timeout). [CHAR_LIMIT=30] -->
    <string name="dialog_timeout">Terfyn amser</string>
    <!--
      Message for alert dialog when user is about to clear history and memory. [CHAR_LIMIT=NONE]
    -->
    <string name="dialog_clear">Clirio\'r hanes a\'r cof?</string>
    <!-- Title for "current expression" in history page. [CHAR_LIMIT=40] -->
    <string name="title_current_expression">Mynediad cyfredol</string>
    <!-- Placeholder string when there is no history to be shown. [CHAR_LIMIT=40] -->
    <string name="no_history">Dim hanes</string>
</resources>
