diff --git a/java/res/values/strings-letter-descriptions.xml b/java/res/values/strings-letter-descriptions.xml new file mode 100644 index 0000000000000000000000000000000000000000..fbf4671cb0f9cc37d88af652fba40b464dfa1778 --- /dev/null +++ b/java/res/values/strings-letter-descriptions.xml @@ -0,0 +1,322 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2014, 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. +*/ +--> +<!-- TODO: Remove this file when TTS/TalkBack support these letters. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Spoken description for Unicode code point U+00AA: "ª" FEMININE ORDINAL INDICATOR --> + <string name="spoken_accented_letter_00AA">Feminine ordinal indicator</string> + <!-- Spoken description for Unicode code point U+00B5: "µ" MICRO SIGN --> + <string name="spoken_accented_letter_00B5">Micro sign</string> + <!-- Spoken description for Unicode code point U+00BA: "º" MASCULINE ORDINAL INDICATOR --> + <string name="spoken_accented_letter_00BA">Masculine ordinal indicator</string> + <!-- Spoken description for Unicode code point U+00DF: "ß" LATIN SMALL LETTER SHARP S --> + <string name="spoken_accented_letter_00DF">Sharp S</string> + <!-- Spoken description for Unicode code point U+00E0: "à " LATIN SMALL LETTER A WITH GRAVE --> + <string name="spoken_accented_letter_00E0">A, grave</string> + <!-- Spoken description for Unicode code point U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE --> + <string name="spoken_accented_letter_00E1">A, acute</string> + <!-- Spoken description for Unicode code point U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_00E2">A, circumflex</string> + <!-- Spoken description for Unicode code point U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE --> + <string name="spoken_accented_letter_00E3">A, tilde</string> + <!-- Spoken description for Unicode code point U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS --> + <string name="spoken_accented_letter_00E4">A, diaeresis</string> + <!-- Spoken description for Unicode code point U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE --> + <string name="spoken_accented_letter_00E5">A, ring above</string> + <!-- Spoken description for Unicode code point U+00E6: "æ" LATIN SMALL LETTER AE --> + <string name="spoken_accented_letter_00E6">A, E, ligature</string> + <!-- Spoken description for Unicode code point U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA --> + <string name="spoken_accented_letter_00E7">C, cedilla</string> + <!-- Spoken description for Unicode code point U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE --> + <string name="spoken_accented_letter_00E8">E, grave</string> + <!-- Spoken description for Unicode code point U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE --> + <string name="spoken_accented_letter_00E9">E, acute</string> + <!-- Spoken description for Unicode code point U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_00EA">E, circumflex</string> + <!-- Spoken description for Unicode code point U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS --> + <string name="spoken_accented_letter_00EB">E, diaeresis</string> + <!-- Spoken description for Unicode code point U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE --> + <string name="spoken_accented_letter_00EC">I, grave</string> + <!-- Spoken description for Unicode code point U+00ED: "Ã" LATIN SMALL LETTER I WITH ACUTE --> + <string name="spoken_accented_letter_00ED">I, acute</string> + <!-- Spoken description for Unicode code point U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_00EE">I, circumflex</string> + <!-- Spoken description for Unicode code point U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS --> + <string name="spoken_accented_letter_00EF">I, diaeresis</string> + <!-- Spoken description for Unicode code point U+00F0: "ð" LATIN SMALL LETTER ETH --> + <string name="spoken_accented_letter_00F0">Eth</string> + <!-- Spoken description for Unicode code point U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE --> + <string name="spoken_accented_letter_00F1">N, tilde</string> + <!-- Spoken description for Unicode code point U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE --> + <string name="spoken_accented_letter_00F2">O, grave</string> + <!-- Spoken description for Unicode code point U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE --> + <string name="spoken_accented_letter_00F3">O, acute</string> + <!-- Spoken description for Unicode code point U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_00F4">O, circumflex</string> + <!-- Spoken description for Unicode code point U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE --> + <string name="spoken_accented_letter_00F5">O, tilde</string> + <!-- Spoken description for Unicode code point U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS --> + <string name="spoken_accented_letter_00F6">O, diaeresis</string> + <!-- Spoken description for Unicode code point U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE --> + <string name="spoken_accented_letter_00F8">O, stroke</string> + <!-- Spoken description for Unicode code point U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE --> + <string name="spoken_accented_letter_00F9">U, grave</string> + <!-- Spoken description for Unicode code point U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE --> + <string name="spoken_accented_letter_00FA">U, acute</string> + <!-- Spoken description for Unicode code point U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_00FB">U, circumflex</string> + <!-- Spoken description for Unicode code point U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS --> + <string name="spoken_accented_letter_00FC">U, diaeresis</string> + <!-- Spoken description for Unicode code point U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE --> + <string name="spoken_accented_letter_00FD">Y, acute</string> + <!-- Spoken description for Unicode code point U+00FE: "þ" LATIN SMALL LETTER THORN --> + <string name="spoken_accented_letter_00FE">Thorn</string> + <!-- Spoken description for Unicode code point U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS --> + <string name="spoken_accented_letter_00FF">Y, diaeresis</string> + <!-- Spoken description for Unicode code point U+0101: "Ä" LATIN SMALL LETTER A WITH MACRON --> + <string name="spoken_accented_letter_0101">A, macron</string> + <!-- Spoken description for Unicode code point U+0103: "ă" LATIN SMALL LETTER A WITH BREVE --> + <string name="spoken_accented_letter_0103">A, breve</string> + <!-- Spoken description for Unicode code point U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK --> + <string name="spoken_accented_letter_0105">A, ogonek</string> + <!-- Spoken description for Unicode code point U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE --> + <string name="spoken_accented_letter_0107">C, acute</string> + <!-- Spoken description for Unicode code point U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_0109">C, circumflex</string> + <!-- Spoken description for Unicode code point U+010B: "Ä‹" LATIN SMALL LETTER C WITH DOT ABOVE --> + <string name="spoken_accented_letter_010B">C, dot above</string> + <!-- Spoken description for Unicode code point U+010D: "Ä" LATIN SMALL LETTER C WITH CARON --> + <string name="spoken_accented_letter_010D">C, caron</string> + <!-- Spoken description for Unicode code point U+010F: "Ä" LATIN SMALL LETTER D WITH CARON --> + <string name="spoken_accented_letter_010F">D, caron</string> + <!-- Spoken description for Unicode code point U+0111: "Ä‘" LATIN SMALL LETTER D WITH STROKE --> + <string name="spoken_accented_letter_0111">D, stroke</string> + <!-- Spoken description for Unicode code point U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON --> + <string name="spoken_accented_letter_0113">E, macron</string> + <!-- Spoken description for Unicode code point U+0115: "Ä•" LATIN SMALL LETTER E WITH BREVE --> + <string name="spoken_accented_letter_0115">E, breve</string> + <!-- Spoken description for Unicode code point U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE --> + <string name="spoken_accented_letter_0117">E, dot above</string> + <!-- Spoken description for Unicode code point U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK --> + <string name="spoken_accented_letter_0119">E, ogonek</string> + <!-- Spoken description for Unicode code point U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON --> + <string name="spoken_accented_letter_011B">E, caron</string> + <!-- Spoken description for Unicode code point U+011D: "Ä" LATIN SMALL LETTER G WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_011D">G, circumflex</string> + <!-- Spoken description for Unicode code point U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE --> + <string name="spoken_accented_letter_011F">G, breve</string> + <!-- Spoken description for Unicode code point U+0121: "Ä¡" LATIN SMALL LETTER G WITH DOT ABOVE --> + <string name="spoken_accented_letter_0121">G, dot above</string> + <!-- Spoken description for Unicode code point U+0123: "Ä£" LATIN SMALL LETTER G WITH CEDILLA --> + <string name="spoken_accented_letter_0123">G, cedilla</string> + <!-- Spoken description for Unicode code point U+0125: "Ä¥" LATIN SMALL LETTER H WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_0125">H, circumflex</string> + <!-- Spoken description for Unicode code point U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE --> + <string name="spoken_accented_letter_0127">H, stroke</string> + <!-- Spoken description for Unicode code point U+0129: "Ä©" LATIN SMALL LETTER I WITH TILDE --> + <string name="spoken_accented_letter_0129">I, tilde</string> + <!-- Spoken description for Unicode code point U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON --> + <string name="spoken_accented_letter_012B">I, macron</string> + <!-- Spoken description for Unicode code point U+012D: "Ä" LATIN SMALL LETTER I WITH BREVE --> + <string name="spoken_accented_letter_012D">I, breve</string> + <!-- Spoken description for Unicode code point U+012F: "į" LATIN SMALL LETTER I WITH OGONEK --> + <string name="spoken_accented_letter_012F">I, ogonek</string> + <!-- Spoken description for Unicode code point U+0131: "ı" LATIN SMALL LETTER DOTLESS I --> + <string name="spoken_accented_letter_0131">Dotless I</string> + <!-- Spoken description for Unicode code point U+0133: "ij" LATIN SMALL LIGATURE IJ --> + <string name="spoken_accented_letter_0133">I, J, ligature</string> + <!-- Spoken description for Unicode code point U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_0135">J, circumflex</string> + <!-- Spoken description for Unicode code point U+0137: "Ä·" LATIN SMALL LETTER K WITH CEDILLA --> + <string name="spoken_accented_letter_0137">K, cedilla</string> + <!-- Spoken description for Unicode code point U+0138: "ĸ" LATIN SMALL LETTER KRA --> + <string name="spoken_accented_letter_0138">Kra</string> + <!-- Spoken description for Unicode code point U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE --> + <string name="spoken_accented_letter_013A">L, acute</string> + <!-- Spoken description for Unicode code point U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA --> + <string name="spoken_accented_letter_013C">L, cedilla</string> + <!-- Spoken description for Unicode code point U+013E: "ľ" LATIN SMALL LETTER L WITH CARON --> + <string name="spoken_accented_letter_013E">L, caron</string> + <!-- Spoken description for Unicode code point U+0140: "Å€" LATIN SMALL LETTER L WITH MIDDLE DOT --> + <string name="spoken_accented_letter_0140">L, middle dot</string> + <!-- Spoken description for Unicode code point U+0142: "Å‚" LATIN SMALL LETTER L WITH STROKE --> + <string name="spoken_accented_letter_0142">L, stroke</string> + <!-- Spoken description for Unicode code point U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE --> + <string name="spoken_accented_letter_0144">N, acute</string> + <!-- Spoken description for Unicode code point U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA --> + <string name="spoken_accented_letter_0146">N, cedilla</string> + <!-- Spoken description for Unicode code point U+0148: "ň" LATIN SMALL LETTER N WITH CARON --> + <string name="spoken_accented_letter_0148">N, caron</string> + <!-- Spoken description for Unicode code point U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE --> + <string name="spoken_accented_letter_0149">N, preceded by apostrophe</string> + <!-- Spoken description for Unicode code point U+014B: "Å‹" LATIN SMALL LETTER ENG --> + <string name="spoken_accented_letter_014B">Eng</string> + <!-- Spoken description for Unicode code point U+014D: "Å" LATIN SMALL LETTER O WITH MACRON --> + <string name="spoken_accented_letter_014D">O, macron</string> + <!-- Spoken description for Unicode code point U+014F: "Å" LATIN SMALL LETTER O WITH BREVE --> + <string name="spoken_accented_letter_014F">O, breve</string> + <!-- Spoken description for Unicode code point U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE --> + <string name="spoken_accented_letter_0151">O, double acute</string> + <!-- Spoken description for Unicode code point U+0153: "Å“" LATIN SMALL LIGATURE OE --> + <string name="spoken_accented_letter_0153">O, E, ligature</string> + <!-- Spoken description for Unicode code point U+0155: "Å•" LATIN SMALL LETTER R WITH ACUTE --> + <string name="spoken_accented_letter_0155">R, acute</string> + <!-- Spoken description for Unicode code point U+0157: "Å—" LATIN SMALL LETTER R WITH CEDILLA --> + <string name="spoken_accented_letter_0157">R, cedilla</string> + <!-- Spoken description for Unicode code point U+0159: "Å™" LATIN SMALL LETTER R WITH CARON --> + <string name="spoken_accented_letter_0159">R, caron</string> + <!-- Spoken description for Unicode code point U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE --> + <string name="spoken_accented_letter_015B">S, acute</string> + <!-- Spoken description for Unicode code point U+015D: "Å" LATIN SMALL LETTER S WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_015D">S, circumflex</string> + <!-- Spoken description for Unicode code point U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA --> + <string name="spoken_accented_letter_015F">S, cedilla</string> + <!-- Spoken description for Unicode code point U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON --> + <string name="spoken_accented_letter_0161">S, caron</string> + <!-- Spoken description for Unicode code point U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA --> + <string name="spoken_accented_letter_0163">T, cedilla</string> + <!-- Spoken description for Unicode code point U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON --> + <string name="spoken_accented_letter_0165">T, caron</string> + <!-- Spoken description for Unicode code point U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE --> + <string name="spoken_accented_letter_0167">T, stroke</string> + <!-- Spoken description for Unicode code point U+0169: "Å©" LATIN SMALL LETTER U WITH TILDE --> + <string name="spoken_accented_letter_0169">U, tilde</string> + <!-- Spoken description for Unicode code point U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON --> + <string name="spoken_accented_letter_016B">U, macron</string> + <!-- Spoken description for Unicode code point U+016D: "Å" LATIN SMALL LETTER U WITH BREVE --> + <string name="spoken_accented_letter_016D">U, breve</string> + <!-- Spoken description for Unicode code point U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE --> + <string name="spoken_accented_letter_016F">U, ring above</string> + <!-- Spoken description for Unicode code point U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE --> + <string name="spoken_accented_letter_0171">U, double acute</string> + <!-- Spoken description for Unicode code point U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK --> + <string name="spoken_accented_letter_0173">U, ogonek</string> + <!-- Spoken description for Unicode code point U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_0175">W, circumflex</string> + <!-- Spoken description for Unicode code point U+0177: "Å·" LATIN SMALL LETTER Y WITH CIRCUMFLEX --> + <string name="spoken_accented_letter_0177">Y, circumflex</string> + <!-- Spoken description for Unicode code point U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE --> + <string name="spoken_accented_letter_017A">Z, acute</string> + <!-- Spoken description for Unicode code point U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE --> + <string name="spoken_accented_letter_017C">Z, dot above</string> + <!-- Spoken description for Unicode code point U+017E: "ž" LATIN SMALL LETTER Z WITH CARON --> + <string name="spoken_accented_letter_017E">Z, caron</string> + <!-- Spoken description for Unicode code point U+017F: "Å¿" LATIN SMALL LETTER LONG S --> + <string name="spoken_accented_letter_017F">Long S</string> + <!-- Spoken description for Unicode code point U+01A1: "Æ¡" LATIN SMALL LETTER O WITH HORN --> + <string name="spoken_accented_letter_01A1">O, horn</string> + <!-- Spoken description for Unicode code point U+01B0: "Æ°" LATIN SMALL LETTER U WITH HORN --> + <string name="spoken_accented_letter_01B0">U, horn</string> + <!-- Spoken description for Unicode code point U+0219: "È™" LATIN SMALL LETTER S WITH COMMA BELOW --> + <string name="spoken_accented_letter_0219">S, comma below</string> + <!-- Spoken description for Unicode code point U+021B: "È›" LATIN SMALL LETTER T WITH COMMA BELOW --> + <string name="spoken_accented_letter_021B">T, comma below</string> + <!-- Spoken description for Unicode code point U+0259: "É™" LATIN SMALL LETTER SCHWA --> + <string name="spoken_accented_letter_0259">Schwa</string> + <!-- Spoken description for Unicode code point U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW --> + <string name="spoken_accented_letter_1EA1">A, dot below</string> + <!-- Spoken description for Unicode code point U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE --> + <string name="spoken_accented_letter_1EA3">A, hook above</string> + <!-- Spoken description for Unicode code point U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE --> + <string name="spoken_accented_letter_1EA5">A, circumflex and acute</string> + <!-- Spoken description for Unicode code point U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE --> + <string name="spoken_accented_letter_1EA7">A, circumflex and grave</string> + <!-- Spoken description for Unicode code point U+1EA9: "ẩ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE --> + <string name="spoken_accented_letter_1EA9">A, circumflex and hook above</string> + <!-- Spoken description for Unicode code point U+1EAB: "ẫ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE --> + <string name="spoken_accented_letter_1EAB">A, circumflex and tilde</string> + <!-- Spoken description for Unicode code point U+1EAD: "áº" LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW --> + <string name="spoken_accented_letter_1EAD">A, circumflex and dot below</string> + <!-- Spoken description for Unicode code point U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE --> + <string name="spoken_accented_letter_1EAF">A, breve and acute</string> + <!-- Spoken description for Unicode code point U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE --> + <string name="spoken_accented_letter_1EB1">A, breve and grave</string> + <!-- Spoken description for Unicode code point U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE --> + <string name="spoken_accented_letter_1EB3">A, breve and hook above</string> + <!-- Spoken description for Unicode code point U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE --> + <string name="spoken_accented_letter_1EB5">A, breve and tilde</string> + <!-- Spoken description for Unicode code point U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW --> + <string name="spoken_accented_letter_1EB7">A, breve and dot below</string> + <!-- Spoken description for Unicode code point U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW --> + <string name="spoken_accented_letter_1EB9">E, dot below</string> + <!-- Spoken description for Unicode code point U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE --> + <string name="spoken_accented_letter_1EBB">E, hook above</string> + <!-- Spoken description for Unicode code point U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE --> + <string name="spoken_accented_letter_1EBD">E, tilde</string> + <!-- Spoken description for Unicode code point U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE --> + <string name="spoken_accented_letter_1EBF">E, circumflex and acute</string> + <!-- Spoken description for Unicode code point U+1EC1: "á»" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE --> + <string name="spoken_accented_letter_1EC1">E, circumflex and grave</string> + <!-- Spoken description for Unicode code point U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE --> + <string name="spoken_accented_letter_1EC3">E, circumflex and hook above</string> + <!-- Spoken description for Unicode code point U+1EC5: "á»…" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE --> + <string name="spoken_accented_letter_1EC5">E, circumflex and tilde</string> + <!-- Spoken description for Unicode code point U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW --> + <string name="spoken_accented_letter_1EC7">E, circumflex and dot below</string> + <!-- Spoken description for Unicode code point U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE --> + <string name="spoken_accented_letter_1EC9">I, hook above</string> + <!-- Spoken description for Unicode code point U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW --> + <string name="spoken_accented_letter_1ECB">I, dot below</string> + <!-- Spoken description for Unicode code point U+1ECD: "á»" LATIN SMALL LETTER O WITH DOT BELOW --> + <string name="spoken_accented_letter_1ECD">O, dot below</string> + <!-- Spoken description for Unicode code point U+1ECF: "á»" LATIN SMALL LETTER O WITH HOOK ABOVE --> + <string name="spoken_accented_letter_1ECF">O, hook above</string> + <!-- Spoken description for Unicode code point U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE --> + <string name="spoken_accented_letter_1ED1">O, circumflex and acute</string> + <!-- Spoken description for Unicode code point U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE --> + <string name="spoken_accented_letter_1ED3">O, circumflex and grave</string> + <!-- Spoken description for Unicode code point U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE --> + <string name="spoken_accented_letter_1ED5">O, circumflex and hook above</string> + <!-- Spoken description for Unicode code point U+1ED7: "á»—" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE --> + <string name="spoken_accented_letter_1ED7">O, circumflex and tilde</string> + <!-- Spoken description for Unicode code point U+1ED9: "á»™" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW --> + <string name="spoken_accented_letter_1ED9">O, circumflex and dot below</string> + <!-- Spoken description for Unicode code point U+1EDB: "á»›" LATIN SMALL LETTER O WITH HORN AND ACUTE --> + <string name="spoken_accented_letter_1EDB">O, horn and acute</string> + <!-- Spoken description for Unicode code point U+1EDD: "á»" LATIN SMALL LETTER O WITH HORN AND GRAVE --> + <string name="spoken_accented_letter_1EDD">O, horn and grave</string> + <!-- Spoken description for Unicode code point U+1EDF: "ở" LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE --> + <string name="spoken_accented_letter_1EDF">O, horn and hook above</string> + <!-- Spoken description for Unicode code point U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE --> + <string name="spoken_accented_letter_1EE1">O, horn and tilde</string> + <!-- Spoken description for Unicode code point U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW --> + <string name="spoken_accented_letter_1EE3">O, horn and dot below</string> + <!-- Spoken description for Unicode code point U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW --> + <string name="spoken_accented_letter_1EE5">U, dot below</string> + <!-- Spoken description for Unicode code point U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE --> + <string name="spoken_accented_letter_1EE7">U, hook above</string> + <!-- Spoken description for Unicode code point U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE --> + <string name="spoken_accented_letter_1EE9">U, horn and acute</string> + <!-- Spoken description for Unicode code point U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE --> + <string name="spoken_accented_letter_1EEB">U, horn and grave</string> + <!-- Spoken description for Unicode code point U+1EED: "á»" LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE --> + <string name="spoken_accented_letter_1EED">U, horn and hook above</string> + <!-- Spoken description for Unicode code point U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE --> + <string name="spoken_accented_letter_1EEF">U, horn and tilde</string> + <!-- Spoken description for Unicode code point U+1EF1: "á»±" LATIN SMALL LETTER U WITH HORN AND DOT BELOW --> + <string name="spoken_accented_letter_1EF1">U, horn and dot below</string> + <!-- Spoken description for Unicode code point U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE --> + <string name="spoken_accented_letter_1EF3">Y, grave</string> + <!-- Spoken description for Unicode code point U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW --> + <string name="spoken_accented_letter_1EF5">Y, dot below</string> + <!-- Spoken description for Unicode code point U+1EF7: "á»·" LATIN SMALL LETTER Y WITH HOOK ABOVE --> + <string name="spoken_accented_letter_1EF7">Y, hook above</string> + <!-- Spoken description for Unicode code point U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE --> + <string name="spoken_accented_letter_1EF9">Y, tilde</string> +</resources> diff --git a/java/res/values/strings-talkback-descriptions.xml b/java/res/values/strings-talkback-descriptions.xml index 80406d02f0d7b88e5ec3b95e59f6cdf4e9ee53a2..14455d088a3b190930b76a2679e42b371956f809 100644 --- a/java/res/values/strings-talkback-descriptions.xml +++ b/java/res/values/strings-talkback-descriptions.xml @@ -126,4 +126,13 @@ <string name="spoken_descrption_emoji_category_symbols">Symbols</string> <!-- Description of the emoji category icon of Emoticons. --> <string name="spoken_descrption_emoji_category_emoticons">Emoticons</string> + + <!-- Description of an upper case letter of LOWER_LETTER. --> + <string name="spoke_description_upper_case">Capital <xliff:g id="LOWER_LETTER" example="A, E, ligature">%s</xliff:g></string> + <!-- Spoken description for Unicode code point U+0049: "I" LATIN CAPITAL LETTER I + Note that depending on locale, the lower-case of this letter is U+0069 or U+0131. --> + <string name="spoken_letter_0049">Capital I</string> + <!-- Spoken description for Unicode code point U+0130: "Ä°" LATIN CAPITAL LETTER I WITH DOT ABOVE + Note that depending on locale, the lower-case of this letter is U+0069 or U+0131. --> + <string name="spoken_letter_0130">Capital I, dot above</string> </resources> diff --git a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java index 46caef62548d5697a3b5757b79de3549d8804207..2c87fc1e9236173a7a193fc78c241472825a591e 100644 --- a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java +++ b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java @@ -33,6 +33,7 @@ import java.util.Locale; public final class KeyCodeDescriptionMapper { private static final String TAG = KeyCodeDescriptionMapper.class.getSimpleName(); + private static final String SPOKEN_LETTER_RESOURCE_NAME_FORMAT = "spoken_accented_letter_%04X"; private static final String SPOKEN_EMOJI_RESOURCE_NAME_FORMAT = "spoken_emoji_%04X"; // The resource ID of the string spoken for obscured keys @@ -71,6 +72,15 @@ public final class KeyCodeDescriptionMapper { mKeyCodeMap.put(Constants.CODE_ACTION_PREVIOUS, R.string.spoken_description_action_previous); mKeyCodeMap.put(Constants.CODE_EMOJI, R.string.spoken_description_emoji); + // Because the upper-case and lower-case mappings of the following letters is depending on + // the locale, the upper case descriptions should be defined here. The lower case + // descriptions are handled in {@link #getSpokenLetterDescriptionId(Context,int)}. + // U+0049: "I" LATIN CAPITAL LETTER I + // U+0069: "i" LATIN SMALL LETTER I + // U+0130: "Ä°" LATIN CAPITAL LETTER I WITH DOT ABOVE + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + mKeyCodeMap.put(0x0049, R.string.spoken_letter_0049); + mKeyCodeMap.put(0x0130, R.string.spoken_letter_0130); } /** @@ -271,15 +281,19 @@ public final class KeyCodeDescriptionMapper { if (shouldObscure && isDefinedNonCtrl) { return context.getString(OBSCURED_KEY_RES_ID); } - if (mKeyCodeMap.indexOfKey(code) >= 0) { - return context.getString(mKeyCodeMap.get(code)); + final int index = mKeyCodeMap.indexOfKey(code); + if (index >= 0) { + return context.getString(mKeyCodeMap.valueAt(index)); } + final String accentedLetter = getSpokenAccentedLetterDescriptionId(context, code); + if (accentedLetter != null) { + return accentedLetter; + } + // Here, <code>code</code> may be a base letter. final int spokenEmojiId = getSpokenDescriptionId( context, code, SPOKEN_EMOJI_RESOURCE_NAME_FORMAT); if (spokenEmojiId != 0) { - final String spokenEmoji = context.getString(spokenEmojiId); - mKeyCodeMap.append(code, spokenEmojiId); - return spokenEmoji; + return context.getString(spokenEmojiId); } if (isDefinedNonCtrl) { return Character.toString((char) code); @@ -290,12 +304,31 @@ public final class KeyCodeDescriptionMapper { return context.getString(R.string.spoken_description_unknown, code); } - private static int getSpokenDescriptionId(final Context context, final int code, + private String getSpokenAccentedLetterDescriptionId(final Context context, final int code) { + final boolean isUpperCase = Character.isUpperCase(code); + final int baseCode = isUpperCase ? Character.toLowerCase(code) : code; + final int baseIndex = mKeyCodeMap.indexOfKey(baseCode); + final int resId = (baseIndex >= 0) ? mKeyCodeMap.valueAt(baseIndex) + : getSpokenDescriptionId(context, baseCode, SPOKEN_LETTER_RESOURCE_NAME_FORMAT); + if (resId == 0) { + return null; + } + final String spokenText = context.getString(resId); + return isUpperCase ? context.getString(R.string.spoke_description_upper_case, spokenText) + : spokenText; + } + + private int getSpokenDescriptionId(final Context context, final int code, final String resourceNameFormat) { final String resourceName = String.format(Locale.ROOT, resourceNameFormat, code); final Resources resources = context.getResources(); - final String packageName = resources.getResourcePackageName( + // Note that the resource package name may differ from the context package name. + final String resourcePackageName = resources.getResourcePackageName( R.string.spoken_description_unknown); - return resources.getIdentifier(resourceName, "string", packageName); + final int resId = resources.getIdentifier(resourceName, "string", resourcePackageName); + if (resId != 0) { + mKeyCodeMap.append(code, resId); + } + return resId; } }