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