diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index 2426e4a2b..ac63f589c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -1147,7 +1147,7 @@ public class GBApplication extends Application { if (oldVersion < 16) { // If transliteration was enabled for a device, migrate it to the per-language setting - final String defaultLanguagesIfEnabled = "extended_ascii,scandinavian,german,russian,hebrew,greek,ukranian,arabic,persian,latvian,lithuanian,polish,estonian,icelandic,czech,turkish,bengali,korean"; + final String defaultLanguagesIfEnabled = "extended_ascii,common_symbols,scandinavian,german,russian,hebrew,greek,ukranian,arabic,persian,latvian,lithuanian,polish,estonian,icelandic,czech,turkish,bengali,korean"; try (DBHandler db = acquireDB()) { final DaoSession daoSession = db.getDaoSession(); final List activeDevices = DBHelper.getActiveDevices(daoSession); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtils.java index de436a65d..03bfe9caa 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtils.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtils.java @@ -36,6 +36,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.language.impl.ArabicTransliterator; import nodomain.freeyourgadget.gadgetbridge.util.language.impl.BengaliTransliterator; +import nodomain.freeyourgadget.gadgetbridge.util.language.impl.CommonSymbolsTransliterator; import nodomain.freeyourgadget.gadgetbridge.util.language.impl.CroatianTransliterator; import nodomain.freeyourgadget.gadgetbridge.util.language.impl.CzechTransliterator; import nodomain.freeyourgadget.gadgetbridge.util.language.impl.EstonianTransliterator; @@ -63,6 +64,7 @@ public class LanguageUtils { private static final Map TRANSLITERATORS_MAP = new HashMap() {{ put("arabic", new ArabicTransliterator()); put("bengali", new BengaliTransliterator()); + put("common_symbols", new CommonSymbolsTransliterator()); put("croatian", new CroatianTransliterator()); put("czech", new CzechTransliterator()); put("estonian", new EstonianTransliterator()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/impl/CommonSymbolsTransliterator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/impl/CommonSymbolsTransliterator.java new file mode 100644 index 000000000..dd774407f --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/language/impl/CommonSymbolsTransliterator.java @@ -0,0 +1,38 @@ +/* Copyright (C) 2017-2023 Andreas Shimokawa, Aniruddha Adhikary, Daniele + Gobbetti, ivanovlev, kalaee, lazarosfs, McSym28, M. Hadi, Roi Greenberg, + Taavi Eomäe, Ted Stein, Thomas, Yaron Shahrabani, José Rebelo, Davis + Mosenkovs + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.util.language.impl; + +import java.util.HashMap; + +import nodomain.freeyourgadget.gadgetbridge.util.language.SimpleTransliterator; + +public class CommonSymbolsTransliterator extends SimpleTransliterator { + public CommonSymbolsTransliterator() { + super(new HashMap() {{ + put('“', "\""); put('”', "\""); put('‟', "\""); put('„', "\""); put('‘', "'"); put('’', "'"); put('‛', "'"); put('‚', "'"); put('«', "<"); put('»', ">"); put('‹', "<"); put('›', ">"); + put('©', "(c)"); put('®', "(r)"); put('™', "(tm)"); put('°', "*"); put('€', "EUR"); + put('–', "-"); put('⸺', "-"); put('˗', "-"); put('ᐨ', "-"); put('‐', "-"); put('‑', "-"); put('‒', "-"); put('—', "-"); put('―', "-"); put('−', "-"); + put('⎯', "-"); put('⏤', "-"); put('─', "-"); put('➖', "-"); put('⸻', "-"); put('ㅡ', "-"); put('ᅳ', "-"); put('ー', "-"); put('一', "-"); put('﹘', "-"); + put('﹣', "-"); put('-', "-"); put('𑁋', "-"); put('𑁒', "-"); put('˜', "~"); put('⁓', "~"); put('∼', "~"); put('〜', "~"); put('〰', "~~"); put('~', "~"); + put('⁰', "0"); put('¹', "1"); put('²', "2"); put('³', "3"); put('⁴', "4"); put('⁵', "5"); put('⁶', "6"); put('⁷', "7"); put('⁸', "8"); put('⁹', "9"); + put('₀', "0"); put('₁', "1"); put('₂', "2"); put('₃', "3"); put('₄', "4"); put('₅', "5"); put('₆', "6"); put('₇', "7"); put('₈', "8"); put('₉', "9"); + }}); + } +} diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 4e3d33865..89233e609 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -3072,6 +3072,7 @@ @string/arabic @string/bengali + @string/common_symbols @string/croatian @string/czech @string/estonian @@ -3096,6 +3097,7 @@ arabic bengali + common_symbols croatian czech estonian diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b0f24811..51bdab235 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -989,6 +989,7 @@ Georgian German Bengali + Common Symbols Croatian Czech Estonian diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtilsTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtilsTest.java index 1daf6a2ce..0f25a5244 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtilsTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/util/language/LanguageUtilsTest.java @@ -189,6 +189,21 @@ public class LanguageUtilsTest extends TestBase { assertEquals("georgian transliteration failed", expected, output); } + @Test + public void testStringTransliterateCommonSymbols() { + final Transliterator transliterator = LanguageUtils.getTransliterator("common_symbols"); + + String input = "© ® ™ ° « – » “ ” 〜 ² ³ ₅"; + String output = transliterator.transliterate(input); + String expected = "(c) (r) (tm) * < - > \" \" ~ 2 3 5"; + assertEquals("common symbols translation failed", expected, output); + + input = "a©a b®b c™c d°d e«e f–f g»g h“h i”i j〜j k²k l³l m₅m"; + output = transliterator.transliterate(input); + expected = "a(c)a b(r)b c(tm)c d*d eg h\"h i\"i j~j k2k l3l m5m"; + assertEquals("common symbols translation failed", expected, output); + } + @Test public void testStringTransliterateCroatian() { final Transliterator transliterator = LanguageUtils.getTransliterator("croatian");