Implement Emoji transliteration

This commit is contained in:
Alik Aslanyan
2025-08-01 22:28:47 +02:00
committed by José Rebelo
parent 71804aeff2
commit a00da2ee25
6 changed files with 41 additions and 0 deletions
+3
View File
@@ -289,6 +289,9 @@ dependencies {
// Needed for Armenian transliteration
implementation 'org.ahocorasick:ahocorasick:0.6.3'
// Needed for Emoji transliteration
implementation 'net.fellbaum:jemoji:1.6.0'
}
preBuild.dependsOn(":GBDaoGenerator:genSources")
@@ -40,6 +40,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.language.impl.BengaliTransliter
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.EmojiTransliterator;
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.EstonianTransliterator;
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.ExtendedAsciiTransliterator;
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.FlattenToAsciiTransliterator;
@@ -90,6 +91,7 @@ public class LanguageUtils {
put("turkish", new TurkishTransliterator());
put("ukranian", new UkranianTransliterator());
put("armenian", new ArmenianTransliterator());
put("emoji", new EmojiTransliterator());
}};
/**
@@ -0,0 +1,12 @@
package nodomain.freeyourgadget.gadgetbridge.util.language.impl;
import net.fellbaum.jemoji.EmojiManager;
import java.util.Objects;
import nodomain.freeyourgadget.gadgetbridge.util.language.Transliterator;
public class EmojiTransliterator implements Transliterator {
@Override
public String transliterate(String txt) {
return EmojiManager.replaceAllEmojis(txt, emoji -> Objects.requireNonNullElse(emoji.getAllAliases().get(0), ""));
}
}
+2
View File
@@ -4612,6 +4612,7 @@
<item>@string/ukranian</item>
<item>@string/hungarian</item>
<item>@string/armenian</item>
<item>@string/emoji</item>
</string-array>
<string-array name="pref_transliteration_languages_values">
@@ -4640,6 +4641,7 @@
<item>ukranian</item>
<item>hungarian</item>
<item>armenian</item>
<item>emoji</item>
</string-array>
<string-array name="pref_transliteration_languages_default">
+1
View File
@@ -1265,6 +1265,7 @@
<string name="catalan">Catalan</string>
<string name="finnish">Finnish</string>
<string name="bahasa_melayu">Bahasa Melayu</string>
<string name="emoji">Emoji</string>
<string name="FetchActivityOperation_about_to_transfer_since">About to transfer data since %1$s</string>
<string name="waiting_for_reconnect">Waiting for reconnect</string>
<string name="activity_prefs_about_you">About you</string>
@@ -0,0 +1,21 @@
package nodomain.freeyourgadget.gadgetbridge.test;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.Assert;
import nodomain.freeyourgadget.gadgetbridge.util.language.impl.EmojiTransliterator;
public class EmojiTransliteratorTest extends TestCase {
@Test
public void testSimpleEmoji() {
Assert.assertEquals(":heart:", new EmojiTransliterator().transliterate("\uFE0F"));
Assert.assertEquals(":grinning:", new EmojiTransliterator().transliterate("\uD83D\uDE00"));
}
@Test
public void testCompoundEmoji() {
Assert.assertEquals(":factory_worker::skin-tone-4:", new EmojiTransliterator().transliterate("\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED"));
}
}