Skip to content
Snippets Groups Projects
Commit 7b5bccc0 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Use "unknown emoji" or emoji that has an empty translation

Because the number of emoji description spoken string resources is
rather huge (~800), some locales may chose an empty description as a
translation. If that is the case, we will announce "unknown emoji" as
a fallback.

Bug: 11452158
Change-Id: Ibb65e5bec93030c40bd33ac2be2115c3bbc8bd11
parent 71c795d0
No related branches found
No related tags found
No related merge requests found
......@@ -128,11 +128,13 @@
<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>
<string name="spoken_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>
<!-- Spoken description for unknown emoji code point. -->
<string name="spoken_emoji_unknown">Unknown emoji</string>
</resources>
......@@ -285,15 +285,14 @@ public final class KeyCodeDescriptionMapper {
if (index >= 0) {
return context.getString(mKeyCodeMap.valueAt(index));
}
final String accentedLetter = getSpokenAccentedLetterDescriptionId(context, code);
final String accentedLetter = getSpokenAccentedLetterDescription(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) {
return context.getString(spokenEmojiId);
// Here, <code>code</code> may be a base (non-accented) letter.
final String emojiDescription = getSpokenEmojiDescription(context, code);
if (emojiDescription != null) {
return emojiDescription;
}
if (isDefinedNonCtrl) {
return Character.toString((char) code);
......@@ -304,7 +303,7 @@ public final class KeyCodeDescriptionMapper {
return context.getString(R.string.spoken_description_unknown, code);
}
private String getSpokenAccentedLetterDescriptionId(final Context context, final int code) {
private String getSpokenAccentedLetterDescription(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);
......@@ -314,7 +313,17 @@ public final class KeyCodeDescriptionMapper {
return null;
}
final String spokenText = context.getString(resId);
return isUpperCase ? context.getString(R.string.spoke_description_upper_case, spokenText)
return isUpperCase ? context.getString(R.string.spoken_description_upper_case, spokenText)
: spokenText;
}
private String getSpokenEmojiDescription(final Context context, final int code) {
final int resId = getSpokenDescriptionId(context, code, SPOKEN_EMOJI_RESOURCE_NAME_FORMAT);
if (resId == 0) {
return null;
}
final String spokenText = context.getString(resId);
return TextUtils.isEmpty(spokenText) ? context.getString(R.string.spoken_emoji_unknown)
: spokenText;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment