From 2de9580dea802a77c37d3335d4a92f8f625c9660 Mon Sep 17 00:00:00 2001 From: ivanovlev Date: Sun, 15 Jan 2017 22:10:12 +0300 Subject: [PATCH] Added diacritic convertation into Transliteration --- .../gadgetbridge/util/LanguageUtils.java | 19 +++++++++++++++++-- app/src/main/res/xml/changelog_master.xml | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java index ae41ed3f0..a9a80aae4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/LanguageUtils.java @@ -2,13 +2,16 @@ package nodomain.freeyourgadget.gadgetbridge.util; import java.util.HashMap; import java.util.Map; - +import java.text.Normalizer; import nodomain.freeyourgadget.gadgetbridge.GBApplication; public class LanguageUtils { //transliteration map with english equivalent for unsupported chars private static Map transliterateMap = new HashMap(){ { + //extended ASCII characters + put('æ', "ae"); put('œ', "oe"); put('ß', "B"); + //russian chars put('а', "a"); put('б', "b"); put('в', "v"); put('г', "g"); put('д', "d"); put('е', "e"); put('ё', "jo"); put('ж', "zh"); put('з', "z"); put('и', "i"); put('й', "jj"); put('к', "k"); put('л', "l"); put('м', "m"); put('н', "n"); put('о', "o"); @@ -41,7 +44,7 @@ public class LanguageUtils { message.append(transliterate(c)); } - return message.toString(); + return flattenToAscii(message.toString()); } //replace unsupported symbol to english analog text @@ -61,4 +64,16 @@ public class LanguageUtils { return String.valueOf(c); } + + //convert diacritic + private static String flattenToAscii(String string) { + char[] out = new char[string.length()]; + string = Normalizer.normalize(string, Normalizer.Form.NFD); + int j = 0; + for (int i = 0, n = string.length(); i < n; ++i) { + char c = string.charAt(i); + if (c <= '\u007F') out[j++] = c; + } + return new String(out); + } } diff --git a/app/src/main/res/xml/changelog_master.xml b/app/src/main/res/xml/changelog_master.xml index 8544188a5..d4b9c14bd 100644 --- a/app/src/main/res/xml/changelog_master.xml +++ b/app/src/main/res/xml/changelog_master.xml @@ -2,7 +2,7 @@ Add weather support through "Weather Notification" app - Various fixes for K9 mail when using the generic notification receiver + Various fixes for K9 mail when using the generic notification receiver Added transliteration option for notifications in the settings screen Add a preference to hide the notification icon of Gadgetbridge