diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java index ba489b913..dcf3b3517 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java @@ -2169,18 +2169,25 @@ public final class KeyboardTextsTable { /* morekeys_nordic_row2_11 ~ */ null, null, null, null, null, null, null, /* ~ morekeys_swiss_row2_11 */ - // U+055E: "՞" ARMENIAN QUESTION MARK - // U+055C: "՜" ARMENIAN EXCLAMATION MARK - // U+055A: "՚" ARMENIAN APOSTROPHE - // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING - // U+055D: "՝" ARMENIAN COMMA - // U+055B: "՛" ARMENIAN EMPHASIS MARK - // U+058A: "֊" ARMENIAN HYPHEN - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+055F: "՟" ARMENIAN ABBREVIATION MARK - /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:", - /* keyspec_tablet_comma */ "\u055D", + // + // ( U+0028 "(" Բացվող փակագիծ - OPENING PARENTHESES + // ) U+0029 ")" Փակվող փակագիծ - CLOSING PARENTHESES + // ' U+0027 "'" Ապաթարց - APOSTROPHE + // … U+2026 "…" Կախման կետեր + // ՞ U+055E "՞" Հարցական - ARMENIAN QUESTION MARK + // ՜ U+055C "՜" Բացականչական - ARMENIAN EXCLAMATION MARK + // ՛ U+055B "՛" Շեշտ + // ՝ U+055D "՝" Բութ + // ֊ U+058A "֊" Միության գծիկ - ARMENIAN HYPHEN + // ― U+2015 "―" Անջատման գժիկ - ARMENIAN SEPARATION MARK + // « U+00AB "«" Բացվող չակերտ - LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // » U+00BB "»" Փակվող չակերտ - RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // , U+002C "," Ստօրակետ - ARMENIAN COMMA + // ։ U+0589 "։" Վերջակետ - ARMENIAN COLON + // ․ U+2024 "․" Միջակետ + // + /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,\u2024,\u2026,',=,/,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u2015,),(", + /* keyspec_tablet_comma */ ",", /* morekeys_star ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, /* ~ keyspec_right_single_angle_quote */ @@ -2188,13 +2195,12 @@ public final class KeyboardTextsTable { // TODO: Enable this when we have glyph for the following letter // ֏ // - // U+055D: "՝" ARMENIAN COMMA - /* keyspec_comma */ "\u055D", + // U+002C: "," ARMENIAN COMMA + /* keyspec_comma */ ",", /* morekeys_tablet_comma */ null, /* keyhintlabel_period */ null, // U+055E: "՞" ARMENIAN QUESTION MARK - // U+00BF: "¿" INVERTED QUESTION MARK - /* morekeys_question */ "\u055E,\u00BF", + /* morekeys_question */ "\u055E", /* morekeys_h ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, @@ -2202,8 +2208,7 @@ public final class KeyboardTextsTable { null, null, null, /* ~ morekeys_greater_than */ // U+055C: "՜" ARMENIAN EXCLAMATION MARK - // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* morekeys_exclamation */ "\u055C,\u00A1", + /* morekeys_exclamation */ "\u055C", }; /* Locale is: Icelandic */ diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java index da5c84a67..99027b85d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java @@ -113,6 +113,8 @@ public final class AndroidSpellCheckerService extends SpellCheckerService switch (script) { case ScriptUtils.SCRIPT_LATIN: return "qwerty"; + case ScriptUtils.SCRIPT_ARMENIAN: + return "armenian_phonetic"; case ScriptUtils.SCRIPT_CYRILLIC: return "east_slavic"; case ScriptUtils.SCRIPT_GREEK: diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java index aa9bf860c..8c0c50a72 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java @@ -45,6 +45,8 @@ import org.dslul.openboard.inputmethod.latin.utils.SuggestionResults; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Map; +import java.util.TreeMap; public abstract class AndroidWordLevelSpellCheckerSession extends Session { private static final String TAG = AndroidWordLevelSpellCheckerSession.class.getSimpleName(); @@ -62,6 +64,15 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { private static final String quotesRegexp = "(\\u0022|\\u0027|\\u0060|\\u00B4|\\u2018|\\u2018|\\u201C|\\u201D)"; + private static final Map scriptToPunctuationRegexMap = new TreeMap<>(); + + static { + scriptToPunctuationRegexMap.put( + ScriptUtils.SCRIPT_ARMENIAN, + "(\\u0028|\\u0029|\\u0027|\\u2026|\\u055E|\\u055C|\\u055B|\\u055D|\\u058A|\\u2015|\\u00AB|\\u00BB|\\u002C|\\u0589|\\u2024)" + ); + } + private static final class SuggestionsParams { public final String[] mSuggestions; public final int mFlags; @@ -260,12 +271,22 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { final TextInfo textInfo, final NgramContext ngramContext, final int suggestionsLimit) { try { updateLocale(); - final String text = textInfo.getText(). + // It's good to keep this not local specific since the standard + // ones may show up in other languages also. + String text = textInfo.getText(). replaceAll(AndroidSpellCheckerService.APOSTROPHE, AndroidSpellCheckerService.SINGLE_QUOTE). replaceAll("^" + quotesRegexp, ""). replaceAll(quotesRegexp + "$", ""); + final String localeRegex = scriptToPunctuationRegexMap.get( + ScriptUtils.getScriptFromSpellCheckerLocale(mLocale) + ); + + if (localeRegex != null) { + text = text.replaceAll(localeRegex, ""); + } + if (!mService.hasMainDictionaryForLocale(mLocale)) { return AndroidSpellCheckerService.getNotInDictEmptySuggestions( false /* reportAsTypo */); diff --git a/app/src/main/res/raw/main_hy.dict b/app/src/main/res/raw/main_hy.dict new file mode 100644 index 000000000..420e2df6d Binary files /dev/null and b/app/src/main/res/raw/main_hy.dict differ diff --git a/app/src/main/res/xml/spellchecker.xml b/app/src/main/res/xml/spellchecker.xml index 85c6cffb7..794d506b9 100644 --- a/app/src/main/res/xml/spellchecker.xml +++ b/app/src/main/res/xml/spellchecker.xml @@ -55,6 +55,10 @@ android:label="@string/subtype_generic" android:subtypeLocale="ru" /> + ԱԲԳ - - "!autoColumnOrder!8,\\,,՞,՜,.,՚,ՙ,?,!,՝,՛,֊,»,«,՟,;,:" - - ՞,¿ - - ՜,¡ + + "!autoColumnOrder!8,\\,,՞,՜,․,…,',=,/,՝,՛,֊,»,«,―,),(" + + ՞ + + ՜ - - ՝ - ՝ + + , + , ։ ։