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,\\,,՞,՜,․,…,',=,/,՝,՛,֊,»,«,―,),("
+
+ ՞
+
+ ՜
-
- ՝
- ՝
+
+ ,
+ ,
։
։