removed the mandatoty character restrictions when reordering the punctuation for non-European languages
This commit is contained in:
parent
eaa8444ca8
commit
dc21957a1c
17 changed files with 34 additions and 7 deletions
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -197,6 +197,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Изтривай цели думи при задържане или плъзване на Backspace. (Не работи в някои приложения.)</string>
|
||||
<string name="pref_category_punctuation_order">Ред на пунктуацията</string>
|
||||
<string name="language_popup_title">Изберете език</string>
|
||||
<string name="punctuation_order_cannot_be_empty">Списъкът не може да бъде празен.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Липсва задължителен символ:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Липсват задължителни символи:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Неуспешно запазване на реда на знаците.</string>
|
||||
|
|
|
|||
|
|
@ -185,6 +185,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Ganze Wörter löschen, indem Sie die Rücktaste gedrückt halten oder wischen. (Nicht in allen Apps unterstützt)</string>
|
||||
<string name="pref_category_punctuation_order">Interpunktionsreihenfolge</string>
|
||||
<string name="language_popup_title">Sprache auswählen</string>
|
||||
<string name="punctuation_order_cannot_be_empty">Die Liste darf nicht leer sein.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Fehlendes erforderliches Zeichen:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Fehlende erforderliche Zeichen:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Zeichenreihenfolge konnte nicht gespeichert werden.</string>
|
||||
|
|
|
|||
|
|
@ -196,6 +196,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Borrar palabras completas manteniendo pulsado o deslizando Retroceso. (No compatible con algunas aplicaciones)</string>
|
||||
<string name="pref_category_punctuation_order">Orden de puntuación</string>
|
||||
<string name="language_popup_title">Seleccionar idioma</string>
|
||||
<string name="punctuation_order_cannot_be_empty">La lista no puede estar vacía.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Falta carácter obligatorio:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Faltan caracteres obligatorios:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Error al guardar el orden de los caracteres.</string>
|
||||
|
|
|
|||
|
|
@ -194,6 +194,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Effacer des mots entiers en maintenant ou en glissant sur Retour arrière. (Non pris en charge dans certaines applications)</string>
|
||||
<string name="pref_category_punctuation_order">Ordre de ponctuation</string>
|
||||
<string name="language_popup_title">Sélectionner la langue</string>
|
||||
<string name="punctuation_order_cannot_be_empty">La liste ne peut pas être vide.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Caractère obligatoire manquant :%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Caractères obligatoires manquants :%1$s</string>
|
||||
<string name="punctuation_order_save_error">Échec de l’enregistrement de l’ordre des caractères.</string>
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Cancellare intere parole tenendo premuto o scorrendo Backspace. (Non supportato in alcune app)</string>
|
||||
<string name="pref_category_punctuation_order">Ordine di punteggiatura</string>
|
||||
<string name="language_popup_title">Seleziona la lingua</string>
|
||||
<string name="punctuation_order_cannot_be_empty">L\'elenco non può essere vuoto.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Carattere obbligatorio mancante:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Caratteri obbligatori mancanti:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Salvataggio dell’ordine dei caratteri non riuscito.</string>
|
||||
|
|
|
|||
|
|
@ -197,6 +197,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">למחוק מילים שלמות על ידי החזקת Backspace או החלקה עליו. (לא נתמך בחלק מהאפליקציות)</string>
|
||||
<string name="pref_category_punctuation_order">סדר סימני פיסוק</string>
|
||||
<string name="language_popup_title">בחר שפה</string>
|
||||
<string name="punctuation_order_cannot_be_empty">הרשימה לא יכולה להיות ריקה.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">תו חובה חסר: %1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">תווי חובה חסרים:%1$s</string>
|
||||
<string name="punctuation_order_save_error">שמירת סדר התווים נכשלה.</string>
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Ištrinti visus žodžius laikant arba perbraukiant Backspace. (Nepalaikoma kai kuriose programėlėse)</string>
|
||||
<string name="pref_category_punctuation_order">Skyrybos ženklų tvarka</string>
|
||||
<string name="language_popup_title">Pasirinkite kalbą</string>
|
||||
<string name="punctuation_order_cannot_be_empty">Sąrašas negali būti tuščias.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Trūksta privalomo simbolio:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Trūksta privalomų simbolių:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Nepavyko išsaugoti simbolių tvarkos.</string>
|
||||
|
|
|
|||
|
|
@ -185,6 +185,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Hele woorden wissen door Backspace ingedrukt te houden of te vegen. (Niet ondersteund in sommige apps)</string>
|
||||
<string name="pref_category_punctuation_order">Interpunctievolgorde</string>
|
||||
<string name="language_popup_title">Selecteer taal</string>
|
||||
<string name="punctuation_order_cannot_be_empty">De lijst mag niet leeg zijn.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Ontbrekend verplicht teken:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Ontbrekende verplichte tekens:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Opslaan van de tekenvolgorde mislukt.</string>
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Apagar palavras inteiras mantendo pressionado ou deslizando o Backspace. (Não suportado em alguns aplicativos)</string>
|
||||
<string name="pref_category_punctuation_order">Ordem de pontuação</string>
|
||||
<string name="language_popup_title">Selecione o idioma</string>
|
||||
<string name="punctuation_order_cannot_be_empty">A lista não pode estar vazia.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Caractere obrigatório ausente:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Caracteres obrigatórios ausentes:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Falha ao salvar a ordem dos caracteres.</string>
|
||||
|
|
|
|||
|
|
@ -196,6 +196,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Стереть целые слова, удерживая или проведя по клавише Backspace. (Не поддерживается в некоторых приложениях)</string>
|
||||
<string name="pref_category_punctuation_order">Порядок пунктуации</string>
|
||||
<string name="language_popup_title">Выберите язык</string>
|
||||
<string name="punctuation_order_cannot_be_empty">Список не может быть пустым.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Отсутствует обязательный символ:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Отсутствуют обязательные символы:%1$s</string>
|
||||
<string name="punctuation_order_save_error">е удалось сохранить порядок символов.</string>
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Geri tuşunu basılı tutarak veya kaydırarak tüm kelimeleri sil. (Bazı uygulamalarda desteklenmez)</string>
|
||||
<string name="pref_category_punctuation_order">Noktalama sırası</string>
|
||||
<string name="language_popup_title">Dil Seçin</string>
|
||||
<string name="punctuation_order_cannot_be_empty">Liste boş olamaz.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Zorunlu karakter eksik:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Zorunlu karakterler eksik:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Karakter sırası kaydedilemedi.</string>
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@
|
|||
<string name="pref_backspace_acceleration_summary">Видалити цілі слова, утримуючи або провівши клавішею Backspace. (Не підтримується в деяких додатках)</string>
|
||||
<string name="pref_category_punctuation_order">Порядок пунктуації</string>
|
||||
<string name="language_popup_title">Виберіть мову</string>
|
||||
<string name="punctuation_order_cannot_be_empty">Список не може бути порожнім.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Відсутній обов’язковий символ:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Відсутні обов’язкові символи:%1$s</string>
|
||||
<string name="punctuation_order_save_error">Не вдалося зберегти порядок символів.</string>
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@
|
|||
|
||||
<string name="language_popup_title">Select Language</string>
|
||||
|
||||
<string name="punctuation_order_cannot_be_empty">The list can not be empty.</string>
|
||||
<string name="punctuation_order_mandatory_char_missing">Missing mandatory character:%1$s</string>
|
||||
<string name="punctuation_order_mandatory_chars_missing">Missing mandatory characters:%1$s</string>
|
||||
<string name="punctuation_order_forbidden_char">Forbidden character:%1$s</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue