diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodSubtype.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodSubtype.java index 88eddc74e..ece27493d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodSubtype.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/RichInputMethodSubtype.java @@ -40,7 +40,7 @@ public class RichInputMethodSubtype { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Locale#forLanguageTag is available on API Level 21+. // TODO: Remove this workaround once when we become able to deal with "sr-Latn". - map.put(Locale.forLanguageTag("sr-Latn"), new Locale("sr_ZZ")); + map.put(Locale.forLanguageTag("sr-Latn"), new Locale("sr", "ZZ")); } return map; } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java index 13480e439..f0adb0fa1 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java @@ -9,14 +9,10 @@ package org.dslul.openboard.inputmethod.latin.settings; import static org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager.get; import android.Manifest; -import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; -import androidx.preference.Preference; import androidx.preference.SwitchPreferenceCompat; import androidx.preference.TwoStatePreference; @@ -24,18 +20,11 @@ import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager; import org.dslul.openboard.inputmethod.latin.permissions.PermissionsUtil; import org.dslul.openboard.inputmethod.latin.spellcheck.AndroidSpellCheckerService; -import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryList; -import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionarySettings; - -import java.util.TreeSet; public final class CorrectionSettingsFragment extends SubScreenFragment implements SharedPreferences.OnSharedPreferenceChangeListener, PermissionsManager.PermissionsResultCallback { - private static final boolean DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = false; - private static final boolean USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = - DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS; private SwitchPreferenceCompat mLookupContactsPreference; @Override @@ -43,16 +32,6 @@ public final class CorrectionSettingsFragment extends SubScreenFragment super.onCreate(icicle); addPreferencesFromResource(R.xml.prefs_screen_correction); - final PackageManager pm = requireContext().getPackageManager(); - - final Preference editPersonalDictionary = - findPreference(Settings.PREF_EDIT_PERSONAL_DICTIONARY); - final Intent editPersonalDictionaryIntent = editPersonalDictionary.getIntent(); - final ResolveInfo ri = USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS ? null - : pm.resolveActivity(editPersonalDictionaryIntent, PackageManager.MATCH_DEFAULT_ONLY); - if (ri == null) { - overwriteUserDictionaryPreference(editPersonalDictionary); - } mLookupContactsPreference = findPreference(AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY); refreshEnabledSettings(); @@ -100,27 +79,4 @@ public final class CorrectionSettingsFragment extends SubScreenFragment turnOffLookupContactsIfNoPermission(); } - private void overwriteUserDictionaryPreference(final Preference userDictionaryPreference) { - final TreeSet localeList = UserDictionaryList.getUserDictionaryLocalesSet(requireActivity()); - if (null == localeList) { - // The locale list is null if and only if the user dictionary service is - // not present or disabled. In this case we need to remove the preference. - getPreferenceScreen().removePreference(userDictionaryPreference); - } else if (localeList.size() <= 1) { - userDictionaryPreference.setFragment(UserDictionarySettings.class.getName()); - // If the size of localeList is 0, we don't set the locale parameter in the - // extras. This will be interpreted by the UserDictionarySettings class as - // meaning "the current locale". - // Note that with the current code for UserDictionaryList#getUserDictionaryLocalesSet() - // the locale list always has at least one element, since it always includes the current - // locale explicitly. @see UserDictionaryList.getUserDictionaryLocalesSet(). - if (localeList.size() == 1) { - final String locale = (String)localeList.toArray()[0]; - userDictionaryPreference.getExtras().putString("locale", locale); - } - } else { - userDictionaryPreference.setFragment(UserDictionaryList.class.getName()); - } - } - } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index a0bc4e9e5..1453d5c57 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -79,7 +79,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_COLOR_HINT_TEXT_SUFFIX = "hint_text"; public static final String PREF_COLOR_BACKGROUND_SUFFIX = "background"; public static final String PREF_AUTO_USER_COLOR_SUFFIX = "_auto"; - public static final String PREF_EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary"; public static final String PREF_AUTO_CORRECTION = "pref_key_auto_correction"; public static final String PREF_AUTO_CORRECTION_CONFIDENCE = "pref_key_auto_correction_confidence"; public static final String PREF_SHOW_SUGGESTIONS = "show_suggestions"; @@ -137,7 +136,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_SELECTED_INPUT_STYLE = "pref_selected_input_style"; public static final String PREF_USE_SYSTEM_LOCALES = "pref_use_system_locales"; public static final String PREF_URL_DETECTION = "pref_url_detection"; - public static final String PREF_DONT_SHOW_MISSING_DICTIONARY_DIALOG = "pref_dont_show_missing_dict_dialog"; public static final String PREF_PINNED_TOOLBAR_KEYS = "pref_pinned_toolbar_keys"; public static final String PREF_TOOLBAR_KEYS = "pref_toolbar_keys"; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryAddWordContents.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryAddWordContents.java new file mode 100644 index 000000000..c39430be8 --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryAddWordContents.java @@ -0,0 +1,287 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package org.dslul.openboard.inputmethod.latin.settings; + +import android.content.ContentResolver; +import android.content.Context; +import android.database.Cursor; +import android.os.Build; +import android.os.Bundle; +import android.os.LocaleList; +import android.provider.UserDictionary; +import android.text.TextUtils; +import android.text.method.DigitsKeyListener; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; + +import java.util.ArrayList; +import java.util.TreeSet; + +public class UserDictionaryAddWordContents { + public static final String EXTRA_MODE = "mode"; + public static final String EXTRA_WORD = "word"; + public static final String EXTRA_WEIGHT = "weight"; + public static final String EXTRA_SHORTCUT = "shortcut"; + public static final String EXTRA_LOCALE = "locale"; + + public static final int MODE_EDIT = 0; // To modify a word + public static final int MODE_INSERT = 1; // To add a new or modified word + + static final int CODE_WORD_ADDED = 0; + static final int CODE_CANCEL = 1; + static final int CODE_UPDATED = 2; + static final int CODE_ALREADY_PRESENT = 3; + + public static final int WEIGHT_FOR_USER_DICTIONARY_ADDS = 250; + + private int mMode; // Either MODE_EDIT or MODE_INSERT + private final EditText mWordEditText; + private final EditText mShortcutEditText; + private final EditText mWeightEditText; + private String mLocaleString; + private final String mOldWord; + private final String mOldShortcut; + private final String mOldWeight; + private String mSavedWord; + private String mSavedShortcut; + private String mSavedWeight; + private Context mContext; + + UserDictionaryAddWordContents(final View view, final Bundle args) { + mWordEditText = view.findViewById(R.id.user_dictionary_add_word_text); + mWordEditText.requestFocus(); + mShortcutEditText = view.findViewById(R.id.user_dictionary_add_shortcut); + mWeightEditText = view.findViewById(R.id.user_dictionary_add_weight); + mWeightEditText.setKeyListener(DigitsKeyListener.getInstance("0123456789")); + final Button deleteWordButton = view.findViewById(R.id.user_dictionary_delete_button); + + final String word = args.getString(EXTRA_WORD); + if (null != word) { + mWordEditText.setText(word); + // Use getText in case the edit text modified the text we set. This happens when + // it's too long to be edited. + mWordEditText.setSelection(mWordEditText.getText().length()); + } + + final String shortcut = args.getString(EXTRA_SHORTCUT); + if (null != shortcut) { + mShortcutEditText.setText(shortcut); + } + mOldShortcut = args.getString(EXTRA_SHORTCUT); + + final String weight = args.getString(EXTRA_WEIGHT); + if (null != weight) { + mWeightEditText.setText(weight); + } + + mMode = args.getInt(EXTRA_MODE); + if (mMode == MODE_EDIT) { + deleteWordButton.setVisibility(View.VISIBLE); + } else if (mMode == MODE_INSERT) { + deleteWordButton.setVisibility(View.INVISIBLE); + } + + mOldWord = args.getString(EXTRA_WORD); + mOldWeight = args.getString(EXTRA_WEIGHT); + updateLocale(mContext, args.getString(EXTRA_LOCALE)); + } + + UserDictionaryAddWordContents(final View view, final UserDictionaryAddWordContents oldInstanceToBeEdited) { + mWordEditText = view.findViewById(R.id.user_dictionary_add_word_text); + mShortcutEditText = view.findViewById(R.id.user_dictionary_add_shortcut); + mWeightEditText = view.findViewById(R.id.user_dictionary_add_weight); + + mOldWord = oldInstanceToBeEdited.mSavedWord; + mOldShortcut = oldInstanceToBeEdited.mSavedShortcut; + mOldWeight = oldInstanceToBeEdited.mSavedWeight; + updateLocale(mContext, mLocaleString); + } + + // locale may be null, this means system locale + // It may also be the empty string, which means "For all languages" + void updateLocale(final Context context, final String locale) { + mContext = context; + + mLocaleString = null == locale + ? mContext.getResources().getConfiguration().locale.toString() + : locale; + // The keyboard uses the language layout of the user dictionary + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + mWordEditText.setImeHintLocales(new LocaleList(LocaleUtils.constructLocaleFromString(mLocaleString))); + } + + } + + String getLocale() { + return mLocaleString; + } + + void delete(final Context context) { + // do nothing if mode is wrong or word is empty + if (MODE_EDIT != mMode || TextUtils.isEmpty(mOldWord)) + return; + final ContentResolver resolver = context.getContentResolver(); + // Remove the old entry. + UserDictionarySettings.deleteWordInEditMode(mOldWord, mOldShortcut, mOldWeight, mLocaleString, resolver); + } + + public final int apply(@NonNull final Context context) { + final ContentResolver resolver = context.getContentResolver(); + final String newWord = mWordEditText.getText().toString(); + final String locale = mLocaleString; + + if (TextUtils.isEmpty(newWord)) { + // If the word is empty, don't insert it. + return CODE_CANCEL; + } + + mSavedShortcut = mShortcutEditText.getText().toString(); + if (TextUtils.isEmpty(mSavedShortcut)) { + mSavedShortcut = null; + } + + mSavedWeight = mWeightEditText.getText().toString(); + if (TextUtils.isEmpty(mSavedWeight)) { + mSavedWeight = String.valueOf(WEIGHT_FOR_USER_DICTIONARY_ADDS); + } + + mSavedWord = newWord; + + // In edit mode, everything is modified without overwriting other existing words + if (MODE_EDIT == mMode && hasWord(newWord, locale, context) && newWord.equals(mOldWord)) { + UserDictionarySettings.deleteWordInEditMode(mOldWord, mOldShortcut, mOldWeight, locale, resolver); + } else { + mMode = MODE_INSERT; + } + + if (mMode == MODE_INSERT && hasWord(newWord, locale, context)) { + return CODE_ALREADY_PRESENT; + } + + if (mMode == MODE_INSERT) { + // Delete duplicate when adding or updating new word + UserDictionarySettings.deleteWordInEditMode(mOldWord, mOldShortcut, mOldWeight, locale, resolver); + // Update the existing word by adding a new one + UserDictionary.Words.addWord(context, newWord, + Integer.parseInt(mSavedWeight), mSavedShortcut, TextUtils.isEmpty(mLocaleString) ? + null : LocaleUtils.constructLocaleFromString(mLocaleString)); + + return CODE_UPDATED; + } + + // Delete duplicates + UserDictionarySettings.deleteWord(newWord, locale, resolver); + + // In this class we use the empty string to represent 'all locales' and mLocale cannot + // be null. However the addWord method takes null to mean 'all locales'. + UserDictionary.Words.addWord(context, newWord, + Integer.parseInt(mSavedWeight), mSavedShortcut, TextUtils.isEmpty(mLocaleString) ? + null : LocaleUtils.constructLocaleFromString(mLocaleString)); + + return CODE_WORD_ADDED; + } + + public boolean isExistingWord(final Context context) { + final String newWord = mWordEditText.getText().toString(); + if (mMode != MODE_EDIT) { + return hasWord(newWord, mLocaleString, context); + } else { + return false; + } + } + + private static final String[] HAS_WORD_PROJECTION = { UserDictionary.Words.WORD, UserDictionary.Words.LOCALE }; + private static final String HAS_WORD_AND_LOCALE_SELECTION = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.LOCALE + "=?"; + private static final String HAS_WORD_AND_ALL_LOCALES_SELECTION = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.LOCALE + " is null"; + + private boolean hasWord(final String word, final String locale, final Context context) { + final Cursor cursor; + + if ("".equals(locale)) { + cursor = context.getContentResolver().query(UserDictionary.Words.CONTENT_URI, + HAS_WORD_PROJECTION, HAS_WORD_AND_ALL_LOCALES_SELECTION, + new String[] { word }, null); + } else { + cursor = context.getContentResolver().query(UserDictionary.Words.CONTENT_URI, + HAS_WORD_PROJECTION, HAS_WORD_AND_LOCALE_SELECTION, + new String[] { word, locale}, null); + } + try { + if (null == cursor) return false; + return cursor.getCount() > 0; + } finally { + if (null != cursor) cursor.close(); + } + } + + public static class LocaleRenderer { + private final String mLocaleString; + private final String mDescription; + + public LocaleRenderer(final Context context, @Nullable final String localeString) { + mLocaleString = localeString; + + if (null == localeString || "".equals(localeString)) { + mDescription = context.getString(R.string.user_dict_settings_all_languages); + } else { + mDescription = UserDictionarySettings.getLocaleDisplayName(context, localeString); + } + } + @Override + public String toString() { + return mDescription; + } + public String getLocaleString() { + return mLocaleString; + } + + } + + private static void addLocaleDisplayNameToList(final Context context, + final ArrayList list, final String locale) { + if (null != locale) { + list.add(new LocaleRenderer(context, locale)); + } + } + + // Helper method to get the list of locales and subtypes to display for this word + public ArrayList getLocaleRendererList(final Context context) { + final TreeSet sortedLanguages = UserDictionaryListFragment.getSortedDictionaryLocaleStrings(context); + + // mLocale is removed from the language list as it will be added to the top of the list + sortedLanguages.remove(mLocaleString); + // "For all languages" is removed from the language list as it will be added at the end of the list + sortedLanguages.remove(""); + + // final list of locales to show + final ArrayList localesList = new ArrayList<>(); + // First, add the language of the personal dictionary at the top of the list + addLocaleDisplayNameToList(context, localesList, mLocaleString); + + // Next, add all other languages which will be sorted alphabetically in UserDictionaryAddWordFragment.updateSpinner() + for (String language : sortedLanguages) { + addLocaleDisplayNameToList(context, localesList, language); + } + + // Finally, add "All languages" at the end of the list + if (!"".equals(mLocaleString)) { + addLocaleDisplayNameToList(context, localesList, ""); + } + + return localesList; + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryAddWordFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryAddWordFragment.java new file mode 100644 index 000000000..2234b6e46 --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryAddWordFragment.java @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package org.dslul.openboard.inputmethod.latin.settings; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Spinner; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.core.widget.TextViewKt; + +import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.settings.UserDictionaryAddWordContents.LocaleRenderer; + +import java.util.ArrayList; +import java.util.Collections; + +import kotlin.Unit; + +/** + * Fragment to add a word/shortcut to the user dictionary. + * As opposed to the UserDictionaryActivity, this is only invoked within Settings + * from the UserDictionarySettings. + */ +public class UserDictionaryAddWordFragment extends SubScreenFragment { + + private UserDictionaryAddWordContents mContents; + private View mRootView; + private EditText mWordEditText; + private EditText mWeightEditText; + private InputMethodManager mInput; + private ActionBar mActionBar; + private String mLocaleDisplayString; + + @NonNull + @Override + public View onCreateView(final LayoutInflater inflater, final ViewGroup container, + final Bundle savedState) { + mRootView = inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null); + // If we have a non-null mContents object, it's the old value before a configuration + // change (eg rotation) so we need to use its values. Otherwise, read from the arguments. + if (null == mContents) { + mContents = new UserDictionaryAddWordContents(mRootView, getArguments()); + } else { + // We create a new mContents object to account for the new situation : a word has + // been added to the user dictionary when we started rotating, and we are now editing + // it. That means in particular if the word undergoes any change, the old version should + // be updated, so the mContents object needs to switch to EDIT mode if it was in + // INSERT mode. + mContents = new UserDictionaryAddWordContents(mRootView, mContents); + } + + mWordEditText = mRootView.findViewById(R.id.user_dictionary_add_word_text); + mWeightEditText = mRootView.findViewById(R.id.user_dictionary_add_weight); + + final Bundle args = getArguments(); + mActionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); + mLocaleDisplayString = UserDictionarySettings.getLocaleDisplayName(requireContext(), mContents.getLocale()); + if (args != null && mActionBar != null) { + if (args.getInt(UserDictionaryAddWordContents.EXTRA_MODE) == UserDictionaryAddWordContents.MODE_EDIT) { + mActionBar.setTitle(R.string.user_dict_settings_edit_dialog_title); + } else { + mActionBar.setTitle(R.string.user_dict_settings_add_dialog_title); + } + mActionBar.setSubtitle(mLocaleDisplayString); + } + + final Button saveWordButton = mRootView.findViewById(R.id.user_dictionary_save_button); + saveWordButton.setOnClickListener(v -> addWord()); + + TextViewKt.doAfterTextChanged(mWordEditText, (editable) -> { + final int visibility = TextUtils.isEmpty(editable.toString()) ? View.INVISIBLE : View.VISIBLE; + saveWordButton.setVisibility(visibility); + return Unit.INSTANCE; + }); + saveWordButton.setVisibility(TextUtils.isEmpty(mWordEditText.getText().toString()) ? View.INVISIBLE : View.VISIBLE); + + final Button deleteWordButton = mRootView.findViewById(R.id.user_dictionary_delete_button); + final Drawable deleteWordIcon = toScaledBitmapDrawable(R.drawable.ic_delete, 0.75f); + deleteWordButton.setCompoundDrawablesWithIntrinsicBounds(null, null, deleteWordIcon, null); + deleteWordButton.setOnClickListener(v -> { + mContents.delete(requireContext()); + requireActivity().onBackPressed(); + }); + + return mRootView; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + // Automatically display the keyboard when we want to add or modify a word + mInput = (InputMethodManager) requireContext().getSystemService(Context.INPUT_METHOD_SERVICE); + mInput.showSoftInput(mWordEditText, InputMethodManager.SHOW_IMPLICIT); + + // Add a word using the Enter key + mWeightEditText.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + addWord(); + } + return false; + }); + } + + @Override + public void onResume() { + super.onResume(); + // We are being shown: display the word + updateSpinner(); + } + + // The bin icon is too big compared to the plus icon; we need to reduce it. + // We therefore need to convert the drawable image to a BitmapDrawable. + private BitmapDrawable toScaledBitmapDrawable(int drawableResId, float scale) { + final Drawable drawable = ContextCompat.getDrawable(requireContext(), drawableResId); + if (drawable == null) return null; + final int height = (int) (scale * drawable.getIntrinsicHeight()); + final int width = (int) (scale * drawable.getIntrinsicWidth()); + drawable.setBounds(0, 0, width, height); + final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + final Canvas canvas = new Canvas(bitmap); + drawable.draw(canvas); + return new BitmapDrawable(getResources(), bitmap); + } + + private void addWord() { + if (mContents.isExistingWord(requireContext())) { + new AlertDialog.Builder(requireContext()) + .setMessage(getString(R.string.user_dict_word_already_present, mLocaleDisplayString)) + .setPositiveButton(android.R.string.ok, (dialog, which) -> + mInput.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY)) + .show(); + + mWordEditText.requestFocus(); + + } else if (!mWordEditText.getText().toString().isEmpty()) { + mContents.apply(requireContext()); + requireActivity().onBackPressed(); + } + } + + private void updateSpinner() { + final ArrayList localesList = mContents.getLocaleRendererList(requireContext()); + + final Spinner localeSpinner = mRootView.findViewById(R.id.user_dictionary_add_locale); + final ArrayAdapter adapter = new ArrayAdapter<>( + requireContext(), android.R.layout.simple_spinner_item, localesList); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + localeSpinner.setAdapter(adapter); + localeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + final LocaleRenderer locale = (LocaleRenderer)parent.getItemAtPosition(position); + + mContents.updateLocale(requireContext(), locale.getLocaleString()); + // To have the selected language at the top of the list, this one is removed from the list + localesList.remove(position); + // The other languages are then sorted alphabetically by name, with the exception of "For all languages" + Collections.sort(localesList, (locale1, locale2) -> { + if (!locale1.getLocaleString().equals("") && !locale2.getLocaleString().equals("")) { + return locale1.toString().compareToIgnoreCase(locale2.toString()); + } else { + return locale1.getLocaleString().compareToIgnoreCase(locale2.getLocaleString()); + } + }); + + // Set "For all languages" to the end of the list + if (!locale.getLocaleString().equals("")) { + // After alphabetical sorting, "For all languages" is always in 1st position. + // (The position is 0 because the spinner menu item count starts at 0) + final LocaleRenderer forAllLanguages = adapter.getItem(0); + // So we delete its entry ... + localesList.remove(forAllLanguages); + // ... and we set it at the end of the list. + localesList.add(localesList.size(), forAllLanguages); + } + + // Finally, we add the selected language to the top of the list. + localesList.add(0, locale); + + // When a language is selected, the keyboard layout changes automatically + mInput.restartInput(mWordEditText); + + // The action bar subtitle is updated when a language is selected in the drop-down menu + mActionBar.setSubtitle(locale.toString()); + } + + @Override + public void onNothingSelected(AdapterView parent) { + // I'm not sure we can come here, but if we do, that's the right thing to do. + final Bundle args = getArguments(); + if (args == null) return; + mContents.updateLocale(requireContext(), args.getString(UserDictionaryAddWordContents.EXTRA_LOCALE)); + } + }); + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryListFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryListFragment.java new file mode 100644 index 000000000..af94abfe6 --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionaryListFragment.java @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * modified + * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only + */ + +package org.dslul.openboard.inputmethod.latin.settings; + +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodSubtype; +import android.widget.Button; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.preference.Preference; +import androidx.preference.PreferenceGroup; + +import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils; +import org.dslul.openboard.inputmethod.latin.utils.SubtypeSettingsKt; + +import java.util.Locale; +import java.util.TreeSet; + +public class UserDictionaryListFragment extends SubScreenFragment { + + // TODO : Implement the import/export function in these menus + /*private static final int OPTIONS_MENU_EXPORT = Menu.NONE; + private static final int OPTIONS_MENU_IMPORT = Menu.NONE;*/ + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(requireContext())); + + createUserDictSettings(getPreferenceScreen()); + // TODO : Uncomment to create the import/export function in the menu + //setHasOptionsMenu(true); + } + + @Override + public void onResume() { + super.onResume(); + final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); + if (actionBar != null) { + actionBar.setTitle(R.string.edit_personal_dictionary); + actionBar.setSubtitle(null); + } + } + + @NonNull + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + LinearLayout view = (LinearLayout) super.onCreateView(inflater, container, savedInstanceState); + View v = inflater.inflate(R.layout.user_dictionary_settings_list_fragment, null); + Button addWordButton = v.findViewById(R.id.user_dictionary_add_word_button); + addWordButton.setOnClickListener(v1 -> showAddWordFragment()); + view.addView(v); + return view; + } + + // TODO : Implement the import/export function in these menus +/* @Override + public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) { + *//*menu.add(0, OPTIONS_MENU_EXPORT, 0, R.string.button_backup); + menu.add(0, OPTIONS_MENU_IMPORT, 0, R.string.button_restore);*//* + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == OPTIONS_MENU_EXPORT) { + return true; + } + if (item.getItemId() == OPTIONS_MENU_IMPORT) { + return true; + } + + return false; + }*/ + + /** + * Creates the entries that allow the user to go into the user dictionary for each locale. + * @param userDictGroup The group to put the settings in. + */ + private void createUserDictSettings(final PreferenceGroup userDictGroup) { + final TreeSet sortedLanguages = getSortedDictionaryLocaleStrings(requireContext()); + + // Add preference "for all locales" + userDictGroup.addPreference(createUserDictionaryPreference("")); + // Add preference for each dictionary locale + for (String localeUserDictionary : sortedLanguages) { + userDictGroup.addPreference(createUserDictionaryPreference(localeUserDictionary)); + } + } + + static TreeSet getSortedDictionaryLocaleStrings(final Context context) { + final SharedPreferences prefs = DeviceProtectedUtils.getSharedPreferences(context); + final boolean localeSystemOnly = prefs.getBoolean(Settings.PREF_USE_SYSTEM_LOCALES, true); + final TreeSet sortedLanguages = new TreeSet<>(String::compareToIgnoreCase); + + // Add the main language selected in the "Language and Layouts" setting except "No language" + for (InputMethodSubtype mainSubtype : SubtypeSettingsKt.getEnabledSubtypes(prefs, true)) { + if (!mainSubtype.getLocale().equals("zz")) { + sortedLanguages.add(mainSubtype.getLocale()); + } + // Secondary language is added only if main language is selected and if system language is not enabled + if (!localeSystemOnly) { + for (Locale secondaryLocale : Settings.getSecondaryLocales(prefs, mainSubtype.getLocale())) { + sortedLanguages.add(secondaryLocale.toString()); + } + } + } + + for (Locale systemSubtype : SubtypeSettingsKt.getSystemLocales()) { + sortedLanguages.add(systemSubtype.toString()); + } + return sortedLanguages; + } + + /** + * Create a single User Dictionary Preference object, with its parameters set. + * @param localeString The locale for which this user dictionary is for. + * @return The corresponding preference. + */ + private Preference createUserDictionaryPreference(@NonNull final String localeString) { + final Preference newPref = new Preference(requireContext()); + + if (localeString.isEmpty()) { + newPref.setTitle(getString(R.string.user_dict_settings_all_languages)); + } else { + newPref.setTitle(UserDictionarySettings.getLocaleDisplayName(requireContext(), localeString)); + } + newPref.getExtras().putString("locale", localeString); + newPref.setIconSpaceReserved(false); + newPref.setFragment(UserDictionarySettings.class.getName()); + + return newPref; + } + + private void showAddWordFragment() { + final Bundle args = new Bundle(); + args.putInt(UserDictionaryAddWordContents.EXTRA_MODE, UserDictionaryAddWordContents.MODE_INSERT); + args.putString(UserDictionaryAddWordContents.EXTRA_WORD, ""); + args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, ""); + args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, ""); // Empty means "For all languages" + AppCompatActivity activity = (AppCompatActivity) requireActivity(); + activity.getSupportFragmentManager().beginTransaction() + .replace(android.R.id.content, UserDictionaryAddWordFragment.class, args) + .addToBackStack(null) + .commit(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionarySettings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionarySettings.java similarity index 50% rename from app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionarySettings.java rename to app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionarySettings.java index 7c4dd406b..7f092e554 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionarySettings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/UserDictionarySettings.java @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only */ -package org.dslul.openboard.inputmethod.latin.userdictionary; +package org.dslul.openboard.inputmethod.latin.settings; import android.content.ContentResolver; import android.content.Context; @@ -14,12 +14,11 @@ import android.os.Bundle; import android.provider.UserDictionary; import android.text.TextUtils; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AlphabetIndexer; +import android.widget.Button; +import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SectionIndexer; @@ -33,64 +32,65 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.ListFragment; import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; import java.util.Locale; -// Caveat: This class is basically taken from -// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionarySettings.java -// in order to deal with some devices that have issues with the user dictionary handling - public class UserDictionarySettings extends ListFragment { - public static final boolean IS_SHORTCUT_API_SUPPORTED = true; + private static final String[] QUERY_PROJECTION = + { UserDictionary.Words._ID, UserDictionary.Words.WORD, UserDictionary.Words.SHORTCUT, UserDictionary.Words.FREQUENCY }; - private static final String[] QUERY_PROJECTION_SHORTCUT_UNSUPPORTED = - { UserDictionary.Words._ID, UserDictionary.Words.WORD}; - private static final String[] QUERY_PROJECTION_SHORTCUT_SUPPORTED = - { UserDictionary.Words._ID, UserDictionary.Words.WORD, UserDictionary.Words.SHORTCUT}; - private static final String[] QUERY_PROJECTION = IS_SHORTCUT_API_SUPPORTED - ? QUERY_PROJECTION_SHORTCUT_SUPPORTED - : QUERY_PROJECTION_SHORTCUT_UNSUPPORTED; - - // The index of the shortcut in the above array. + // The index of the shortcut in the above array (1 is used for the words) private static final int INDEX_SHORTCUT = 2; + private static final int INDEX_WEIGHT = 3; - private static final String[] ADAPTER_FROM_SHORTCUT_UNSUPPORTED = { - UserDictionary.Words.WORD, + private static final String[] ADAPTER_FROM = { + UserDictionary.Words.WORD, UserDictionary.Words.SHORTCUT, UserDictionary.Words.FREQUENCY }; - private static final String[] ADAPTER_FROM_SHORTCUT_SUPPORTED = { - UserDictionary.Words.WORD, UserDictionary.Words.SHORTCUT + private static final int[] ADAPTER_TO = { + R.id.user_dictionary_item_word, R.id.user_dictionary_item_shortcut }; - private static final String[] ADAPTER_FROM = IS_SHORTCUT_API_SUPPORTED ? - ADAPTER_FROM_SHORTCUT_SUPPORTED : ADAPTER_FROM_SHORTCUT_UNSUPPORTED; - - private static final int[] ADAPTER_TO_SHORTCUT_UNSUPPORTED = { - android.R.id.text1, - }; - - private static final int[] ADAPTER_TO_SHORTCUT_SUPPORTED = { - android.R.id.text1, android.R.id.text2 - }; - - private static final int[] ADAPTER_TO = IS_SHORTCUT_API_SUPPORTED ? - ADAPTER_TO_SHORTCUT_SUPPORTED : ADAPTER_TO_SHORTCUT_UNSUPPORTED; - // Either the locale is empty (means the word is applicable to all locales) // or the word equals our current locale private static final String QUERY_SELECTION = UserDictionary.Words.LOCALE + "=?"; private static final String QUERY_SELECTION_ALL_LOCALES = UserDictionary.Words.LOCALE + " is null"; - private static final String DELETE_SELECTION_WITH_SHORTCUT = UserDictionary.Words.WORD - + "=? AND " + UserDictionary.Words.SHORTCUT + "=?"; - private static final String DELETE_SELECTION_WITHOUT_SHORTCUT = UserDictionary.Words.WORD - + "=? AND " + UserDictionary.Words.SHORTCUT + " is null OR " - + UserDictionary.Words.SHORTCUT + "=''"; - private static final String DELETE_SELECTION_SHORTCUT_UNSUPPORTED = - UserDictionary.Words.WORD + "=?"; + private static final String DELETE_SELECTION_WITH_SHORTCUT_AND_WITH_LOCALE = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.SHORTCUT + "=? AND " + + UserDictionary.Words.FREQUENCY + "=? AND " + + UserDictionary.Words.LOCALE + "=?"; - private static final int OPTIONS_MENU_ADD = Menu.FIRST; + private static final String DELETE_SELECTION_WITH_SHORTCUT_AND_WITH_ALL_LOCALES = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.SHORTCUT + "=? AND " + + UserDictionary.Words.FREQUENCY + "=? AND " + + UserDictionary.Words.LOCALE + " is null"; + + private static final String DELETE_SELECTION_WITHOUT_SHORTCUT_AND_WITH_LOCALE = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.SHORTCUT + " is null AND " + + UserDictionary.Words.FREQUENCY + "=? AND " + + UserDictionary.Words.LOCALE + "=? OR " + + + UserDictionary.Words.SHORTCUT + "='' AND " + + UserDictionary.Words.FREQUENCY + "=? AND " + + UserDictionary.Words.LOCALE + "=?"; + + private static final String DELETE_SELECTION_WITHOUT_SHORTCUT_AND_WITH_ALL_LOCALES = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.SHORTCUT + " is null AND " + + UserDictionary.Words.FREQUENCY + "=? AND " + + UserDictionary.Words.LOCALE + " is null OR " + + + UserDictionary.Words.SHORTCUT + "='' AND " + + UserDictionary.Words.FREQUENCY + "=? AND " + + UserDictionary.Words.LOCALE + " is null"; + + private static final String DELETE_WORD_AND_LOCALE = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.LOCALE + "=?"; + + private static final String DELETE_WORD_AND_ALL_LOCALES = UserDictionary.Words.WORD + "=? AND " + + UserDictionary.Words.LOCALE + " is null"; private Cursor mCursor; @@ -106,7 +106,10 @@ public class UserDictionarySettings extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.user_dictionary_preference_list_fragment, container, false); + LinearLayout view = (LinearLayout) inflater.inflate(R.layout.user_dictionary_settings_list_fragment, container, false); + Button addWordButton = view.findViewById(R.id.user_dictionary_add_word_button); + addWordButton.setOnClickListener(v -> showAddOrEditFragment(null, null, null)); + return view; } @Override @@ -125,12 +128,7 @@ public class UserDictionarySettings extends ListFragment { } else locale = localeFromIntent; mLocale = locale; - // WARNING: The following cursor is never closed! TODO: don't put that in a member, and - // make sure all cursors are correctly closed. Also, this comes from a call to - // Activity#managedQuery, which has been deprecated for a long time (and which FORBIDS - // closing the cursor, so take care when resolving this TODO). We should either use a - // regular query and close the cursor, or switch to a LoaderManager and a CursorLoader. - mCursor = createCursor(locale); + createCursor(locale); TextView emptyView = view.findViewById(android.R.id.empty); emptyView.setText(R.string.user_dict_settings_empty_text); @@ -139,30 +137,18 @@ public class UserDictionarySettings extends ListFragment { listView.setFastScrollEnabled(true); listView.setEmptyView(emptyView); - setHasOptionsMenu(true); - } - - @Override - public void onStart() { - super.onStart(); - // Show the language as a subtitle of the action bar final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); if (actionBar == null) return; - actionBar.setSubtitle(UserDictionarySettingsUtils.getLocaleDisplayName(getActivity(), mLocale)); - } - - @Override - public void onStop() { - super.onStop(); - // clear the subtitle - final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); - if (actionBar == null) return; - actionBar.setSubtitle(null); + actionBar.setTitle(R.string.edit_personal_dictionary); + actionBar.setSubtitle(getLocaleDisplayName(requireContext(), mLocale)); } @Override public void onResume() { super.onResume(); + final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); + if (actionBar == null) return; + ListAdapter adapter = getListView().getAdapter(); if (adapter instanceof MyAdapter listAdapter) { // The list view is forced refreshed here. This allows the changes done @@ -172,67 +158,56 @@ public class UserDictionarySettings extends ListFragment { } } - @SuppressWarnings("deprecation") - private Cursor createCursor(final String locale) { + private void createCursor(final String locale) { // Locale can be any of: // - The string representation of a locale, as returned by Locale#toString() // - The empty string. This means we want a cursor returning words valid for all locales. // - null. This means we want a cursor for the current locale, whatever this is. + // Note that this contrasts with the data inside the database, where NULL means "all - // locales" and there should never be an empty string. The confusion is called by the - // historical use of null for "all locales". + // locales" and there should never be an empty string. + // The confusion is called by the historical use of null for "all locales". + // TODO: it should be easy to make this more readable by making the special values - // human-readable, like "all_locales" and "current_locales" strings, provided they - // can be guaranteed not to match locales that may exist. + // human-readable, like "all_locales" and "current_locales" strings, provided they + // can be guaranteed not to match locales that may exist. + if ("".equals(locale)) { // Case-insensitive sort - return requireActivity().managedQuery(UserDictionary.Words.CONTENT_URI, QUERY_PROJECTION, + mCursor = requireContext().getContentResolver().query(UserDictionary.Words.CONTENT_URI, QUERY_PROJECTION, QUERY_SELECTION_ALL_LOCALES, null, "UPPER(" + UserDictionary.Words.WORD + ")"); + } else { + final String queryLocale = null != locale ? locale : Locale.getDefault().toString(); + mCursor = requireContext().getContentResolver().query(UserDictionary.Words.CONTENT_URI, QUERY_PROJECTION, + QUERY_SELECTION, new String[] { queryLocale }, + "UPPER(" + UserDictionary.Words.WORD + ")"); } - final String queryLocale = null != locale ? locale : Locale.getDefault().toString(); - return requireActivity().managedQuery(UserDictionary.Words.CONTENT_URI, QUERY_PROJECTION, - QUERY_SELECTION, new String[] { queryLocale }, - "UPPER(" + UserDictionary.Words.WORD + ")"); } private ListAdapter createAdapter() { - return new MyAdapter(getActivity(), R.layout.user_dictionary_item, mCursor, + return new MyAdapter(requireContext(), R.layout.user_dictionary_item, mCursor, ADAPTER_FROM, ADAPTER_TO); } @Override - public void onListItemClick(ListView l, View v, int position, long id) { + public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) { final String word = getWord(position); final String shortcut = getShortcut(position); + final String weight = getWeight(position); if (word != null) { - showAddOrEditDialog(word, shortcut); + showAddOrEditFragment(word, shortcut, weight); } } - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) { - final Locale systemLocale = getResources().getConfiguration().locale; - if (!TextUtils.isEmpty(mLocale) && !mLocale.equals(systemLocale.toString())) { - // Hide the add button for ICS because it doesn't support specifying a locale - // for an entry. This new "locale"-aware API has been added in conjunction - // with the shortcut API. - return; - } + public static String getLocaleDisplayName(Context context, String localeStr) { + if (TextUtils.isEmpty(localeStr)) { + // CAVEAT: localeStr should not be null because a null locale stands for the system + // locale in UserDictionary.Words.addWord. + return context.getResources().getString(R.string.user_dict_settings_all_languages); } - MenuItem actionItem = menu.add(0, OPTIONS_MENU_ADD, 0, R.string.user_dict_settings_add_menu_title) - .setIcon(R.drawable.ic_plus); - actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == OPTIONS_MENU_ADD) { - showAddOrEditDialog(null, null); - return true; - } - return false; + final Locale locale = LocaleUtils.constructLocaleFromString(localeStr); + return LocaleUtils.getLocaleDisplayNameInSystemLocale(locale, context); } /** @@ -240,13 +215,14 @@ public class UserDictionarySettings extends ListFragment { * @param editingWord the word to edit, or null if it's an add. * @param editingShortcut the shortcut for this entry, or null if none. */ - private void showAddOrEditDialog(final String editingWord, final String editingShortcut) { + private void showAddOrEditFragment(final String editingWord, final String editingShortcut, final String editingWeight) { final Bundle args = new Bundle(); args.putInt(UserDictionaryAddWordContents.EXTRA_MODE, null == editingWord ? UserDictionaryAddWordContents.MODE_INSERT : UserDictionaryAddWordContents.MODE_EDIT); args.putString(UserDictionaryAddWordContents.EXTRA_WORD, editingWord); args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, editingShortcut); + args.putString(UserDictionaryAddWordContents.EXTRA_WEIGHT, editingWeight); args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mLocale); AppCompatActivity activity = (AppCompatActivity) requireActivity(); activity.getSupportFragmentManager().beginTransaction() @@ -256,57 +232,82 @@ public class UserDictionarySettings extends ListFragment { } private String getWord(final int position) { - if (null == mCursor) return null; - mCursor.moveToPosition(position); - // Handle a possible race-condition - if (mCursor.isAfterLast()) return null; - - return mCursor.getString( - mCursor.getColumnIndexOrThrow(UserDictionary.Words.WORD)); + return getEntry(position, UserDictionary.Words.WORD); } private String getShortcut(final int position) { - if (!IS_SHORTCUT_API_SUPPORTED) return null; + return getEntry(position, UserDictionary.Words.SHORTCUT); + } + + private String getWeight(final int position) { + return getEntry(position, UserDictionary.Words.FREQUENCY); + } + + private String getEntry(final int position, final String column) { if (null == mCursor) return null; mCursor.moveToPosition(position); // Handle a possible race-condition if (mCursor.isAfterLast()) return null; - return mCursor.getString( - mCursor.getColumnIndexOrThrow(UserDictionary.Words.SHORTCUT)); + return mCursor.getString(mCursor.getColumnIndexOrThrow(column)); } - public static void deleteWord(final String word, final String shortcut, - final ContentResolver resolver) { - if (!IS_SHORTCUT_API_SUPPORTED) { - resolver.delete(UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_SHORTCUT_UNSUPPORTED, - new String[] { word }); - } else if (TextUtils.isEmpty(shortcut)) { - resolver.delete( - UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITHOUT_SHORTCUT, - new String[] { word }); + public static void deleteWordInEditMode(final String word, final String shortcut, final String weight, + final String locale, final ContentResolver resolver) { + if (TextUtils.isEmpty(shortcut)) { + if ("".equals(locale)) { + resolver.delete( + UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITHOUT_SHORTCUT_AND_WITH_ALL_LOCALES, + new String[] { word, weight }); + } else { + resolver.delete( + UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITHOUT_SHORTCUT_AND_WITH_LOCALE, + new String[] { word, weight, locale }); + } } else { - resolver.delete( - UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITH_SHORTCUT, - new String[] { word, shortcut }); + if ("".equals(locale)) { + resolver.delete( + UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITH_SHORTCUT_AND_WITH_ALL_LOCALES, + new String[] { word, shortcut, weight }); + } else { + resolver.delete( + UserDictionary.Words.CONTENT_URI, DELETE_SELECTION_WITH_SHORTCUT_AND_WITH_LOCALE, + new String[] { word, shortcut, weight, locale }); + } } } - private static class MyAdapter extends SimpleCursorAdapter implements SectionIndexer { + public static void deleteWord(final String word, final String locale, final ContentResolver resolver) { + if ("".equals(locale)) { + resolver.delete( + UserDictionary.Words.CONTENT_URI, DELETE_WORD_AND_ALL_LOCALES, + new String[] { word }); + } else { + resolver.delete( + UserDictionary.Words.CONTENT_URI, DELETE_WORD_AND_LOCALE, + new String[] { word, locale }); + } + } + + private class MyAdapter extends SimpleCursorAdapter implements SectionIndexer { private AlphabetIndexer mIndexer; private final ViewBinder mViewBinder = (v, c, columnIndex) -> { - if (!IS_SHORTCUT_API_SUPPORTED) { - // just let SimpleCursorAdapter set the view values - return false; - } + final String weightTitle = String.format(getString(R.string.user_dict_settings_add_weight_value)); + final String weightText = c.getString(INDEX_WEIGHT); + final String weight = weightTitle + " " + weightText; + + final String shortcutTitle = String.format(getString(R.string.user_dict_settings_add_shortcut_option_name)); + final String shortcutText = c.getString(INDEX_SHORTCUT); + final String shortcut = shortcutTitle + " " + shortcutText; + + final String weightAndShortcut = weight + " | " + shortcut; + if (columnIndex == INDEX_SHORTCUT) { - final String shortcut = c.getString(INDEX_SHORTCUT); - if (TextUtils.isEmpty(shortcut)) { - v.setVisibility(View.GONE); + if (TextUtils.isEmpty(shortcutText)) { + ((TextView)v).setText(weight); } else { - ((TextView)v).setText(shortcut); - v.setVisibility(View.VISIBLE); + ((TextView)v).setText(weightAndShortcut); } v.invalidate(); return true; @@ -342,5 +343,4 @@ public class UserDictionarySettings extends ListFragment { return null == mIndexer ? null : mIndexer.getSections(); } } -} - +} \ No newline at end of file diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java deleted file mode 100644 index 9030d448a..000000000 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * modified - * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only - */ - -package org.dslul.openboard.inputmethod.latin.userdictionary; - -import android.app.Activity; -import android.content.ContentResolver; -import android.content.Context; -import android.database.Cursor; -import android.os.Bundle; -import android.provider.UserDictionary; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; - -import androidx.annotation.Nullable; - -import org.dslul.openboard.inputmethod.latin.R; -import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; - -import java.util.ArrayList; -import java.util.Locale; -import java.util.TreeSet; - -// Caveat: This class is basically taken from -// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java -// in order to deal with some devices that have issues with the user dictionary handling - -/** - * A container class to factor common code to UserDictionaryAddWordFragment - * and UserDictionaryAddWordActivity. - */ -public class UserDictionaryAddWordContents { - public static final String EXTRA_MODE = "mode"; - public static final String EXTRA_WORD = "word"; - public static final String EXTRA_SHORTCUT = "shortcut"; - public static final String EXTRA_LOCALE = "locale"; - public static final String EXTRA_ORIGINAL_WORD = "originalWord"; - public static final String EXTRA_ORIGINAL_SHORTCUT = "originalShortcut"; - - public static final int MODE_EDIT = 0; - public static final int MODE_INSERT = 1; - - /* package */ static final int CODE_WORD_ADDED = 0; - /* package */ static final int CODE_CANCEL = 1; - /* package */ static final int CODE_ALREADY_PRESENT = 2; - - private static final int FREQUENCY_FOR_USER_DICTIONARY_ADDS = 250; - - private final int mMode; // Either MODE_EDIT or MODE_INSERT - private final EditText mWordEditText; - private final EditText mShortcutEditText; - private String mLocale; - private final String mOldWord; - private final String mOldShortcut; - private String mSavedWord; - private String mSavedShortcut; - - /* package */ UserDictionaryAddWordContents(final View view, final Bundle args) { - mWordEditText = view.findViewById(R.id.user_dictionary_add_word_text); - mShortcutEditText = view.findViewById(R.id.user_dictionary_add_shortcut); - if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) { - mShortcutEditText.setVisibility(View.GONE); - view.findViewById(R.id.user_dictionary_add_shortcut_label).setVisibility(View.GONE); - } - final String word = args.getString(EXTRA_WORD); - if (null != word) { - mWordEditText.setText(word); - // Use getText in case the edit text modified the text we set. This happens when - // it's too long to be edited. - mWordEditText.setSelection(mWordEditText.getText().length()); - } - if (UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) { - final String shortcut = args.getString(EXTRA_SHORTCUT); - if (null != shortcut && null != mShortcutEditText) { - mShortcutEditText.setText(shortcut); - } - mOldShortcut = args.getString(EXTRA_SHORTCUT); - } else { - mOldShortcut = null; - } - mMode = args.getInt(EXTRA_MODE); // default return value for #getInt() is 0 = MODE_EDIT - mOldWord = args.getString(EXTRA_WORD); - updateLocale(args.getString(EXTRA_LOCALE)); - } - - /* package */ UserDictionaryAddWordContents(final View view, - final UserDictionaryAddWordContents oldInstanceToBeEdited) { - mWordEditText = view.findViewById(R.id.user_dictionary_add_word_text); - mShortcutEditText = view.findViewById(R.id.user_dictionary_add_shortcut); - mMode = MODE_EDIT; - mOldWord = oldInstanceToBeEdited.mSavedWord; - mOldShortcut = oldInstanceToBeEdited.mSavedShortcut; - updateLocale(mLocale); - } - - // locale may be null, this means default locale - // It may also be the empty string, which means "all locales" - /* package */ void updateLocale(final String locale) { - mLocale = null == locale ? Locale.getDefault().toString() : locale; - } - - /* package */ void saveStateIntoBundle(final Bundle outState) { - outState.putString(EXTRA_WORD, mWordEditText.getText().toString()); - outState.putString(EXTRA_ORIGINAL_WORD, mOldWord); - if (null != mShortcutEditText) { - outState.putString(EXTRA_SHORTCUT, mShortcutEditText.getText().toString()); - } - if (null != mOldShortcut) { - outState.putString(EXTRA_ORIGINAL_SHORTCUT, mOldShortcut); - } - outState.putString(EXTRA_LOCALE, mLocale); - } - - /* package */ void delete(final Context context) { - if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) { - // Mode edit: remove the old entry. - final ContentResolver resolver = context.getContentResolver(); - UserDictionarySettings.deleteWord(mOldWord, mOldShortcut, resolver); - } - // If we are in add mode, nothing was added, so we don't need to do anything. - } - - /* package */ - int apply(final Context context, final Bundle outParameters) { - if (null != outParameters) saveStateIntoBundle(outParameters); - final ContentResolver resolver = context.getContentResolver(); - if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) { - // Mode edit: remove the old entry. - UserDictionarySettings.deleteWord(mOldWord, mOldShortcut, resolver); - } - final String newWord = mWordEditText.getText().toString(); - final String newShortcut; - if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) { - newShortcut = null; - } else if (null == mShortcutEditText) { - newShortcut = null; - } else { - final String tmpShortcut = mShortcutEditText.getText().toString(); - if (TextUtils.isEmpty(tmpShortcut)) { - newShortcut = null; - } else { - newShortcut = tmpShortcut; - } - } - if (TextUtils.isEmpty(newWord)) { - // If the word is somehow empty, don't insert it. - return CODE_CANCEL; - } - mSavedWord = newWord; - mSavedShortcut = newShortcut; - // If there is no shortcut, and the word already exists in the database, then we - // should not insert, because either A. the word exists with no shortcut, in which - // case the exact same thing we want to insert is already there, or B. the word - // exists with at least one shortcut, in which case it has priority on our word. - if (TextUtils.isEmpty(newShortcut) && hasWord(newWord, context)) { - return CODE_ALREADY_PRESENT; - } - - // Disallow duplicates. If the same word with no shortcut is defined, remove it; if - // the same word with the same shortcut is defined, remove it; but we don't mind if - // there is the same word with a different, non-empty shortcut. - UserDictionarySettings.deleteWord(newWord, null, resolver); - if (!TextUtils.isEmpty(newShortcut)) { - // If newShortcut is empty we just deleted this, no need to do it again - UserDictionarySettings.deleteWord(newWord, newShortcut, resolver); - } - - // In this class we use the empty string to represent 'all locales' and mLocale cannot - // be null. However the addWord method takes null to mean 'all locales'. - UserDictionary.Words.addWord(context, newWord, - FREQUENCY_FOR_USER_DICTIONARY_ADDS, newShortcut, TextUtils.isEmpty(mLocale) ? - null : LocaleUtils.constructLocaleFromString(mLocale)); - - return CODE_WORD_ADDED; - } - - private static final String[] HAS_WORD_PROJECTION = { UserDictionary.Words.WORD }; - private static final String HAS_WORD_SELECTION_ONE_LOCALE = UserDictionary.Words.WORD - + "=? AND " + UserDictionary.Words.LOCALE + "=?"; - private static final String HAS_WORD_SELECTION_ALL_LOCALES = UserDictionary.Words.WORD - + "=? AND " + UserDictionary.Words.LOCALE + " is null"; - private boolean hasWord(final String word, final Context context) { - final Cursor cursor; - // mLocale == "" indicates this is an entry for all languages. Here, mLocale can't - // be null at all (it's ensured by the updateLocale method). - if ("".equals(mLocale)) { - cursor = context.getContentResolver().query(UserDictionary.Words.CONTENT_URI, - HAS_WORD_PROJECTION, HAS_WORD_SELECTION_ALL_LOCALES, - new String[] { word }, null /* sort order */); - } else { - cursor = context.getContentResolver().query(UserDictionary.Words.CONTENT_URI, - HAS_WORD_PROJECTION, HAS_WORD_SELECTION_ONE_LOCALE, - new String[] { word, mLocale }, null /* sort order */); - } - try { - if (null == cursor) return false; - return cursor.getCount() > 0; - } finally { - if (null != cursor) cursor.close(); - } - } - - public static class LocaleRenderer { - private final String mLocaleString; - private final String mDescription; - - public LocaleRenderer(final Context context, @Nullable final String localeString) { - mLocaleString = localeString; - if (null == localeString) { - mDescription = context.getString(R.string.user_dict_settings_more_languages); - } else if ("".equals(localeString)) { - mDescription = context.getString(R.string.user_dict_settings_all_languages); - } else { - mDescription = LocaleUtils.constructLocaleFromString(localeString).getDisplayName(); - } - } - @Override - public String toString() { - return mDescription; - } - public String getLocaleString() { - return mLocaleString; - } - // "More languages..." is null ; "All languages" is the empty string. - public boolean isMoreLanguages() { - return null == mLocaleString; - } - } - - private static void addLocaleDisplayNameToList(final Context context, - final ArrayList list, final String locale) { - if (null != locale) { - list.add(new LocaleRenderer(context, locale)); - } - } - - // Helper method to get the list of locales to display for this word - public ArrayList getLocalesList(final Activity activity) { - final TreeSet locales = UserDictionaryList.getUserDictionaryLocalesSet(activity); - // Remove our locale if it's in, because we're always gonna put it at the top - locales.remove(mLocale); // mLocale may not be null - final String systemLocale = Locale.getDefault().toString(); - // The system locale should be inside. We want it at the 2nd spot. - locales.remove(systemLocale); // system locale may not be null - locales.remove(""); // Remove the empty string if it's there - final ArrayList localesList = new ArrayList<>(); - // Add the passed locale, then the system locale at the top of the list. Add an - // "all languages" entry at the bottom of the list. - addLocaleDisplayNameToList(activity, localesList, mLocale); - if (!systemLocale.equals(mLocale)) { - addLocaleDisplayNameToList(activity, localesList, systemLocale); - } - for (final String l : locales) { - // TODO: sort in unicode order - addLocaleDisplayNameToList(activity, localesList, l); - } - if (!"".equals(mLocale)) { - // If mLocale is "", then we already inserted the "all languages" item, so don't do it - addLocaleDisplayNameToList(activity, localesList, ""); // meaning: all languages - } - localesList.add(new LocaleRenderer(activity, null)); // meaning: select another locale - return localesList; - } - - public String getCurrentUserDictionaryLocale() { - return mLocale; - } -} - diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java deleted file mode 100644 index 21a354d65..000000000 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * modified - * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only - */ - -package org.dslul.openboard.inputmethod.latin.userdictionary; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Spinner; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.Fragment; - -import org.dslul.openboard.inputmethod.latin.R; -import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryAddWordContents.LocaleRenderer; -import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryLocalePicker.LocationChangedListener; - -import java.util.ArrayList; -import java.util.Locale; - -// Caveat: This class is basically taken from -// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java -// in order to deal with some devices that have issues with the user dictionary handling - -/** - * Fragment to add a word/shortcut to the user dictionary. - * - * As opposed to the UserDictionaryActivity, this is only invoked within Settings - * from the UserDictionarySettings. - */ -public class UserDictionaryAddWordFragment extends Fragment - implements AdapterView.OnItemSelectedListener, LocationChangedListener { - - private static final int OPTIONS_MENU_ADD = Menu.FIRST; - private static final int OPTIONS_MENU_DELETE = Menu.FIRST + 1; - - private UserDictionaryAddWordContents mContents; - private View mRootView; - private boolean mIsDeleting = false; - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - setHasOptionsMenu(true); - final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); - if (actionBar == null) return; - actionBar.setTitle(R.string.edit_personal_dictionary); - } - - @Override - public View onCreateView(final LayoutInflater inflater, final ViewGroup container, - final Bundle savedState) { - mRootView = inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null); - mIsDeleting = false; - // If we have a non-null mContents object, it's the old value before a configuration - // change (eg rotation) so we need to use its values. Otherwise, read from the arguments. - if (null == mContents) { - mContents = new UserDictionaryAddWordContents(mRootView, getArguments()); - } else { - // We create a new mContents object to account for the new situation : a word has - // been added to the user dictionary when we started rotating, and we are now editing - // it. That means in particular if the word undergoes any change, the old version should - // be updated, so the mContents object needs to switch to EDIT mode if it was in - // INSERT mode. - mContents = new UserDictionaryAddWordContents(mRootView, mContents); - } - return mRootView; - } - - @Override - public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) { - final MenuItem actionItemAdd = menu.add(0, OPTIONS_MENU_ADD, 0, - R.string.user_dict_settings_add_menu_title).setIcon(R.drawable.ic_plus); - actionItemAdd.setShowAsAction( - MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); - final MenuItem actionItemDelete = menu.add(0, OPTIONS_MENU_DELETE, 0, - R.string.user_dict_settings_delete).setIcon(android.R.drawable.ic_menu_delete); - actionItemDelete.setShowAsAction( - MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); - } - - /** - * Callback for the framework when a menu option is pressed. - * - * @param item the item that was pressed - * @return false to allow normal menu processing to proceed, true to consume it here - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == OPTIONS_MENU_ADD) { - // added the entry in "onPause" - requireActivity().onBackPressed(); - return true; - } - if (item.getItemId() == OPTIONS_MENU_DELETE) { - mContents.delete(getActivity()); - mIsDeleting = true; - requireActivity().onBackPressed(); - return true; - } - return false; - } - - @Override - public void onResume() { - super.onResume(); - // We are being shown: display the word - updateSpinner(); - } - - @Override - public void onStart() { - super.onStart(); - final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); - if (actionBar == null) return; - actionBar.setTitle(R.string.user_dict_settings_add_dialog_title); - actionBar.setSubtitle(UserDictionarySettingsUtils.getLocaleDisplayName(getActivity(), mContents.getCurrentUserDictionaryLocale())); - } - - @Override - public void onStop() { - super.onStop(); - final ActionBar actionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar(); - if (actionBar == null) return; - actionBar.setSubtitle(null); - } - - private void updateSpinner() { - final ArrayList localesList = mContents.getLocalesList(getActivity()); - - final Spinner localeSpinner = mRootView.findViewById(R.id.user_dictionary_add_locale); - final ArrayAdapter adapter = new ArrayAdapter<>( - requireActivity(), android.R.layout.simple_spinner_item, localesList); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - localeSpinner.setAdapter(adapter); - localeSpinner.setOnItemSelectedListener(this); - } - - @Override - public void onPause() { - super.onPause(); - // We are being hidden: commit changes to the user dictionary, unless we were deleting it - if (!mIsDeleting) { - mContents.apply(getActivity(), null); - } - } - - @Override - public void onItemSelected(final AdapterView parent, final View view, final int pos, - final long id) { - final LocaleRenderer locale = (LocaleRenderer)parent.getItemAtPosition(pos); - if (locale.isMoreLanguages()) { - AppCompatActivity activity = (AppCompatActivity) requireActivity(); - activity.getSupportFragmentManager().beginTransaction() - .replace(android.R.id.content, new UserDictionaryLocalePicker()) - .addToBackStack(null) - .commit(); - } else { - mContents.updateLocale(locale.getLocaleString()); - } - } - - @Override - public void onNothingSelected(final AdapterView parent) { - // I'm not sure we can come here, but if we do, that's the right thing to do. - final Bundle args = getArguments(); - if (args == null) return; - mContents.updateLocale(args.getString(UserDictionaryAddWordContents.EXTRA_LOCALE)); - } - - // Called by the locale picker - @Override - public void onLocaleSelected(final Locale locale) { - mContents.updateLocale(locale.toString()); - requireActivity().onBackPressed(); - } -} - diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryList.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryList.java deleted file mode 100644 index 51ddc9c90..000000000 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryList.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * modified - * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only - */ - -package org.dslul.openboard.inputmethod.latin.userdictionary; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.os.Build; -import android.os.Bundle; -import android.provider.UserDictionary; -import android.text.TextUtils; -import android.view.inputmethod.InputMethodInfo; -import android.view.inputmethod.InputMethodManager; -import android.view.inputmethod.InputMethodSubtype; - -import androidx.annotation.Nullable; -import androidx.preference.Preference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceGroup; - -import org.dslul.openboard.inputmethod.latin.R; -import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; - -import java.util.List; -import java.util.Locale; -import java.util.TreeSet; - -// Caveat: This class is basically taken from -// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryList.java -// in order to deal with some devices that have issues with the user dictionary handling - -public class UserDictionaryList extends PreferenceFragmentCompat { - - public static final String USER_DICTIONARY_SETTINGS_INTENT_ACTION = - "android.settings.USER_DICTIONARY_SETTINGS"; - - @Override - public void onCreatePreferences(@Nullable Bundle bundle, @Nullable String s) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - getPreferenceManager().setStorageDeviceProtected(); - } - setPreferenceScreen(getPreferenceManager().createPreferenceScreen(requireContext())); - } - - public static TreeSet getUserDictionaryLocalesSet(final Activity activity) { - final Cursor cursor = activity.getContentResolver().query(UserDictionary.Words.CONTENT_URI, - new String[] { UserDictionary.Words.LOCALE }, - null, null, null); - final TreeSet localeSet = new TreeSet<>(); - if (null == cursor) { - // The user dictionary service is not present or disabled. Return null. - return null; - } - try { - if (cursor.moveToFirst()) { - final int columnIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE); - do { - final String locale = cursor.getString(columnIndex); - localeSet.add(null != locale ? locale : ""); - } while (cursor.moveToNext()); - } - } finally { - cursor.close(); - } - if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) { - // For ICS, we need to show "For all languages" in case that the keyboard locale - // is different from the system locale - localeSet.add(""); - } - - final InputMethodManager imm = - (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); - final List imis = imm.getEnabledInputMethodList(); - for (final InputMethodInfo imi : imis) { - final List subtypes = - imm.getEnabledInputMethodSubtypeList( - imi, true /* allowsImplicitlySelectedSubtypes */); - for (InputMethodSubtype subtype : subtypes) { - final String locale = subtype.getLocale(); - if (!TextUtils.isEmpty(locale)) { - localeSet.add(locale); - } - } - } - - // We come here after we have collected locales from existing user dictionary entries and - // enabled subtypes. If we already have the locale-without-country version of the system - // locale, we don't add the system locale to avoid confusion even though it's technically - // correct to add it. - if (!localeSet.contains(Locale.getDefault().getLanguage())) { - localeSet.add(Locale.getDefault().toString()); - } - - return localeSet; - } - - /** - * Creates the entries that allow the user to go into the user dictionary for each locale. - * @param userDictGroup The group to put the settings in. - */ - protected void createUserDictSettings(final PreferenceGroup userDictGroup) { - userDictGroup.removeAll(); - final TreeSet localeSet = UserDictionaryList.getUserDictionaryLocalesSet(requireActivity()); - if (localeSet == null) { - userDictGroup.addPreference(createUserDictionaryPreference(null)); - return; - } - - if (localeSet.size() > 1) { - // Have an "All languages" entry in the languages list if there are two or more active - // languages - localeSet.add(""); - } - - if (localeSet.isEmpty()) { - userDictGroup.addPreference(createUserDictionaryPreference(null)); - } else { - for (String locale : localeSet) { - userDictGroup.addPreference(createUserDictionaryPreference(locale)); - } - } - } - - /** - * Create a single User Dictionary Preference object, with its parameters set. - * @param localeString The locale for which this user dictionary is for. - * @return The corresponding preference. - */ - protected Preference createUserDictionaryPreference(@Nullable final String localeString) { - final Preference newPref = new Preference(requireContext()); - final Intent intent = new Intent(USER_DICTIONARY_SETTINGS_INTENT_ACTION); - if (null == localeString) { - newPref.setTitle(Locale.getDefault().getDisplayName()); - } else { - if (localeString.isEmpty()) { - newPref.setTitle(getString(R.string.user_dict_settings_all_languages)); - } else { - newPref.setTitle( - LocaleUtils.constructLocaleFromString(localeString).getDisplayName()); - } - intent.putExtra("locale", localeString); - newPref.getExtras().putString("locale", localeString); - } - newPref.setIntent(intent); - newPref.setFragment(UserDictionarySettings.class.getName()); - return newPref; - } - - @Override - public void onResume() { - super.onResume(); - createUserDictSettings(getPreferenceScreen()); - } -} - diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryLocalePicker.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryLocalePicker.java deleted file mode 100644 index cd9e18597..000000000 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionaryLocalePicker.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * modified - * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only - */ - -package org.dslul.openboard.inputmethod.latin.userdictionary; - -import androidx.fragment.app.Fragment; - -import java.util.Locale; - -// Caveat: This class is basically taken from -// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryLocalePicker.java -// in order to deal with some devices that have issues with the user dictionary handling - -public class UserDictionaryLocalePicker extends Fragment { - public UserDictionaryLocalePicker() { - super(); - // TODO: implement - } - - public interface LocationChangedListener { - void onLocaleSelected(Locale locale); - } -} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionarySettingsUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionarySettingsUtils.java deleted file mode 100644 index 3cd79f712..000000000 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/userdictionary/UserDictionarySettingsUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * modified - * SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only - */ - -package org.dslul.openboard.inputmethod.latin.userdictionary; - -import android.content.Context; -import android.text.TextUtils; - -import org.dslul.openboard.inputmethod.latin.R; -import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; - -import java.util.Locale; - -/** - * Utilities of the user dictionary settings - * TODO: We really want to move these utilities to a static library. - */ -public class UserDictionarySettingsUtils { - public static String getLocaleDisplayName(Context context, String localeStr) { - if (TextUtils.isEmpty(localeStr)) { - // CAVEAT: localeStr should not be null because a null locale stands for the system - // locale in UserDictionary.Words.addWord. - return context.getResources().getString(R.string.user_dict_settings_all_languages); - } - final Locale locale = LocaleUtils.constructLocaleFromString(localeStr); - final Locale systemLocale = context.getResources().getConfiguration().locale; - return locale.getDisplayName(systemLocale); - } -} diff --git a/app/src/main/res/drawable/ic_save.xml b/app/src/main/res/drawable/ic_save.xml new file mode 100644 index 000000000..a9701c3e4 --- /dev/null +++ b/app/src/main/res/drawable/ic_save.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_user_dictionary_add_word.xml b/app/src/main/res/drawable/ic_user_dictionary_add_word.xml new file mode 100644 index 000000000..c9a0dd09e --- /dev/null +++ b/app/src/main/res/drawable/ic_user_dictionary_add_word.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/ic_user_dictionary_edit.xml b/app/src/main/res/drawable/ic_user_dictionary_edit.xml new file mode 100644 index 000000000..b88909504 --- /dev/null +++ b/app/src/main/res/drawable/ic_user_dictionary_edit.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/user_dictionary_add_word_fullscreen.xml b/app/src/main/res/layout/user_dictionary_add_word_fullscreen.xml index 922f0cbf2..e37121397 100644 --- a/app/src/main/res/layout/user_dictionary_add_word_fullscreen.xml +++ b/app/src/main/res/layout/user_dictionary_add_word_fullscreen.xml @@ -1,75 +1,138 @@ - + android:layout_height="match_parent" + android:paddingHorizontal="10dp"> - + + + + + + + + + + + + + + + + + + + + + + + + android:paddingHorizontal="5dp" + android:paddingBottom="10dp" + android:layout_gravity="center" + android:layout_alignParentBottom="true" + android:baselineAligned="false"> - - - - - - + android:layout_weight="1" + android:layout_marginHorizontal="10dp" + android:text="@string/delete_dict" + android:textColor="@android:color/white"> + - - - - - - - - + android:layout_weight="1" + android:drawableEnd="@drawable/ic_save" + android:layout_marginHorizontal="10dp" + android:text="@string/save" + android:textColor="@android:color/white"> + + + diff --git a/app/src/main/res/layout/user_dictionary_item.xml b/app/src/main/res/layout/user_dictionary_item.xml index 8f03c78c7..1e8a8d335 100644 --- a/app/src/main/res/layout/user_dictionary_item.xml +++ b/app/src/main/res/layout/user_dictionary_item.xml @@ -1,42 +1,52 @@ + android:layout_weight="1" + android:paddingVertical="4dp" > + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="?android:attr/textColorPrimary" /> + android:textColor="?android:attr/textColorSecondary" /> + + + diff --git a/app/src/main/res/layout/user_dictionary_preference_list_fragment.xml b/app/src/main/res/layout/user_dictionary_preference_list_fragment.xml deleted file mode 100644 index 66aa552d4..000000000 --- a/app/src/main/res/layout/user_dictionary_preference_list_fragment.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/user_dictionary_settings_list_fragment.xml b/app/src/main/res/layout/user_dictionary_settings_list_fragment.xml new file mode 100644 index 000000000..40d0eeddb --- /dev/null +++ b/app/src/main/res/layout/user_dictionary_settings_list_fragment.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index 311e71faf..da065166e 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -99,8 +99,6 @@ "Wys program-ikoon in die lanseerpoort" "Voeg woordeboeke by" "Instellings vir woordeboeke" - "Gebruikerwoordeboeke" - "Gebruikerwoordeboek" "Woordeboek beskikbaar" "Kan nie aan woordeboekdiens koppel nie" "Geen woordeboeke beskikbaar nie" @@ -112,21 +110,14 @@ Weergawe %1$s "Voeg by" "Voeg by woordeboek" - "Frase" - "Nog opsies" - "Minder opsies" - "Woord:" "Kortpad:" "Taal:" "Tik \'n woord in" "Opsionele kortpad" "Redigeer woord" - "Redigeer" - "Vee uit" "Jy het geen woorde in die gebruikerwoordeboek nie. Tik op die Voeg By-knoppie (+) om \'n woord by te voeg." "Vir alle tale" "Nog tale…" - "Vee uit" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Knipbord geskiedenis Voorstelle diff --git a/app/src/main/res/values-am/strings.xml b/app/src/main/res/values-am/strings.xml index 78eca69e1..7605b6a2f 100644 --- a/app/src/main/res/values-am/strings.xml +++ b/app/src/main/res/values-am/strings.xml @@ -99,8 +99,6 @@ "የመተግበሪያ አዶውን በማስጀመሪያው ውስጥ አሳይ" "ጭማሪ መዝገበ-ቃላት" "የመዝገበ-ቃላት ቅንብሮች" - "የተጠቃሚ መዝገበ-ቃላት" - "የተጠቃሚ መዝገበ-ቃላት" "መዝገበ-ቃላት ይገኛል" "ወደ መዝገበ-ቃላት አገልገሎት ማገናኘት ላይ ችግር" "ምንም መዝገበ-ቃላት የሉም" @@ -112,21 +110,14 @@ "ሥሪት %1$s" "አክል" "ወደ መዝገበ-ቃላት አክል" - "ሐረግ" - "ተጨማሪ አማራጮች" - "ያነሱ አማራጮች" - "ቃል፦" "አቋራጭ፦" "ቋንቋ፦" "አንድ ቃል ይተይቡ" "አማራጭ አቋራጭ" "ቃሉን አርትዕ" - "አርትዕ" - "ሰርዝ" "በተጠቃሚ መዝገበ-ቃላቱ ውስጥ ምንም ቃላት የለዎትም። አንድ ቃል ለማከል የአክል (+) አዝራሩን መታ ያድርጉ።" "ለሁሉም ቋንቋዎች" "ተጨማሪ ቋንቋዎች…" - "ሰርዝ" " ሀለሐመሠረሰሸቀበቨተቸኀነኘአከኸወዐዘዠየደጀገጠጨጰጸፀፈፐ" "የሥርዓት ቋንቋዎችን ይጠቀሙ" "የግቤት ስልት ምረጥ" diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 05b56d5d0..91ccbb2cd 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -99,8 +99,6 @@ "عرض رمز التطبيق في المشغل" "القواميس الإضافية" "إعدادات القواميس" - "قواميس المستخدم" - "قاموس المستخدم" "القاموس متاح" "مشكلة في الاتصال بخدمة القاموس" "لا تتوفر أي قواميس" @@ -112,21 +110,14 @@ الإصدار %1$s "إضافة" "إضافة إلى القاموس" - "عبارة" - "خيارات أكثر" - "خيارات أقل" - "الكلمة:" "الاختصار:" "اللغة:" "اكتب كلمة" "اختصار اختياري" "تعديل كلمة" - "تعديل" - "حذف" "ليس هناك أي كلمات في قاموس المستخدم. لإضافة كلمة، انقر على زر الإضافة (+)." "لجميع اللغات" "مزيد من اللغات..." - "حذف" " أ ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي" مفتاح الرموز التعبيرية بلا حدود diff --git a/app/src/main/res/values-as/strings.xml b/app/src/main/res/values-as/strings.xml index 66692ef00..9673f5d2f 100644 --- a/app/src/main/res/values-as/strings.xml +++ b/app/src/main/res/values-as/strings.xml @@ -68,8 +68,6 @@ "লঞ্চাৰত এপ্লিকেশ্বন আইকন দেখুৱাওক" "অতিৰিক্ত অভিধান" "অভিধানসমূহৰ বাবে ছেটিংসমূহ" - "ব্যৱহাৰকাৰীৰ অভিধানসমূহ" - "ব্যৱহাৰকাৰীৰ অভিধান" "অভিধান উপলব্ধ" "অভিধান সেৱাৰ লগত সংযোগ কৰোঁতে সমস্যাৰ সৃষ্টি হৈছে" "কোনো অভিধান নাই" @@ -80,20 +78,13 @@ "মচক" "যোগ কৰক" "অভিধানত যোগ কৰক" - "বাক্যাংশ" - "অধিক বিকল্প" - "কম বিকল্প" - "শব্দ:" "শ্বৰ্টকাট:" "ভাষা:" "কোনো শব্দ লিখক" "ঐচ্ছিক শ্বৰ্টকাট" "শব্দ সম্পাদনা কৰক" - "সম্পাদনা কৰক" - "মচক" "সকলো ভাষাৰ বাবে" "অধিক ভাষা…" - "মচক" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "আনডু কৰক" "ৰিডু" diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 2181c59e2..7a82d4152 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -99,8 +99,6 @@ "Başlatma panelində tətbiq ikonasını göstər" "Əlavə lüğətlər" "Lüğət üçün ayarlar" - "İstifadəçi lüğətləri" - "İstifadəçi lüğəti" "Lüğət mövcuddur" "Lüğət xidmətinə bağlantı problemi" "Lüğət mövcud deyil" @@ -112,21 +110,14 @@ "%1$s nömrəli versiya" "Əlavə edin" "Lüğətə əlavə edin" - "İfadə" - "Daha çox seçim" - "Daha az seçim" - "Söz:" "Qısayol:" "Dil:" "Bir söz yazın" "Qısayol" "Sözü redaktə edin" - "Düzəliş edin" - "Silin" "İstifadəçi lüğətinizdə heç bir söz yoxdur. Söz əlavə etmək üçün Əlavə et (+) düyməsinə tıklayın." "Bütün dillər üçün" "Digər dillər​​..." - "Silin" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Pano keçmişi OpenBoard Yazı Yoxlayıcısı diff --git a/app/src/main/res/values-b+sr+Latn/strings.xml b/app/src/main/res/values-b+sr+Latn/strings.xml index de4bd1aa0..d40997010 100644 --- a/app/src/main/res/values-b+sr+Latn/strings.xml +++ b/app/src/main/res/values-b+sr+Latn/strings.xml @@ -99,8 +99,6 @@ "Ikona aplikacije se prikazuje u pokretaču" "Pomoćni rečnici" "Podešavanja za rečnike" - "Korisnički rečnici" - "Korisnički rečnik" "Rečnik je dostupan" "Problem pri povezivanju s uslugom rečnika" "Nema dostupnih rečnika" @@ -112,21 +110,14 @@ "Verzija %1$s" "Dodaj" "Dodavanje u rečnik" - "Fraza" - "Više opcija" - "Manje opcija" - "Reč:" "Prečica:" "Jezik:" "Unesite reč" "Opcionalna prečica" "Izmena reči" - "Izmeni" - "Izbriši" "Nemate nijednu reč u korisničkom rečniku. Da biste dodali reč, dodirnite dugme Dodaj (+)." "Za sve jezike" "Još jezika..." - "Izbriši" " ABVGDĐEŽZIJKLLJMNNJOPRSTĆUFHCČDŽŠ" "Koristi jezike sistema" "Izbor metoda unosa" diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 4b1db1321..9827aecab 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -100,8 +100,6 @@ "Паказаць значок прыкладання ў панэлi запуску" "Дадатковыя слоўнікі" "Налады для слоўнікаў" - "Карыстальніцкія слоўнікі" - "Карыстацкі слоўнік" "Даступны слоўнік" "Праблема падключэння да слоўніка" "Слоўнікаў няма" @@ -113,21 +111,14 @@ Версія %1$s "Дадаць" "Дадаць у слоўнік" - "Выраз" - "Дадатковыя параметры" - "Асн. параметры" - "Слова:" "Гарачая клавіша:" "Мова:" "Увядзіце слова" "Неабавязковая гарачая клавіша" "Рэдагаваць слова" - "Рэдагаваць" - "Выдаліць" "У карыстальніцкім слоўніку няма ніводнага слова. Каб дадаць слова, дакраніце да кнопкі \"Дадаць\" (+)." "Для ўсіх моў" "Іншыя мовы..." - "Выдаліць" " АБВГДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШЫЬЭЮЯ'" Гісторыя буфера абмену Выпраўленні diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index ca44719d0..2e290b1e3 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -99,8 +99,6 @@ "Показване на иконата на приложението в стартовия панел" "Добавени речници" "Настройки за речници" - "Потребителски речници" - "Потребителски речник" "Речникът е налице" "Няма връзка с речниците" "Няма налични речници" @@ -112,21 +110,14 @@ "Версия %1$s" "Добавяне" "Добавяне в речника" - "Фраза" - "Още опции" - "По-малко опции" - "Дума:" "Пряк път:" "Език:" "Напишете дума" "Незадължителен пряк път" "Редактиране на дума" - "Редактиране" - "Изтриване" "Нямате думи в потребителския речник. За да добавите, докоснете бутона за добавяне (+)." "За всички езици" "Още езици…" - "Изтриване" " АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЮЯ" "Използване на системните езици" въвеждане diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 6d731d14e..230c0acfa 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -202,8 +202,6 @@ "নির্বাচিত ফাইলটি %1$s এর জন্য, %2$s এর জন্য ফাইল প্রয়োজন। তবুও %2$s এর জন্য ব্যবহৃত হবে?" "তবুও ব্যবহার করুন" "অভিধান ফাইল যোগ করতে ত্রুটি" - ব্যবহারকারী-যোগকৃত অভিধান - ব্যবহারকারী-যোগকৃত অভিধান অভিধান উপলব্ধ অভিধান পরিষেবার সাথে সংযুক্ত হতে সমস্যা হচ্ছে কোনো অভিধান উপলব্ধ নয় @@ -215,21 +213,14 @@ সংস্করণ %1$s যোগ করুন অভিধানে যোগ - শব্দগুচ্ছ - আরও বিকল্প - কম বিকল্প - শব্দ: শর্টকাট: ভাষা: শব্দ টাইপ করুন ঐচ্ছিক শর্টকাট শব্দ সম্পাদনা - সম্পাদনা - অপসারণ করুন ব্যবহারকারী অভিধানে আপনার কোনো শব্দ নেই। শব্দ যোগ করতে (+) বোতামটি ট্যাপ করুন। সব ভাষার জন্য আরও ভাষা… - অপসারণ করুন \u0020অআইঈউঊঋএঐওঔংঃকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ শৈলী রং diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index d22d7198c..75b88d615 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -100,8 +100,6 @@ "Prikazivanje ikone aplikacije na pokretaču" "Dodatni rječnici" "Postavke za rječnik" - "Korisnički rječnici" - "Korisnikov rječnik" "Rječnik je dostupan" "Problem prilikom povezivanja na uslugu rječnika" "Nema dostupnih rječnika" @@ -113,21 +111,14 @@ "Verzija %1$s" "Dodaj" "Dodaj u rječnik" - "Fraza" - "Više opcija" - "Manje opcija" - "Riječ:" "Prečica:" "Jezik:" "Unesite riječ" "Opcionalna prečica" "Uređivanje riječi" - "Uređivanje" - "Izbriši" "Nemate nijednu riječ u korisničkom rječniku. Za dodavanje riječi, dodirnite dugme Dodaj (+)" "Za sve jezike" "Više jezika…" - "Izbriši" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Koristi jezik sistema" "Odaberite način unosa" diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 9f9f1fff0..f4cb74821 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -99,8 +99,6 @@ "Mostra la icona de l\'aplicació al menú d\'aplicacions" "Diccionaris complementaris" "Configuració dels diccionaris" - "Diccionaris de l\'usuari" - "Diccionari de l\'usuari" "Diccionari disponible" "Error en connectar amb el diccionari" "Cap diccion. dispon." @@ -112,21 +110,14 @@ Versió %1$s "Afegeix" "Afegeix al diccionari" - "Frase" - "Més opcions" - "Menys opcions" - "Paraula:" "Drecera:" "Idioma:" "Escriu una paraula" "Drecera opcional" "Edició de la paraula" - "Edita" - "Suprimeix" "No tens cap paraula al diccionari de l\'usuari. Toca el botó Afegeix (+) per afegir-n\'hi una." "Per a tots els idiomes" "Més idiomes..." - "Suprimeix" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Historial del porta-retalls Sense límit diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 703e1f2b5..52488f39a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -100,8 +100,6 @@ "Zobrazí ikonu aplikace ve spouštěči" "Doplňkové slovníky" "Nastavení slovníků" - "Uživatelské slovníky" - "Uživatelský slovník" "Slovník k dispozici" "Chyba přip. k slovníku" "Žádné slovníky" @@ -113,21 +111,14 @@ "Verze %1$s" "Přidat" "Přidat do slovníku" - "Fráze" - "Více možností" - "Méně možností" - "Slovo:" "Zkratka:" "Jazyk:" "Napište slovo" "Volitelná zkratka" "Upravit slovo" - "Upravit" - "Smazat" "V uživatelském slovníku nejsou žádná slova. Slovo můžete přidat klepnutím na tlačítko Přidat (+)." "Pro všechny jazyky" "Další jazyky…" - "Smazat" " ABCČDEFGHChIJKLMNOPQRŘSŠTUVWXYZŽ" Historie schránky Opravy diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 749a33ee0..93409ac20 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -99,8 +99,6 @@ "Vis appikon i starteren" "Ekstra ordbøger" "Indstillinger for ordbøger" - "Brugerordbøger" - "Brugerordbog" "Ordbog er tilgængelig" "Ingen ordbogstjeneste" "Ingen tilg. ordbøger" @@ -112,21 +110,14 @@ Version %1$s "Tilføj" "Føj til ordbog" - "Sætning" - "Flere muligheder" - "Færre muligh." - "Ord:" "Genvej:" "Sprog:" "Skriv et ord" "Valgfri genvej" "Rediger ord" - "Rediger" - "Slet" "Du har ikke nogen ord i brugerordbogen. Du kan tilføje et ord ved at trykke på knappen Tilføj (+)." "For alle sprog" "Flere sprog..." - "Slet" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Udklipsholder-historik Rettelser diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 749dcf1e2..2d0433141 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -99,8 +99,6 @@ "App-Symbol in der Übersicht anzeigen" "Erweiterte Wörterbücher" "Einstellungen für Wörterbücher" - "Meine Wörterbücher" - "Mein Wörterbuch" "Wörterbuch verfügbar" "Kein Wörterbuchdienst" "Keine Wörterbücher" @@ -112,21 +110,14 @@ Version %1$s "Hinzufügen" "Zum Wörterbuch hinzufügen" - "Wortgruppe" - "Weitere Optionen" - "Weniger Optionen" - "Wort:" "Tastaturkürzel:" "Sprache:" "Wort eingeben" "Optionales Tastaturkürzel" "Wort bearbeiten" - "Bearbeiten" - "Löschen" "Es sind noch keine Wörter in deinem Wörterbuch vorhanden. Du kannst Wörter hinzufügen, indem du auf das \"+\"-Symbol tippst." "Für alle Sprachen" "Weitere Sprachen..." - "Löschen" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Systemsprachen verwenden" "Eingabemethode wählen" diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index fd2f5d4a5..e69488089 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -99,8 +99,6 @@ "Εμφάνιση εικονιδίου εφαρμογής στο πρόγραμμα εκκίνησης" "Πρόσθετα λεξικά" "Ρυθμίσεις για λεξικά" - "Λεξικά χρήστη" - "Λεξικό χρήστη" "Διαθέσιμο λεξικό" "Πρόβλ. σύνδ. στο λεξικό." "Δεν υπάρχουν λεξικά" @@ -112,21 +110,14 @@ "Έκδοση %1$s" "Προσθήκη" "Προσθήκη στο λεξικό" - "Φράση" - "Περισσ. επιλογές" - "Λιγότ. επιλογές" - "Λέξη:" "Συντόμευση:" "Γλώσσα:" "Πληκτρολογήστε μια λέξη" "Προαιρετική συντόμευση" "Επεξεργασία λέξης" - "Επεξεργασία" - "Διαγραφή" "Δεν υπάρχουν καταχωρισμένες λέξεις στο λεξικό χρήστη. Για να προσθέσετε μια λέξη, πατήστε το κουμπί Προσθήκης (+)." "Για όλες τις γλώσσες" "Περισσότερες γλώσσες…" - "Διαγραφή" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Πειραματικό Κανένα όριο diff --git a/app/src/main/res/values-en-rAU/strings.xml b/app/src/main/res/values-en-rAU/strings.xml index ee805d634..4b3995b13 100644 --- a/app/src/main/res/values-en-rAU/strings.xml +++ b/app/src/main/res/values-en-rAU/strings.xml @@ -99,8 +99,6 @@ "Display application icon in the launcher" "Add-on dictionaries" "Settings for dictionaries" - "User dictionaries" - "User dictionary" "Dictionary available" "Problem connecting to dictionary service" "No dictionaries available" @@ -112,21 +110,14 @@ "Version %1$s" "Add" "Add to dictionary" - "Phrase" - "More options" - "Fewer options" - "Word:" "Shortcut:" "Language:" "Type a word" "Optional shortcut" "Edit word" - "Edit" - "Delete" "You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button." "For all languages" "More languages…" - "Delete" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Use system languages" "Choose input method" diff --git a/app/src/main/res/values-en-rCA/strings.xml b/app/src/main/res/values-en-rCA/strings.xml index ee805d634..4b3995b13 100644 --- a/app/src/main/res/values-en-rCA/strings.xml +++ b/app/src/main/res/values-en-rCA/strings.xml @@ -99,8 +99,6 @@ "Display application icon in the launcher" "Add-on dictionaries" "Settings for dictionaries" - "User dictionaries" - "User dictionary" "Dictionary available" "Problem connecting to dictionary service" "No dictionaries available" @@ -112,21 +110,14 @@ "Version %1$s" "Add" "Add to dictionary" - "Phrase" - "More options" - "Fewer options" - "Word:" "Shortcut:" "Language:" "Type a word" "Optional shortcut" "Edit word" - "Edit" - "Delete" "You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button." "For all languages" "More languages…" - "Delete" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Use system languages" "Choose input method" diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml index f52f46fb8..079decb7f 100644 --- a/app/src/main/res/values-en-rGB/strings.xml +++ b/app/src/main/res/values-en-rGB/strings.xml @@ -99,8 +99,6 @@ "Display application icon in the launcher" "Add-on dictionaries" "Settings for dictionaries" - "User dictionaries" - "User dictionary" "Dictionary available" "Problem connecting to dictionary service" "No dictionaries available" @@ -112,21 +110,14 @@ Version %1$s "Add" "Add to dictionary" - "Phrase" - "More options" - "Fewer options" - "Word:" "Shortcut:" "Language:" "Type a word" "Optional shortcut" "Edit word" - "Edit" - "Delete" "You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button." "For all languages" "More languages…" - "Delete" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" OpenBoard Spell Checker OpenBoard Spell Checker Settings diff --git a/app/src/main/res/values-en-rIN/strings.xml b/app/src/main/res/values-en-rIN/strings.xml index d50b16478..9df5cecf1 100644 --- a/app/src/main/res/values-en-rIN/strings.xml +++ b/app/src/main/res/values-en-rIN/strings.xml @@ -99,8 +99,6 @@ "Display application icon in the launcher" "Add-on dictionaries" "Settings for dictionaries" - "User dictionaries" - "User dictionary" "Dictionary available" "Problem connecting to dictionary service" "No dictionaries available" @@ -112,21 +110,14 @@ "Version %1$s" "Add" "Add to dictionary" - "Phrase" - "More options" - "Fewer options" - "Word:" "Shortcut:" "Language:" "Type a word" "Optional shortcut" "Edit word" - "Edit" - "Delete" "You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button." "For all languages" "More languages…" - "Delete" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Use system languages" "Choose input method" diff --git a/app/src/main/res/values-en-rXC/strings.xml b/app/src/main/res/values-en-rXC/strings.xml index f012ea66d..a337f96b9 100644 --- a/app/src/main/res/values-en-rXC/strings.xml +++ b/app/src/main/res/values-en-rXC/strings.xml @@ -99,8 +99,6 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‏‎‏‎Display application icon in the launcher‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎Add-on dictionaries‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎Settings for dictionaries‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‏‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎User dictionaries‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‏‎‏‎User dictionary‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎Dictionary available‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‎‎‎‎Problem connecting to dictionary service‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‎No dictionaries available‎‏‎‎‏‎" @@ -112,21 +110,14 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‎‎‏‎‏‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎Version ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‏‎‏‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‏‏‎Add‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‏‏‎‏‎‎‎‎‎‎‎Add to dictionary‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‎Phrase‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‎‏‏‏‎More options‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎Less options‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‎‏‎‏‏‎‏‏‎Word:‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎Shortcut:‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎Language:‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‏‏‎Type a word‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‎‎Optional shortcut‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‎‏‏‎Edit word‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‎‏‏‎‎‎‏‏‎‎Edit‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎Delete‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‎‏‎You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎For all languages‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‏‎‎More languages…‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‏‎‏‏‎‏‏‏‎‎‏‎‎‏‎Delete‎‏‎‎‏‎" " ‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎ ABCDEFGHIJKLMNOPQRSTUVWXYZ‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‎‏‎‏‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎Use system languages‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎Choose input method‎‏‎‎‏‎" diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index c686e1bfc..e5ea50f79 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -99,8 +99,6 @@ "Mostrar ícono de aplicación en el selector" "Diccionarios complementarios" "Configuración para diccionarios" - "Diccionarios del usuario" - "Diccionario del usuario" "Diccionario disponible" "Err. conex. con dic." "No hay diccionarios." @@ -112,21 +110,14 @@ "Versión %1$s" "Agregar" "Agregar al diccionario" - "Frase" - "Más opciones" - "Menos opciones" - "Palabra:" "Acceso directo:" "Idioma:" "Escribe una palabra" "Acceso directo opcional" "Editar palabra" - "Editar" - "Eliminar" "El diccionario del usuario no contiene ninguna palabra. Para agregar una, presiona el botón Agregar (+)." "Todos los idiomas" "Más idiomas" - "Eliminar" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Habilitar historial del portapapeles Tiempo para mantener el historial diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 49c2ffa30..96225bf2f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -99,8 +99,6 @@ "Mostrar icono de aplicación en menú de aplicaciones" "Diccionarios complementarios" "Ajustes de diccionarios" - "Diccionarios del usuario" - "Diccionario del usuario" "Diccionario disponible" "Error al conectar" "No hay diccionarios" @@ -112,21 +110,14 @@ Versión %1$s "Añadir" "Añadir al diccionario" - "Frase" - "Más opciones" - "Menos opciones" - "Palabra:" "Acceso directo:" "Idioma:" "Escribe una palabra" "Introducir" "Editar palabra" - "Editar" - "Eliminar" "No tienes ninguna palabra en el diccionario del usuario. Toca el botón (+) para añadir una." "Todos los idiomas" "Más idiomas…" - "Eliminar" " ABCDEFGHIJKLMNÑOPQRSTUVWXYZ" Alfabeto (Colemak Mod-DH) La apariencia seguirá los ajustes del sistema diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 1c1a29652..807cf9632 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -99,8 +99,6 @@ "Rakenduse ikooni kuvamine käivitajas" "Pistiksõnastikud" "Sõnastike seaded" - "Kasutaja sõnastikud" - "Kasutaja sõnastik" "Sõnastik on saadaval" "Probleem sõnastikuga ühendumisel" "Sõnastikke pole" @@ -112,21 +110,14 @@ "Versioon %1$s" "Lisa" "Sõnaraamatusse lisamine" - "Fraas" - "Rohkem valikuid" - "Vähem valikuid" - "Sõna:" "Otsetee:" "Keel:" "Sisestage sõna" "Valikuline otsetee" "Sõna muutmine" - "Muuda" - "Kustuta" "Kasutaja sõnaraamatus ei ole ühtki sõna. Sõna lisamiseks puudutage nuppu Lisa (+)." "Kõikides keeltes" "Rohkem keeli ..." - "Kustuta" " ABCDEFGHIJKLMNOPQRSŠZŽTUVWÕÄÖÜXY" "Kasuta süsteemi keeli" "Valige sisestusmeetod" diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 4cecf456b..274ca6883 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -99,8 +99,6 @@ "Bistaratu aplikazioaren ikonoa abiarazlean" "Hiztegi gehigarriak" "Hiztegien ezarpenak" - "Erabiltzailearen hiztegiak" - "Erabiltzailearen hiztegia" "Hiztegia erabilgarri" "Arazoa gertatu da hiztegi-zerbitzuarekin konektatzean" "Ez dago hiztegirik erabilgarri" @@ -112,21 +110,14 @@ %1$s bertsioa "Gehitu" "Gehitu hiztegian" - "Esaldia" - "Aukera gehiago" - "Aukera gutxiago" - "Hitza:" "Lasterbidea:" "Hizkuntza:" "Idatzi hitz bat" "Aukerako lasterbidea" "Editatu hitza" - "Editatu" - "Ezabatu" "Hutsik daukazu erabiltzailearen hiztegia. Hitzak gehitzeko, sakatu Gehitu (+) botoia." "Hizkuntza guztietan" "Hizkuntza gehiago…" - "Ezabatu" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Arbelaren historia Zuzenketak diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 33b091f7c..cea6ea39a 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -99,8 +99,6 @@ "نمایش نماد برنامه در راه‌انداز" "واژه‌نامه‌های برافزا" "تنظیمات برای فرهنگ‌ لغت‌ها" - "فرهنگ‌های لغت کاربر" - "واژه‌نامه کاربر" "واژه‌نامه موجود است" "مشکل اتصال به سرویس واژه‌نامه" "هیچ فرهنگ لغتی موجود نیست" @@ -112,21 +110,14 @@ نسخه %1$s "افرودن" "افزودن به واژه‌نامه" - "عبارت" - "گزینه‌های بیشتر" - "گزینه‌های کمتر" - "کلمه:" "میان‌بر:" "زبان:" "کلمه‌ای تایپ کنید" "میان‌بر اختیاری" "ویرایش کلمه" - "ویرایش" - "حذف" "واژه‌ای در واژه‌نامه کاربر ندارید. برای افزودن واژه، روی دکمه افزودن (+) ضربه بزنید." "برای همه زبان‌ها" "زبان‌های بیشتر…" - "حذف" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" بی‌محدودیت فعال‌کردن تاریخچهٔ تخته‌گیره diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index a2721d7a6..e282b9de8 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -99,8 +99,6 @@ "Näytä sovelluskuvake käynnistysohjelmassa." "Sanakirjalisäosat" "Sanakirjojen asetukset" - "Käyttäjän sanakirjat" - "Käyttäjän sanakirja" "Sanakirja saatavilla" "Ei yhteyttä sanak." "Ei sanak. saatavilla" @@ -112,21 +110,14 @@ "Versio %1$s" "Lisää" "Lisää sanakirjaan" - "Ilmaus" - "Lisäasetukset" - "Väh. vaihtoeht." - "Sana:" "Pikanäppäin:" "Kieli:" "Kirjoita sana" "Valinnainen pikanäppäin" "Muokkaa sanaa" - "Muokkaa" - "Poista" "Käyttäjän sanakirjassa ei ole sanoja. Lisää sana koskettamalla Lisää (+) ‑painiketta." "Kaikille kielille" "Lisää kieliä…" - "Poista" " ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ" "Käytä järjestelmän kieliä" "Valitse syöttötapa" diff --git a/app/src/main/res/values-fr-rCA/strings.xml b/app/src/main/res/values-fr-rCA/strings.xml index cbaed9ea8..84afdeed1 100644 --- a/app/src/main/res/values-fr-rCA/strings.xml +++ b/app/src/main/res/values-fr-rCA/strings.xml @@ -99,8 +99,6 @@ "Afficher l\'icône de l\'application dans le lanceur" "Dictionnaires complémentaires" "Paramètres des dictionnaires" - "Dictionnaires personnels" - "Dictionnaire personnel" "Dictionnaire disponible" "Pas de service dico." "Aucun dictionnaire" @@ -112,21 +110,14 @@ "Version %1$s" "Ajouter" "Ajouter au dictionnaire" - "Expression" - "Plus d\'options" - "Moins d\'options" - "Mot :" "Raccourci :" "Langue :" "Entrez un mot" "Raccourci facultatif" "Modifier le mot" - "Modifier" - "Supprimer" "Votre dictionnaire personnel ne contient aucun mot. Pour ajouter un mot, touchez le bouton d\'ajout (+)." "Pour toutes les langues" "Plus de langues…" - "Supprimer" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Utiliser les langues du système" "Sélectionnez le mode de saisie" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 452fbaf96..0470aa365 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -140,8 +140,6 @@ Nouveau dictionnaire: "Erreur: script non compatible avec ce clavier" "Utiliser quand même" "Erreur de chargement du fichier dictionnaire" - "Dictionnaires personnels" - "Dictionnaire personnel" "Dictionnaire disponible" "Pas de service dico." "Aucun dictionnaire" @@ -152,22 +150,18 @@ Nouveau dictionnaire: Version %1$s "Ajouter" "Ajouter au dictionnaire" - "Expression" - "Plus d\'options" - "Moins d\'options" - "Mot :" "Raccourci :" + Poids : "Langue :" "Saisissez un mot" "Raccourci facultatif" "Modifier le mot" - "Modifier" - "Supprimer" "Votre dictionnaire personnel ne contient aucun mot. Pour ajouter un mot, appuyez sur le bouton d\'ajout \"+\"." "Pour toutes les langues" "Plus de langues…" - "Supprimer" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + Ce mot est déjà présent dans le dictionnaire utilisateur %s. Veuillez en saisir un autre. + Ajouter un mot Correcteur orthographique OpenBoard Paramètres du correcteur orthographique OpenBoard Ligne de chiffres diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 66db10cbb..b5ed1f85b 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -99,8 +99,6 @@ "Mostra a icona da aplicación no Launcher" "Dicionarios complementarios" "Configuración dos dicionarios" - "Dicionarios de usuario" - "Dicionario do usuario" "Dicionario dispoñible" "Erro ao conectar" "Non hai dicionarios" @@ -112,21 +110,14 @@ "Versión %1$s" "Engadir" "Engadir ao dicionario" - "Frase" - "Máis opcións" - "Menos opcións" - "Palabra:" "Atallo:" "Idioma:" "Escribe unha palabra" "Atallo opcional" "Editar palabra" - "Editar" - "Eliminar" "Non tes ningunha palabra no dicionario de usuario. Toca o botón Engadir (+) para engadir unha palabra." "Para todos os idiomas" "Máis idiomas..." - "Eliminar" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Usar idiomas do sistema" "Escoller método de introdución de texto" diff --git a/app/src/main/res/values-gu/strings.xml b/app/src/main/res/values-gu/strings.xml index f151bb17c..a2d73eee4 100644 --- a/app/src/main/res/values-gu/strings.xml +++ b/app/src/main/res/values-gu/strings.xml @@ -99,8 +99,6 @@ "લોંચરમાં ઍપ્લિકેશન આયકન પ્રદર્શિત કરો" "એડ-ઓન શબ્દકોશ" "શબ્દકોશો માટેની સેટિંગ્સ" - "વપરાશકર્તા શબ્દકોશ" - "વપરાશકર્તા શબ્દકોશ" "શબ્દકોશ ઉપલબ્ધ છે" "શબ્દકોશ સેવા સાથે કનેક્ટ થવામાં સમસ્યા" "કોઈ શબ્દકોશ ઉપલબ્ધ નથી" @@ -112,21 +110,14 @@ "સંસ્કરણ %1$s" "ઉમેરો" "શબ્દકોષમાં ઉમેરો" - "શબ્દસમૂહ" - "વધુ વિકલ્પો" - "ઓછા વિકલ્પો" - "શબ્દ:" "શોર્ટકટ:" "ભાષા:" "એક શબ્દ લખો" "વૈકલ્પિક શોર્ટકટ" "શબ્દ સંપાદિત કરો" - "સંપાદિત કરો" - "કાઢી નાખો" "તમારી પાસે વપરાશકર્તા શબ્દકોશમાં કોઈપણ શબ્દ નથી. શબ્દને ઉમેરવા માટે, ઉમેરો (+) બટન ટૅપ કરો." "તમામ" "વધુ ભાષાઓ…" - "કાઢી નાખો" " [અ આ ઇ ઈ ઉ ઊ ઋ એ ઐ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ]" "સિસ્ટમ ભાષાઓનો ઉપયોગ કરો" "ઇનપુટ પદ્ધતિ પસંદ કરો" diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 3ca81121d..afe6adf88 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -99,8 +99,6 @@ "लॉन्चर में ऐप आइकॉन दिखाएं" "अन्य शब्दकोष" "डिक्‍शनरी की सेटिंग" - "उपयोगकर्ता डिक्शनरी" - "उपयोगकर्ता डिक्शनरी" "शब्दकोश उपलब्‍ध" "शब्दकोश सेवा से कनेक्ट करने में समस्या" "डिक्‍शनरी अनुपलब्‍ध" @@ -112,21 +110,14 @@ "वर्शन %1$s" "जोड़ें" "शब्दकोश में जोड़ें" - "वाक्यांश" - "ज़्यादा विकल्प" - "कम विकल्‍प" - "शब्द:" "शॉर्टकट:" "भाषा:" "कोई शब्द लिखें" "वैकल्पिक शॉर्टकट" "शब्द बदलें" - "बदलाव करें" - "मिटाएं" "आपके पास उपयोगकर्ता डिक्शनरी में कोई भी शब्द नहीं है. कोई शब्द जोड़ने के लिए, जोड़ें (+) बटन छूएं." "सभी भाषाओं के लिए" "ज़्यादा भाषाएं…" - "मिटाएं" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "सिस्टम की भाषाओं का इस्तेमाल करें" "इनपुट का तरीका चुनें" diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 5636201ef..2c19280e8 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -99,8 +99,6 @@ "Prikazivanje ikone aplikacije u pokretaču" "Rječnici kao dodaci" "Postavke za rječnike" - "Korisnički rječnici" - "Korisnički rječnik" "Dostupan je rječnik" "Nema usluge rječnika" "Rječnici nedostupni" @@ -112,21 +110,14 @@ Verzija %1$s "Dodavanje" "Dodaj u rječnik" - "Fraza" - "Više opcija" - "Manje opcija" - "Riječ:" "Prečac:" "Jezik:" "Upišite riječ" "Neobavezni prečac" "Uređivanje riječi" - "Uređivanje" - "Brisanje" "Nemate nijednu riječ u korisničkom rječniku. Da biste dodali riječ, dodirnite gumb Dodaj (+)." "Za sve jezike" "Više jezika…" - "Izbriši" " ABCČĆDDŽĐEFGHIJKLLJMNNJOPRSŠTUVZŽ" OpenBoard provjera pravopisa Postavke OpenBoard provjere pravopisa diff --git a/app/src/main/res/values-hu-rZZ/strings.xml b/app/src/main/res/values-hu-rZZ/strings.xml index ce3a68a9a..28fffcca2 100644 --- a/app/src/main/res/values-hu-rZZ/strings.xml +++ b/app/src/main/res/values-hu-rZZ/strings.xml @@ -99,8 +99,6 @@ "Alkalmazásikon megjelenítése az indítóban" "Bővítmények: szótárak" "Szótárak beállításai" - "Felhasználói szótárak" - "Felhasználói szótár" "Van rendelkezésre álló szótár" "Csatlakozási hiba" "Nincs szótár" @@ -112,21 +110,14 @@ "Verzió: %1$s" "Hozzáadás" "Hozzáadás a szótárhoz" - "Kifejezés" - "További opciók" - "Kevesebb opció" - "Szó:" "Gyorsparancs:" "Nyelv:" "Írjon be egy szót" "Választható gyorsparancs" "Szó szerkesztése" - "Szerkesztés" - "Törlés" "Nincsenek szavak a felhasználói szótárban. Új szavakat a Hozzáadás (+) gombra koppintva vehet fel." "Minden nyelven" "További nyelvek…" - "Törlés" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Vágólap előzmények Javítások diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 9852e7c4b..8dabd31d9 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -99,8 +99,6 @@ "Alkalmazásikon megjelenítése az indítóban" "Bővítmények: szótárak" "Szótárak beállításai" - "Felhasználói szótárak" - "Felhasználói szótár" "Van rendelkezésre álló szótár" "Csatlakozási hiba" "Nincs szótár" @@ -112,21 +110,14 @@ "Verzió: %1$s" "Hozzáadás" "Hozzáadás a szótárhoz" - "Kifejezés" - "További opciók" - "Kevesebb opció" - "Szó:" "Gyorsparancs:" "Nyelv:" "Írjon be egy szót" "Választható gyorsparancs" "Szó szerkesztése" - "Szerkesztés" - "Törlés" "Nincsenek szavak a felhasználói szótárban. Új szavakat a Hozzáadás (+) gombra koppintva vehet fel." "Minden nyelven" "További nyelvek…" - "Törlés" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Mindig mutassa a szám sort További gombok diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml index 496b1e2a8..ba141715e 100644 --- a/app/src/main/res/values-hy/strings.xml +++ b/app/src/main/res/values-hy/strings.xml @@ -99,8 +99,6 @@ "Ցուցադրել հավելվածի պատկերակը գործարկիչում" "Հավելյալ բառարաններ" "Բառարանների կարգավորումներ" - "Օգտատիրոջ բառարաններ" - "Օգտատիրոջ բառարան" "Բառարանն առկա է" "Բառարանային ծառայությանը միացման խնդիր կա" "Բառարաններ չկան" @@ -112,21 +110,14 @@ "Տարբերակ %1$s" "Ավելացնել" "Ավելացնել բառարանում" - "Արտահայտություն" - "Այլ ընտրանքներ" - "Սակավ ընտրանքներ" - "Բառը՝" "Դյուրանցումը՝" "Lեզուն՝" "Մուտքագրեք բառը" "Ընտրովի դյուրանցում" "Խմբագրել բառը" - "Խմբագրել" - "Ջնջել" "Օգտատիրոջ բառարանում ոչ մի բառ չկա: Բառեր ավելացնելու համար հպեք Ավելացնել (+) կոճակին:" "Բոլոր լեզուներով" "Ավելի շատ լեզուներով..." - "Ջնջել" " ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՈՒՓՔԵւՕՖ" "Օգտագործել համակարգի լեզուները" "Ընտրեք ներածման եղանակը" diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index ac20b7ed4..3e5b7d23f 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -99,8 +99,6 @@ "Menampillkan ikon aplikasi di peluncur" "Kamus pengaya" "Setelan untuk kamus" - "Kamus pengguna" - "Kamus pengguna" "Kamus yang tersedia" "Problem koneksi kamus" "Tidak tersedia kamus" @@ -112,21 +110,14 @@ Versi %1$s "Tambahkan" "Tambahkan ke kamus" - "Frasa" - "Opsi lainnya" - "Sedikit opsi" - "Kata:" "Pintasan:" "Bahasa:" "Ketik kata" "Pintasan opsional" "Edit kata" - "Edit" - "Hapus" "Tidak ada kata-kata dalam kamus pengguna. Untuk menambahkan kata, ketuk Tambahkan (+)." "Untuk semua bahasa" "Bahasa lainnya..." - "Hapus" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Skala tinggi keyboard Gestur hapus diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 6dcc9193e..56d73a7b7 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -99,8 +99,6 @@ "Sýna forritstákn í ræsiforritinu" "Viðbótarorðabækur" "Stillingar fyrir orðabækur" - "Orðabækur notanda" - "Orðabók notanda" "Orðabók í boði" "Vandamál við að tengjast orðabókarþjónustu" "Engar orðabækur" @@ -112,21 +110,14 @@ "Útgáfa %1$s" "Bæta við" "Bæta við orðabók" - "Setning" - "Fleiri valkostir" - "Færri valkostir" - "Orð:" "Flýtileið:" "Tungumál:" "Sláðu inn orð" "Valfrjáls flýtileið" "Breyta orði" - "Breyta" - "Eyða" "Engin orð eru í orðabók notanda. Bættu við orðum með því að ýta á hnappinn Bæta við (+)." "Fyrir öll tungumál" "Fleiri tungumál…" - "Eyða" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Nota kerfistungumál" "Veldu innsláttaraðferð" diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 22ace69da..74dabdae9 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -99,8 +99,6 @@ "Mostra l\'icona dell\'app in Avvio app" "Dizionari aggiuntivi" "Impostazioni per dizionari" - "Dizionari utente" - "Dizionario utente" "Dizionario disponibile" "Conness. diz. imposs" "Nessun dizionario" @@ -112,21 +110,14 @@ Versione %1$s "Aggiungi" "Aggiungi al dizionario" - "Frase" - Più opzioni - "Meno opzioni" - "Parola:" "Scorciatoia:" "Lingua:" "Digita una parola" "Scorciatoia facoltativa" "Modifica parola" - "Modifica" - "Elimina" "Nessuna parola presente nel dizionario utente. Per aggiungere una parola, tocca il pulsante Aggiungi (+)." "Per tutte le lingue" "Altre lingue..." - "Elimina" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Altezza tastiera Alfabeto (Colemak Mod-DH) diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index e0a643314..db94a3481 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -99,8 +99,6 @@ "הצג את סמל האפליקציה במפעיל" "תוספי מילונים" "הגדרות עבור מילונים" - "מילוני משתמש" - "מילון משתמש" "מילון זמין" "בעיה בהתחברות לשירות המילון" "אין מילונים זמינים" @@ -112,21 +110,14 @@ "גרסה %1$s" "הוסף" "הוסף למילון" - "ביטוי" - "עוד אפשרויות" - "פחות אפשרויות" - "מילה:" "קיצור דרך:" "שפה:" "הקלד מילה" "קיצור דרך אופציונלי" "עריכת מילה" - "עריכה" - "מחק" "לא מוגדרות מילים במילון המשתמש. הוסף מילה על ידי הקשה על לחצן \'הוסף\' (+)." "לכל השפות" "עוד שפות…" - "מחק" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" ללא גבול %smin. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index a165a9d47..978a6e959 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -99,8 +99,6 @@ "ランチャーにアプリアイコンを表示します" "アドオン辞書" "辞書の設定" - "単語リスト" - "単語リスト" "辞書を利用できます" "辞書に接続できません" "辞書はありません" @@ -112,21 +110,14 @@ "バージョン%1$s" "追加" "辞書に追加" - "フレーズ" - "詳細設定を表示" - "詳細設定を隠す" - "単語:" "ショートカット:" "言語:" "単語を入力します" "オプションのショートカット" "語句の編集" - "編集" - "削除" "単語リストに登録がありません。単語を追加するには、追加ボタン [+] をタップします。" "すべての言語用" "その他の言語…" - "削除" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "システム言語を使用" "入力方法の選択" diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index a57f4a5ae..573a4bce5 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -99,8 +99,6 @@ "აპის ხატულის ჩვენება გამშვებში" "დამატებითი ლექსიკონები" "ლექსიკონების პარამეტრები" - "მომხმარებლის ლექსიკონები" - "მომხმარებლის ლექსიკონი" "ხელმისაწვდომია ლექსიკონი" "ლექსიკონის სერვისთან დაკავშირებით პრობლემა წარმოიშვა" "ლექსიკონები მიუწვდომელია" @@ -112,21 +110,14 @@ ვერსია %1$s "დამატება" "ლექსიკონში დამატება" - "ფრაზა" - "მეტი ვარიანტები" - "ნაკლები ვარიანტები" - "სიტყვა:" "მალსახმობი:" "ენა:" "შიყვანეთ სიტყვა" "არასავალდებულო მალსა" "სიტყვის შესწორება" - "რედაქტირება" - "წაშლა" "მომხმარებლის ლექსიკონში სიტყვები არ არის. სიტყვის დასამატებლად, შეეხეთ დამატების (+) ღილაკს." "ყველა ენისთვის" "სხვა ენები…" - "წაშლა" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" ავტოკორექციის სანდოობა ბუფერის ისტორიის ჩართვა diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml index 5a49936b9..3417251ad 100644 --- a/app/src/main/res/values-kab/strings.xml +++ b/app/src/main/res/values-kab/strings.xml @@ -11,12 +11,9 @@ Rnu Tutlayt : Beddel awal-a - Beddel Sekles Rnu - Awal : Tutlayin-nniḍen … - Kkes Kkes Tutlayt Anasiw diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml index cd6076dba..d03331cbe 100644 --- a/app/src/main/res/values-kk/strings.xml +++ b/app/src/main/res/values-kk/strings.xml @@ -99,8 +99,6 @@ "Іске қосу құралында қолданба белгішесін көрсету" "Қосымша сөздіктер" "Сөздіктер параметрлері" - "Пайдаланушы сөздіктері" - "Пайдаланушы сөздігі" "Сөздік қолжетімді" "Сөздік қызметіне қосылу мәселесі" "Сөздіктер қолжетімсіз" @@ -112,21 +110,14 @@ "%1$s нұсқасы" "Қосу" "Сөздікке қосу" - "Фраза" - "Басқа талғаулар" - "Аз опциялар" - "Сөз:" "Пернелер тіркесімі:" "Тіл:" "Сөзді теріңіз" "Қосымша пернелер тіркесімі" "Сөзді өңдеу" - "Өңдеу" - "Жою" "Пайдаланушы сөздігінде сөздер жоқ. Сөзді қосу үшін \"Қосу\" (+) түймесін түртіңіз." "Барлық тілдер үшін" "Қосымша тілдер…" - "Жою" " АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҰҮФХҺЦЧШЩЪЫІЬЭЮЯ" "Жүйелік тілдерді пайдалану" "Енгізу әдісін таңдау" diff --git a/app/src/main/res/values-km/strings.xml b/app/src/main/res/values-km/strings.xml index b20b41d0f..ef7f8675f 100644 --- a/app/src/main/res/values-km/strings.xml +++ b/app/src/main/res/values-km/strings.xml @@ -99,8 +99,6 @@ "បង្ហាញ​រូប​កម្មវិធី​នៅ​ក្នុង​កម្ម​​វិធី​ចាប់ផ្ដើម" "ផ្នែក​បន្ថែម​វចនានុក្រម​​" "ការ​កំណត់​សម្រាប់​វចនានុក្រម" - "វចនានុក្រម​​​អ្នក​ប្រើ" - "វចនានុក្រម​អ្នកប្រើ" "វចនានុក្រម​​​អាច​ប្រើ​បាន" "មាន​បញ្ហា​ក្នុង​ការ​​ភ្ជាប់​ទៅ​​សេវា​កម្ម​វចនានុក្រម" "គ្មាន​វចនានុក្រម" @@ -112,21 +110,14 @@ "កំណែ %1$s" "បន្ថែម" "បន្ថែម​ទៅ​វចនានុក្រម" - "ឃ្លា" - "ជម្រើស​ច្រើន" - "ជម្រើស​តិច" - "ពាក្យ៖" "ផ្លូវកាត់​៖" "ភាសា៖" "វាយ​បញ្ចូល​ពាក្យ​" "ផ្លូវកាត់​ជា​ជម្រើស" "កែ​ពាក្យ" - "កែ" - "លុប" "អ្នកមិនមានពាក្យនៅក្នុងវចនានុក្រមអ្នកប្រើទេ។ ដើម្បីបន្ថែមពាក្យ សូមប៉ះប៊ូតុងបន្ថែម (+)។" "សម្រាប់​ភាសា​ទាំងអស់" "ភាសា​ច្រើន​ទៀត…" - "លុប" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "ប្រើភាសាប្រព័ន្ធ" "ជ្រើស​វិធីសាស្ត្រ​បញ្ចូល" diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 05b99f66f..05ae8077d 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -99,8 +99,6 @@ "ಲಾಂಚರ್‌ನಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಐಕಾನ್ ಪ್ರದರ್ಶಿಸು" "ಆಡ್-ಆನ್ ನಿಘಂಟುಗಳು" "ನಿಘಂಟುಗಳಿಗಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" - "ಬಳಕೆದಾರರ ನಿಘಂಟುಗಳು" - "ಬಳಕೆದಾರರ ನಿಘಂಟು" "ನಿಘಂಟು ಲಭ್ಯವಿದೆ" "ನಿಘಂಟು ಸೇವೆಗೆ ಸಂಪರ್ಕಗೊಳಿಸುವಾಗ ಸಮಸ್ಯೆ" "ನಿಘಂಟುಗಳು ಲಭ್ಯವಿಲ್ಲ" @@ -112,21 +110,14 @@ "ಆವೃತ್ತಿ %1$s" "ಸೇರಿಸು" "ನಿಘಂಟಿಗೆ ಸೇರಿಸಿ" - "ನುಡಿಗಟ್ಟು" - "ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು" - "ಕಡಿಮೆ ಆಯ್ಕೆಗಳು" - "ಪದ:" "ಶಾರ್ಟ್‌ಕಟ್:" "ಭಾಷೆ:" "ಪದವನ್ನು ಟೈಪ್ ಮಾಡಿ" "ಐಚ್ಛಿಕ ಶಾರ್ಟ್‌ಕಟ್" "ಪದವನ್ನು ಎಡಿಟ್ ಮಾಡಿ" - "ಎಡಿಟ್" - "ಅಳಿಸಿ" "ಬಳಕೆದಾರರ ನಿಘಂಟಿನಲ್ಲಿ ನೀವು ಯಾವುದೇ ಪದಗಳನ್ನು ಹೊಂದಿಲ್ಲ. ಪದವನ್ನು ಸೇರಿಸಲು, ಸೇರಿಸು (+) ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡಿ." "ಎಲ್ಲ ಭಾಷೆಗಳಿಗೆ" "ಇನ್ನಷ್ಟು ಭಾಷೆಗಳು…" - "ಅಳಿಸಿ" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "ಸಿಸ್ಟಂ ಭಾಷೆಗಳನ್ನು ಬಳಸಿ" "ಇನ್‌ಪುಟ್‌‌ ವಿಧಾನವನ್ನು ಆರಿಸಿ" diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 1bdc3f250..0e161e96b 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -99,8 +99,6 @@ "런처에 애플리케이션 아이콘 표시" "사전 추가" "사전 설정" - "사용자 사전" - "사용자 사전" "사전 사용 가능" "사전 서비스에 연결하는 중에 문제가 발생했습니다." "사용할 수 있는 사전이 없습니다." @@ -112,21 +110,14 @@ 버전 %1$s "추가" "사전에 추가" - "구문" - "옵션 더보기" - "옵션 숨기기" - "단어:" "단축키:" "언어:" "단어 입력" "선택적 단축키" "단어 수정" - "수정" - "삭제" "사용자 사전에 단어가 없습니다. 추가(+) 버튼을 탭하여 단어를 추가할 수 있습니다." "모든 언어" "더보기…" - "삭제" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" 마침표 후 자동 띄어쓰기 새로운 단어를 입력할 때 마침표가 앞에 있다면 자동으로 띄어쓰기 하기 diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index e1bcef5af..d845d081f 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -99,8 +99,6 @@ "Колдонмонун сүрөтчөсү иштетүү тактасында көрүнөт" "Кошумча сөздүктөр" "Сөздүктүн жөндөөлөрү" - "Колдонуучу сөздүктөрү" - "Колдонуучунун сөздүгү" "Сөздүк бар" "Сөздүк кызматына туташуу көйгөйү" "Сөздүктөр жок" @@ -112,21 +110,14 @@ "Версиясы %1$s" "Кошуу" "Сөздүккө кошуу" - "Сөз айкашы" - "Көбүрөөк параметр" - "Азыраак параметр" - "Сөз:" "Кыска жол:" "Тил:" "Сөз териңиз" "Кошумча кыска жол" "Сөздү түзөтүү" - "Түзөтүү" - "Жок кылуу" "Колдонуучу сөздүгүңүздө бир дагы сөз жок. Сөз кошуу үчүн кошуу (+) баскычын таптап коюңуз." "Бардык тилдер үчүн" "Дагы тилдер…" - "Жок кылуу" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Системанын тилдерин колдонуу" "Дайын киргизүү ыкмасын тандаңыз" diff --git a/app/src/main/res/values-lo/strings.xml b/app/src/main/res/values-lo/strings.xml index 68c01276d..a8d1f6f0f 100644 --- a/app/src/main/res/values-lo/strings.xml +++ b/app/src/main/res/values-lo/strings.xml @@ -99,8 +99,6 @@ "ສະແດງໄອຄອນຂອງແອັບໃນ Launcher" "ໂຕເສີມວັດຈະນານຸກົມ" "ການຕັ້ງຄ່າສຳລັບວັດຈະນານຸກົມ" - "ວັດຈະນານຸກົມຜູ່ໃຊ້" - "ວັດຈະນານຸກົມຜູ່ໃຊ້" "ມີວັດຈະນານຸກົມ" "ມີປັນຫາໃນການເຊື່ອມຕໍ່ກັບບໍລິການວັດຈະນານຸກົມ" "ບໍ່ມີວັດຈະນານຸກົມ" @@ -112,21 +110,14 @@ "ເວີຊັນ %1$s" "ເພີ່ມ" "ເພີ່ມໄປທີ່ວັດຈະນານຸກົມ" - "ປະໂຫຍກ" - "ຕົວເລືອກເພີ່ມເຕີມ" - "ຕົວເລືອກໜ້ອຍລົງ" - "ຄຳສັບ:" "ທາງລັດ:" "ພາສາ:" "ພິມ​ຄໍາ​ສັບ​ໃດ​ນຶ່ງ" "ຕົວເລືອກທາງລັດ" "ແກ້ໄຂຄຳສັບ" - "ແກ້ໄຂ" - "ລຶບ" "ທ່ານບໍ່ມີຄຳສັບໃດໆໃນວັດຈະນານຸກົມຜູ້ໃຊ້ເທື່ອ. ເພື່ອເພີ່ມຄຳສັບ, ໃຫ້ແຕະປຸ່ມເພີ່ມ (+)." "ສໍາ​ລັບ​ທຸກໆ​ພາ​ສາ" "ພາສາອື່ນໆ..." - "ລຶບ" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "ໃຊ້ພາສາຂອງລະບົບ" "ເລືອກຮູບແບບການປ້ອນ" diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 5813384d9..71aeee451 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -99,8 +99,6 @@ "Pateikti programos piktogramą paleidimo priemonėje" "Papildomi žodynai" "Žodynų nustatymai" - "Naudotojo žodynai" - "Naudotojo žodynas" "Galimas žodynas" "Prisijung. problema" "Nėra galimų žodynų" @@ -114,21 +112,14 @@ "%1$s versija" "Pridėti" "Pridėti prie žodyno" - "Frazė" - "Daugiau parink." - "Mažiau parink." - "Žodis:" "Spartusis klavišas:" "Kalba:" "Įveskite žodį" "Pasirenkamasis spartusis klavišas" "Redaguoti žodį" - "Redaguoti" - "Ištrinti" "Neturite jokių žodžių naudotojo žodyne. Kad pridėtumėte žodį, palieskite mygtuką „Pridėti“ (+)." "Visos kalbos" "Daugiau kalbų..." - "Ištrinti" " AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽ" "Sistemos kalbų naudojimas" "Pasirinkite įvesties metodą" diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index a5d89b834..505033847 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -99,8 +99,6 @@ "Rādīt palaidēja ekrānā lietojumprogrammas ikonu" "Papildināmas vārdnīcas" "Vārdnīcu iestatījumi" - "Lietotāja vārdnīcas" - "Lietotāja vārdnīca" "Vārdnīca ir pieejama" "Nevar savien. ar vārdnīcas pakalp." "Vārdn. nav pieejamas" @@ -112,21 +110,14 @@ "Versija %1$s" "Pievienot" "Pievienot vārdnīcai" - "Frāze" - "Vairāk opciju" - "Mazāk opciju" - "Vārds:" "Saīsne:" "Valoda:" "Ierakstiet vārdu." "Izvēles saīsne" "Vārda rediģēšana" - "Rediģēt" - "Dzēst" "Lietotāja vārdnīcā nav neviena vārda. Lai pievienotu vārdu, pieskarieties pogai Pievienot (+)." "Visās valodās" "Citas valodas..." - "Dzēst" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Sistēmas valodu izmantošana" "Ievades metodes izvēle" diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index f6a4ce27e..471750b79 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -99,8 +99,6 @@ "Прикажи икона на апликација во стартувачот" "Додатоци за речници" "Поставки за речници" - "Кориснички речници" - "Речник на корисникот" "Речникот е достапен" "Проблем при поврзувањето со услугата речник" "Нема достапен речник" @@ -112,21 +110,14 @@ "Верзија %1$s" "Додај" "Додај во речник" - "Израз" - "Повеќе опции" - "Помалку опции" - "Збор:" "Кратенка:" "Јазик:" "Внесете збор" "Изборна кратенка" "Измени збор" - "Измени" - "Избриши" "Немате зборови во корисничкиот речник. За да додадете збор, допрете го копчето Додај (+)." "За сите јазици" "Повеќе јазици..." - "Избриши" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Користи ги системските јазици" "Одбери метод на внес" diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 688a8e3bb..b6b20cb02 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -99,8 +99,6 @@ "ലോഞ്ചറിൽ അപ്ലിക്കേഷൻ ഐക്കൺ പ്രദർശിപ്പിക്കുക" "ആഡ്-ഓൺ നിഘണ്ടുക്കൾ" "നിഘണ്ടുക്കൾക്കായുള്ള ക്രമീകരണങ്ങൾ" - "ഉപയോക്തൃ നിഘണ്ടുക്കൾ" - "ഉപയോക്തൃ നിഘണ്ടു" "നിഘണ്ടു ലഭ്യമാണ്" "നിഘണ്ടു സേവനത്തിൽ കണക്റ്റുചെയ്യുന്നതിൽ പ്രശ്‌നം" "നിഘണ്ടുക്കളൊന്നും ലഭ്യമല്ല" @@ -112,21 +110,14 @@ വേർഷൻ %1$s "ചേര്‍ക്കുക" "നിഘണ്ടുവിൽ ചേർക്കുക" - "വാക്യം" - "കൂടുതൽ ഓപ്‌ഷനുകൾ" - "കുറച്ച് ഓപ്‌ഷനുകൾ" - "പദം:" "കുറുക്കുവഴി:" "ഭാഷ:" "ഒരു പദം ടൈപ്പുചെയ്യുക" "ഓപ്‌ഷണൽ കുറുക്കുവഴി" "പദം എഡിറ്റുചെയ്യുക" - "എഡിറ്റുചെയ്യുക" - "ഇല്ലാതാക്കുക" "ഉപയോക്തൃ നിഘണ്ടുവിൽ നിങ്ങൾക്ക് പദങ്ങളൊന്നുമില്ല. ഒരു പദം ചേർക്കുന്നതിന്, ചേർക്കുക (+) ബട്ടൺ ടാപ്പ് ചെയ്യുക." "എല്ലാ ഭാഷകൾക്കുമായി" "കൂടുതൽ ഭാഷകൾ…" - "ഇല്ലാതാക്കുക" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" വിവിധ പരിധിയില്ല diff --git a/app/src/main/res/values-mn/strings.xml b/app/src/main/res/values-mn/strings.xml index d132ffbc2..75518c9e3 100644 --- a/app/src/main/res/values-mn/strings.xml +++ b/app/src/main/res/values-mn/strings.xml @@ -99,8 +99,6 @@ "Эхлүүлэгч дээр аппликейшний дүрсийг харуулах" "Нэмэлт толь бичгүүд" "Толь бичгийн тохиргоо" - "Хэрэглэгчийн толь бичиг" - "Хэрэглэгчийн толь" "Толь бичиг байна" "Толь бичгийн үйлчилгээнд холбогдоход алдаа гарлаа" "Толь бичиг байхгүй" @@ -112,21 +110,14 @@ "Хувилбар %1$s" "Нэмэх" "Толь бичигт нэмэх" - "Хэллэг" - "Нэмэлт сонголтууд" - "Цөөн сонголт" - "Үг:" "Товчилбор:" "Хэл:" "Үг оруулна уу" "Зайлшгүй биш товчилбор" "Үг засах" - "Засах" - "Устгах" "Таны хэрэглэгчийн толь бичигт ямар ч үг байхгүй байна. Үг нэмэхийн тулд Нэмэх (+) товчлуурыг дарна уу." "Бүх хэлэнд" "Өөр хэлүүд…" - "Устгах" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Системийн хэлүүдийг ашиглах" "Оруулах аргыг сонгоно уу" diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index 6ff543e25..a63916630 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -99,8 +99,6 @@ "लाँचर मध्ये ॲप्लिकेशन आयकन दाखवा" "ॲड-ऑन शब्दकोश" "शब्दकोशांसाठी सेटिंग्ज" - "वापरकर्ता शब्दकोश" - "वापरकर्ता शब्दकोश" "शब्दकोश उपलब्ध" "शब्दकोश सेवेस कनेक्ट करताना समस्या" "कोणतेही शब्दकोश उपलब्ध नाहीत" @@ -112,21 +110,14 @@ "आवृत्ती %1$s" "जोडा" "डिक्शनरीत जोडा" - "वाक्यांश" - "अधिक पर्याय" - "कमी पर्याय" - "शब्द:" "शॉर्टकट:" "भाषा:" "एक शब्द टाईप करा" "पर्यायी शॉर्टकट" "शब्द संपादित करा" - "संपादित करा" - "हटवा" "वापरकर्ता डिक्शनरीमध्ये तुमच्याकडे कोणतेही शब्द नाहीत. एखादा शब्द जोडण्यासाठी, जोडा (+) बटणावर टॅप करा." "सर्व भाषांसाठी" "अधिक भाषा..." - "हटवा" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "सिस्टम भाषा वापरा" "इनपुट पद्धत निवडा" diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index c5fff27b6..b3b5482fc 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -99,8 +99,6 @@ "Paparkan ikon apl dalam pelancar" "Kamus tambahan" "Tetapan untuk kamus" - "Kamus pengguna" - "Kamus pengguna" "Kamus tersedia" "Masalah menyambung kepada perkhidmatan kamus" "Tiada kamus tersedia" @@ -112,21 +110,14 @@ "Versi %1$s" "tambah" "Tambah ke kamus" - "Frasa" - "Lagi pilihan" - "Kurang pilihan" - "Perkataan:" "Pintasan:" "Bahasa:" "Taip perkataan" "Pintasan pilihan" "Edit perkataan" - "Edit" - "Padam" "Anda tiada sebarang perkataan dalam kamus pengguna. Untuk menambahkan perkataan, ketik butang Tambah (+)." "Untuk semua bahasa" "Lebih banyak bahasa..." - "Padam" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Gunakan bahasa sistem" "Pilih kaedah input" diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index f01bd6e08..4e77d6f40 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -99,8 +99,6 @@ "launcher တွင် အပလီကေးရှင်း သင်္ကေတကိုပြရန်" "ပေါင်းထည့်ထားသည့် အဘိဓါန်များ" "အဘိဓါန်များအတွက် ဆက်တင်များ" - "အသုံးပြုသူ အဘိဓါန်များ" - "သုံးစွဲသူ၏ အဘိဓာန်" "အဘိဓါန်ရရှိနိုင်" "အဘိဓါန်ဝန်ဆောင်မှုသို့ ချိတ်ဆက်ရန် ပြဿနာရှိနေသည်" "အဘိဓါန်မရှိ" @@ -112,21 +110,14 @@ "ဗားရှင်း %1$s" "ထည့်ရန်" "အဘိဓာန်ထဲ ထည့်ပါ" - "စကားစု" - "နောက်ထပ် ရွေးစရာ" - "ရွေးစရာလျှော့ရန်" - "စာလုံး:" "အတိုကောက်:" "ဘာသာစကား:" "စကားလုံးတစ်လုံး ရိုက်ပါ" "ရွေးစရာအတိုကောက်" "စာလုံးကို ပြင်ဆင်မည်" - "တည်းဖြတ်ရန်" - "ဖျက်ရန်" "အသုံးပြုသူ အဘိဓာန်တွင် မည်သည့်စကားလုံးမျှ မရှိပါ။ စကားလုံးကိုပေါင်းထည့်ရန် (+) ခလုတ် ကိုတို့ပါ။" "ဘာသာစကားအားလုံးအတွက်" "ဘာသာစကားပိုများများ…" - "ဖျက်ရန်" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "သတ်မှတ် ဘာသာစကားများကို သုံးပါ" "ထည့်သွင်းရေး နည်းကို ရွေးရန်" diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index faf60bd72..cec8638a5 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -99,8 +99,6 @@ "Vis app-ikonet i appoversikten" "Tilleggsordlister" "Innstillinger for ordlister" - "Brukerordlister" - "Brukerordbok" "Ordliste tilgjengelig" "Kan ikke koble til ordlistetjenesten" "Fant ingen ordlister" @@ -112,21 +110,14 @@ "Versjon %1$s" "Legg til" "Legg til i ordlisten" - "Setning" - "Flere alt." - "Færre alt." - "Ord:" "Snarvei:" "Språk:" "Skriv inn et ord" "Valgfri snarvei" "Rediger ord" - "Rediger" - "Slett" "Du har ingen ord i brukerordlisten. Du kan legge til ord ved å trykke på Legg til-knappen (+)." "For alle språk" "Flere språk" - "Slett" " ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ" Basert på systeminnstillinger Alltid vis tallraden diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml index 79bb0f5b7..e8910ef54 100644 --- a/app/src/main/res/values-ne/strings.xml +++ b/app/src/main/res/values-ne/strings.xml @@ -99,8 +99,6 @@ "लन्चरमा अनुप्रयोग आइकन देखाउनुहोस्" "एड-अन शब्दकोश" "शब्दकोशहरूका लागि सेटिङहरू" - "प्रयोगकर्ता शब्दकोशहरू" - "प्रयोगकर्ता शब्दकोश" "उपलब्ध शब्दकोश" "शब्दकोश सेवासँग जोड्न समस्या" "शब्दकोशहरू उपलब्ध छैनन्" @@ -112,21 +110,14 @@ "संस्करण %1$s" "थप्नुहोस्" "शब्दकोशमा थप्नुहोस्" - "पदावली" - "थप विकल्पहरू" - "कम विकल्पहरू" - "शब्द:" "सर्टकट:" "भाषा:" "एउटा शब्द टाइप गर्नुहोस्" "वैकल्पिक सर्टकट" "शब्द सम्पादन गर्नुहोस्" - "सम्पादन गर्नुहोस्" - "मेट्नुहोस्" "तपाईँको प्रयोगकर्ता शब्दकोषमा कुनै पनि शब्दहरू छैनन्। शब्द थप्न थप्नुहोस् (+) बटनलाई ट्याप गर्नुहोस्।" "सबै भाषाहरूका लागि" "थप भाषाहरू..." - "मेट्नुहोस्" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "सिष्टममा भएका भाषा प्रयोग गरियोस्" "निवेश विधि छान्नुहोस्" diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0c85a6ff7..e82c46475 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -99,8 +99,6 @@ "App-pictogram weergeven in het opstartprogramma" "Woordenboeken toevoegen" "Instellingen voor woordenboeken" - "Gebruikerswoordenboeken" - "Gebruikerswoordenboek" "Woordenboek beschikbaar" "Verbindingsprobleem woordenboekservice" "Geen woordenboeken" @@ -112,21 +110,14 @@ "Versie %1$s" "Toevoegen" "Toevoegen aan woordenboek" - "Zinsdeel" - "Meer opties" - "Minder opties" - "Woord:" "Sneltoets:" "Taal:" "Typ een woord" "Optionele snelkoppeling" "Woord bewerken" - "Bewerken" - "Verwijderen" "Er staan geen woorden in het gebruikerswoordenboek. Tik op de knop Toevoegen (+) om een woord toe te voegen." "Voor alle talen" "Meer talen…" - "Verwijderen" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Automatische spatie na punt "Gebruik systeemtalen" diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index fbd285249..2b8696741 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -10,7 +10,6 @@ ଯୋଡ଼ନ୍ତୁ ଅଭିଧାନରେ ଯୋଡ଼ନ୍ତୁ ଭାଷା: - ସମ୍ପାଦନା ଶବ୍ଦ ସମ୍ପାଦନା ଅଧିକ ଭାଷା… ଥିମ୍ @@ -20,8 +19,6 @@ ଯୋଡ଼ନ୍ତୁ ଡିଫଲ୍ଟ ସେଟିଂ - ଅଧିକ ଵିକଳ୍ପ - ଶବ୍ଦ: "ସିଷ୍ଟମ୍‌ ଭାଷା ବ୍ୟବହାର କରନ୍ତୁ" "ଇନପୁଟ୍ ପଦ୍ଧତି ବାଛନ୍ତୁ" "ଅପମାନଜନକ ଶବ୍ଦଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତୁ" diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml index 6573a0c4a..71875319f 100644 --- a/app/src/main/res/values-pa-rPK/strings.xml +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -28,10 +28,7 @@ کیبورڈ دی چوݨ مٹاؤ شامل کرو - لفظ: بولی - مٹاؤ - مٹاؤ خود بخود اکھر کیپیٹل ورتݨ بند بہت diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index cfe62907e..4dfd497a6 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -99,8 +99,6 @@ "ਲਾਂਚਰ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਤੀਕ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" "ਐਡ-ਆਨ ਸ਼ਬਦਕੋਸ਼" "ਸ਼ਬਦਕੋਸ਼ਾਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ" - "ਉਪਭੋਗਤਾ ਸ਼ਬਦਕੋਸ਼" - "ਉਪਭੋਗਤਾ ਸ਼ਬਦਕੋਸ਼" "ਸ਼ਬਦਕੋਸ਼ ਉਪਲਬਧ" "ਸ਼ਬਦਕੋਸ਼ ਸੇਵਾ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ" "ਕੋਈ ਸ਼ਬਦਕੋਸ਼ ਉਪਲਬਧ ਨਹੀਂ" @@ -112,21 +110,14 @@ "ਰੂਪ %1$s" "ਸ਼ਾਮਲ ਕਰੋ" "ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" - "ਵਾਕਾਂਸ਼" - "ਹੋਰ ਚੋਣਾਂ" - "ਘੱਟ ਚੋਣਾਂ" - "ਸ਼ਬਦ:" "ਸ਼ਾਰਟਕੱਟ:" "ਭਾਸ਼ਾ:" "ਇੱਕ ਸ਼ਬਦ ਟਾਈਪ ਕਰੋ" "ਵਿਕਲਪਕ ਸ਼ਾਰਟਕੱਟ" "ਸ਼ਬਦ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" - "ਸੰਪਾਦਨ ਕਰੋ" - "ਮਿਟਾਓ" "ਤੁਹਾਡੇ ਕੋਲ ਵਰਤੋਂਕਾਰ ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹਨ। ਇੱਕ ਸ਼ਬਦ ਸ਼ਾਮਲ ਕਰਨ ਲਈ \'ਸ਼ਾਮਲ ਕਰੋ\' (+) ਬਟਨ \'ਤੇ ਟੈਪ ਕਰੋ।" "ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਲਈ" "ਹੋਰ ਭਾਸ਼ਾਵਾਂ…" - "ਮਿਟਾਓ" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "ਸਿਸਟਮ ਭਾਸ਼ਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ" "ਇਨਪੁਟ ਵਿਧੀ ਚੁਣੋ" diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 0d03393b5..aeebf938b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -100,8 +100,6 @@ "Wyświetlaj ikonę aplikacji w programie uruchamiającym" "Słowniki dodatkowe" "Ustawienia słowników" - "Słowniki użytkownika" - "Słownik użytkownika" "Słownik dostępny" "Problem z połączeniem z usługą słownika" "Brak słowników" @@ -113,21 +111,14 @@ Wersja %1$s "Dodaj" "Dodaj do słownika" - "Fraza" - "Więcej opcji" - "Mniej opcji" - "Słowo:" "Skrót:" "Język:" "Wpisz słowo" "Opcjonalny skrót" "Edytuj słowo" - "Edytuj" - "Usuń" "Brak słów w słowniku użytkownika. Aby dodać słowo, kliknij przycisk Dodaj (+)." "Dla wszystkich języków" "Więcej języków…" - "Usuń" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Korekty Różnorodne diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index fa5c507ca..6e89977f0 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -81,7 +81,6 @@ Parabéns, configuração concluída! Mostrar ícone do aplicativo Adicionar dicionários - Dicionário da(o) usuária(o) Erro ao contatar o serviço de dicionário Nenhum dicionário disponível Atualizar @@ -89,14 +88,12 @@ Configurações Apagar Adicionar - Mais opções Atalho: Idioma: Editar palavra Não existem palavras no dicionário da(o) usuária(o). Para adicionar uma palavra, toque na tecla (+). Para todos os idiomas Mais idiomas… - Apagar " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Borda em teclas Corretor Ortográfico do OpenBoard @@ -145,18 +142,12 @@ Dicionário disponível Alternar para %s Em seguida, selecione \"%s\" como método de entrada. - Dicionários da(o) usuária(o) Agora, já pode utilizar o %s para digitar e escrever nos seus aplicativos favoritos. Dicionário principal Adicionar ao dicionário Versão %1$s - Frase - Menos opções - Apagar - Palavra: Escreva uma palavra Atalho opcional - Editar Modo diurno/noturno automático A aparência seguirá as configurações de tema do sistema Mudar para outros métodos de entrada diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 7cb29f929..3854f5be0 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -100,8 +100,6 @@ "Mostrar ícone da aplicação no iniciador" "Dicionários suplementares" "Definições dos dicionários" - "Dicionários do utilizador" - "Dicionário do utilizador" "Dicionário disponível" "Problema ao ligar ao serviço de dicionário" "Nenhum dicionário" @@ -113,21 +111,14 @@ Versão %1$s "Adicionar" "Adicionar ao dicionário" - "Expressão" - "Mais opções" - "Menos opções" - "Palavra:" "Atalho:" "Idioma:" "Escreva uma palavra" "Atalho opcional" "Editar palavra" - "Editar" - "Eliminar" "Não tem palavras no dicionário do utilizador. Para adicionar uma palavra, toque no botão Adicionar (+)." "Em todos os idiomas" "Mais idiomas..." - "Eliminar" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Mostrar dicas com toque longo Deslize para eliminar diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index cc0e2765b..2515cbc43 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -99,8 +99,6 @@ "Mostrar ícone do app no iniciador" "Dicionários complementares" "Configurações dos dicionários" - "Dicionários do usuário" - "Dicionário do usuário" "Dicionário disponível" "Prob. conexão dic." "Nenhum dicionário disponível" @@ -112,21 +110,14 @@ Versão %1$s "Adicionar" "Adicionar ao dicionário" - "Frase" - "Mais opções" - "Menos opções" - "Palavra:" "Atalho:" "Idioma:" "Digite uma palavra" "Atalho opcional" "Editar palavra" - "Editar" - "Excluir" "Você não tem nenhuma palavra no dicionário do usuário. Para adicionar uma palavra, toque no botão de adição (+)." "Para todos os idiomas" "Mais idiomas..." - "Excluir" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Verificação ortográfica OpenBoard Definições de verificação ortográfica OpenBoard diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 767596669..abbe4a5d8 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -99,8 +99,6 @@ "Afișați pictograma aplicației în lansator" "Dicționare suplimentare" "Setări pentru dicționare" - "Dicționarele utilizatorului" - "Dicționarul utilizatorului" "Dicționar disponibil" "Eroare conectare la serviciu dicționar" "Niciun dicționar" @@ -112,21 +110,14 @@ "Versiunea %1$s" "Adăugați" "Adăugați în dicționar" - "Expresie" - "Alte opțiuni" - "Puține opțiuni" - "Cuvânt:" "Comandă rapidă:" "Limbă:" "Introduceți un cuvânt" "Comandă rapidă opțională" "Editați cuvântul" - "Editați" - "Ștergeți" "Nu aveți niciun cuvânt în dicționarul utilizatorului. Pentru a adăuga un cuvânt, atingeți butonul Adăugați (+)." "Pentru toate limbile" "Mai multe limbi…" - "Ștergeți" " AĂÂBCDEFGHIÎJKLMNOPQRSȘTȚUVWXYZ" "Folosește limbile sistemului" "Alege metoda de introducere de text" diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 51c9cde80..73e78c010 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -100,8 +100,6 @@ Отображать значок приложения на панели запуска Дополнительные словари Настройки словарей - Пользовательские словари - Пользовательский словарь Доступен словарь Сбой подключения Словарей нет @@ -113,21 +111,14 @@ Версия %1$s Добавить Добавление в словарь - Фраза - Больше настроек - Меньше настроек - "Слово:" "Быстрые клавиши:" "Язык:" Введите слово Ярлык для фразы (необязательно) Изменение слова - Изменить - Удалить "В пользовательском словаре пока ничего нет. Добавлять слова можно с помощью кнопки \"Добавить (+)\"." Для всех языков Другой язык - Удалить " АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" Ряд с цифрами Всегда показывать ряд с цифрами diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml index b38f6bf01..6d5d11757 100644 --- a/app/src/main/res/values-si/strings.xml +++ b/app/src/main/res/values-si/strings.xml @@ -99,8 +99,6 @@ "දියත්කරනය තුළ යෙදුම් නිරූපකය දර්ශනය කරන්න" "ඈඳුම් ශබ්ද කෝෂ" "ශබ්ද කෝෂ සඳහා සැකසීම්" - "පරිශීලක ශබ්ද කෝෂ" - "පරිශීලක ශබ්ද කෝෂය" "ශබ්දකෝෂය ලබාගත හැක" "ශබ්දකෝෂ සේවාව වෙත සම්බන්ධ වීමට ගැටලුවක්ද" "ශබ්ද කෝෂ ලබාගත නොහැක" @@ -112,21 +110,14 @@ "%1$s අනුවාදය" "එක් කරන්න" "ශබ්ද කෝෂය වෙත එක් කරන්න" - "වාක්‍ය ඛණ්ඩය" - "තවත් විකල්ප" - "අඩු විකල්ප" - "වචනය:" "කෙටිමග:" "භාෂාව:" "වචනයක් ටයිප් කරන්න" "විකල්පමය කෙටිමග" "වචනය සංස්කරණය කරන්න" - "සංස්කරණය" - "මකන්න" "ඔබට පරිශීලක ශබ්ද කෝෂය තුළ වචන කිසිවක් නැත. වචනයක් එක් කිරීමට, එක් කිරීමේ (+) බොත්තම තට්ටු කරන්න." "සියලු භාෂාවන් සඳහා" "තවත් භාෂා…" - "මකන්න" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "පද්ධති භාෂා භාවිත කරන්න" "ආදාන ක්‍රමයක් තෝරන්න" diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index f0c5eb4d9..8a831d057 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -99,8 +99,6 @@ "Zobrazenie ikony aplikácie v spúšťači" "Doplnkové slovníky" "Nastavenia pre slovníky" - "Používateľské slovníky" - "Používateľský slovník" "K dispozícii je slovník" "Probl. s prip. k sl." "Slovníky sú nedostupné" @@ -112,21 +110,14 @@ "Verzia %1$s" "Pridať" "Pridať do slovníka" - "Fráza" - "Ďalšie možnosti" - "Menej možností" - "Slovo:" "Klávesová skratka" "Jazyk:" "Zadajte slovo" "Voliteľná skratka" "Upraviť slovo" - "Upraviť" - "Odstrániť" "V používateľskom slovníku nie sú žiadne slová. Slovo pridáte klepnutím na tlačidlo Pridať (+)." "pre všetky jazyky" "Ďalšie jazyky…" - "Odstrániť" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Ak vypnuté, klávesa schránky vloží jej obsah ak sa tam nejaký nachádza Doba zachovania histórie diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 7ed3aa70c..19eb586c7 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -99,8 +99,6 @@ "Prikaz ikone aplikacije v zaganjalniku" "Dodatni slovarji" "Nastavitve za slovarje" - "Uporabniški slovarji" - "Uporabniški slovar" "Slovar je na voljo" "Težava s povezavo" "Ni slovarjev" @@ -112,21 +110,14 @@ "Različica %1$s" "Dodaj" "Dodaj v slovar" - "Besedna zveza" - "Več možnosti" - "Manj možnosti" - "Beseda:" "Bližnjica:" "Jezik:" "Vnesite besedo" "Izbirna bližnjica" "Uredi besedo" - "Uredi" - "Izbriši" "V uporabniškem slovarju ni besed. Če želite dodati besedo, se dotaknite gumba za dodajanje (+)." "Za vse jezike" "Več jezikov ..." - "Izbriši" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Uporaba sistemskih jezikov" "Izberite način vnosa" diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 11c3c7021..3b61ffa98 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -99,8 +99,6 @@ "Shfaq ikonën e aplikacionit në mekanizimin e nisjes" "Fjalorë shtesë" "Cilësimet për fjalorët" - "Fjalorë përdoruesi" - "Fjalori i përdoruesit" "Fjalor i përdorshëm" "Problem në lidhjen me shërbimin e fjalorit" "Nuk mund të përdoret asnjë fjalor" @@ -112,21 +110,14 @@ "Versioni %1$s" "Shto" "Shto në fjalor" - "Frazë" - "Më shumë opsione" - "Më pak opsione" - "Fjala:" "Shkurtorja:" "Gjuha:" "Shkruaj një fjalë" "Shkurtore opsionale" "Redakto fjalën" - "Redakto" - "Fshi" "Nuk ke asnjë fjalë në fjalorin e përdoruesit. Për të shtuar një fjalë, trokit te butoni \"Shto (+)\"." "Për të gjitha gjuhët" "Gjuhë të tjera…" - "Fshi" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Përdor gjuhët e sistemit" "Zgjidh metodën e hyrjes" diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 921035b0a..a11d62a03 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -99,8 +99,6 @@ "Икона апликације се приказује у покретачу" "Помоћни речници" "Подешавања за речнике" - "Кориснички речници" - "Кориснички речник" "Речник је доступан" "Проблем при повезивању с услугом речника" "Нема доступних речника" @@ -112,21 +110,14 @@ "Верзија %1$s" "Додај" "Додавање у речник" - "Фраза" - "Више опција" - "Мање опција" - "Реч:" "Пречица:" "Језик:" "Унесите реч" "Опционална пречица" "Измена речи" - "Измени" - "Избриши" "Немате ниједну реч у корисничком речнику. Да бисте додали реч, додирните дугме Додај (+)." "За све језике" "Још језика..." - "Избриши" " АБВГДЂЕЖЗИЈКЛЉМНЊОПРСТЋУФХЦЧЏШ" "Користи језике система" "Избор метода уноса" diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 1e6c9f8b4..fc6cc3cef 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -99,8 +99,6 @@ "Visa appikonen i startprogrammet" "Tilläggsordlistor" "Inställningar för ordlistor" - "Egna ordlistor" - "Egen ordlista" "En ordlista är tillgänglig" "Problem med att ansluta till ordlistetjänsten" "Inga ordlistor finns" @@ -112,21 +110,14 @@ Version %1$s "Lägg till" "Lägg till i ordlista" - "Fras" - "Fler alternativ" - "Färre alternativ" - "Ord:" "Genväg:" "Språk:" "Skriv ett ord" "Valfri genväg" "Redigera ord" - "Redigera" - "Ta bort" "Du har inga ord i din egen ordlista. Tryck på knappen Lägg till (+) om du vill lägga till ett ord." "För alla språk" "Fler språk ..." - "Ta bort" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" Korrigeringar Förslag diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index 2d55c3af0..ca5c230b4 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -99,8 +99,6 @@ "Onyesha aikoni ya programu kwenye kifungua programu" "Kamusi za nyongeza" "Mipangilio ya kamusi" - "Kamusi ya mtumiaji" - "Kamusi ya mtumiaji" "Kamusi inapatikana" "Tatizo wakati wa kuunganisha kwenye huduma ya kamusi" "Hakuna kamusi inayopatikana" @@ -112,21 +110,14 @@ "Toleo la %1$s" "Ongeza" "Ongeza kwenye kamusi" - "Fungu la maneno" - "Hiari zingine" - "Chaguo chache" - "Neno:" "Njia ya mkato:" "Lugha:" "Chapa neno" "Njia ya mkato ya hiari" "Badilisha neno" - "Hariri" - "Futa" "Huna maneno yoyote katika kamusi ya mtumiaji. Gusa kitufe cha Ongeza (+) ili kuongeza neno." "Ya lugha zote" "Lugha zingine..." - "Futa" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Tumia lugha za mfumo" "Chagua njia ya ingizo" diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 9e08717c2..b82d037f8 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -99,8 +99,6 @@ "துவக்கியில் ஆப்ஸ் ஐகானைக் காட்டும்" "துணை அகராதிகள்" "அகராதிகளுக்கான அமைப்பு" - "பயனர் அகராதிகள்" - "பயனர் அகராதி" "அகராதி கிடைக்கிறது" "அகராதி சேவையில் இணைப்பதில் பிரச்சனை ஏற்பட்டது" "அகராதிகள் எதுவும் இல்லை" @@ -112,21 +110,14 @@ "%1$s பதிப்பு" "சேர்" "அகராதியில் சேர்" - "சொற்றொடர்" - "மேலும் விருப்பங்கள்" - "குறைவான விருப்பங்கள்" - "வார்த்தை:" "ஷார்ட்கட்:" "மொழி:" "வார்த்தையை உள்ளிடவும்" "விருப்பத்திற்குரிய ஷார்ட்கட்" "வார்த்தையைத் திருத்து" - "திருத்து" - "நீக்கு" "பயனர் அகராதியில் எந்தச் சொற்களும் இல்லை. சொல்லைச் சேர்க்க, சேர் (+) எனும் பொத்தானைத் தட்டவும்." "எல்லா மொழிகளுக்கும்" "மேலும் மொழிகள்..." - "நீக்கு" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "சாதன மொழிகளைப் பயன்படுத்து" "உள்ளீட்டு முறையைத் தேர்வுசெய்க" diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index f225e3db6..9edf1ac0a 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -99,8 +99,6 @@ "లాంచర్‌లో యాప్‌ చిహ్నాన్ని ప్రదర్శించు" "ఇతర నిఘంటువులు" "నిఘంటువుల కోసం సెట్టింగ్‌లు" - "వినియోగదారు నిఘంటువులు" - "వినియోగదారు నిఘంటువు" "నిఘంటువు అందుబాటులో ఉంది" "నిఘంటువు సేవకు కనెక్ట్ చేయడంలో సమస్య" "నిఘంటువులు ఏవీ అందుబాటులో లేవు" @@ -112,21 +110,14 @@ "వెర్షన్ %1$s" "జోడించు" "నిఘంటువుకి జోడించు" - "పదబంధం" - "మరిన్ని ఎంపికలు" - "తక్కువ ఎంపికలు" - "పదం:" "షార్ట్‌కట్:" "భాష:" "పదాన్ని టైప్ చేయండి" "ఐచ్ఛిక షార్ట్‌కట్" "పదాన్ని సవరించు" - "సవరించు" - "తొలగించు" "మీరు వినియోగదారు నిఘంటువులో పదాలు ఏవీ కలిగి లేరు. పదాన్ని జోడించడానికి, జోడించు (+) బటన్‌ను నొక్కండి." "అన్ని భాషల కోసం" "మరిన్ని భాషలు…" - "తొలగించు" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" సంఖ్యల వరుసను ఎల్లప్పుడూ చూపండి అజ్ఞాత పద్దతి ప్రయోగించండి diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 23bdbdfa9..4154fb18b 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -99,8 +99,6 @@ "แสดงไอคอนแอปพลิเคชันในตัวเรียกใช้งาน" "พจนานุกรมส่วนเสริม" "การตั้งค่าสำหรับพจนานุกรม" - "พจนานุกรมผู้ใช้" - "พจนานุกรมผู้ใช้" "มีพจนานุกรมให้ใช้งาน" "พบปัญหาขณะเชื่อมต่อ" "ไม่มีพจนานุกรม" @@ -112,21 +110,14 @@ "เวอร์ชัน %1$s" "เพิ่ม" "เพิ่มในพจนานุกรม" - "ข้อความ" - "ตัวเลือกอื่น" - "ลดตัวเลือก" - "คำ:" "ทางลัด:" "ภาษา:" "พิมพ์คำ" "ทางลัดที่ไม่บังคับ" "แก้ไขคำ" - "แก้ไข" - "ลบ" "คุณยังไม่มีคำในพจนานุกรมผู้ใช้ หากต้องการเพิ่มคำ ให้แตะปุ่มเพิ่ม (+)" "สำหรับทุกภาษา" "ภาษาเพิ่มเติม…" - "ลบ" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "ใช้ภาษาของระบบ" "เลือกวิธีการป้อนข้อมูล" diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml index f2189657b..7c95ec5c6 100644 --- a/app/src/main/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -99,8 +99,6 @@ "Ipakita ang icon ng application sa launcher" "Mga add-on na diksyunaryo" "Mga setting para sa mga diksyunaryo" - "Mga diksyunaryo ng user" - "Diksyunaryo ng user" "Available ang diksyunaryo" "Di makakonekta sa serbisyong diksyunaryo" "Walang mga diksyunaryo" @@ -112,21 +110,14 @@ "Bersyon %1$s" "Idagdag" "Idagdag sa diksyunaryo" - "Parirala" - "Higit pa" - "Mas kaunti" - "Salita:" "Shortcut:" "Wika:" "Mag-type ng salita" "Opsyonal na shortcut" "I-edit ang salita" - "I-edit" - "I-delete" "Wala kang anumang salita sa diksyunaryo ng user. Para magdagdag ng salita, i-tap ang button na Magdagdag (+)." "Para sa lahat ng wika" "Higit pang mga wika..." - "I-delete" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Gamitin ang mga wika ng system" "Pumili ng pamamaraan ng pag-input" diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c19290e20..792053d7d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -99,8 +99,6 @@ "Uygulama simgesini başlatıcıda gösterir" "Ek sözlükler" "Sözlükler için ayarlar" - "Kullanıcı sözlükleri" - "Kullanıcı sözlüğü" "Sözlük mevcut" "Sözlük hizmetine bağlantı sorunu" "Kullanılabilir sözlük yok" @@ -112,21 +110,14 @@ Sürüm %1$s "Ekle" "Sözlüğe ekle" - "Kelime öbeği" - "Daha çok seçenek" - "Daha az seçenek" - "Kelime:" "Kısayol:" "Dil:" "Bir kelime yazın" "İsteğe bağlı kısayol" "Kelimeyi düzenle" - "Düzenle" - "Sil" "Kullanıcı sözlüğünde kelime yok. Kelime eklemek için Ekle (+) düğmesine dokunun." "Tüm diller için" "Diğer diller…" - "Sil" " ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ" Pano geçmişi Düzeltmeler diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f7e2aeb30..27efcb1e1 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -100,8 +100,6 @@ Відображати піктограму програми на панелі запуску Додаткові словники Налаштування для словників - Словники користувача - Словник користувача Словник доступний "Нема з’єднання зі службою словника" Словники недоступні @@ -113,21 +111,14 @@ Версія %1$s Додати Додати в словник - Фраза - Інші варіанти - Менше опцій - "Слово:" "Ярлик:" "Мова:" Введіть слово "Необов’язковий ярлик" Редагувати слово - Редагувати - Видалити "У словнику користувача нічого немає. Щоб додати слово, торкніться кнопки \"Додати\" (+)." Для всіх мов "Інші мови…" - Видалити " АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ" Налаштування OpenBoard Вигляд наслідує системні налаштування diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 5996f0976..bab677377 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -99,8 +99,6 @@ "لانچر میں ایپلیکیشن آئیکن کو ڈسپلے کریں" "اضافی لغات" "لغات کیلئے ترتیبات" - "صارف لغات" - "صارف کی لغت" "لغت دستیاب ہے" "لغت سروس سے مربوط ہونے میں مسئلہ" "کوئی لغت دستیاب نہیں" @@ -112,21 +110,14 @@ "ورژن %1$s" "شامل کریں" "لغت میں شامل کریں" - "جملہ" - "مزید اختیارات" - "کم اختیارات" - "لفظ:" "شارٹ کٹ:" "زبان:" "ایک لفظ ٹائپ کریں" "اختیاری شارٹ کٹ" "لفظ میں ترمیم کریں" - "ترمیم کریں" - "حذف کریں" "صارف لغت میں آپ کے پاس کوئی الفاظ نہيں ہیں۔ کوئی لفظ شامل کرنے کیلئے شامل کریں (+) بٹن تھپتھپائیں۔" "سبھی زبانوں کیلئے" "مزید زبانیں…" - "حذف کریں" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "سسٹم زبانیں استعمال کریں" "ان پٹ کا طریقہ منتخب کریں" diff --git a/app/src/main/res/values-uz/strings.xml b/app/src/main/res/values-uz/strings.xml index 2af7a3082..1a8f91311 100644 --- a/app/src/main/res/values-uz/strings.xml +++ b/app/src/main/res/values-uz/strings.xml @@ -99,8 +99,6 @@ "Launcherga ilova ikonkasini chiqarish" "Qo‘shimcha lug‘atlar" "Lug‘atlar uchun sozlamalar" - "Foydalanuvchi lug‘atlari" - "Foydalanuvchi lug‘ati" "Lug‘at mavjud" "Ulanib bo‘lmadi" "Lug‘at mavjud emas" @@ -112,21 +110,14 @@ %1$s versiya "Qo‘shish" "Lug‘atga kiritish" - "Ibora" - "Ko‘proq soz-lar" - "Kamroq sozlamalar" - "So‘z:" "Qisqartma:" "Til:" "So‘zni kiriting" "Ibora uchun qisqartma (ixtiyoriy)" "So‘zni tahrirlash" - "Tahrirlash" - "O‘chirish" "Shaxsiy lug‘atingizda hech narsa yo‘q. Unga so‘zlarni qo‘shish uchun “Qo‘shish” (+) tugmasidan foydalaning." "Barcha tillar uchun" "Ko‘proq tillar…" - "O‘chirish" " ABDEFGHIJKLMNOPQRSTUVXYZO‘G‘SHCH" Bufer tarixi Emoji kaliti diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 4e2a92bee..66f927ae6 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -99,8 +99,6 @@ "Hiển thị biểu tượng ứng dụng trong trình chạy" "Từ điển bổ sung" "Cài đặt cho từ điển" - "Từ điển người dùng" - "Từ điển người dùng" "Từ điển có sẵn" "Lỗi kết nối DV từ điển" "Không có từ điển nào" @@ -112,21 +110,14 @@ "Phiên bản %1$s" "Thêm" "Thêm vào từ điển" - "Cụm từ" - "Thêm tùy chọn" - "Bớt tùy chọn" - "Từ:" "Phím tắt:" "Ngôn ngữ:" "Nhập từ" "Phím tắt tùy chọn" "Chỉnh sửa từ" - "Chỉnh sửa" - "Xóa" "Bạn không có bất kỳ từ nào trong từ điển người dùng. Để thêm từ, hãy nhấn vào nút Thêm (+)." "Cho tất cả ngôn ngữ" "Ngôn ngữ khác…" - "Xóa" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Sử dụng ngôn ngữ hệ thống" "Chọn phương thức nhập" diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 95e8cb27f..c0284430e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -99,8 +99,6 @@ "在启动器中显示应用图标" "附加字典" "字典设置" - "用户字典" - "用户字典" "字典可供下载" "连接到字典服务时发生问题" "没有可供下载的字典" @@ -112,21 +110,14 @@ 版本 %1$s "添加" "添加到字典" - "词组" - "更多选项" - "隐藏部分选项" - "字词:" "快捷键:" "语言:" "输入字词" "快捷键(选填)" "修改字词" - "修改" - "删除" "用户字典中没有任何字词。要添加字词,请点按“添加”(+) 按钮。" "所有语言" "更多语言…" - "删除" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" 建议 其他 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 06588fc05..767deeaea 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -99,8 +99,6 @@ "在啟動器中顯示圖示" "附加字典" "字典設定" - "使用者字典" - "使用者字典" "可使用字典" "連線至字典服務時發生問題" "沒有可用的字典" @@ -112,21 +110,14 @@ "版本 %1$s" "新增" "加入字典" - "詞組" - "更多選項" - "較少選項" - "字詞:" "快速鍵:" "語言:" "輸入字詞" "自選快速鍵" "編輯字詞" - "編輯" - "刪除" "您的用戶字典中沒有任何字詞。如要新增字詞,請輕按 [新增] (+) 按鈕。" "所有語言" "更多語言..." - "刪除" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" 實驗功能 %s分鐘 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7c903e08f..d75954863 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -99,8 +99,6 @@ "在啟動器中顯示應用程式圖示" "外掛字典" "字典設定" - "使用者字典" - "使用者字典" "可用的字典" "連線至字典服務時發生問題" "沒有可用的字典" @@ -112,21 +110,14 @@ "版本 %1$s" "新增" "加入字典" - "詞組" - "更多選項" - "較少選項" - "字詞:" "快速鍵:" "語言:" "輸入字詞" "可選用的快速鍵" "編輯字詞" - "編輯" - "刪除" "使用者字典中沒有任何字詞。如要新增字詞,請輕觸「新增」(+) 按鈕。" "所有語言" "更多語言…" - "刪除" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "使用系統語言" "選擇輸入法" diff --git a/app/src/main/res/values-zu/strings.xml b/app/src/main/res/values-zu/strings.xml index f5fbd407e..f8d6d6d00 100644 --- a/app/src/main/res/values-zu/strings.xml +++ b/app/src/main/res/values-zu/strings.xml @@ -99,8 +99,6 @@ "Bonisa isithonjana sohlelo lokusebenza kusiqalisi" "Izichazamazwi ezingezwayo" "Izilungiselelo zezichazamazwi" - "Izichazamazwi zomsebenzisi" - "Isichazamazwi somsebenzisi" "Isichazamazwi siyatholakala" "Inkinga yokuxhumanisa kusevisi yesichazamazwi" "Azikho izachazimazwi ezitholakalayo" @@ -112,21 +110,14 @@ "Inguqulo engu-%1$s" "Engeza" "Faka kusichazamazwi" - "Umshwana" - "Izinketho eziningi" - "Izinketho ezincane" - "Igama:" "Isinqamulelo:" "Ulimi:" "Thayipha igama" "Ukunqamulela okukhethekayo" "Hlela igama" - "Hlela" - "Susa" "Awunawo amagama kwisichazamazwi somsebenzisi. Ukuze ungeze igama, thepha inkinobho (+)." "Okwazo zonke izilimi" "Izilimi eziningi…" - "Susa" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Sebenzisa izilimi zesistimu" "Khetha indlela yokufaka" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3b2eb672a..17de8fbab 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -536,10 +536,6 @@ New dictionary: "Still use" "Error loading dictionary file" - - User dictionaries - - User dictionary Dictionary available @@ -562,21 +558,11 @@ New dictionary: Add to dictionary - - - Phrase - - - More options - - - Less options - - - Word: Shortcut: + + Weight: Language: @@ -589,12 +575,6 @@ New dictionary: Edit word - - - Edit - - - Delete You don\'t have any words in the user dictionary. To add a word, tap the Add (+) button. @@ -604,14 +584,14 @@ New dictionary: More languages… - - - Delete \u0020ABCDEFGHIJKLMNOPQRSTUVWXYZ + + This word is already present in the %s user dictionary. Please type another one. + + Add a word Style diff --git a/app/src/main/res/xml/prefs_screen_correction.xml b/app/src/main/res/xml/prefs_screen_correction.xml index a625786aa..0d18317eb 100644 --- a/app/src/main/res/xml/prefs_screen_correction.xml +++ b/app/src/main/res/xml/prefs_screen_correction.xml @@ -9,9 +9,9 @@ android:key="screen_correction"> - + android:fragment="org.dslul.openboard.inputmethod.latin.settings.UserDictionaryListFragment" + android:key="edit_personal_dictionary" + android:title="@string/edit_personal_dictionary">