From b69ec39539568ac689a53e4f2538bacc6d3eebe2 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sat, 1 Mar 2025 10:24:22 +0100 Subject: [PATCH] extend list of locales for which bigrams are used in contacts dictionary --- .../keyboard/latin/ContactsBinaryDictionary.java | 3 ++- .../keyboard/latin/ContactsDictionaryUtils.java | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/latin/ContactsBinaryDictionary.java b/app/src/main/java/helium314/keyboard/latin/ContactsBinaryDictionary.java index 01f0669bf..2a82a0f0b 100644 --- a/app/src/main/java/helium314/keyboard/latin/ContactsBinaryDictionary.java +++ b/app/src/main/java/helium314/keyboard/latin/ContactsBinaryDictionary.java @@ -13,6 +13,7 @@ import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import helium314.keyboard.latin.utils.Log; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.inputmethod.latin.BinaryDictionary; @@ -49,7 +50,7 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary reloadDictionaryIfRequired(); } - public static ContactsBinaryDictionary getDictionary(final Context context, final Locale locale, + public static ContactsBinaryDictionary getDictionary(final Context context, @NonNull final Locale locale, final File dictFile, final String dictNamePrefix, @Nullable final String account) { return new ContactsBinaryDictionary(context, locale, dictFile, dictNamePrefix + NAME); } diff --git a/app/src/main/java/helium314/keyboard/latin/ContactsDictionaryUtils.java b/app/src/main/java/helium314/keyboard/latin/ContactsDictionaryUtils.java index c249f824b..e6c80e865 100644 --- a/app/src/main/java/helium314/keyboard/latin/ContactsDictionaryUtils.java +++ b/app/src/main/java/helium314/keyboard/latin/ContactsDictionaryUtils.java @@ -7,6 +7,7 @@ package helium314.keyboard.latin; import helium314.keyboard.latin.common.Constants; +import helium314.keyboard.latin.utils.ScriptUtils; import java.util.Locale; @@ -36,7 +37,14 @@ public class ContactsDictionaryUtils { * Returns true if the locale supports using first name and last name as bigrams. */ public static boolean useFirstLastBigramsForLocale(final Locale locale) { - // TODO: Add firstname/lastname bigram rules for other languages. - return locale != null && locale.getLanguage().equals(Locale.ENGLISH.getLanguage()); + // todo (later): incomplete, see https://en.wikipedia.org/wiki/Personal_name#Name_order + return switch (ScriptUtils.script(locale)) { + case ScriptUtils.SCRIPT_CYRILLIC -> true; + case ScriptUtils.SCRIPT_LATIN -> switch (locale.getLanguage()) { + case "hu", "ro", "vi" -> false; + default -> true; + }; + default -> false; + }; } }