diff --git a/app/src/main/java/io/github/sspanak/tt9/languages/LanguageKind.java b/app/src/main/java/io/github/sspanak/tt9/languages/LanguageKind.java
index a6e9f520..631d0366 100644
--- a/app/src/main/java/io/github/sspanak/tt9/languages/LanguageKind.java
+++ b/app/src/main/java/io/github/sspanak/tt9/languages/LanguageKind.java
@@ -8,7 +8,7 @@ public class LanguageKind {
public static boolean isArabicBased(Language language) { return isArabic(language) || isFarsi(language); }
public static boolean isCJK(Language language) { return isChinese(language) || isJapanese(language) || isKorean(language); }
public static boolean isCyrillic(Language language) { return language != null && language.getKeyCharacters(2).contains("а"); }
- public static boolean isLatinBased(Language language) { return language != null && language.getKeyCharacters(2).contains("a"); }
+ public static boolean isLatinBased(Language language) { return language != null && language.getKeyCharacters(2).contains("a") && !language.isTranscribed(); }
public static boolean isRTL(Language language) { return isArabic(language) || isFarsi(language) || isHebrew(language); }
public static boolean isArabic(Language language) { return language != null && language.getId() == 502337; }
diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java
index aa22bb30..094b108b 100644
--- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java
+++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSentencePunctuationList.java
@@ -6,6 +6,7 @@ import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
public class PreferenceSentencePunctuationList extends AbstractPreferenceCharList {
@@ -40,10 +41,15 @@ public class PreferenceSentencePunctuationList extends AbstractPreferenceCharLis
@Override
protected String validateMandatoryChars() {
- return super.validateMandatoryChars(SettingsStore.MANDATORY_PUNCTUATION);
+ return super.validateMandatoryChars(getSettings().getMandatoryPunctuation(language));
}
public boolean validateCurrentChars() {
+ if (currentChars.isEmpty()) {
+ setError(getContext().getString(R.string.punctuation_order_cannot_be_empty));
+ return false;
+ }
+
String forbiddenCharsError = validateForbiddenChars();
String mandatoryCharsError = validateMandatoryChars();
diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java
index d68fd45d..210888bd 100644
--- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java
+++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/punctuation/PreferenceSpecialCharList.java
@@ -29,12 +29,14 @@ public class PreferenceSpecialCharList extends AbstractPreferenceCharList {
@Override
protected char[] getForbiddenChars() {
if (forbiddenChars == null) {
- forbiddenChars = new char[SettingsStore.MANDATORY_PUNCTUATION.length + SettingsStore.FORBIDDEN_SPECIAL_CHARS.length];
- for (char i = 0; i < SettingsStore.MANDATORY_PUNCTUATION.length; i++) {
- forbiddenChars[i] = SettingsStore.MANDATORY_PUNCTUATION[i];
+ char[] mandatoryChars = getSettings().getMandatoryPunctuation(language);
+
+ forbiddenChars = new char[mandatoryChars.length + SettingsStore.FORBIDDEN_SPECIAL_CHARS.length];
+ for (char i = 0; i < mandatoryChars.length; i++) {
+ forbiddenChars[i] = mandatoryChars[i];
}
for (char i = 0; i < SettingsStore.FORBIDDEN_SPECIAL_CHARS.length; i++) {
- forbiddenChars[i + SettingsStore.MANDATORY_PUNCTUATION.length] = SettingsStore.FORBIDDEN_SPECIAL_CHARS[i];
+ forbiddenChars[i + mandatoryChars.length] = SettingsStore.FORBIDDEN_SPECIAL_CHARS[i];
}
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java
index 65f5390a..c9b4f5f4 100644
--- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java
+++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsPunctuation.java
@@ -7,12 +7,13 @@ import androidx.annotation.NonNull;
import java.util.ArrayList;
import io.github.sspanak.tt9.languages.Language;
+import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.util.chars.Characters;
class SettingsPunctuation extends SettingsInput {
private final static String KEY_PREFIX_PUNCTUATION = "pref_punctuation_";
private final static String KEY_PREFIX_SPECIAL = "pref_special_chars_";
- public final static char[] MANDATORY_PUNCTUATION = new char[] {'\'', '"', '-'};
+ private final static char[] MANDATORY_EU_PUNCTUATION = new char[] {'\'', '"', '-'};
public final static char[] FORBIDDEN_SPECIAL_CHARS = new char[] {' ', '\n', '\t'};
@@ -21,6 +22,11 @@ class SettingsPunctuation extends SettingsInput {
}
+ public char[] getMandatoryPunctuation(Language language) {
+ return LanguageKind.isCyrillic(language) || LanguageKind.isLatinBased(language) ? MANDATORY_EU_PUNCTUATION : new char[0];
+ }
+
+
public void savePunctuation(@NonNull Language language, @NonNull String punctuation) {
prefsEditor.putString(KEY_PREFIX_PUNCTUATION + language.getId(), punctuation);
prefsEditor.apply();
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 7de27d59..5598fc01 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -197,6 +197,7 @@
Изтривай цели думи при задържане или плъзване на Backspace. (Не работи в някои приложения.)
Ред на пунктуацията
Изберете език
+ Списъкът не може да бъде празен.
Липсва задължителен символ:%1$s
Липсват задължителни символи:%1$s
Неуспешно запазване на реда на знаците.
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 9bed6b2d..b49dd4ac 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -185,6 +185,7 @@
Ganze Wörter löschen, indem Sie die Rücktaste gedrückt halten oder wischen. (Nicht in allen Apps unterstützt)
Interpunktionsreihenfolge
Sprache auswählen
+ Die Liste darf nicht leer sein.
Fehlendes erforderliches Zeichen:%1$s
Fehlende erforderliche Zeichen:%1$s
Zeichenreihenfolge konnte nicht gespeichert werden.
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index ca025619..a2cc9644 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -196,6 +196,7 @@
Borrar palabras completas manteniendo pulsado o deslizando Retroceso. (No compatible con algunas aplicaciones)
Orden de puntuación
Seleccionar idioma
+ La lista no puede estar vacía.
Falta carácter obligatorio:%1$s
Faltan caracteres obligatorios:%1$s
Error al guardar el orden de los caracteres.
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 7c41eb6d..99d96b8e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -194,6 +194,7 @@
Effacer des mots entiers en maintenant ou en glissant sur Retour arrière. (Non pris en charge dans certaines applications)
Ordre de ponctuation
Sélectionner la langue
+ La liste ne peut pas être vide.
Caractère obligatoire manquant :%1$s
Caractères obligatoires manquants :%1$s
Échec de l’enregistrement de l’ordre des caractères.
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 18f15b21..1848ec33 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -183,6 +183,7 @@
Cancellare intere parole tenendo premuto o scorrendo Backspace. (Non supportato in alcune app)
Ordine di punteggiatura
Seleziona la lingua
+ L\'elenco non può essere vuoto.
Carattere obbligatorio mancante:%1$s
Caratteri obbligatori mancanti:%1$s
Salvataggio dell’ordine dei caratteri non riuscito.
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index ce7a6f35..d7c6ee39 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -197,6 +197,7 @@
למחוק מילים שלמות על ידי החזקת Backspace או החלקה עליו. (לא נתמך בחלק מהאפליקציות)
סדר סימני פיסוק
בחר שפה
+ הרשימה לא יכולה להיות ריקה.
תו חובה חסר: %1$s
תווי חובה חסרים:%1$s
שמירת סדר התווים נכשלה.
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index 0095df71..5bdfa52a 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -205,6 +205,7 @@
Ištrinti visus žodžius laikant arba perbraukiant Backspace. (Nepalaikoma kai kuriose programėlėse)
Skyrybos ženklų tvarka
Pasirinkite kalbą
+ Sąrašas negali būti tuščias.
Trūksta privalomo simbolio:%1$s
Trūksta privalomų simbolių:%1$s
Nepavyko išsaugoti simbolių tvarkos.
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index da9889d9..7d3a84eb 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -185,6 +185,7 @@
Hele woorden wissen door Backspace ingedrukt te houden of te vegen. (Niet ondersteund in sommige apps)
Interpunctievolgorde
Selecteer taal
+ De lijst mag niet leeg zijn.
Ontbrekend verplicht teken:%1$s
Ontbrekende verplichte tekens:%1$s
Opslaan van de tekenvolgorde mislukt.
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 5a34f7ed..24316e3a 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -198,6 +198,7 @@
Apagar palavras inteiras mantendo pressionado ou deslizando o Backspace. (Não suportado em alguns aplicativos)
Ordem de pontuação
Selecione o idioma
+ A lista não pode estar vazia.
Caractere obrigatório ausente:%1$s
Caracteres obrigatórios ausentes:%1$s
Falha ao salvar a ordem dos caracteres.
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index c3b1938e..8e637baf 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -196,6 +196,7 @@
Стереть целые слова, удерживая или проведя по клавише Backspace. (Не поддерживается в некоторых приложениях)
Порядок пунктуации
Выберите язык
+ Список не может быть пустым.
Отсутствует обязательный символ:%1$s
Отсутствуют обязательные символы:%1$s
е удалось сохранить порядок символов.
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 0f8d4a89..84c06bdf 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -198,6 +198,7 @@
Geri tuşunu basılı tutarak veya kaydırarak tüm kelimeleri sil. (Bazı uygulamalarda desteklenmez)
Noktalama sırası
Dil Seçin
+ Liste boş olamaz.
Zorunlu karakter eksik:%1$s
Zorunlu karakterler eksik:%1$s
Karakter sırası kaydedilemedi.
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 3c89d9ec..7b234ddb 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -207,6 +207,7 @@
Видалити цілі слова, утримуючи або провівши клавішею Backspace. (Не підтримується в деяких додатках)
Порядок пунктуації
Виберіть мову
+ Список не може бути порожнім.
Відсутній обов’язковий символ:%1$s
Відсутні обов’язкові символи:%1$s
Не вдалося зберегти порядок символів.
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ac80b93c..38f181ba 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -205,6 +205,7 @@
Select Language
+ The list can not be empty.
Missing mandatory character:%1$s
Missing mandatory characters:%1$s
Forbidden character:%1$s