mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-20 22:29:10 +00:00
Merge branch 'Helium314:main' into patch-1
This commit is contained in:
commit
c67cd07ed6
113 changed files with 1178 additions and 563 deletions
|
@ -100,8 +100,6 @@ __Planned features and improvements:__
|
|||
* Add and enable emoji dictionaries by default (if available for language)
|
||||
* Clearer / more intuitive arrangement of settings
|
||||
* Maybe hide some less used settings by default (similar to color customization)
|
||||
* Make use of the `.com` key in URL fields (currently only available for tablets)
|
||||
* With language-dependent TLDs
|
||||
* [Bug fixes](https://github.com/Helium314/HeliBoard/issues?q=is%3Aissue+is%3Aopen+label%3Abug)
|
||||
|
||||
__What will _not_ be added:__
|
||||
|
|
|
@ -13,8 +13,8 @@ android {
|
|||
applicationId = "helium314.keyboard"
|
||||
minSdk = 21
|
||||
targetSdk = 34
|
||||
versionCode = 2310
|
||||
versionName = "2.3+dev9"
|
||||
versionCode = 3001
|
||||
versionName = "3.0-alpha2"
|
||||
ndk {
|
||||
abiFilters.clear()
|
||||
abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64"))
|
||||
|
@ -97,7 +97,6 @@ android {
|
|||
dependencies {
|
||||
// androidx
|
||||
implementation("androidx.core:core-ktx:1.13.1")
|
||||
implementation("androidx.appcompat:appcompat:1.7.0")
|
||||
implementation("androidx.recyclerview:recyclerview:1.3.2")
|
||||
implementation("androidx.autofill:autofill:1.1.0")
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
{ "$": "keyboard_state_selector", "emojiKeyEnabled": { "$": "keyboard_state_selector", "alphabet": { "label": "emoji" }}},
|
||||
{ "$": "keyboard_state_selector", "symbols": { "label": "numpad" }},
|
||||
{ "label": "space" },
|
||||
{ "label": "period", "labelFlags": 1073741824 },
|
||||
{ "label": "period" },
|
||||
{ "label": "action", "width": 0.15 }
|
||||
]
|
||||
]
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
ঔ
|
||||
ঐ
|
||||
আ
|
||||
ঈ
|
||||
ঊ
|
||||
ব
|
||||
হ
|
||||
গ
|
||||
দ
|
||||
জ
|
||||
ড
|
||||
|
||||
ও
|
||||
এ
|
||||
অ
|
||||
ই
|
||||
উ
|
||||
প
|
||||
র
|
||||
ক
|
||||
ত
|
||||
চ
|
||||
ট
|
||||
|
||||
ঁ
|
||||
ঢ
|
||||
ম
|
||||
ন
|
||||
ঞ
|
||||
ল
|
||||
ষ
|
||||
স
|
||||
য়
|
||||
।
|
142
app/src/main/assets/layouts/main/bengali_inscript.json
Normal file
142
app/src/main/assets/layouts/main/bengali_inscript.json
Normal file
|
@ -0,0 +1,142 @@
|
|||
[
|
||||
[
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঔ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ৌ", "popup": { "relevant": [{"label": "ঔ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঐ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ৈ", "popup": { "relevant": [{"label": "ঐ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "আ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "া", "popup": { "relevant": [{"label": "আ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঈ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ী", "popup": { "relevant": [{"label": "ঈ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঊ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ূ", "popup": { "relevant": [{"label": "ঊ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ভ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ব", "popup": { "relevant": [{"label": "ভ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঙ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "হ", "popup": { "relevant": [{"label": "ঙ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঘ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "গ", "popup": { "relevant": [{"label": "ঘ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ধ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "দ", "popup": { "relevant": [{"label": "ধ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঝ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "জ", "popup": { "relevant": [{"label": "ঝ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঢ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ড", "popup": { "relevant": [{"label": "ঢ" }]}}
|
||||
}
|
||||
],
|
||||
[
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ও", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ো", "popup": { "relevant": [{"label": "ও" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "এ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ে", "popup": { "relevant": [{"label": "এ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "অ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "্", "popup": { "relevant": [{"label": "অ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ই", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ি", "popup": { "relevant": [{"label": "ই" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "উ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ু", "popup": { "relevant": [{"label": "উ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ফ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "প", "popup": { "relevant": [{"label": "ফ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ড়", "labelFlags": 1073741824 },
|
||||
"default": { "label": "র", "popup": { "main": { "label": "ড়" }, "relevant": [{ "label": "র্য" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "খ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ক", "popup": { "relevant": [{"label": "খ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "থ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ত", "popup": { "main": { "label": "থ" }, "relevant": [{ "label": "ৎ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ছ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "চ", "popup": { "relevant": [{"label": "ছ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঠ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ট", "popup": { "relevant": [{"label": "ঠ" }]}}
|
||||
}
|
||||
],
|
||||
[
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঋ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ৃ", "popup": { "relevant": [{"label": "ঋ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঁ", "labelFlags": 1073741824, "popup": { "relevant": [
|
||||
{"label": "!autoColumnOrder!6" },
|
||||
{ "label": "়" },
|
||||
{ "label": "ৄ" },
|
||||
{ "label": "ঽ" },
|
||||
{ "label": "ৢ" },
|
||||
{ "label": "ৱ" },
|
||||
{ "label": "ৣ" },
|
||||
{ "label": "ৗ" },
|
||||
{ "label": "ৠ" },
|
||||
{ "label": "৺" },
|
||||
{ "label": "ঌ" },
|
||||
{ "label": "ৰ" },
|
||||
{ "label": "ৡ" }
|
||||
]}},
|
||||
"default": { "label": "ং", "popup": { "main": { "label": "ঁ" }, "relevant": [{ "label": "ঃ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ণ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ম", "popup": { "relevant": [{"label": "ণ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঞ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ন", "popup": { "relevant": [{"label": "ঞ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ঢ়", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ব", "popup": { "relevant": [{"label": "ঢ়" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "ষ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "ল", "popup": { "relevant": [{"label": "ষ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "শ", "labelFlags": 1073741824 },
|
||||
"default": { "label": "স", "popup": { "relevant": [{"label": "শ" }]}}
|
||||
},
|
||||
{ "$": "shift_state_selector",
|
||||
"manualOrLocked": { "label": "য", "labelFlags": 1073741824 },
|
||||
"default": { "label": "য়", "popup": { "relevant": [{"label": "য" }]}}
|
||||
}
|
||||
]
|
||||
]
|
31
app/src/main/assets/layouts/main/central_kurdish.txt
Normal file
31
app/src/main/assets/layouts/main/central_kurdish.txt
Normal file
|
@ -0,0 +1,31 @@
|
|||
ق
|
||||
و
|
||||
ە
|
||||
ر
|
||||
ت
|
||||
ی
|
||||
ێ
|
||||
ئ
|
||||
ۆ
|
||||
پ
|
||||
|
||||
ا
|
||||
س
|
||||
ش
|
||||
د
|
||||
ف
|
||||
ھ|ه
|
||||
ژ
|
||||
ل
|
||||
ک
|
||||
گ
|
||||
|
||||
ز
|
||||
ع
|
||||
ح
|
||||
ج
|
||||
چ
|
||||
خ
|
||||
ب
|
||||
ن
|
||||
م
|
|
@ -8,7 +8,7 @@
|
|||
ш
|
||||
щ
|
||||
з
|
||||
х
|
||||
х ъ [ {
|
||||
|
||||
ф
|
||||
ы
|
||||
|
@ -20,7 +20,7 @@
|
|||
л
|
||||
д
|
||||
ж
|
||||
э
|
||||
э э́ ] }
|
||||
|
||||
я
|
||||
ч
|
||||
|
|
34
app/src/main/assets/layouts/main/russian_extended.txt
Normal file
34
app/src/main/assets/layouts/main/russian_extended.txt
Normal file
|
@ -0,0 +1,34 @@
|
|||
й
|
||||
ц
|
||||
у
|
||||
к
|
||||
е
|
||||
н
|
||||
г
|
||||
ш
|
||||
щ
|
||||
з
|
||||
х [ {
|
||||
ъ ] }
|
||||
|
||||
ф
|
||||
ы
|
||||
в
|
||||
а
|
||||
п
|
||||
р
|
||||
о
|
||||
л
|
||||
д
|
||||
ж
|
||||
э э́
|
||||
|
||||
я
|
||||
ч
|
||||
с
|
||||
м
|
||||
и
|
||||
т
|
||||
ь
|
||||
б <
|
||||
ю >
|
|
@ -8,7 +8,8 @@
|
|||
ш
|
||||
щ
|
||||
з
|
||||
х
|
||||
х [ {
|
||||
ї ] }
|
||||
|
||||
ф
|
||||
і
|
||||
|
@ -20,7 +21,7 @@
|
|||
л
|
||||
д
|
||||
ж
|
||||
є
|
||||
є ' "
|
||||
|
||||
я
|
||||
ч
|
||||
|
@ -30,4 +31,4 @@
|
|||
т
|
||||
ь
|
||||
б <
|
||||
ю >
|
||||
ю > ґ
|
||||
|
|
35
app/src/main/assets/layouts/main/ukrainian_extended.txt
Normal file
35
app/src/main/assets/layouts/main/ukrainian_extended.txt
Normal file
|
@ -0,0 +1,35 @@
|
|||
й
|
||||
ц
|
||||
у
|
||||
к
|
||||
е
|
||||
н
|
||||
г
|
||||
ш
|
||||
щ
|
||||
з
|
||||
х [ {
|
||||
ї ] }
|
||||
|
||||
ф
|
||||
і
|
||||
в
|
||||
а
|
||||
п
|
||||
р
|
||||
о
|
||||
л
|
||||
д
|
||||
ж
|
||||
є ' "
|
||||
' "
|
||||
|
||||
я
|
||||
ч
|
||||
с
|
||||
м
|
||||
и
|
||||
т
|
||||
ь
|
||||
б <
|
||||
ю > ґ
|
|
@ -1,36 +1,41 @@
|
|||
[popup_keys]
|
||||
ৌ ঔ
|
||||
ৈ ঐ
|
||||
া আ
|
||||
ী ঈ
|
||||
ূ ঊ
|
||||
ব ভ
|
||||
হ ঙ
|
||||
গ ঘ
|
||||
দ ধ
|
||||
জ ঝ জ্ঞ
|
||||
ড ড়
|
||||
ও ো
|
||||
এ ে
|
||||
অ ্
|
||||
ই ি
|
||||
উ ু
|
||||
জ ঝ
|
||||
ড ঢ
|
||||
ো ও
|
||||
ে এ
|
||||
্ অ
|
||||
ি ই
|
||||
ু উ
|
||||
প ফ
|
||||
র ৃ ঋ ত্র
|
||||
র ড় র্য
|
||||
ক খ
|
||||
ত ৎ থ ত্ত
|
||||
ত থ ৎ
|
||||
চ ছ
|
||||
ট ঠ
|
||||
ঁ ঃ ং
|
||||
ঢ ঢ়
|
||||
ন ণ
|
||||
ঞ ঙ ঞ্জ
|
||||
ষ ক্ষ
|
||||
ৃ ঋ
|
||||
ং ঁ ঃ
|
||||
ঁ !autoColumnOrder!6 ় ৄ ঽ ৢ ৱ ৣ ৗ ৠ ৺ ঌ ৰ ৡ
|
||||
ম ণ
|
||||
ন ঞ
|
||||
ব ঢ়
|
||||
ল ষ
|
||||
স শ
|
||||
য় য
|
||||
। ॥
|
||||
ঔ ৌ
|
||||
ঐ ৈ
|
||||
আ া
|
||||
ঈ ী
|
||||
ঊ ূ
|
||||
punctuation !autoColumnOrder!8 \, ॥ ? ! !icon/zwnj_key| !icon/zwj_key| # @ ( ) / ; : - + \%
|
||||
|
||||
[labels]
|
||||
alphabet: কখগ
|
||||
symbol: ?১২৩
|
||||
period: ।
|
||||
|
||||
[number_row]
|
||||
১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ ০
|
||||
|
|
39
app/src/main/assets/locale_key_texts/ckb.txt
Normal file
39
app/src/main/assets/locale_key_texts/ckb.txt
Normal file
|
@ -0,0 +1,39 @@
|
|||
[popup_keys]
|
||||
ق ٯ
|
||||
و وو
|
||||
ە ة ﻪ ـہ
|
||||
ر ڕ ڒ ࢪ
|
||||
ت ط
|
||||
ی ي ې ۍ
|
||||
ێ ؽ
|
||||
ئ ء ﺋ
|
||||
ۆ ؤ ۏ ۊ ۋ ۉ ۇ
|
||||
پ ث
|
||||
ا أ إ آ ٱ
|
||||
س ص
|
||||
ش ض
|
||||
د ۮ ڌ ﮆ
|
||||
ف ڤ ڡ
|
||||
ھ ھ
|
||||
ژ ━|ـ
|
||||
ل ڵ
|
||||
ک ك ڪ
|
||||
گ غ
|
||||
ز ظ
|
||||
ع ؏
|
||||
ب ى
|
||||
punctuation !autoColumnOrder!8 \؟ ! ، ٫ ؍ : ؛ ; : | - @ _ # * ٪ & ^
|
||||
« „ “ ”
|
||||
» ‚ ‘ ’ ‹ ›
|
||||
|
||||
[labels]
|
||||
alphabet: ئپگ
|
||||
symbol: ٣٢١؟
|
||||
comma: ،
|
||||
question: ؟
|
||||
|
||||
[number_row]
|
||||
١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٠
|
||||
|
||||
[tlds]
|
||||
iq krd
|
|
@ -1,9 +1,19 @@
|
|||
[popup_keys]
|
||||
е ё
|
||||
ь ъ
|
||||
е ё е́ ѣ
|
||||
ф ѳ
|
||||
ы ы́
|
||||
а а́
|
||||
о о́
|
||||
я я́
|
||||
и и́
|
||||
ь ъ ы
|
||||
ю ю́
|
||||
' ’ ‚ ‘ › ‹
|
||||
" ” „ “ » «
|
||||
|
||||
і ы
|
||||
є э э́
|
||||
|
||||
[labels]
|
||||
alphabet: АБВ
|
||||
|
||||
|
|
|
@ -1,9 +1,19 @@
|
|||
[popup_keys]
|
||||
е е́
|
||||
г ґ
|
||||
ь
|
||||
ф ѳ
|
||||
і ї
|
||||
' ’ ‚ ‘
|
||||
" ” „ “
|
||||
а а́
|
||||
о о́
|
||||
я я́
|
||||
и и́ і ї
|
||||
г ґ
|
||||
ю ю́
|
||||
' ’ ‚ ‘ › ‹
|
||||
" ” „ “ » «
|
||||
|
||||
ы і ї
|
||||
э є
|
||||
|
||||
[labels]
|
||||
alphabet: АБВ
|
||||
|
|
|
@ -24,6 +24,7 @@ import helium314.keyboard.latin.common.StringUtils;
|
|||
import helium314.keyboard.latin.utils.PopupKeysUtilsKt;
|
||||
import helium314.keyboard.latin.utils.ToolbarKey;
|
||||
import helium314.keyboard.latin.utils.ToolbarUtilsKt;
|
||||
import kotlin.collections.ArraysKt;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
@ -919,7 +920,7 @@ public class Key implements Comparable<Key> {
|
|||
@NonNull final Drawable spacebarBackground,
|
||||
@NonNull final Drawable actionKeyBackground) {
|
||||
final Drawable background;
|
||||
if (isAccentColored()) {
|
||||
if (hasActionKeyBackground()) {
|
||||
background = actionKeyBackground;
|
||||
} else if (hasFunctionalBackground()) {
|
||||
background = functionalKeyBackground;
|
||||
|
@ -933,17 +934,10 @@ public class Key implements Comparable<Key> {
|
|||
return background;
|
||||
}
|
||||
|
||||
public final boolean isAccentColored() {
|
||||
if (hasActionKeyBackground()) return true;
|
||||
final String iconName = getIconName();
|
||||
if (iconName == null) return false;
|
||||
// todo: other way of identifying the color?
|
||||
// this should be done differently, as users can set any icon now
|
||||
// how is the background drawable selected? can we use the same way?
|
||||
return iconName.equals(KeyboardIconsSet.NAME_NEXT_KEY)
|
||||
|| iconName.equals(KeyboardIconsSet.NAME_PREVIOUS_KEY)
|
||||
|| iconName.equals("clipboard_action_key")
|
||||
|| iconName.equals("emoji_action_key");
|
||||
public final boolean hasActionKeyPopups() {
|
||||
if (!hasActionKeyBackground()) return false;
|
||||
// only use the special action key popups for action colored keys, and only for icon popups
|
||||
return ArraysKt.none(getPopupKeys(), (key) -> key.mIconName == null);
|
||||
}
|
||||
|
||||
public boolean hasFunctionalBackground() {
|
||||
|
|
|
@ -610,7 +610,7 @@ public class KeyboardView extends View {
|
|||
}
|
||||
|
||||
private void setKeyIconColor(Key key, Drawable icon, Keyboard keyboard) {
|
||||
if (key.isAccentColored()) {
|
||||
if (key.hasActionKeyBackground()) {
|
||||
mColors.setColor(icon, ColorType.ACTION_KEY_ICON);
|
||||
} else if (key.isShift() && keyboard != null) {
|
||||
if (keyboard.mId.mElementId == KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED
|
||||
|
|
|
@ -18,6 +18,7 @@ import android.graphics.Paint;
|
|||
import android.graphics.Paint.Align;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
@ -25,7 +26,6 @@ import android.view.ViewGroup;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
|
||||
import helium314.keyboard.accessibility.AccessibilityUtils;
|
||||
import helium314.keyboard.accessibility.MainKeyboardAccessibilityDelegate;
|
||||
|
@ -505,7 +505,7 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy
|
|||
mPopupKeysKeyboardCache.put(key, popupKeysKeyboard);
|
||||
}
|
||||
|
||||
final View container = key.hasActionKeyBackground() ? mPopupKeysKeyboardForActionContainer
|
||||
final View container = key.hasActionKeyPopups() ? mPopupKeysKeyboardForActionContainer
|
||||
: mPopupKeysKeyboardContainer;
|
||||
final PopupKeysKeyboardView popupKeysKeyboardView =
|
||||
container.findViewById(R.id.popup_keys_keyboard_view);
|
||||
|
|
|
@ -328,12 +328,13 @@ public final class PopupKeysKeyboard extends Keyboard {
|
|||
final PopupKeysKeyboardParams params = mParams;
|
||||
final int popupKeyFlags = mParentKey.getPopupKeyLabelFlags();
|
||||
final PopupKeySpec[] popupKeys = mParentKey.getPopupKeys();
|
||||
final int background = mParentKey.hasActionKeyPopups() ? Key.BACKGROUND_TYPE_ACTION : Key.BACKGROUND_TYPE_NORMAL;
|
||||
for (int n = 0; n < popupKeys.length; n++) {
|
||||
final PopupKeySpec popupKeySpec = popupKeys[n];
|
||||
final int row = n / params.mNumColumns;
|
||||
final int x = params.getX(n, row);
|
||||
final int y = params.getY(row);
|
||||
final Key key = popupKeySpec.buildKey(x, y, popupKeyFlags, params);
|
||||
final Key key = popupKeySpec.buildKey(x, y, popupKeyFlags, background, params);
|
||||
params.markAsEdgeKey(key, row);
|
||||
params.onAddKey(key);
|
||||
|
||||
|
|
|
@ -15,8 +15,7 @@ import android.text.TextUtils;
|
|||
import android.util.AttributeSet;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import helium314.keyboard.keyboard.Key;
|
||||
import helium314.keyboard.latin.R;
|
||||
|
@ -25,10 +24,9 @@ import helium314.keyboard.latin.settings.Settings;
|
|||
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* The pop up key preview view.
|
||||
*/
|
||||
public class KeyPreviewView extends AppCompatTextView {
|
||||
/** The pop up key preview view. */
|
||||
// Android Studio complains about TextView, but we're not using tint or auto-size that should be the relevant differences
|
||||
public class KeyPreviewView extends TextView {
|
||||
public static final int POSITION_MIDDLE = 0;
|
||||
public static final int POSITION_LEFT = 1;
|
||||
public static final int POSITION_RIGHT = 2;
|
||||
|
|
|
@ -80,6 +80,7 @@ public final class KeyboardState {
|
|||
private static final int SWITCH_STATE_SYMBOL_BEGIN = 1;
|
||||
private static final int SWITCH_STATE_SYMBOL = 2;
|
||||
private static final int SWITCH_STATE_NUMPAD = 3;
|
||||
private static final int SWITCH_STATE_NUMPAD_BEGIN = 9;
|
||||
private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 4;
|
||||
private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 5;
|
||||
private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 6;
|
||||
|
@ -403,7 +404,7 @@ public final class KeyboardState {
|
|||
mMode = MODE_NUMPAD;
|
||||
mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
|
||||
mSwitchActions.setNumpadKeyboard();
|
||||
mSwitchState = withSliding ? SWITCH_STATE_MOMENTARY_TO_NUMPAD : SWITCH_STATE_NUMPAD;
|
||||
mSwitchState = withSliding ? SWITCH_STATE_MOMENTARY_TO_NUMPAD : SWITCH_STATE_NUMPAD_BEGIN;
|
||||
}
|
||||
|
||||
public void toggleNumpad(final boolean withSliding, final int autoCapsFlags, final int recapitalizeMode,
|
||||
|
@ -789,6 +790,17 @@ public final class KeyboardState {
|
|||
mPrevSymbolsKeyboardWasShifted = false;
|
||||
}
|
||||
break;
|
||||
case SWITCH_STATE_NUMPAD:
|
||||
// Switch back to alpha keyboard mode if user types one or more non-space/enter
|
||||
// characters followed by a space/enter.
|
||||
if (isSpaceOrEnter(code) && Settings.getValues().mAlphaAfterNumpadAndSpace) {
|
||||
toggleNumpad(false, autoCapsFlags, recapitalizeMode, true, false);
|
||||
}
|
||||
break;
|
||||
case SWITCH_STATE_NUMPAD_BEGIN:
|
||||
if (!isSpaceOrEnter(code))
|
||||
mSwitchState = SWITCH_STATE_NUMPAD;
|
||||
break;
|
||||
}
|
||||
|
||||
// If the code is a letter, update keyboard shift state.
|
||||
|
@ -833,6 +845,7 @@ public final class KeyboardState {
|
|||
case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE -> "MOMENTARY-SYMBOL-MORE";
|
||||
case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT -> "MOMENTARY-ALPHA_SHIFT";
|
||||
case SWITCH_STATE_NUMPAD -> "NUMPAD";
|
||||
case SWITCH_STATE_NUMPAD_BEGIN -> "NUMPAD-BEGIN";
|
||||
case SWITCH_STATE_MOMENTARY_TO_NUMPAD -> "MOMENTARY-TO-NUMPAD";
|
||||
case SWITCH_STATE_MOMENTARY_FROM_NUMPAD -> "MOMENTARY-FROM-NUMPAD";
|
||||
default -> null;
|
||||
|
|
|
@ -68,11 +68,9 @@ public final class PopupKeySpec {
|
|||
}
|
||||
|
||||
@NonNull
|
||||
public Key buildKey(final int x, final int y, final int labelFlags,
|
||||
@NonNull final KeyboardParams params) {
|
||||
return new Key(mLabel, mIconName, mCode, mOutputText, null /* hintLabel */, labelFlags,
|
||||
Key.BACKGROUND_TYPE_NORMAL, x, y, params.mDefaultAbsoluteKeyWidth, params.mDefaultAbsoluteRowHeight,
|
||||
params.mHorizontalGap, params.mVerticalGap);
|
||||
public Key buildKey(final int x, final int y, final int labelFlags, final int background, @NonNull final KeyboardParams params) {
|
||||
return new Key(mLabel, mIconName, mCode, mOutputText, null, labelFlags, background, x, y,
|
||||
params.mDefaultAbsoluteKeyWidth, params.mDefaultAbsoluteRowHeight, params.mHorizontalGap, params.mVerticalGap);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -59,8 +59,7 @@ object LayoutParser {
|
|||
|
||||
/** Parse simple layouts, defined only as rows of (normal) keys with popup keys. */
|
||||
fun parseSimpleString(layoutText: String): List<List<KeyData>> {
|
||||
val rowStrings = layoutText.replace("\r\n", "\n").split("\\n\\s*\\n".toRegex()).filter { it.isNotBlank() }
|
||||
return rowStrings.map { row ->
|
||||
return LayoutUtils.getSimpleRowStrings(layoutText).map { row ->
|
||||
row.split("\n").mapNotNull { parseKey(it) }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) {
|
|||
"mns" -> Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO
|
||||
else -> 0
|
||||
}
|
||||
val tlds = getLocaleTlds(locale) // todo: USE IT
|
||||
val tlds = getLocaleTlds(locale)
|
||||
|
||||
init {
|
||||
readStream(dataStream, false, true)
|
||||
|
@ -89,12 +89,6 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) {
|
|||
}
|
||||
}
|
||||
|
||||
fun addDefaultTlds(locale: Locale) {
|
||||
if ((locale.language != "en" && euroLocales.matches(locale.language)) || euroCountries.matches(locale.country))
|
||||
tlds.add(".eu")
|
||||
tlds.addAll(defaultTlds.splitOnWhitespace())
|
||||
}
|
||||
|
||||
/** Pair(extraKeysLeft, extraKeysRight) */
|
||||
fun getTabletExtraKeys(elementId: Int): Pair<List<KeyData>, List<KeyData>> {
|
||||
val flags = Key.LABEL_FLAGS_FONT_DEFAULT
|
||||
|
@ -205,7 +199,6 @@ private fun createLocaleKeyTexts(context: Context, params: KeyboardParams, popup
|
|||
if (locale == params.mId.locale) return@forEach
|
||||
lkt.addFile(getStreamForLocale(locale, context), true)
|
||||
}
|
||||
lkt.addDefaultTlds(params.mId.locale)
|
||||
when (popupKeysSetting) {
|
||||
POPUP_KEYS_MAIN -> lkt.addFile(context.assets.open("$LOCALE_TEXTS_FOLDER/more_popups_main.txt"), false)
|
||||
POPUP_KEYS_MORE -> lkt.addFile(context.assets.open("$LOCALE_TEXTS_FOLDER/more_popups_more.txt"), false)
|
||||
|
@ -227,19 +220,27 @@ private fun getStreamForLocale(locale: Locale, context: Context) =
|
|||
}
|
||||
|
||||
private fun getLocaleTlds(locale: Locale): LinkedHashSet<String> {
|
||||
val tlds = getDefaultTlds(locale)
|
||||
val ccLower = locale.country.lowercase()
|
||||
val tlds = LinkedHashSet<String>()
|
||||
if (ccLower.isEmpty() || locale.language == SubtypeLocaleUtils.NO_LANGUAGE)
|
||||
return tlds
|
||||
specialCountryTlds.forEach {
|
||||
if (ccLower != it.first) return@forEach
|
||||
tlds.addAll(it.second.splitOnWhitespace())
|
||||
return tlds
|
||||
return@getLocaleTlds tlds
|
||||
}
|
||||
tlds.add(".$ccLower")
|
||||
return tlds
|
||||
}
|
||||
|
||||
private fun getDefaultTlds(locale: Locale): LinkedHashSet<String> {
|
||||
val tlds = linkedSetOf<String>()
|
||||
tlds.addAll(defaultTlds.splitOnWhitespace())
|
||||
if ((locale.language != "en" && euroLocales.matches(locale.language)) || euroCountries.matches(locale.country))
|
||||
tlds.add(".eu")
|
||||
return tlds
|
||||
}
|
||||
|
||||
fun clearCache() = localeKeyboardInfosCache.clear()
|
||||
|
||||
// cache the texts, so they don't need to be read over and over
|
||||
|
|
|
@ -24,6 +24,7 @@ import helium314.keyboard.latin.common.StringUtils
|
|||
import helium314.keyboard.latin.settings.Settings
|
||||
import helium314.keyboard.latin.spellcheck.AndroidSpellCheckerService
|
||||
import helium314.keyboard.latin.utils.InputTypeUtils
|
||||
import helium314.keyboard.latin.utils.LayoutType
|
||||
import helium314.keyboard.latin.utils.Log
|
||||
import helium314.keyboard.latin.utils.ToolbarKey
|
||||
import helium314.keyboard.latin.utils.getCodeForToolbarKey
|
||||
|
@ -482,8 +483,7 @@ sealed interface KeyData : AbstractKeyData {
|
|||
KeyLabel.DELETE -> "!icon/delete_key|!code/key_delete"
|
||||
KeyLabel.SHIFT -> "${getShiftLabel(params)}|!code/key_shift"
|
||||
// KeyLabel.EMOJI -> "!icon/emoji_normal_key|!code/key_emoji"
|
||||
// todo (later): label and popupKeys for .com should be in localeKeyTexts, handled similar to currency key
|
||||
KeyLabel.COM -> ".com"
|
||||
KeyLabel.COM -> params.mLocaleKeyboardInfos.tlds.first()
|
||||
KeyLabel.LANGUAGE_SWITCH -> "!icon/language_switch_key|!code/key_language_switch"
|
||||
KeyLabel.ZWNJ -> "!icon/zwnj_key|\u200C"
|
||||
KeyLabel.CURRENCY -> params.mLocaleKeyboardInfos.currencyKey.first
|
||||
|
@ -526,8 +526,11 @@ sealed interface KeyData : AbstractKeyData {
|
|||
return when (label) {
|
||||
KeyLabel.ALPHA, KeyLabel.SYMBOL_ALPHA, KeyLabel.SYMBOL -> Key.LABEL_FLAGS_PRESERVE_CASE or Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR
|
||||
KeyLabel.COMMA -> Key.LABEL_FLAGS_HAS_POPUP_HINT
|
||||
// essentially this only changes the appearance of the armenian period key in holo theme
|
||||
KeyLabel.PERIOD -> Key.LABEL_FLAGS_HAS_POPUP_HINT and if (params.mId.isAlphabetKeyboard) params.mLocaleKeyboardInfos.labelFlags else 0
|
||||
// essentially the first term only changes the appearance of the armenian period key in holo theme
|
||||
KeyLabel.PERIOD -> (Key.LABEL_FLAGS_HAS_POPUP_HINT and
|
||||
if (params.mId.isAlphabetKeyboard) params.mLocaleKeyboardInfos.labelFlags else 0) or
|
||||
(if (shouldShowTldPopups(params)) 0 else Key.LABEL_FLAGS_DISABLE_HINT_LABEL) or
|
||||
Key.LABEL_FLAGS_PRESERVE_CASE
|
||||
KeyLabel.ACTION -> {
|
||||
Key.LABEL_FLAGS_PRESERVE_CASE or Key.LABEL_FLAGS_AUTO_X_SCALE or
|
||||
Key.LABEL_FLAGS_FOLLOW_KEY_LABEL_RATIO or Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR or
|
||||
|
@ -546,12 +549,12 @@ sealed interface KeyData : AbstractKeyData {
|
|||
|
||||
private fun getAdditionalPopupKeys(params: KeyboardParams): PopupSet<AbstractKeyData>? {
|
||||
if (groupId == GROUP_COMMA) return SimplePopups(getCommaPopupKeys(params))
|
||||
if (groupId == GROUP_PERIOD) return SimplePopups(getPunctuationPopupKeys(params))
|
||||
if (groupId == GROUP_PERIOD) return getPeriodPopups(params)
|
||||
if (groupId == GROUP_ENTER) return getActionKeyPopupKeys(params)
|
||||
if (groupId == GROUP_NO_DEFAULT_POPUP) return null
|
||||
return when (label) {
|
||||
KeyLabel.COMMA -> SimplePopups(getCommaPopupKeys(params))
|
||||
KeyLabel.PERIOD -> SimplePopups(getPunctuationPopupKeys(params))
|
||||
KeyLabel.PERIOD -> getPeriodPopups(params)
|
||||
KeyLabel.ACTION -> getActionKeyPopupKeys(params)
|
||||
KeyLabel.SHIFT -> {
|
||||
if (params.mId.isAlphabetKeyboard) SimplePopups(
|
||||
|
@ -561,13 +564,27 @@ sealed interface KeyData : AbstractKeyData {
|
|||
)
|
||||
) else null // why the alphabet popup keys actually?
|
||||
}
|
||||
KeyLabel.COM -> SimplePopups(listOf(Key.POPUP_KEYS_HAS_LABELS, ".net", ".org", ".gov", ".edu"))
|
||||
KeyLabel.COM -> SimplePopups(
|
||||
listOf(Key.POPUP_KEYS_HAS_LABELS).plus(params.mLocaleKeyboardInfos.tlds.drop(1))
|
||||
)
|
||||
|
||||
KeyLabel.ZWNJ -> SimplePopups(listOf("!icon/zwj_key|\u200D"))
|
||||
// only add currency popups if there are none defined on the key
|
||||
KeyLabel.CURRENCY -> if (popup.isEmpty()) SimplePopups(params.mLocaleKeyboardInfos.currencyKey.second) else null
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
private fun getPeriodPopups(params: KeyboardParams): SimplePopups =
|
||||
SimplePopups(
|
||||
if (shouldShowTldPopups(params)) params.mLocaleKeyboardInfos.tlds
|
||||
else getPunctuationPopupKeys(params)
|
||||
)
|
||||
|
||||
private fun shouldShowTldPopups(params: KeyboardParams): Boolean =
|
||||
(Settings.getInstance().current.mShowTldPopupKeys
|
||||
&& params.mId.mSubtype.layouts[LayoutType.FUNCTIONAL] != "functional_keys_tablet"
|
||||
&& params.mId.mMode in setOf(KeyboardId.MODE_URL, KeyboardId.MODE_EMAIL))
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -161,7 +161,7 @@ fun checkVersionUpgrade(context: Context) {
|
|||
split[1] = newName
|
||||
split.joinToString(":")
|
||||
}
|
||||
Settings.writePrefAdditionalSubtypes(prefs, newSubtypeStrings.joinToString(";"))
|
||||
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, newSubtypeStrings.joinToString(";")).apply()
|
||||
}
|
||||
// rename other custom layouts
|
||||
LayoutUtilsCustom.onLayoutFileChanged()
|
||||
|
@ -232,7 +232,7 @@ fun checkVersionUpgrade(context: Context) {
|
|||
KeyboardTheme.writeUserMoreColors(prefs, themeNameNight, moreColorsNight)
|
||||
}
|
||||
if (prefs.contains("theme_dark_color_all_colors")) {
|
||||
val allColorsNight = readAllColorsMap(false)
|
||||
val allColorsNight = readAllColorsMap(true)
|
||||
prefs.edit().remove("theme_dark_color_all_colors").apply()
|
||||
KeyboardTheme.writeUserAllColors(prefs, themeNameNight, allColorsNight)
|
||||
}
|
||||
|
@ -530,6 +530,18 @@ fun checkVersionUpgrade(context: Context) {
|
|||
prefs.edit().remove("auto_correction_confidence").putFloat(Settings.PREF_AUTO_CORRECT_THRESHOLD, value).apply()
|
||||
}
|
||||
}
|
||||
if (oldVersion <= 2310) {
|
||||
listOf(
|
||||
Settings.PREF_ENABLED_SUBTYPES,
|
||||
Settings.PREF_SELECTED_SUBTYPE,
|
||||
Settings.PREF_ADDITIONAL_SUBTYPES
|
||||
).forEach { key ->
|
||||
val value = prefs.getString(key, "")!!
|
||||
if ("bengali," in value) {
|
||||
prefs.edit().putString(key, value.replace("bengali,", "bengali_inscript,")).apply()
|
||||
}
|
||||
}
|
||||
}
|
||||
upgradeToolbarPrefs(prefs)
|
||||
LayoutUtilsCustom.onLayoutFileChanged() // just to be sure
|
||||
prefs.edit { putInt(Settings.PREF_VERSION_CODE, BuildConfig.VERSION_CODE) }
|
||||
|
@ -618,7 +630,7 @@ private fun upgradesWhenComingFromOldAppName(context: Context) {
|
|||
val localeString = it.substringBefore(":")
|
||||
additionalSubtypes.add(it.replace(localeString, localeString.constructLocale().toLanguageTag()))
|
||||
}
|
||||
Settings.writePrefAdditionalSubtypes(prefs, additionalSubtypes.joinToString(";"))
|
||||
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, additionalSubtypes.joinToString(";")).apply()
|
||||
}
|
||||
// move pinned clips to credential protected storage if device is not locked (should never happen)
|
||||
if (!prefs.contains(Settings.PREF_PINNED_CLIPS)) return
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
package helium314.keyboard.latin;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
@ -100,7 +101,6 @@ import java.util.concurrent.TimeUnit;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
/**
|
||||
|
@ -523,6 +523,11 @@ public class LatinIME extends InputMethodService implements
|
|||
}
|
||||
|
||||
final class SubtypeState {
|
||||
// When HintLocales causes a subtype override, we store
|
||||
// the overridden subtype here in order to restore it when
|
||||
// we switch to another input context that has no HintLocales.
|
||||
private InputMethodSubtype mOverriddenByLocale;
|
||||
|
||||
private InputMethodSubtype mLastActiveSubtype;
|
||||
private boolean mCurrentSubtypeHasBeenUsed = true; // starting with true avoids immediate switch
|
||||
|
||||
|
@ -530,6 +535,70 @@ public class LatinIME extends InputMethodService implements
|
|||
mCurrentSubtypeHasBeenUsed = true;
|
||||
}
|
||||
|
||||
// TextFields can provide locale/language hints that the IME should use via 'hintLocales'.
|
||||
// If a matching subtype is found, we temporarily switch to that subtype until
|
||||
// we return to a context that does not provide any hints, or until the user
|
||||
// explicitly changes the language/subtype in use.
|
||||
public InputMethodSubtype getSubtypeForLocales(final RichInputMethodManager richImm, final Iterable<Locale> locales) {
|
||||
final InputMethodSubtype overriddenByLocale = mOverriddenByLocale;
|
||||
if (locales == null) {
|
||||
if (overriddenByLocale != null) {
|
||||
// no locales provided, so switch back to
|
||||
// whatever subtype was used last time.
|
||||
mOverriddenByLocale = null;
|
||||
|
||||
return overriddenByLocale;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
final InputMethodSubtype currentSubtype = richImm.getCurrentSubtype().getRawSubtype();
|
||||
final Locale currentSubtypeLocale = richImm.getCurrentSubtypeLocale();
|
||||
final int minimumMatchLevel = 3; // LocaleUtils.LOCALE_LANGUAGE_MATCH_COUNTRY_DIFFER;
|
||||
|
||||
// Try finding a subtype matching the hint language.
|
||||
for (final Locale hintLocale : locales) {
|
||||
if (LocaleUtils.INSTANCE.getMatchLevel(hintLocale, currentSubtypeLocale) >= minimumMatchLevel
|
||||
|| CollectionsKt.any(mSettings.getCurrent().mSecondaryLocales,
|
||||
(secLocale) -> LocaleUtils.INSTANCE.getMatchLevel(hintLocale, secLocale) >= minimumMatchLevel)) {
|
||||
// current locales are already a good match, and we want to avoid unnecessary layout switches.
|
||||
return null;
|
||||
}
|
||||
|
||||
final InputMethodSubtype subtypeForHintLocale = richImm.findSubtypeForHintLocale(hintLocale);
|
||||
if (subtypeForHintLocale == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (subtypeForHintLocale.equals(currentSubtype)) {
|
||||
// no need to switch, we already use the correct locale.
|
||||
return null;
|
||||
}
|
||||
|
||||
if (overriddenByLocale == null) {
|
||||
// auto-switching based on hint locale, so store
|
||||
// whatever subtype was in use so we can switch back
|
||||
// to it later when there are no hint locales.
|
||||
mOverriddenByLocale = currentSubtype;
|
||||
}
|
||||
|
||||
return subtypeForHintLocale;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void onSubtypeChanged(final InputMethodSubtype oldSubtype,
|
||||
final InputMethodSubtype newSubtype) {
|
||||
if (oldSubtype != mOverriddenByLocale) {
|
||||
// Whenever the subtype is changed, clear tracking
|
||||
// the subtype that is overridden by a HintLocale as
|
||||
// we no longer have a subtype to automatically switch back to.
|
||||
mOverriddenByLocale = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void switchSubtype(final RichInputMethodManager richImm) {
|
||||
final InputMethodSubtype currentSubtype = richImm.getCurrentSubtype().getRawSubtype();
|
||||
final InputMethodSubtype lastActiveSubtype = mLastActiveSubtype;
|
||||
|
@ -858,6 +927,8 @@ public class LatinIME extends InputMethodService implements
|
|||
return;
|
||||
}
|
||||
InputMethodSubtype oldSubtype = mRichImm.getCurrentSubtype().getRawSubtype();
|
||||
|
||||
mSubtypeState.onSubtypeChanged(oldSubtype, subtype);
|
||||
StatsUtils.onSubtypeChanged(oldSubtype, subtype);
|
||||
mRichImm.onSubtypeChanged(subtype);
|
||||
mInputLogic.onSubtypeChanged(SubtypeLocaleUtils.getCombiningRulesExtraValue(subtype),
|
||||
|
@ -876,20 +947,10 @@ public class LatinIME extends InputMethodService implements
|
|||
super.onStartInput(editorInfo, restarting);
|
||||
|
||||
final List<Locale> hintLocales = EditorInfoCompatUtils.getHintLocales(editorInfo);
|
||||
if (hintLocales == null) {
|
||||
return;
|
||||
}
|
||||
// Try switching to a subtype matching the hint language.
|
||||
for (final Locale hintLocale : hintLocales) {
|
||||
if (LocaleUtils.INSTANCE.getMatchLevel(hintLocale, mRichImm.getCurrentSubtypeLocale()) >= 3
|
||||
|| CollectionsKt.any(mSettings.getCurrent().mSecondaryLocales, (secLocale) -> LocaleUtils.INSTANCE.getMatchLevel(hintLocale, secLocale) >= 3))
|
||||
return; // current locales are already a good match, and we want to avoid unnecessary layout switches
|
||||
final InputMethodSubtype newSubtype = mRichImm.findSubtypeForHintLocale(hintLocale);
|
||||
if (newSubtype == null) continue;
|
||||
if (newSubtype.equals(mRichImm.getCurrentSubtype().getRawSubtype()))
|
||||
return; // no need to switch, we already use the correct locale
|
||||
mHandler.postSwitchLanguage(newSubtype);
|
||||
break;
|
||||
final InputMethodSubtype subtypeForLocales = mSubtypeState.getSubtypeForLocales(mRichImm, hintLocales);
|
||||
if (subtypeForLocales != null) {
|
||||
// found a better subtype using hint locales that we should switch to.
|
||||
mHandler.postSwitchLanguage(subtypeForLocales);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import helium314.keyboard.keyboard.KeyboardTheme
|
|||
import helium314.keyboard.latin.BuildConfig
|
||||
import helium314.keyboard.latin.common.Constants.Separators
|
||||
import helium314.keyboard.latin.common.Constants.Subtype.ExtraValue
|
||||
import helium314.keyboard.latin.utils.JniUtils
|
||||
import helium314.keyboard.latin.utils.LayoutType
|
||||
import helium314.keyboard.latin.utils.POPUP_KEYS_LABEL_DEFAULT
|
||||
import helium314.keyboard.latin.utils.POPUP_KEYS_ORDER_DEFAULT
|
||||
|
@ -74,9 +73,9 @@ object Defaults {
|
|||
const val PREF_LANGUAGE_SWITCH_KEY = "internal"
|
||||
const val PREF_SHOW_EMOJI_KEY = false
|
||||
const val PREF_VARIABLE_TOOLBAR_DIRECTION = true
|
||||
const val PREF_ADDITIONAL_SUBTYPES = "de${Separators.SET}${ExtraValue.KEYBOARD_LAYOUT_SET}=qwerty${Separators.SETS}" +
|
||||
"fr${Separators.SET}${ExtraValue.KEYBOARD_LAYOUT_SET}=qwertz${Separators.SETS}" +
|
||||
"hu${Separators.SET}${ExtraValue.KEYBOARD_LAYOUT_SET}=qwerty"
|
||||
const val PREF_ADDITIONAL_SUBTYPES = "de${Separators.SET}${ExtraValue.KEYBOARD_LAYOUT_SET}=MAIN:qwerty${Separators.SETS}" +
|
||||
"fr${Separators.SET}${ExtraValue.KEYBOARD_LAYOUT_SET}=MAIN:qwertz${Separators.SETS}" +
|
||||
"hu${Separators.SET}${ExtraValue.KEYBOARD_LAYOUT_SET}=MAIN:qwerty"
|
||||
const val PREF_ENABLE_SPLIT_KEYBOARD = false
|
||||
const val PREF_ENABLE_SPLIT_KEYBOARD_LANDSCAPE = false
|
||||
const val PREF_SPLIT_SPACER_SCALE = SettingsValues.DEFAULT_SIZE_SCALE
|
||||
|
@ -123,6 +122,7 @@ object Defaults {
|
|||
const val PREF_POPUP_KEYS_ORDER = POPUP_KEYS_ORDER_DEFAULT
|
||||
const val PREF_POPUP_KEYS_LABELS_ORDER = POPUP_KEYS_LABEL_DEFAULT
|
||||
const val PREF_SHOW_POPUP_HINTS = false
|
||||
const val PREF_SHOW_TLD_POPUP_KEYS = true
|
||||
const val PREF_MORE_POPUP_KEYS = "main"
|
||||
const val PREF_SPACE_TO_CHANGE_LANG = true
|
||||
const val PREF_LANGUAGE_SWIPE_DISTANCE = 5
|
||||
|
@ -145,6 +145,7 @@ object Defaults {
|
|||
const val PREF_ABC_AFTER_EMOJI = false
|
||||
const val PREF_ABC_AFTER_CLIP = false
|
||||
const val PREF_ABC_AFTER_SYMBOL_SPACE = true
|
||||
const val PREF_ABC_AFTER_NUMPAD_SPACE = false
|
||||
const val PREF_REMOVE_REDUNDANT_POPUPS = false
|
||||
const val PREF_SPACE_BAR_TEXT = ""
|
||||
@JvmField
|
||||
|
@ -152,8 +153,6 @@ object Defaults {
|
|||
const val PREF_EMOJI_RECENT_KEYS = ""
|
||||
const val PREF_LAST_SHOWN_EMOJI_CATEGORY_PAGE_ID = 0
|
||||
const val PREF_PINNED_CLIPS = ""
|
||||
@JvmField
|
||||
val PREF_LIBRARY_CHECKSUM: String = JniUtils.expectedDefaultChecksum()
|
||||
const val PREF_SHOW_DEBUG_SETTINGS = false
|
||||
val PREF_DEBUG_MODE = BuildConfig.DEBUG
|
||||
const val PREF_SHOW_SUGGESTION_INFOS = false
|
||||
|
|
|
@ -131,6 +131,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
|||
public static final String PREF_POPUP_KEYS_LABELS_ORDER = "popup_keys_labels_order";
|
||||
public static final String PREF_SHOW_POPUP_HINTS = "show_popup_hints";
|
||||
public static final String PREF_MORE_POPUP_KEYS = "more_popup_keys";
|
||||
public static final String PREF_SHOW_TLD_POPUP_KEYS = "show_tld_popup_keys";
|
||||
|
||||
public static final String PREF_SPACE_TO_CHANGE_LANG = "prefs_long_press_keyboard_to_change_lang";
|
||||
public static final String PREF_LANGUAGE_SWIPE_DISTANCE = "language_swipe_distance";
|
||||
|
@ -154,6 +155,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
|||
public static final String PREF_ABC_AFTER_EMOJI = "abc_after_emoji";
|
||||
public static final String PREF_ABC_AFTER_CLIP = "abc_after_clip";
|
||||
public static final String PREF_ABC_AFTER_SYMBOL_SPACE = "abc_after_symbol_space";
|
||||
public static final String PREF_ABC_AFTER_NUMPAD_SPACE = "abc_after_numpad_space";
|
||||
public static final String PREF_REMOVE_REDUNDANT_POPUPS = "remove_redundant_popups";
|
||||
public static final String PREF_SPACE_BAR_TEXT = "space_bar_text";
|
||||
|
||||
|
@ -312,10 +314,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
|||
mPrefs.edit().putBoolean(Settings.PREF_ALWAYS_INCOGNITO_MODE, !oldValue).apply();
|
||||
}
|
||||
|
||||
public static void writePrefAdditionalSubtypes(final SharedPreferences prefs, final String prefSubtypes) {
|
||||
prefs.edit().putString(PREF_ADDITIONAL_SUBTYPES, prefSubtypes).apply();
|
||||
}
|
||||
|
||||
public static int readHorizontalSpaceSwipe(final SharedPreferences prefs) {
|
||||
return switch (prefs.getString(PREF_SPACE_HORIZONTAL_SWIPE, Defaults.PREF_SPACE_HORIZONTAL_SWIPE)) {
|
||||
case "move_cursor" -> KeyboardActionListener.SWIPE_MOVE_CURSOR;
|
||||
|
|
|
@ -11,11 +11,9 @@ import helium314.keyboard.latin.common.LocaleUtils.constructLocale
|
|||
import helium314.keyboard.latin.define.DebugFlags
|
||||
import helium314.keyboard.latin.utils.LayoutType
|
||||
import helium314.keyboard.latin.utils.LayoutType.Companion.toExtraValue
|
||||
import helium314.keyboard.latin.utils.LayoutUtilsCustom
|
||||
import helium314.keyboard.latin.utils.Log
|
||||
import helium314.keyboard.latin.utils.ScriptUtils
|
||||
import helium314.keyboard.latin.utils.ScriptUtils.script
|
||||
import helium314.keyboard.latin.utils.SubtypeLocaleUtils
|
||||
import helium314.keyboard.latin.utils.SubtypeUtilsAdditional
|
||||
import helium314.keyboard.latin.utils.locale
|
||||
import java.util.Locale
|
||||
|
@ -27,19 +25,9 @@ data class SettingsSubtype(val locale: Locale, val extraValues: String) {
|
|||
|
||||
/** Creates an additional subtype from the SettingsSubtype.
|
||||
* Resulting InputMethodSubtypes are equal if SettingsSubtypes are equal */
|
||||
fun toAdditionalSubtype(): InputMethodSubtype? {
|
||||
fun toAdditionalSubtype(): InputMethodSubtype {
|
||||
val asciiCapable = locale.script() == ScriptUtils.SCRIPT_LATIN
|
||||
val subtype = SubtypeUtilsAdditional.createAdditionalSubtype(locale, extraValues, asciiCapable, true)
|
||||
if (subtype.nameResId == SubtypeLocaleUtils.UNKNOWN_KEYBOARD_LAYOUT
|
||||
&& mainLayoutName()?.endsWith("+") != true // "+" layouts and custom layouts are always "unknown"
|
||||
&& !LayoutUtilsCustom.isCustomLayout(mainLayoutName() ?: SubtypeLocaleUtils.QWERTY)
|
||||
) {
|
||||
// Skip unknown keyboard layout subtype. This may happen when predefined keyboard
|
||||
// layout has been removed.
|
||||
Log.w(SettingsSubtype::class.simpleName, "unknown additional subtype $this")
|
||||
return null
|
||||
}
|
||||
return subtype
|
||||
return SubtypeUtilsAdditional.createAdditionalSubtype(locale, extraValues, asciiCapable, true)
|
||||
}
|
||||
|
||||
fun mainLayoutName() = LayoutType.getMainLayoutFromExtraValue(extraValues)
|
||||
|
@ -50,7 +38,7 @@ data class SettingsSubtype(val locale: Locale, val extraValues: String) {
|
|||
val newList = extraValues.split(",")
|
||||
.filterNot { it.isBlank() || it.startsWith("$extraValueKey=") || it == extraValueKey }
|
||||
val newValue = if (extraValue == null) extraValueKey else "$extraValueKey=$extraValue"
|
||||
val newValues = (newList + newValue).joinToString(",")
|
||||
val newValues = (newList + newValue).sorted().joinToString(",")
|
||||
return copy(extraValues = newValues)
|
||||
}
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ public class SettingsValues {
|
|||
public final boolean mShowNumberRowHints;
|
||||
public final boolean mShowsHints;
|
||||
public final boolean mShowsPopupHints;
|
||||
public final boolean mShowTldPopupKeys;
|
||||
public final boolean mSpaceForLangChange;
|
||||
public final boolean mShowsEmojiKey;
|
||||
public final boolean mVarToolbarDirection;
|
||||
|
@ -113,6 +114,7 @@ public class SettingsValues {
|
|||
public final boolean mAlphaAfterEmojiInEmojiView;
|
||||
public final boolean mAlphaAfterClipHistoryEntry;
|
||||
public final boolean mAlphaAfterSymbolAndSpace;
|
||||
public final boolean mAlphaAfterNumpadAndSpace;
|
||||
public final boolean mRemoveRedundantPopups;
|
||||
public final String mSpaceBarText;
|
||||
public final float mFontSizeMultiplier;
|
||||
|
@ -172,6 +174,7 @@ public class SettingsValues {
|
|||
mShowNumberRowHints = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW_HINTS, Defaults.PREF_SHOW_NUMBER_ROW_HINTS);
|
||||
mShowsHints = prefs.getBoolean(Settings.PREF_SHOW_HINTS, Defaults.PREF_SHOW_HINTS);
|
||||
mShowsPopupHints = prefs.getBoolean(Settings.PREF_SHOW_POPUP_HINTS, Defaults.PREF_SHOW_POPUP_HINTS);
|
||||
mShowTldPopupKeys = prefs.getBoolean(Settings.PREF_SHOW_TLD_POPUP_KEYS, Defaults.PREF_SHOW_TLD_POPUP_KEYS);
|
||||
mSpaceForLangChange = prefs.getBoolean(Settings.PREF_SPACE_TO_CHANGE_LANG, Defaults.PREF_SPACE_TO_CHANGE_LANG);
|
||||
mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, Defaults.PREF_SHOW_EMOJI_KEY);
|
||||
mVarToolbarDirection = prefs.getBoolean(Settings.PREF_VARIABLE_TOOLBAR_DIRECTION, Defaults.PREF_VARIABLE_TOOLBAR_DIRECTION);
|
||||
|
@ -266,6 +269,7 @@ public class SettingsValues {
|
|||
mAlphaAfterEmojiInEmojiView = prefs.getBoolean(Settings.PREF_ABC_AFTER_EMOJI, Defaults.PREF_ABC_AFTER_EMOJI);
|
||||
mAlphaAfterClipHistoryEntry = prefs.getBoolean(Settings.PREF_ABC_AFTER_CLIP, Defaults.PREF_ABC_AFTER_CLIP);
|
||||
mAlphaAfterSymbolAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, Defaults.PREF_ABC_AFTER_SYMBOL_SPACE);
|
||||
mAlphaAfterNumpadAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_NUMPAD_SPACE, Defaults.PREF_ABC_AFTER_NUMPAD_SPACE);
|
||||
mRemoveRedundantPopups = prefs.getBoolean(Settings.PREF_REMOVE_REDUNDANT_POPUPS, Defaults.PREF_REMOVE_REDUNDANT_POPUPS);
|
||||
mSpaceBarText = prefs.getString(Settings.PREF_SPACE_BAR_TEXT, Defaults.PREF_SPACE_BAR_TEXT);
|
||||
mEmojiMaxSdk = prefs.getInt(Settings.PREF_EMOJI_MAX_SDK, Defaults.PREF_EMOJI_MAX_SDK);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package helium314.keyboard.latin.utils
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import android.view.ContextThemeWrapper
|
||||
import helium314.keyboard.latin.R
|
||||
|
||||
// todo: ideally the custom InputMethodPicker would be removed / replaced with compose dialog, then this can be removed
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
package helium314.keyboard.latin.utils
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.os.IBinder
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableString
|
||||
|
@ -10,7 +11,6 @@ import android.text.style.RelativeSizeSpan
|
|||
import android.view.WindowManager
|
||||
import android.view.inputmethod.InputMethodInfo
|
||||
import android.view.inputmethod.InputMethodSubtype
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import helium314.keyboard.latin.LatinIME
|
||||
import helium314.keyboard.latin.R
|
||||
import helium314.keyboard.latin.RichInputMethodManager
|
||||
|
|
|
@ -13,7 +13,6 @@ import android.text.TextUtils;
|
|||
|
||||
import helium314.keyboard.latin.App;
|
||||
import helium314.keyboard.latin.BuildConfig;
|
||||
import helium314.keyboard.latin.settings.Defaults;
|
||||
import helium314.keyboard.latin.settings.Settings;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -63,7 +62,7 @@ public final class JniUtils {
|
|||
// we want the default preferences, because storing the checksum in device protected storage is discouraged
|
||||
// see https://developer.android.com/reference/android/content/Context#createDeviceProtectedStorageContext()
|
||||
// if device is locked, this will throw an IllegalStateException
|
||||
wantedChecksum = KtxKt.protectedPrefs(app).getString(Settings.PREF_LIBRARY_CHECKSUM, Defaults.PREF_LIBRARY_CHECKSUM);
|
||||
wantedChecksum = KtxKt.protectedPrefs(app).getString(Settings.PREF_LIBRARY_CHECKSUM, expectedDefaultChecksum());
|
||||
}
|
||||
final FileInputStream libStream = new FileInputStream(userSuppliedLibrary);
|
||||
final String checksum = ChecksumCalculator.INSTANCE.checksum(libStream);
|
||||
|
|
|
@ -22,7 +22,7 @@ enum class LayoutType {
|
|||
return map
|
||||
}
|
||||
|
||||
val LayoutType.folder get() = "layouts${File.separator}${name.lowercase()}${File.separator}"
|
||||
val LayoutType.folder get() = "layouts${File.separator}${name.lowercase()}"
|
||||
|
||||
val LayoutType.displayNameId get() = when (this) {
|
||||
MAIN -> R.string.subtype_no_language
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package helium314.keyboard.latin.utils
|
||||
|
||||
import android.content.Context
|
||||
import helium314.keyboard.keyboard.internal.keyboard_parser.floris.SimplePopups
|
||||
import helium314.keyboard.keyboard.internal.keyboard_parser.getOrCreate
|
||||
import helium314.keyboard.latin.R
|
||||
import helium314.keyboard.latin.settings.Defaults.default
|
||||
import helium314.keyboard.latin.utils.LayoutType.Companion.folder
|
||||
import helium314.keyboard.latin.utils.ScriptUtils.script
|
||||
import java.io.File
|
||||
import java.util.Locale
|
||||
|
||||
// for layouts provided by the app
|
||||
|
@ -25,11 +28,35 @@ object LayoutUtils {
|
|||
fun getLMainLayoutsForLocales(locales: List<Locale>, context: Context): Collection<String> =
|
||||
locales.flatMapTo(HashSet()) { getAvailableLayouts(LayoutType.MAIN, context, it) }.sorted()
|
||||
|
||||
/** gets content for built-in (non-custom) layout [layoutName], with fallback to qwerty */
|
||||
fun getContent(layoutType: LayoutType, layoutName: String, context: Context): String {
|
||||
val layouts = context.assets.list(layoutType.folder)!!
|
||||
layouts.firstOrNull { it.startsWith("$layoutName.") }
|
||||
?.let { return context.assets.open(layoutType.folder + it).reader().readText() }
|
||||
?.let { return context.assets.open(layoutType.folder + File.separator + it).reader().readText() }
|
||||
val fallback = layouts.first { it.startsWith(layoutType.default) } // must exist!
|
||||
return context.assets.open(layoutType.folder + fallback).reader().readText()
|
||||
return context.assets.open(layoutType.folder + File.separator + fallback).reader().readText()
|
||||
}
|
||||
|
||||
fun getContentWithPlus(mainLayoutName: String, locale: Locale, context: Context): String {
|
||||
val content = getContent(LayoutType.MAIN, mainLayoutName, context)
|
||||
if (!mainLayoutName.endsWith("+"))
|
||||
return content
|
||||
// the stuff below will not work if we add "+" layouts in json format
|
||||
// ideally we should serialize keyData to json to solve this
|
||||
val rows = getSimpleRowStrings(content)
|
||||
val localeKeyboardInfos = getOrCreate(context, locale)
|
||||
return rows.mapIndexed { i, row ->
|
||||
val extraKeys = localeKeyboardInfos.getExtraKeys(i + 1) ?: return@mapIndexed row
|
||||
val rowList = row.split("\n").filterNot { it.isEmpty() }.toMutableList()
|
||||
extraKeys.forEach { key ->
|
||||
val popups = (key.popup as? SimplePopups)?.popupKeys?.joinToString(" ")
|
||||
?.takeIf { it.isNotEmpty() }?.let { " $it" } ?: ""
|
||||
rowList.add(key.label + popups)
|
||||
}
|
||||
rowList.joinToString("\n")
|
||||
}.joinToString("\n\n")
|
||||
}
|
||||
|
||||
fun getSimpleRowStrings(layoutContent: String): List<String> =
|
||||
layoutContent.replace("\r\n", "\n").split("\\n\\s*\\n".toRegex()).filter { it.isNotBlank() }
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@ object LayoutUtilsCustom {
|
|||
fun isCustomLayout(layoutName: String) = layoutName.startsWith(CUSTOM_LAYOUT_PREFIX)
|
||||
|
||||
fun getLayoutFile(layoutName: String, layoutType: LayoutType, context: Context): File {
|
||||
val file = File(DeviceProtectedUtils.getFilesDir(context), layoutType.folder + layoutName)
|
||||
val file = File(DeviceProtectedUtils.getFilesDir(context), layoutType.folder + File.separator + layoutName)
|
||||
file.parentFile?.mkdirs()
|
||||
return file
|
||||
}
|
||||
|
|
|
@ -162,7 +162,7 @@ object ScriptUtils {
|
|||
return SCRIPT_LATIN
|
||||
}
|
||||
return when (language) {
|
||||
"ar", "ur", "fa" -> SCRIPT_ARABIC
|
||||
"ar", "ckb", "ur", "fa" -> SCRIPT_ARABIC
|
||||
"hy" -> SCRIPT_ARMENIAN
|
||||
"bn" -> SCRIPT_BENGALI
|
||||
"sr", "mk", "ru", "uk", "mn", "be", "kk", "ky", "bg", "xdq", "cv", "mhr", "mns", "dru" -> SCRIPT_CYRILLIC
|
||||
|
|
|
@ -52,9 +52,8 @@ object SubtypeSettings {
|
|||
|
||||
fun addEnabledSubtype(prefs: SharedPreferences, newSubtype: InputMethodSubtype) {
|
||||
val subtype = newSubtype.toSettingsSubtype()
|
||||
val subtypes = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!
|
||||
.split(Separators.SETS).filter { it.isNotBlank() }.map { it.toSettingsSubtype() } + subtype
|
||||
val newString = subtypes.map { it.toPref() }.toSortedSet().joinToString(Separators.SETS)
|
||||
val subtypes = createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!) + subtype
|
||||
val newString = createPrefSubtypes(subtypes)
|
||||
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, newString) }
|
||||
|
||||
if (newSubtype !in enabledSubtypes) {
|
||||
|
@ -74,10 +73,8 @@ object SubtypeSettings {
|
|||
|
||||
fun getSelectedSubtype(prefs: SharedPreferences): InputMethodSubtype {
|
||||
val selectedSubtype = prefs.getString(Settings.PREF_SELECTED_SUBTYPE, Defaults.PREF_SELECTED_SUBTYPE)!!.toSettingsSubtype()
|
||||
if (selectedSubtype.isAdditionalSubtype(prefs)) {
|
||||
val selectedAdditionalSubtype = selectedSubtype.toAdditionalSubtype()
|
||||
if (selectedAdditionalSubtype != null) return selectedAdditionalSubtype
|
||||
}
|
||||
if (selectedSubtype.isAdditionalSubtype(prefs))
|
||||
return selectedSubtype.toAdditionalSubtype()
|
||||
// no additional subtype, must be a resource subtype
|
||||
|
||||
val subtype = enabledSubtypes.firstOrNull { it.toSettingsSubtype() == selectedSubtype }
|
||||
|
@ -157,6 +154,15 @@ object SubtypeSettings {
|
|||
RichInputMethodManager.getInstance().refreshSubtypeCaches()
|
||||
}
|
||||
|
||||
fun createSettingsSubtypes(prefSubtypes: String): List<SettingsSubtype> =
|
||||
prefSubtypes.split(Separators.SETS).mapNotNull {
|
||||
if (it.isEmpty()) null
|
||||
else it.toSettingsSubtype()
|
||||
}
|
||||
|
||||
fun createPrefSubtypes(subtypes: Collection<SettingsSubtype>): String =
|
||||
subtypes.map { it.toPref() }.toSortedSet().joinToString(Separators.SETS)
|
||||
|
||||
fun init(context: Context) {
|
||||
SubtypeLocaleUtils.init(context) // necessary to get the correct getKeyboardLayoutSetName
|
||||
|
||||
|
@ -207,7 +213,8 @@ object SubtypeSettings {
|
|||
}
|
||||
if (subtypesToRemove.isEmpty()) return
|
||||
Log.w(TAG, "removing custom subtypes without main layout files: $subtypesToRemove")
|
||||
Settings.writePrefAdditionalSubtypes(prefs, additionalSubtypes.filterNot { it in subtypesToRemove }.joinToString(Separators.SETS))
|
||||
// todo: now we have a qwerty fallback anyway, consider removing this method (makes bugs more obvious to users)
|
||||
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, additionalSubtypes.filterNot { it in subtypesToRemove }.joinToString(Separators.SETS)).apply()
|
||||
}
|
||||
|
||||
private fun loadAdditionalSubtypes(prefs: SharedPreferences) {
|
||||
|
@ -220,15 +227,11 @@ object SubtypeSettings {
|
|||
// requires loadResourceSubtypes to be called before
|
||||
private fun loadEnabledSubtypes(context: Context) {
|
||||
val prefs = context.prefs()
|
||||
val settingsSubtypes = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!
|
||||
.split(Separators.SETS).filter { it.isNotEmpty() }.map { it.toSettingsSubtype() }
|
||||
val settingsSubtypes = createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!)
|
||||
for (settingsSubtype in settingsSubtypes) {
|
||||
if (settingsSubtype.isAdditionalSubtype(prefs)) {
|
||||
val additionalSubtype = settingsSubtype.toAdditionalSubtype()
|
||||
if (additionalSubtype != null) {
|
||||
enabledSubtypes.add(additionalSubtype)
|
||||
continue
|
||||
}
|
||||
enabledSubtypes.add(settingsSubtype.toAdditionalSubtype())
|
||||
continue
|
||||
}
|
||||
val subtypesForLocale = resourceSubtypesByLocale[settingsSubtype.locale]
|
||||
if (subtypesForLocale == null) {
|
||||
|
@ -258,12 +261,11 @@ object SubtypeSettings {
|
|||
|
||||
/** @return whether pref was changed */
|
||||
private fun removeEnabledSubtype(prefs: SharedPreferences, subtype: SettingsSubtype): Boolean {
|
||||
val oldSubtypes = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!
|
||||
.split(Separators.SETS).filter { it.isNotEmpty() }.map { it.toSettingsSubtype() }
|
||||
val oldSubtypes = createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!)
|
||||
val newSubtypes = oldSubtypes - subtype
|
||||
if (oldSubtypes == newSubtypes)
|
||||
return false // already removed
|
||||
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, newSubtypes.joinToString(Separators.SETS) { it.toPref() }) }
|
||||
prefs.edit { putString(Settings.PREF_ENABLED_SUBTYPES, createPrefSubtypes(newSubtypes)) }
|
||||
if (subtype == prefs.getString(Settings.PREF_SELECTED_SUBTYPE, Defaults.PREF_SELECTED_SUBTYPE)!!.toSettingsSubtype()) {
|
||||
// switch subtype if the currently used one has been disabled
|
||||
try {
|
||||
|
|
|
@ -53,10 +53,11 @@ object SubtypeUtilsAdditional {
|
|||
val prefs = context.prefs()
|
||||
SubtypeSettings.removeEnabledSubtype(context, subtype)
|
||||
val oldAdditionalSubtypesString = prefs.getString(Settings.PREF_ADDITIONAL_SUBTYPES, Defaults.PREF_ADDITIONAL_SUBTYPES)!!
|
||||
val oldAdditionalSubtypes = createAdditionalSubtypes(oldAdditionalSubtypesString)
|
||||
val newAdditionalSubtypes = oldAdditionalSubtypes.filter { it != subtype }
|
||||
val newAdditionalSubtypesString = createPrefSubtypes(newAdditionalSubtypes)
|
||||
Settings.writePrefAdditionalSubtypes(prefs, newAdditionalSubtypesString)
|
||||
val oldAdditionalSubtypes = SubtypeSettings.createSettingsSubtypes(oldAdditionalSubtypesString)
|
||||
val settingsSubtype = subtype.toSettingsSubtype()
|
||||
val newAdditionalSubtypes = oldAdditionalSubtypes.filter { it != settingsSubtype }
|
||||
val newAdditionalSubtypesString = SubtypeSettings.createPrefSubtypes(newAdditionalSubtypes)
|
||||
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, newAdditionalSubtypesString).apply()
|
||||
}
|
||||
|
||||
// updates additional subtypes, enabled subtypes, and selected subtype
|
||||
|
@ -66,34 +67,37 @@ object SubtypeUtilsAdditional {
|
|||
val isSelected = prefs.getString(Settings.PREF_SELECTED_SUBTYPE, Defaults.PREF_SELECTED_SUBTYPE)!!.toSettingsSubtype() == from
|
||||
val isEnabled = prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!.split(Separators.SETS)
|
||||
.any { it.toSettingsSubtype() == from }
|
||||
val new = prefs.getString(Settings.PREF_ADDITIONAL_SUBTYPES, Defaults.PREF_ADDITIONAL_SUBTYPES)!!
|
||||
.split(Separators.SETS).mapNotNullTo(sortedSetOf()) {
|
||||
if (it == from.toPref()) null else it
|
||||
} + to.toPref()
|
||||
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, new.joinToString(Separators.SETS)).apply()
|
||||
|
||||
val fromSubtype = from.toAdditionalSubtype() // will be null if we edit a resource subtype
|
||||
val toSubtype = to.toAdditionalSubtype() // should never be null
|
||||
if (isSelected && toSubtype != null) {
|
||||
SubtypeSettings.setSelectedSubtype(prefs, toSubtype)
|
||||
val additionalSubtypes = SubtypeSettings.createSettingsSubtypes(prefs.getString(Settings.PREF_ADDITIONAL_SUBTYPES, Defaults.PREF_ADDITIONAL_SUBTYPES)!!)
|
||||
.toMutableList()
|
||||
additionalSubtypes.remove(from)
|
||||
if (SubtypeSettings.getResourceSubtypesForLocale(to.locale).none { it.toSettingsSubtype() == to }) {
|
||||
// We only add the "to" subtype if it's not equal to a resource subtype.
|
||||
// This means we make additional subtype disappear as magically as it was added if all settings are default.
|
||||
// If we don't do this, enabling the base subtype will result in the additional subtype being enabled,
|
||||
// as both have the same settingsSubtype.
|
||||
additionalSubtypes.add(to)
|
||||
}
|
||||
if (fromSubtype != null && isEnabled && toSubtype != null) {
|
||||
SubtypeSettings.removeEnabledSubtype(context, fromSubtype)
|
||||
SubtypeSettings.addEnabledSubtype(prefs, toSubtype)
|
||||
val editor = prefs.edit()
|
||||
editor.putString(Settings.PREF_ADDITIONAL_SUBTYPES, SubtypeSettings.createPrefSubtypes(additionalSubtypes))
|
||||
if (isSelected) {
|
||||
editor.putString(Settings.PREF_SELECTED_SUBTYPE, to.toPref())
|
||||
}
|
||||
if (isEnabled) {
|
||||
val enabled = SubtypeSettings.createSettingsSubtypes(prefs.getString(Settings.PREF_ENABLED_SUBTYPES, Defaults.PREF_ENABLED_SUBTYPES)!!)
|
||||
.toMutableList()
|
||||
enabled.remove(from)
|
||||
enabled.add(to)
|
||||
editor.putString(Settings.PREF_ENABLED_SUBTYPES, SubtypeSettings.createPrefSubtypes(enabled))
|
||||
}
|
||||
editor.apply()
|
||||
SubtypeSettings.reloadEnabledSubtypes(context)
|
||||
}
|
||||
|
||||
fun createAdditionalSubtypes(prefSubtypes: String): List<InputMethodSubtype> {
|
||||
if (prefSubtypes.isEmpty())
|
||||
return emptyList()
|
||||
return prefSubtypes.split(Separators.SETS).mapNotNull { it.toSettingsSubtype().toAdditionalSubtype() }
|
||||
}
|
||||
|
||||
fun createPrefSubtypes(subtypes: Collection<InputMethodSubtype>): String {
|
||||
if (subtypes.isEmpty())
|
||||
return ""
|
||||
return subtypes.joinToString(Separators.SETS) { it.toSettingsSubtype().toPref() }
|
||||
}
|
||||
fun createAdditionalSubtypes(prefSubtypes: String): List<InputMethodSubtype> =
|
||||
prefSubtypes.split(Separators.SETS).mapNotNull {
|
||||
if (it.isEmpty()) null
|
||||
else it.toSettingsSubtype().toAdditionalSubtype()
|
||||
}
|
||||
|
||||
private fun getNameResId(locale: Locale, mainLayoutName: String): Int {
|
||||
val nameId = SubtypeLocaleUtils.getSubtypeNameResId(locale, mainLayoutName)
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
package helium314.keyboard.settings
|
||||
|
||||
import android.graphics.drawable.VectorDrawable
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material3.DropdownMenu
|
||||
import androidx.compose.material3.DropdownMenuItem
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
|
@ -17,8 +22,13 @@ import androidx.compose.runtime.remember
|
|||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.asImageBitmap
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.core.util.TypedValueCompat
|
||||
|
||||
@Composable
|
||||
fun WithSmallTitle(
|
||||
|
@ -31,6 +41,19 @@ fun WithSmallTitle(
|
|||
}
|
||||
}
|
||||
|
||||
/** Icon if resource is a vector image, (bitmap) Image otherwise */
|
||||
@Composable
|
||||
fun IconOrImage(@DrawableRes resId: Int, name: String?, sizeDp: Float) {
|
||||
val ctx = LocalContext.current
|
||||
val drawable = ContextCompat.getDrawable(ctx, resId)
|
||||
if (drawable is VectorDrawable)
|
||||
Icon(painterResource(resId), name, Modifier.size(sizeDp.dp))
|
||||
else {
|
||||
val px = TypedValueCompat.dpToPx(sizeDp, ctx.resources.displayMetrics).toInt()
|
||||
Image(drawable!!.toBitmap(px, px).asImageBitmap(), name)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun <T>DropDownField(
|
||||
items: List<T>,
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
package helium314.keyboard.settings
|
||||
|
||||
import android.provider.Settings
|
||||
import android.provider.Settings.Global
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.animation.slideInHorizontally
|
||||
import androidx.compose.animation.slideOutHorizontally
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalLayoutDirection
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
|
@ -41,6 +46,10 @@ fun SettingsNavHost(
|
|||
val dir = if (LocalLayoutDirection.current == LayoutDirection.Ltr) 1 else -1
|
||||
val target = SettingsDestination.navTarget.collectAsState()
|
||||
|
||||
// duration does not change when system setting changes, but that's rare enough to not care
|
||||
val duration = (250 * Settings.System.getFloat(LocalContext.current.contentResolver, Global.TRANSITION_ANIMATION_SCALE, 1f)).toInt()
|
||||
val animation = tween<IntOffset>(durationMillis = duration)
|
||||
|
||||
fun goBack() {
|
||||
if (!navController.popBackStack()) onClickBack()
|
||||
}
|
||||
|
@ -48,10 +57,10 @@ fun SettingsNavHost(
|
|||
NavHost(
|
||||
navController = navController,
|
||||
startDestination = startDestination ?: SettingsDestination.Settings,
|
||||
enterTransition = { slideInHorizontally(initialOffsetX = { +it * dir }) },
|
||||
exitTransition = { slideOutHorizontally(targetOffsetX = { -it * dir }) },
|
||||
popEnterTransition = { slideInHorizontally(initialOffsetX = { -it * dir }) },
|
||||
popExitTransition = { slideOutHorizontally(targetOffsetX = { +it * dir }) }
|
||||
enterTransition = { slideInHorizontally(initialOffsetX = { +it * dir }, animationSpec = animation) },
|
||||
exitTransition = { slideOutHorizontally(targetOffsetX = { -it * dir }, animationSpec = animation) },
|
||||
popEnterTransition = { slideInHorizontally(initialOffsetX = { -it * dir }, animationSpec = animation) },
|
||||
popExitTransition = { slideOutHorizontally(targetOffsetX = { +it * dir }, animationSpec = animation) }
|
||||
) {
|
||||
composable(SettingsDestination.Settings) {
|
||||
MainSettingsScreen(
|
||||
|
|
|
@ -125,8 +125,8 @@ fun SubtypeDialog(
|
|||
onConfirmed = { onConfirmed(currentSubtype) },
|
||||
neutralButtonText = if (initialSubtype.isAdditionalSubtype(prefs)) stringResource(R.string.delete) else null,
|
||||
onNeutral = {
|
||||
SubtypeUtilsAdditional.removeAdditionalSubtype(ctx, initialSubtype.toAdditionalSubtype()!!)
|
||||
SubtypeSettings.removeEnabledSubtype(ctx, initialSubtype.toAdditionalSubtype()!!)
|
||||
SubtypeUtilsAdditional.removeAdditionalSubtype(ctx, initialSubtype.toAdditionalSubtype())
|
||||
SubtypeSettings.removeEnabledSubtype(ctx, initialSubtype.toAdditionalSubtype())
|
||||
onDismissRequest()
|
||||
},
|
||||
title = {
|
||||
|
@ -151,14 +151,14 @@ fun SubtypeDialog(
|
|||
}
|
||||
Row {
|
||||
TextButton(onClick = { showKeyOrderDialog = true }, Modifier.weight(1f))
|
||||
{ Text(stringResource(R.string.popup_order), style = MaterialTheme.typography.bodyLarge) }
|
||||
{ Text(stringResource(R.string.popup_order)) }
|
||||
DefaultButton(currentSubtype.getExtraValueOf(ExtraValue.POPUP_ORDER) == null) {
|
||||
setCurrentSubtype(currentSubtype.without(ExtraValue.POPUP_ORDER))
|
||||
}
|
||||
}
|
||||
Row {
|
||||
TextButton(onClick = { showHintOrderDialog = true }, Modifier.weight(1f))
|
||||
{ Text(stringResource(R.string.hint_source), style = MaterialTheme.typography.bodyLarge) }
|
||||
{ Text(stringResource(R.string.hint_source)) }
|
||||
DefaultButton(currentSubtype.getExtraValueOf(ExtraValue.HINT_ORDER) == null) {
|
||||
setCurrentSubtype(currentSubtype.without(ExtraValue.HINT_ORDER))
|
||||
}
|
||||
|
@ -393,7 +393,7 @@ private fun MainLayoutRow(
|
|||
if (showLayoutEditDialog != null) {
|
||||
val layoutName = showLayoutEditDialog!!.first
|
||||
val startContent = showLayoutEditDialog?.second
|
||||
?: if (layoutName in appLayouts) LayoutUtils.getContent(LayoutType.MAIN, layoutName, ctx)
|
||||
?: if (layoutName in appLayouts) LayoutUtils.getContentWithPlus(layoutName, currentSubtype.locale, ctx)
|
||||
else null
|
||||
LayoutEditDialog(
|
||||
onDismissRequest = { showLayoutEditDialog = null },
|
||||
|
|
|
@ -35,10 +35,13 @@ fun LoadGestureLibPreference(setting: Setting) {
|
|||
val abi = Build.SUPPORTED_ABIS[0]
|
||||
val libFile = File(ctx.filesDir?.absolutePath + File.separator + JniUtils.JNI_LIB_IMPORT_FILE_NAME)
|
||||
fun renameToLibFileAndRestart(file: File, checksum: String) {
|
||||
libFile.setWritable(true)
|
||||
libFile.delete()
|
||||
// store checksum in default preferences (soo JniUtils)
|
||||
// store checksum in default preferences (see JniUtils)
|
||||
prefs.edit().putString(Settings.PREF_LIBRARY_CHECKSUM, checksum).commit()
|
||||
file.renameTo(libFile)
|
||||
file.copyTo(libFile)
|
||||
libFile.setReadOnly()
|
||||
file.delete()
|
||||
Runtime.getRuntime().exit(0) // exit will restart the app, so library will be loaded
|
||||
}
|
||||
var tempFilePath: String? by rememberSaveable { mutableStateOf(null) }
|
||||
|
|
|
@ -29,6 +29,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import helium314.keyboard.latin.R
|
||||
import helium314.keyboard.settings.IconOrImage
|
||||
import helium314.keyboard.settings.Theme
|
||||
import helium314.keyboard.settings.previewDark
|
||||
|
||||
|
@ -69,7 +70,7 @@ fun Preference(
|
|||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
if (icon != null)
|
||||
Icon(painterResource(icon), name, modifier = Modifier.size(36.dp))
|
||||
IconOrImage(icon, name, 36f)
|
||||
Column(modifier = Modifier.weight(1f)) {
|
||||
Text(text = name, style = MaterialTheme.typography.bodyLarge)
|
||||
if (description != null) {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
package helium314.keyboard.settings.screens
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.text.method.LinkMovementMethod
|
||||
|
@ -10,7 +11,6 @@ import android.widget.TextView
|
|||
import android.widget.Toast
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
|
@ -69,7 +69,7 @@ fun createAboutSettings(context: Context) = listOf(
|
|||
name = it.title,
|
||||
description = it.description,
|
||||
onClick = { },
|
||||
icon = R.drawable.ic_launcher_foreground // use the bitmap trick here if we really want the colored icon
|
||||
icon = R.mipmap.ic_launcher_round
|
||||
)
|
||||
},
|
||||
Setting(context, SettingsWithoutKey.VERSION, R.string.version) {
|
||||
|
|
|
@ -66,6 +66,7 @@ fun AdvancedSettingsScreen(
|
|||
Settings.PREF_ENABLE_EMOJI_ALT_PHYSICAL_KEY,
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) Settings.PREF_SHOW_SETUP_WIZARD_ICON else null,
|
||||
Settings.PREF_ABC_AFTER_SYMBOL_SPACE,
|
||||
Settings.PREF_ABC_AFTER_NUMPAD_SPACE,
|
||||
Settings.PREF_ABC_AFTER_EMOJI,
|
||||
Settings.PREF_ABC_AFTER_CLIP,
|
||||
Settings.PREF_CUSTOM_CURRENCY_KEY,
|
||||
|
@ -154,6 +155,11 @@ fun createAdvancedSettings(context: Context) = listOf(
|
|||
{
|
||||
SwitchPreference(it, Defaults.PREF_ABC_AFTER_SYMBOL_SPACE)
|
||||
},
|
||||
Setting(context, Settings.PREF_ABC_AFTER_NUMPAD_SPACE,
|
||||
R.string.switch_keyboard_after, R.string.after_numpad_and_space)
|
||||
{
|
||||
SwitchPreference(it, Defaults.PREF_ABC_AFTER_NUMPAD_SPACE)
|
||||
},
|
||||
Setting(context, Settings.PREF_ABC_AFTER_EMOJI, R.string.switch_keyboard_after, R.string.after_emoji) {
|
||||
SwitchPreference(it, Defaults.PREF_ABC_AFTER_EMOJI)
|
||||
},
|
||||
|
|
|
@ -46,6 +46,7 @@ fun PreferencesScreen(
|
|||
Settings.PREF_POPUP_KEYS_LABELS_ORDER else null,
|
||||
Settings.PREF_POPUP_KEYS_ORDER,
|
||||
Settings.PREF_SHOW_POPUP_HINTS,
|
||||
Settings.PREF_SHOW_TLD_POPUP_KEYS,
|
||||
Settings.PREF_POPUP_ON,
|
||||
if (AudioAndHapticFeedbackManager.getInstance().hasVibrator())
|
||||
Settings.PREF_VIBRATE_ON else null,
|
||||
|
@ -89,6 +90,12 @@ fun createPreferencesSettings(context: Context) = listOf(
|
|||
Setting(context, Settings.PREF_POPUP_KEYS_ORDER, R.string.popup_order) {
|
||||
ReorderSwitchPreference(it, Defaults.PREF_POPUP_KEYS_ORDER)
|
||||
},
|
||||
Setting(
|
||||
context, Settings.PREF_SHOW_TLD_POPUP_KEYS, R.string.show_tld_popup_keys,
|
||||
R.string.show_tld_popup_keys_summary
|
||||
) {
|
||||
SwitchPreference(it, Defaults.PREF_SHOW_TLD_POPUP_KEYS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() }
|
||||
},
|
||||
Setting(context, Settings.PREF_SHOW_POPUP_HINTS, R.string.show_popup_hints, R.string.show_popup_hints_summary) {
|
||||
SwitchPreference(it, Defaults.PREF_SHOW_POPUP_HINTS) { KeyboardSwitcher.getInstance().setThemeNeedsReload() }
|
||||
},
|
||||
|
|
|
@ -8,8 +8,7 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
android:viewportHeight="960">
|
||||
<path android:fillColor="#FFF"
|
||||
android:pathData="M200,840Q167,840 143.5,816.5Q120,793 120,760L120,200Q120,167 143.5,143.5Q167,120 200,120L367,120Q378,85 410,62.5Q442,40 480,40Q520,40 551.5,62.5Q583,85 594,120L760,120Q793,120 816.5,143.5Q840,167 840,200L840,760Q840,793 816.5,816.5Q793,840 760,840L200,840ZM200,760L760,760Q760,760 760,760Q760,760 760,760L760,200Q760,200 760,200Q760,200 760,200L680,200L680,280Q680,297 668.5,308.5Q657,320 640,320L320,320Q303,320 291.5,308.5Q280,297 280,280L280,200L200,200Q200,200 200,200Q200,200 200,200L200,760Q200,760 200,760Q200,760 200,760ZM480,200Q497,200 508.5,188.5Q520,177 520,160Q520,143 508.5,131.5Q497,120 480,120Q463,120 451.5,131.5Q440,143 440,160Q440,177 451.5,188.5Q463,200 480,200Z"/>
|
||||
</vector>
|
|
@ -159,4 +159,4 @@
|
|||
<string name="label_search_key">"Soek"</string>
|
||||
<string name="label_pause_key">"Laat wag"</string>
|
||||
<string name="label_wait_key">"Wag"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -79,8 +79,8 @@
|
|||
<string name="setup_welcome_additional_description">"በጣት ምልክት መተየብ"</string>
|
||||
<string name="setup_start_action">"ጀምር"</string>
|
||||
<string name="setup_next_action">"ቀጣይ ደረጃ"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ን በማዋቀር ላይ"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ን ያንቁ"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>ን በማዋቀር ላይ\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>ን ያንቁ\"</string>
|
||||
<string name="setup_step1_instruction">እባክዎ <xliff:g id="APPLICATION_NAME">%s</xliff:g>»ን በእርስዎ የቋንቋ እና ግቤት ቅንብሮች ውስጥ መኖሩን ያረጋግጡት። ይሄ እሱ በመሣሪያዎ ላይ እንዲሄድ ይፈቅድለታል።\"</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> አስቀድሞ በእርስዎ ቋንቋ እና ግቤት ቅንብሮች ውስጥ ነቅቷል፣ ስለዚህ ይህ ደረጃ ተከናውኗል። ወደ ቀጣዩ እንሂድ!"</string>
|
||||
<string name="setup_step1_action">"በቅንብሮች ውስጥ ያንቁ"</string>
|
||||
|
@ -123,4 +123,4 @@
|
|||
<string name="label_search_key">"ፈልግ"</string>
|
||||
<string name="label_pause_key">"ቆም በል"</string>
|
||||
<string name="label_wait_key">"ጠብቅ"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -75,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"الرموز التعبيرية للوحة مفاتيح فعلية"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"مفتاح Alt الفعلي يعرض لوحة الرموز التعبيرية"</string>
|
||||
<string name="button_default">"التلقائية"</string>
|
||||
<string name="setup_welcome_title">مرحبًا بكم في<xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_welcome_title">مرحبًا بكم في <xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_welcome_additional_description">مع الكتابة بالإيماءة</string>
|
||||
<string name="setup_start_action">"بدء الاستخدام"</string>
|
||||
<string name="setup_next_action">"الخطوة التالية"</string>
|
||||
<string name="setup_steps_title">قيد الإعداد<xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_step1_title">مكِّن<xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_steps_title">قيد الإعداد <xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_step1_title">مكِّن <xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_step1_instruction">يرجى التحقق من \\<xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g>\" في إعدادات الإدخال واللغات. سيؤدي ذلك إلى تمكين لوحة المفاتيح على جهازك.\"</string>
|
||||
<string name="setup_step1_finished_instruction"><xliff:g id=\"APPLICATION_NAME\" مثال=\"لوحة مفاتيح أندرويد\">%s</xliff:g> ممكّن بالفعل في إعدادات اللغات &amp؛ إعدادات الإدخال، لذا فقد تم الانتهاء من هذه الخطوة. إلى الخطوة التالية!\"</string>
|
||||
<string name="setup_step1_action">"تفعيل في الإعدادات"</string>
|
||||
<string name="setup_step2_title">قم بالتبديل إلى<xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_step2_title">بدّل إلى <xliff:g id="APPLICATION_NAME" مثال="لوحة مفاتيح أندرويد">%s</xliff:g></string>
|
||||
<string name="setup_step2_instruction">بعد ذلك، اختر \\<<xliff:g id=\"APPLICATION_NAME\" مثال=\"لوحة مفاتيح أندرويد\">%s</xliff:g>” كطريقة إدخال النص النشط.“</string>
|
||||
<string name="setup_step2_action">"تبديل أساليب الإدخال"</string>
|
||||
<string name="setup_step3_title">تهانينا ، لقد انتهيت من الإعداد!</string>
|
||||
|
@ -472,4 +472,8 @@
|
|||
<string name="locales_with_dict">اللغات مع القواميس</string>
|
||||
<string name="get_layouts_message">يمكنك العثور على المخططات ومشاركتها في %s.</string>
|
||||
<string name="discussion_section_link">قسم المناقشة</string>
|
||||
</resources>
|
||||
<string name="custom_subtype">نوع فرعي مخصّص</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengali">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="show_tld_popup_keys">أظهِر مفاتيح TLD المنبثقة</string>
|
||||
<string name="show_tld_popup_keys_summary">استبدل مفتاح الفترة المنبثقة مع مجالات المستوى الأعلى عند كتابة عناوين URL وعناوين البريد الإلكتروني</string>
|
||||
</resources>
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"Kontakt adlarına baxın"</string>
|
||||
<string name="vibrate_on_keypress">"Vibrasiyalı klikləmə"</string>
|
||||
<string name="sound_on_keypress">"Klikləmə səsi"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"Fiziki klaviatura üçün emoji"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"Fiziki ALt düyməsi emoji palletini göstərir"</string>
|
||||
<string name="button_default">"Defolt"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> təbiqinə xoş gəlmisiniz"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> təbiqinə xoş gəlmisiniz\"</string>
|
||||
<string name="setup_welcome_additional_description">"Jest Yazısı ilə"</string>
|
||||
<string name="setup_start_action">"Başlayın"</string>
|
||||
<string name="setup_next_action">"Növbəti addım"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> quraşdırılır"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> tətbiqini aktivləşdir"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> quraşdırılır\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> tətbiqini aktivləşdir\"</string>
|
||||
<string name="setup_step1_instruction">"Lütfən, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" tətbiqini Dillər və daxiletmə ayarlarında yoxlayın. Bununla tətbiqin cihazınızda işləməsinə icazə veriləcək."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> artıq Dillər və daxiletmə ayarlarında aktivləşdirildi, beləliklə da bu mərhələ tamamlandı. İndi isə növbəti mərhələyə keçin!"</string>
|
||||
<string name="setup_step1_action">"Parametrlərdə aktivləşdir"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> tətbiqinə keçin"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> tətbiqinə keçin\"</string>
|
||||
<string name="setup_step2_instruction">"Sonra, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" tətbiqini aktiv mətn-daxiletmə metodu olaraq seçin."</string>
|
||||
<string name="setup_step2_action">"Daxil metodlarına keç"</string>
|
||||
<string name="setup_step3_title">"Təbrik edirik, tam hazırsınız!"</string>
|
||||
|
@ -131,4 +130,4 @@
|
|||
<string name="label_search_key">"Axtarış"</string>
|
||||
<string name="label_pause_key">"Pauza"</string>
|
||||
<string name="label_wait_key">"Gözlə"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -370,5 +370,64 @@
|
|||
<string name="space_swipe_toggle_numpad_entry">Пераключыць лічбавую клавіятуру</string>
|
||||
<string name="show_popup_keys_main">Дадаць самыя распаўсюджаныя варыянты (па змаўчанні)</string>
|
||||
<string name="remove_redundant_popups">Выдаліць лішнія ўсплывальныя вокны</string>
|
||||
<string name="remove_redundant_popups_summary">Прыбраць усплывальныя клавішы, якія прысутнічаюць у базавай раскладцы</string>
|
||||
</resources>
|
||||
<string name="remove_redundant_popups_summary">Прыбраць усплывальныя клавішы, якія ўжо прысутнічаюць у базавай раскладцы</string>
|
||||
<string name="gesture_floating_preview_static">Плаваючы прадпрагляд</string>
|
||||
<string name="gesture_floating_preview_static_summary">Бачыць прапанаванае слова падчас набору жэстамі</string>
|
||||
<string name="split" tools:keep="@string/split">Раздзельная клавіятура</string>
|
||||
<string name="vibrate_in_dnd_mode">Вібрацыя ў рэжыме «Не турбаваць»</string>
|
||||
<string name="enable_split_keyboard_landscape">Уключыць падзеленую клавіятуру (альбомная)</string>
|
||||
<string name="split_spacer_scale_landscape">Адлегласць падзелу (альбомная)</string>
|
||||
<string name="gesture_floating_preview_dynamic_summary">Перамяшчаць прадпрагляд падчас набору жэстамі</string>
|
||||
<string name="gesture_trail_fadeout_duration">Час жыцця следа жэста</string>
|
||||
<string name="auto_correct_shortcuts">Аўтакарэкцыя спалучэнняў клавіш</string>
|
||||
<string name="auto_correct_shortcuts_summary">Калі ўключана, спалучэнні клавіш могуць быць пашыраны з дапамогай аўтакарэкцыі</string>
|
||||
<string name="prefs_bottom_padding_scale_landscape">Маштаб ніжняга водступу (альбомная)</string>
|
||||
<string name="prefs_side_padding_scale">Маштаб бакавога водступу</string>
|
||||
<string name="number_row_hints">Паказваць падказкі ў шэрагу з лічбамі</string>
|
||||
<string name="locales_with_dict">Мовы са слоўнікамі</string>
|
||||
<string name="custom_subtype">Карыстацкі падтып</string>
|
||||
<string name="layout_emoji_bottom_row" tools:keep="@string/layout_emoji_bottom_row">Радок эмодзі ўнізе</string>
|
||||
<string name="layout_clip_bottom_row" tools:keep="@string/layout_clip_bottom_row">Радок буфера абмену ўнізе</string>
|
||||
<string name="layout_in_use">Папярэджанне: раскладка ў дадзены момант выкарыстоўваецца</string>
|
||||
<string name="customize_icons">Наладзіць значкі</string>
|
||||
<string name="customize_icons_reset_message">Сапраўды скінуць усе настроеныя значкі?</string>
|
||||
<string name="layout_number_row" tools:keep="@string/layout_number_row">Шэраг з лічбамі</string>
|
||||
<string name="customize_background_image_landscape">Усталяваць фонавы малюнак (альбомная)</string>
|
||||
<string name="prefs_key_emoji_max_sdk">Перавызначыць версію эмодзі</string>
|
||||
<string name="subtype_dru">Даргінскі (Урахі)</string>
|
||||
<string name="subtype_with_layout_dru" tools:keep="@string/subtype_with_layout_dru">Урахінскі (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
|
||||
<string name="key_code">Код клавішы</string>
|
||||
<string name="delete_confirmation">Сапраўды выдаліць %s?</string>
|
||||
<string name="custom_font">Усталяваць карыстацкі шрыфт з файла</string>
|
||||
<string name="summary_customize_background_image_landscape">Калі не ўстаноўлена, будзе выкарыстоўвацца партрэтны малюнак</string>
|
||||
<string name="label_zwnj_key" tools:keep="@string/label_zwnj_key">Раз\'яднальнік нулявой шырыні</string>
|
||||
<string name="customize_toolbar_key_code_reset_message">Вы сапраўды хочаце выдаліць усе настроеныя коды клавіш?</string>
|
||||
<string name="settings_screen_secondary_layouts">Дадатковыя раскладкі</string>
|
||||
<string name="layout_functional_keys_tablet" tools:keep="@string/layout_functional_keys_tablet">Функцыянальныя клавішы (вялікі экран)</string>
|
||||
<string name="icon_style">Стыль значкоў</string>
|
||||
<string name="label_zwj_key" tools:keep="@string/label_zwj_key">Злучальнік нулявой шырыні</string>
|
||||
<string name="label_bin" tools:keep="@string/label_bin">Сметніца</string>
|
||||
<string name="name_invalid">Недапушчальнае імя</string>
|
||||
<string name="label_delete_key" tools:keep="@string/label_delete_key">Выдаліць</string>
|
||||
<string name="label_enter_key" tools:keep="@string/label_enter_key">Увод</string>
|
||||
<string name="label_shift_key" tools:keep="@string/label_shift_key">Shift</string>
|
||||
<string name="label_tab_key" tools:keep="@string/label_tab_key">Табуляцыя</string>
|
||||
<string name="label_shift_key_shifted" tools:keep="@string/label_shift_key_shifted">Shift (націснута)</string>
|
||||
<string name="prefs_font_scale">Маштаб шрыфта клавіятуры</string>
|
||||
<string name="prefs_emoji_font_scale">Маштаб шрыфта адлюстравання эмодзі</string>
|
||||
<string name="prefs_side_padding_scale_landscape">Маштаб бакавога водступу (альбомная)</string>
|
||||
<string name="long_press_code">Код доўгага націску</string>
|
||||
<string name="prefs_language_swipe_distance">Адлегласць змахвання для пераключэння мовы</string>
|
||||
<string name="customize_toolbar_key_codes">Наладзіць коды клавіш панэлі інструментаў</string>
|
||||
<string name="prefs_space_bar_text">Карыстацкі тэкст на клавішы прабела</string>
|
||||
<string name="label_space_key_for_number_layout" tools:keep="@string/label_space_key_for_number_layout">Прабел (раскладка лічбаў)</string>
|
||||
<string name="label_switch_onehanded_key" tools:keep="@string/label_switch_onehanded_key">Пераключыць бок рэжыму адной рукой</string>
|
||||
<string name="get_colors_message">Знайсці і падзяліцца колерамі ў %s.</string>
|
||||
<string name="get_layouts_message">Знайсці і падзяліцца раскладкамі ў %s.</string>
|
||||
<string name="discussion_section_link">абмеркавання</string>
|
||||
<string name="label_shift_key_locked" tools:keep="@string/label_shift_key_locked">Caps lock</string>
|
||||
<string name="label_stop_onehanded_mode_key" tools:keep="@string/label_stop_onehanded_mode_key">Завяршыць рэжым адной рукой</string>
|
||||
<string name="label_resize_onehanded_key" tools:keep="@string/label_resize_onehanded_key">Змяніць памер у рэжыме адной рукой</string>
|
||||
<string name="label_shortcut_key_disabled" tools:keep="@string/label_shortcut_key_disabled">Галасавы ўвод адключаны</string>
|
||||
<string name="label_toolbar_key" tools:keep="@string/label_toolbar_key">Паказаць / схаваць панэль інструментаў</string>
|
||||
</resources>
|
||||
|
|
|
@ -466,4 +466,7 @@
|
|||
<string name="discussion_section_link">раздел за обсъждане</string>
|
||||
<string name="get_colors_message">Можете да намирате и споделяте цветове в %s.</string>
|
||||
<string name="custom_subtype">Персонализиран подтип</string>
|
||||
</resources>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Бенгалски">%s</xliff:g> (Байсахи)</string>
|
||||
<string name="show_tld_popup_keys">Показване на TLD изскачащи клавиши</string>
|
||||
<string name="show_tld_popup_keys_summary">Заместване на изскачащите прозорци с клавиши за период с домейни от първо ниво при въвеждане на URL и имейл адреси</string>
|
||||
</resources>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -75,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">Emojis amb el teclat físic</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">Amb la tecla Alt del teclat físic es mostra la paleta d\'emojis</string>
|
||||
<string name="button_default">"Predeterminat"</string>
|
||||
<string name="setup_welcome_title">Us donem la benvinguda a<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_welcome_title">Us donem la benvinguda a <xliff:g id="APPLICATION_NAME" example="Teclat Android">%s</xliff:g></string>
|
||||
<string name="setup_welcome_additional_description">amb escriptura gestual</string>
|
||||
<string name="setup_start_action">"Comença"</string>
|
||||
<string name="setup_next_action">"Pas següent"</string>
|
||||
<string name="setup_steps_title">S\'està configurant<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step1_title">Habilita<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_steps_title">S\'està configurant <xliff:g id="APPLICATION_NAME" example="Teclat Android">%s</xliff:g></string>
|
||||
<string name="setup_step1_title">Habilitar <xliff:g id="APPLICATION_NAME" example="Teclat Android">%s</xliff:g></string>
|
||||
<string name="setup_step1_instruction">Comproveu \\<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" a la configuració d\'idiomes i entrada. Això li permetrà executar-se al vostre dispositiu.\"</string>
|
||||
<string name="setup_step1_finished_instruction"><xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g> ja està activada a la configuració d\'idiomes i entrada, així que ja s\'ha acabat aquest pas. Cap al següent!\"</string>
|
||||
<string name="setup_step1_action">Habilita a la configuració</string>
|
||||
<string name="setup_step2_title">Canvia a<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step2_title">Canviar a <xliff:g id="APPLICATION_NAME" example="Teclat Android">%s</xliff:g></string>
|
||||
<string name="setup_step2_instruction">A continuació, seleccioneu \\<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" com a mètode d\'entrada de text actiu.\"</string>
|
||||
<string name="setup_step2_action">Canvia els mètodes d\'entrada</string>
|
||||
<string name="setup_step3_title">"Enhorabona, ja has acabat!"</string>
|
||||
|
@ -423,4 +423,13 @@
|
|||
<string name="settings_screen_secondary_layouts">Disposicions secundàries</string>
|
||||
<string name="layout_functional_keys_tablet" tools:keep="@string/layout_functional_keys_tablet">Tecles de funció (pantalla gran)</string>
|
||||
<string name="name_invalid">Nom no vàlid</string>
|
||||
</resources>
|
||||
<string name="custom_subtype">Subtipus personalitzat</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengalí">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="layout_in_use">Avís: la disposició s\'està utilitzant actualment</string>
|
||||
<string name="locales_with_dict">Idiomes amb diccionaris</string>
|
||||
<string name="get_colors_message">Podeu trobar i compartir colors a %s.</string>
|
||||
<string name="get_layouts_message">Podeu trobar i compartir disposicions a %s.</string>
|
||||
<string name="discussion_section_link">secció de discussió</string>
|
||||
<string name="show_tld_popup_keys_summary">Substituir les finestres emergents de la tecla punt per dominis de primer nivell en escriure URLs i adreces de correu electrònic</string>
|
||||
<string name="show_tld_popup_keys">Mostra tecles emergents de TLD</string>
|
||||
</resources>
|
||||
|
|
|
@ -330,4 +330,4 @@
|
|||
<string name="all_colors">Zobrazit všechny barvy</string>
|
||||
<string name="hint_show_keyboard">Klikněte pro náhled</string>
|
||||
<string name="subtype_generic_student"><xliff:g id="LANGUAGE_NAME" example="Ruština">%s</xliff:g> (Student)</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -365,4 +365,4 @@
|
|||
<string name="load_will_overwrite">Indlæsning overskriver det nuværende tema</string>
|
||||
<string name="customize_toolbar_key_code_reset_message">Ryd alle tilpassede tastekoder?</string>
|
||||
<string name="name_invalid">Ugyldigt navn</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -432,4 +432,7 @@
|
|||
<string name="delete_confirmation">%s wirklich löschen?</string>
|
||||
<string name="name_invalid">Ungültiger Name</string>
|
||||
<string name="custom_subtype">Benutzerdefinierter Subtyp</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengalisch">%s</xliff:g> (Baisakhi)</string>
|
||||
<string name="show_tld_popup_keys">Zeige TLD-Popup-Tasten</string>
|
||||
<string name="show_tld_popup_keys_summary">Ersetze Punkt-Tastenpopups mit Top-Level-Domains wenn URLs und Mailadressen eingegeben werden</string>
|
||||
</resources>
|
||||
|
|
|
@ -163,4 +163,4 @@
|
|||
<string name="label_search_key">"Search"</string>
|
||||
<string name="label_pause_key">"Pause"</string>
|
||||
<string name="label_wait_key">"Wait"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -404,4 +404,4 @@
|
|||
<string name="icon_style">Estilo del icono</string>
|
||||
<string name="label_enter_key" tools:keep="@string/label_enter_key">Intro</string>
|
||||
<string name="label_space_key_for_number_layout" tools:keep="@string/label_space_key_for_number_layout">Espacio (diseño numérico)</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -423,4 +423,4 @@
|
|||
<string name="prefs_emoji_font_scale">Tamaño de fuente de la vista Emoji</string>
|
||||
<string name="prefs_side_padding_scale_landscape">Escala de relleno lateral (apaisado)</string>
|
||||
<string name="prefs_side_padding_scale">Escala de relleno lateral</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -466,4 +466,7 @@
|
|||
<string name="discussion_section_link">kogukonna vestlustes</string>
|
||||
<string name="get_colors_message">Uusi värve võid leida ja jagada %s.</string>
|
||||
<string name="custom_subtype">Sinu loodud alamtüüp</string>
|
||||
</resources>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengali">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="show_tld_popup_keys">Näita tippdomeenide hüpikklahve</string>
|
||||
<string name="show_tld_popup_keys_summary">Võrgu- ja e-posti aadresside kirjutamisel asenda punktuatsiooni hüpikaknad tipptaseme domeenide omadega</string>
|
||||
</resources>
|
||||
|
|
|
@ -405,4 +405,4 @@
|
|||
<string name="customize_toolbar_key_codes">Pertsonalizatu tresna-barrako tekla-kodeak</string>
|
||||
<string name="key_code">Tekla-kodea</string>
|
||||
<string name="long_press_code">Sakatze luzeko kodea</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -159,4 +159,4 @@
|
|||
<string name="label_search_key">"جستجو"</string>
|
||||
<string name="label_pause_key">"مکث"</string>
|
||||
<string name="label_wait_key">"انتظار"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -75,7 +75,7 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"Emojis para o teclado físico"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"A tecla Alt física mostra a paleta de emoji"</string>
|
||||
<string name="button_default">"Predeterminado"</string>
|
||||
<string name="setup_welcome_title">Ben vida a<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_welcome_title">Ben vida a <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_welcome_additional_description">"con escritura por xestos"</string>
|
||||
<string name="setup_start_action">"Comezar"</string>
|
||||
<string name="setup_next_action">"Seguinte paso"</string>
|
||||
|
@ -433,4 +433,5 @@
|
|||
<string name="locales_with_dict">Idiomas con dicionarios</string>
|
||||
<string name="discussion_section_link">zona de conversa</string>
|
||||
<string name="get_layouts_message">Podes atopar e compartir disposicións na %s.</string>
|
||||
</resources>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengali">%s</xliff:g> (Baishakhi)</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"સંપર્ક નામ શોધો"</string>
|
||||
<string name="vibrate_on_keypress">"કીપ્રેસ પર વાઇબ્રેટ કરો"</string>
|
||||
<string name="sound_on_keypress">"કીપ્રેસ પર ધ્વનિ"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"ભૌતિક કીબોર્ડ માટે ઇમોજી"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"ભૌતિક Alt કી ઇમોજી પેલેટ દર્શાવે છે"</string>
|
||||
<string name="button_default">"ડિફોલ્ટ"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> પર સ્વાગત છે"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> પર સ્વાગત છે\"</string>
|
||||
<string name="setup_welcome_additional_description">"સાંકેતિક ટાઇપિંગ દ્વારા"</string>
|
||||
<string name="setup_start_action">"પ્રારંભ કરો"</string>
|
||||
<string name="setup_next_action">"આગલું પગલું"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> સેટ કરી રહ્યું છે"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> સક્ષમ કરો"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> સેટ કરી રહ્યું છે\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> સક્ષમ કરો\"</string>
|
||||
<string name="setup_step1_instruction">"કૃપા કરીને \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ને તમારી ભાષાઓ અને ઇનપુટ સેટિંગ્સમાં તપાસો. આ તેને તમારા ઉપકરણ પર ચાલવા માટે અધિકૃત કરશે."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> એ તમારી ભાષાઓ અને ઇનપુટ સેટિંગ્સમાં પહેલાથી જ સક્ષમ કરેલું છે, તેથી આ પગલું પૂર્ણ થયું. હવે આગલા પર!"</string>
|
||||
<string name="setup_step1_action">"સેટિંગ્સમાં સક્ષમ કરો"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> પર સ્વિચ કરો"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> પર સ્વિચ કરો\"</string>
|
||||
<string name="setup_step2_instruction">"આગલું, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ને તમારા સક્રિય ટેક્સ્ટ-ઇનપુટ પદ્ધતિ તરીકે પસંદ કરો."</string>
|
||||
<string name="setup_step2_action">"ઇનપુટ પદ્ધતિઓ પર સ્વિચ કરો"</string>
|
||||
<string name="setup_step3_title">"અભિનંદન, તમે બધું સેટ કર્યું છે!"</string>
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"संपर्कों को सर्च करें"</string>
|
||||
<string name="vibrate_on_keypress">"बटन दबाने पर कंपन (वाइब्रेशन) करे"</string>
|
||||
<string name="sound_on_keypress">"बटन दबाने पर आवाज़"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"कीबोर्ड के लिए स्माइलीज़"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"भौतिक Alt कुंजी इमोजी पैलेट दिखाती है"</string>
|
||||
<string name="button_default">"सामान्य"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> में आपका स्वागत है"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> में आपका स्वागत है\"</string>
|
||||
<string name="setup_welcome_additional_description">"जेस्चर टाइपिंग के साथ"</string>
|
||||
<string name="setup_start_action">"आरंभ करें"</string>
|
||||
<string name="setup_next_action">"अगला चरण"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट करना"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> को चालू करें"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट करना\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> को चालू करें\"</string>
|
||||
<string name="setup_step1_instruction">"कृपया अपनी भाषा और इनपुट सेटिंग में \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" को सही का निशान लगाकर चुनें. इससे उसे आपके डिवाइस पर चलने की अनुमति मिल जाएगी."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> आपकी भाषा और इनपुट सेटिंग में पहले से सक्षम है, इसलिए यह चरण पूरा हो गया है. अगले चरण पर जाएं!"</string>
|
||||
<string name="setup_step1_action">"सेटिंग में चालू करें"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> पर स्विच करें"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> पर स्विच करें\"</string>
|
||||
<string name="setup_step2_instruction">"इसके बाद, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" को अपने सक्रिय पाठ-इनपुट के तरीके के तौर पर चुनें."</string>
|
||||
<string name="setup_step2_action">"इनपुट पद्धतियां स्विच करें"</string>
|
||||
<string name="setup_step3_title">"बधाई हो, आप बिल्कुल तैयार हैं!"</string>
|
||||
|
|
|
@ -160,4 +160,4 @@
|
|||
<string name="label_search_key">"Traži"</string>
|
||||
<string name="label_pause_key">"Pauz."</string>
|
||||
<string name="label_wait_key">"Čekaj"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -326,4 +326,4 @@
|
|||
<string name="hidden_features_text">eszköz által védett tároló</string>
|
||||
<string name="action_none">Egy sem</string>
|
||||
<string name="space_swipe_move_cursor_entry">Kurzor mozgatása</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -423,4 +423,4 @@
|
|||
<string name="layout_functional_keys_tablet" tools:keep="@string/layout_functional_keys_tablet">Aðgerðalyklar (stór skjár)</string>
|
||||
<string name="name_invalid">Ógilt heiti</string>
|
||||
<string name="settings_screen_secondary_layouts">Auka-framsetningar</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -304,7 +304,7 @@
|
|||
<string name="dictionary_file_wrong_locale">Il dizionario è stato creato per la lingua %1$s, ma lo stai aggiungendo a %2$s. Confermi?</string>
|
||||
<string name="dialog_close">Chiudi</string>
|
||||
<string name="select_color_gesture">Traccia dell\'input gestuale</string>
|
||||
<string name="text_tap_languages">Tocca la lingua per aprire le impostazioni</string>
|
||||
<string name="text_tap_languages">Lingua: tap → impostazioni</string>
|
||||
<string name="save_log">Salva log</string>
|
||||
<string name="theme_name_holo_white" tools:keep="@string/theme_name_holo_white">Holo bianco</string>
|
||||
<string name="internal_dictionary_summary">Dizionario interno principale</string>
|
||||
|
@ -432,4 +432,11 @@
|
|||
<string name="auto_correct_shortcuts">Scorciatoie correzione</string>
|
||||
<string name="name_invalid">Nome non valido</string>
|
||||
<string name="prefs_language_swipe_distance">Distanza del trascinamento per il cambio lingua</string>
|
||||
</resources>
|
||||
<string name="custom_subtype">Sotto-tipo personalizzato</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengalese">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="layout_in_use">Attenzione: il layout è in uso</string>
|
||||
<string name="locales_with_dict">Lingue con dizionari</string>
|
||||
<string name="discussion_section_link">discussione dedicata</string>
|
||||
<string name="get_layouts_message">Scopri nuovi layout o condividi quelli che hai creato nella %s.</string>
|
||||
<string name="get_colors_message">Scopri nuove combinazioni di colori o condividi le tue nella %s.</string>
|
||||
</resources>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -75,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"物理キーボードの絵文字"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"物理Altキーによって絵文字パレットが表示されます"</string>
|
||||
<string name="button_default">"デフォルト"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>へようこそ"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>へようこそ\"</string>
|
||||
<string name="setup_welcome_additional_description">"新しいジェスチャー入力をお試しください"</string>
|
||||
<string name="setup_start_action">"開始"</string>
|
||||
<string name="setup_next_action">"次のステップ"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>の設定"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>の有効化"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>の設定\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>の有効化\"</string>
|
||||
<string name="setup_step1_instruction">[言語と入力] 設定で<xliff:g id="APPLICATION_NAME">%s</xliff:g>」のチェックボックスをオンにしてください。これで、このデバイスで利用できるようになります。\"</string>
|
||||
<string name="setup_step1_finished_instruction">"[言語と入力] 設定で「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」は既に有効になっているため、このステップは完了です。次のステップに進んでください。"</string>
|
||||
<string name="setup_step1_action">"設定での有効化"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>への切り替え"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>への切り替え\"</string>
|
||||
<string name="setup_step2_instruction">次に、有効なテキスト入力方法として<xliff:g id="APPLICATION_NAME">%s</xliff:g>」を選択します。\"</string>
|
||||
<string name="setup_step2_action">"入力方法を切り替える"</string>
|
||||
<string name="setup_step3_title">"設定完了"</string>
|
||||
|
@ -123,4 +123,4 @@
|
|||
<string name="label_search_key">"検索"</string>
|
||||
<string name="label_pause_key">"停止"</string>
|
||||
<string name="label_wait_key">"待機"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -161,4 +161,4 @@
|
|||
<string name="label_search_key">"ძიება"</string>
|
||||
<string name="label_pause_key">"პაუზა"</string>
|
||||
<string name="label_wait_key">"მოცდა"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"Контакт аттарын іздеу"</string>
|
||||
<string name="vibrate_on_keypress">"Пернені басқан кездегі діріл"</string>
|
||||
<string name="sound_on_keypress">"Пернені басу кезіндегі дыбыс"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"Қатты пернетақтадан енгізілетін эмодзи"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"Alt пернесі арқылы эмодзилерді ашуға болады"</string>
|
||||
<string name="button_default">"Әдепкі"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына қош келдіңіз"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына қош келдіңіз\"</string>
|
||||
<string name="setup_welcome_additional_description">"Қимылмен теру арқылы"</string>
|
||||
<string name="setup_start_action">"Іске қосылды"</string>
|
||||
<string name="setup_next_action">"Келесі қадам"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> орнату"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қосу"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> орнату\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> қосу\"</string>
|
||||
<string name="setup_step1_instruction">"\"Тілдер және енгізу\" параметрлерінде <xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына құсбелгі қойыңыз. Сонда оны құрылғыңызда қолдануға рұқсат беріледі."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасы \"Тілдер және енгізу\" параметрлерінде бұрыннан қосылған. Келесі қадамға өтіңіз!"</string>
|
||||
<string name="setup_step1_action">"Параметрлер ішінде қосу"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына ауыстыру"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына ауыстыру\"</string>
|
||||
<string name="setup_step2_instruction">"Одан кейін \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" қолданбасын белсенді мәтінді енгізу әдісі ретінде таңдаңыз."</string>
|
||||
<string name="setup_step2_action">"Енгізу әдістерін ауыстыру"</string>
|
||||
<string name="setup_step3_title">"Құттықтаймыз, барлығы дайын!"</string>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"ಸಂಪರ್ಕ ಹೆಸರುಗಳನ್ನು ಹುಡುಕಿ"</string>
|
||||
<string name="vibrate_on_keypress">"ಕೀಪ್ರೆಸ್ನ ವೈಬ್ರೇಟ್"</string>
|
||||
<string name="sound_on_keypress">"ಕೀಪ್ರೆಸ್ ಶಬ್ದ"</string>
|
||||
|
@ -77,16 +76,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"ಭೌತಿಕ ಕೀಬೋರ್ಡ್ಗೆ ಎಮೋಜಿ"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"ಭೌತಿಕ Alt ಕೀ ಎಮೋಜಿ ಪ್ಯಾಲೆಟ್ ತೋರಿಸುತ್ತದೆ"</string>
|
||||
<string name="button_default">"ಡಿಫಾಲ್ಟ್"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಗೆ ಸುಸ್ವಾಗತ"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ಗೆ ಸುಸ್ವಾಗತ\"</string>
|
||||
<string name="setup_welcome_additional_description">"ಗೆಶ್ಚರ್ ಟೈಪಿಂಗ್ನೊಂದಿಗೆ"</string>
|
||||
<string name="setup_start_action">"ಪ್ರಾರಂಭ"</string>
|
||||
<string name="setup_next_action">"ಮುಂದಿನ ಹಂತ"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ಸಕ್ರಿಯಗೊಳಿಸಿ\"</string>
|
||||
<string name="setup_step1_instruction">"ನಿಮ್ಮ ಭಾಷೆಗಳು & ಇನ್ಪುಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ದಯವಿಟ್ಟು \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅದನ್ನು ರನ್ ಮಾಡಲು ಅದು ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಅನ್ನು ಈಗಾಗಲೇ ನಿಮ್ಮ ಭಾಷೆಗಳು & ಇನ್ಪುಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಹೀಗಾಗಿ ಈ ಹಂತ ಮುಗಿದಿದೆ. ಮುಂದಿನದಕ್ಕೆ ತೆರಳಿ!"</string>
|
||||
<string name="setup_step1_action">"ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸು"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಗೆ ಬದಲಾಯಿಸಿ"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ಗೆ ಬದಲಾಯಿಸಿ\"</string>
|
||||
<string name="setup_step2_instruction">"ಮುಂದೆ, ನಿಮ್ಮ ಸಕ್ರಿಯ ಪಠ್ಯ-ಇನ್ಪುಟ್ ವಿಧಾನವಾಗಿ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ."</string>
|
||||
<string name="setup_step2_action">"ಇನ್ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಬದಲಾಯಿಸು"</string>
|
||||
<string name="setup_step3_title">"ಅಭಿನಂದನೆಗಳು, ನೀವೀಗ ಎಲ್ಲವನ್ನೂ ಹೊಂದಿಸಿರುವಿರಿ!"</string>
|
||||
|
|
|
@ -160,4 +160,4 @@
|
|||
<string name="label_search_key">"검색"</string>
|
||||
<string name="label_pause_key">"중지"</string>
|
||||
<string name="label_wait_key">"대기"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"Байланыш ысымдарын издөө"</string>
|
||||
<string name="vibrate_on_keypress">"Баскыч басылганда дирилдесин"</string>
|
||||
<string name="sound_on_keypress">"Баскычты басканда үн чыгат"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"Тышкы тергич үчүн быйтыкчалар"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"Alt баскычы басылганда быйтыкчалар тактасы көрүнөт"</string>
|
||||
<string name="button_default">"Демейки"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> кош келиңиз"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> кош келиңиз\"</string>
|
||||
<string name="setup_welcome_additional_description">"Жаңсап терүү менен"</string>
|
||||
<string name="setup_start_action">"Баштоо"</string>
|
||||
<string name="setup_next_action">"Кийинки кадам"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> орнотулууда"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> иштетүү"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> орнотулууда\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> иштетүү\"</string>
|
||||
<string name="setup_step1_instruction">"Тилдер жана киргизүү жөндөөлөрүнөн \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" колдонмосун караңыз. Ушуну менен аны түзмөгүңүздө иштете аласыз."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> мурунтан эле Тилдер жана киргизүү жөндөөлөрүндө иштетилгендиктен бул кадам аткарылды деп, кийинкисине өтө бериңиз!"</string>
|
||||
<string name="setup_step1_action">"Жөндөөлөрдөн иштетүү"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> которулуу"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> которулуу\"</string>
|
||||
<string name="setup_step2_instruction">"Андан соң, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" жигердүү текст киргизүү ыкмасы катары коюңуз."</string>
|
||||
<string name="setup_step2_action">"Киргизүү ыкмаларын которуштуруу"</string>
|
||||
<string name="setup_step3_title">"Куттуктайбыз, бардыгы коюлду!"</string>
|
||||
|
|
|
@ -160,4 +160,4 @@
|
|||
<string name="label_search_key">"തിരയുക"</string>
|
||||
<string name="label_pause_key">"താൽക്കാലികമായി നിർത്തുക"</string>
|
||||
<string name="label_wait_key">"കാത്തിരിക്കുക"</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"Харилцагчийн нэр хайх"</string>
|
||||
<string name="vibrate_on_keypress">"Товч дарахад чичрэх"</string>
|
||||
<string name="sound_on_keypress">"Товч дарахад дуу гаргах"</string>
|
||||
|
@ -80,12 +79,12 @@
|
|||
<string name="setup_welcome_additional_description">"Зангаагаар бичихээр"</string>
|
||||
<string name="setup_start_action">"Эхлэх"</string>
|
||||
<string name="setup_next_action">"Дараагийн алхам"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>-г тохируулж байна"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>-г идэвхжүүлэх"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>-г тохируулж байна\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>-г идэвхжүүлэх\"</string>
|
||||
<string name="setup_step1_instruction">"Хэл, оролтын тохиргоо хэсгээс \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\"-г сонгоно уу. Ингэснээр үүнийг таны төхөөрөмжид ажиллах зөвшөөрлийг өгөх болно."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>-г Хэл, оролтын тохиргоонд аль хэдийн идэвхжүүлснээр энэ алхам дууслаа. Дараагийн алхмыг хийцгээе!"</string>
|
||||
<string name="setup_step1_action">"Тохиргоо дотроос идэвхжүүлэх"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> рүү шилжих"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> рүү шилжих\"</string>
|
||||
<string name="setup_step2_instruction">"Дараа нь \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\"-г өөрийн идэвхтэй текст-оруулах аргаар сонгоно уу."</string>
|
||||
<string name="setup_step2_action">"Оруулах аргыг солих"</string>
|
||||
<string name="setup_step3_title">"Баяр хүргэе, та бүгдийг нь тохируулчихлаа!"</string>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"संपर्क नावे शोधा"</string>
|
||||
<string name="vibrate_on_keypress">"की दाबताना व्हायब्रेट"</string>
|
||||
<string name="sound_on_keypress">"की दाबताना आवाज"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"वास्तविक कीबोर्डसाठी इमोजी"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"वास्तविक Alt की इमोजी पॅलेट दर्शविते"</string>
|
||||
<string name="button_default">"डीफॉल्ट"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> वर स्वागत आहे"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> वर स्वागत आहे\"</string>
|
||||
<string name="setup_welcome_additional_description">"जेश्चर टायपिंग करून"</string>
|
||||
<string name="setup_start_action">"सुरू करा"</string>
|
||||
<string name="setup_next_action">"पुढील चरण"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट अप करत आहे"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सुरू करा"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट अप करत आहे\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> सुरू करा\"</string>
|
||||
<string name="setup_step1_instruction">"कृपया आपल्या भाषांमध्ये आणि इनपुट सेटिंग्जमध्ये \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" तपासा. आपल्या डिव्हाइसवर चालण्यासाठी त्यास हे अधिकृत करेल."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> आपल्या भाषांमध्ये आणि इनपुट सेटिंग्जमध्ये आधीपासून सक्षम केला आहे, त्यामुळे हे चरण पूर्ण झाले आहे. पुढील चरणावर!"</string>
|
||||
<string name="setup_step1_action">"सेटिंग्जमध्ये सुरू करा"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> वर स्विच करा"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> वर स्विच करा\"</string>
|
||||
<string name="setup_step2_instruction">"पुढे, तुमची सक्रिय मजकूर-इनपुट पद्धत म्हणून \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" निवडा."</string>
|
||||
<string name="setup_step2_action">"इनपुट पद्धती स्विच करा"</string>
|
||||
<string name="setup_step3_title">"अभिनंदन, आता तुम्ही तयार आहात!"</string>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"အဆက်အသွယ်အမည်များကို ရှာ"</string>
|
||||
<string name="vibrate_on_keypress">"ခလုတ်နှိပ်သည်နှင့် တုံခါစေပါ"</string>
|
||||
<string name="sound_on_keypress">"ခလုတ်နှိပ်လျှင် အသံမြည်"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"ခလုတ်ရှိ ကီးဘုတ်အတွက် အီမိုဂျိ"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"အီမိုဂျီ ဘုတ်ပြားပြသော Alt ခလုတ်"</string>
|
||||
<string name="button_default">"ပုံသေ"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> မှကြိုဆိုပါသည်"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> မှကြိုဆိုပါသည်\"</string>
|
||||
<string name="setup_welcome_additional_description">"အမူယာ ရိုက်ခြင်းဖြင့်"</string>
|
||||
<string name="setup_start_action">"စတင်ပါတော့"</string>
|
||||
<string name="setup_next_action">"နောက်တစ်ဆင့်"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> တပ်ဆင်ရန်"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ဖွင့်ရန်"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> တပ်ဆင်ရန်\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ဖွင့်ရန်\"</string>
|
||||
<string name="setup_step1_instruction">"\"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ကို ဘာသာစကားနှင့် စာရိုက်စနစ်တွင် စစ်ပါ။ ဤသို့ဖြင့် သင့်စက်ပစ္စည်းပေါ်တွင် ၎င်းကိုဖွင့်ရန်အတည်ပြုပေးပါလိမ့်မည်။"</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ကို သင့်ဘာသာစကားနှင့် စာရိုက်စနစ်ဆက်တင်များတွင် ဖွင့်ထားပြီးဖြစ်၍ ဤအဆင့်ပြီးပါပြီ။ နောက်တစ်ခုသို့ သွားပါ။"</string>
|
||||
<string name="setup_step1_action">"ဆက်တင်များတွင် ဖွင့်ရန်"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> သို့ပြောင်းမည်"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> သို့ပြောင်းမည်\"</string>
|
||||
<string name="setup_step2_instruction">"ရှေ့၊ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" အားသင်၏ ပွင့်နေသည့်ထည့်သွင်းမှု နည်းလမ်းအဖြစ်ရွေးပါ။"</string>
|
||||
<string name="setup_step2_action">"စာရိုက်သွင်းမှုနည်းလမ်း ပြောင်းရန်"</string>
|
||||
<string name="setup_step3_title">"ဝမ်းသာပါသည်၊ သင်အားလုံးသတ်မှတ်ပြီးပါပြီ!"</string>
|
||||
|
|
|
@ -328,4 +328,4 @@
|
|||
<string name="subtype_with_layout_xdq" tools:keep="@string/subtype_with_layout_xdq">Kaitag (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
|
||||
<string name="hidden_features_message">► Et langt trykk på utklippstavlen (den valgfrie i forslagsstripen) limer inn innholdet i systemets utklippstavle. <br> <br> ► Et langt trykk på tastene på verktøylinjen for forslagsstripen fester dem til forslagsstripen. <br> <br> ► Trykk lenge på komma-tasten for å få tilgang til utklippstavlevisning, emojivisning, enhåndsmodus, innstillinger eller språkbytte: <br> \t• Emoji View og språkbytteknappen forsvinner hvis du har den tilsvarende nøkkelen aktivert; <br> \t• For noen oppsett er det ikke kommatasten, men tasten i samme posisjon (f.eks. er det \"q\" for Dvorak-oppsettet). <br> <br> ► Når inkognitomodus er aktivert, vil ingen ord læres, og ingen emojier blir lagt til i \"nylige\". <br> <br> ► Trykk på inkognitoikonet for å få tilgang til verktøylinjen. <br> <br> ► Skyvetastinntasting: Sveip fra skift til en annen tast for å skrive inn en enkelt stor bokstav: <br> \t• Dette fungerer også for \'?123\'-tasten for å skrive inn et enkelt symbol fra symboltastaturet, og for relaterte taster. <br> <br> ► Trykk lenge på et forslag i forslagsstripen for å vise flere forslag, og sletteknappen for å fjerne dette forslaget. <br> <br> ► Sveip opp fra et forslag for å åpne flere forslag, og slipp forslaget for å velge det. <br> <br> ► Trykk lenge på en oppføring i utklippstavleloggen for å feste den (behold den i utklippstavlen til du løsner den). <br> <br> ► Du kan legge til ordbøker ved å åpne dem i en filutforsker: <br> \t• Dette fungerer bare med <i>content-uris</i> og ikke med <i>file-uris</i>, noe som betyr at det kanskje ikke fungerer med enkelte filutforskere. <br> <br> <i>Feilsøkingsmodus / feilsøk APK</i> <br> <br> \t• Trykk lenge på et forslag for å vise kildeordboken.<br> <br> \t• Når du bruker debug APK, kan du finne feilsøkingsinnstillinger i de avanserte innstillingene, selv om nytten er begrenset bortsett fra å dumpe ordbøker i loggen. <br> <br> \t• Ved et programkrasj vil du bli spurt om du vil ha krasjloggene når du åpner Innstillinger. <br> <br> \t• Når du bruker flerspråklig skriving, vil mellomromstasten vise en konfidensverdi som brukes til å bestemme språket som brukes for øyeblikket. <br> <br> \t• \"Forslag\" vil ha noen små tall på toppen som viser noe internt partitur og kildeordbok (kan deaktiveres). <br> <br> ► For brukere som tar manuelle sikkerhetskopier med rottilgang: Fra og med Android 7 er ikke den delte preferansefilen på standardplasseringen, fordi appen bruker %s. <br> Dette er nødvendig for at innstillingene kan leses før enheten låses opp, f.eks. ved oppstart. <br> Filen ligger i /data/user_de/0/package_id/shared_prefs/, men dette kan avhenge av enheten og Android-versjonen.</string>
|
||||
<string name="subtype_generic_student"><xliff:g id="LANGUAGE_NAME" example="Russisk">%s</xliff:g> (Student)</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
<string name="setup_step1_instruction">"कृपया आफ्नो भाषा र इनपुट सम्बन्धी सेटिङहरूमा \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" अनुप्रयोगलाई जाँच गर्नुहोस्। यस कारबाहीले अनुप्रयोगलाई तपाईँको यन्त्रमा सञ्चालन हुन आधिकार प्रदान गर्ने छ।"</string>
|
||||
<string name="setup_step1_finished_instruction">"तपाईँको भाषा र इनपुट सम्बन्धी सेटिङहरूमा <xliff:g id="APPLICATION_NAME">%s</xliff:g> लाई पहिले नै सक्रिय गरिएको छ, त्यसैले यो चरण सम्पन्न भइसकेको छ। अर्को चरणमा जानुहोस्!"</string>
|
||||
<string name="setup_step1_action">"सेटिङहरूमा सक्षम पार्नुहोस्"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>मा स्विच गर्नुहोस्"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>मा स्विच गर्नुहोस्\"</string>
|
||||
<string name="setup_step2_instruction">"त्यसपछि, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" लाई तपाईँको सक्रिय पाठ इनपुट विधिका रूपमा चयन गर्नुहोस्।"</string>
|
||||
<string name="setup_step2_action">"इनपुट विधि स्विच गर्नुहोस्"</string>
|
||||
<string name="setup_step3_title">"बधाई छ, तपाईँले सेट पुरा गर्नुभयो!"</string>
|
||||
|
@ -125,4 +125,4 @@
|
|||
<string name="label_pause_key">"रोक्नुहोस्"</string>
|
||||
<string name="label_wait_key">"पर्खनुहोस्"</string>
|
||||
<string name="spell_checker_service_name">हेलीबोर्ड हिज्जे जाँचकर्ता</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -476,4 +476,6 @@
|
|||
<string name="get_layouts_message">Je kunt lay-outs zoeken en delen in de %s.</string>
|
||||
<string name="discussion_section_link">discussiesectie</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengali">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="show_tld_popup_keys">TLD-opties weergeven</string>
|
||||
<string name="show_tld_popup_keys_summary">Vervang pop-ups met interpunctie door topleveldomeinen bij het typen van URL\'s en e-mailadressen</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"ਸੰਪਰਕ ਨਾਮ ਤਲਾਸ਼ੋ"</string>
|
||||
<string name="vibrate_on_keypress">"ਕੁੰਜੀ ਦਬਾਉਣ ’ਤੇ ਥਰਥਰਾਹਟ ਕਰੋ"</string>
|
||||
<string name="sound_on_keypress">"ਕੁੰਜੀ ਦਬਾਉਣ \'ਤੇ ਧੁਨ ਵਜਾਓ"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"ਭੌਤਿਕ ਕੀ-ਬੋਰਡ ਲਈ ਇਮੋਜੀ"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"ਭੌਤਿਕ Alt ਕੁੰਜੀ ਇਮੋਜੀ ਪੈਲੇਟ ਦਿਖਾਉਂਦੀ ਹੈ"</string>
|
||||
<string name="button_default">"ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ਤੇ ਸੁਆਗਤ ਹੈ"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ਤੇ ਸੁਆਗਤ ਹੈ\"</string>
|
||||
<string name="setup_welcome_additional_description">"ਸੰਕੇਤ ਟਾਈਪਿੰਗ ਨਾਲ"</string>
|
||||
<string name="setup_start_action">"ਸ਼ੁਰੂਆਤ ਕਰੋ"</string>
|
||||
<string name="setup_next_action">"ਅਗਲਾ ਸਟੈਪ"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ਸੈਟ ਅਪ ਕਰ ਰਿਹਾ ਹੈ"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ਸੈਟ ਅਪ ਕਰ ਰਿਹਾ ਹੈ\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ\"</string>
|
||||
<string name="setup_step1_instruction">"ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀਆਂ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਵਿੱਚ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" \'ਤੇ ਸਹੀ ਦਾ ਨਿਸ਼ਾਨ ਲਗਾਓ। ਇਹ ਉਸ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਚੱਲਣ ਲਈ ਅਧਿਕਾਰਿਤ ਕਰੇਗਾ।"</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਤੁਹਾਡੀਆਂ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਇਹ ਪੜਾਅ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਅਗਲੇ ਪੜਾਅ \'ਤੇ ਜਾਓ!"</string>
|
||||
<string name="setup_step1_action">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕਰੋ"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> \'ਤੇ ਸਵਿੱਚ ਕਰੋ"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> \'ਤੇ ਸਵਿੱਚ ਕਰੋ\"</string>
|
||||
<string name="setup_step2_instruction">"ਫਿਰ, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ਨੂੰ ਆਪਣੀ ਕਿਰਿਆਸ਼ੀਲ ਲਿਖਤ-ਇਨਪੁੱਟ ਵਿਧੀ ਦੇ ਤੌਰ ਤੇ ਚੁਣੋ।"</string>
|
||||
<string name="setup_step2_action">"ਇਨਪੁੱਟ ਵਿਧੀਆਂ ਸਵਿੱਚ ਕਰੋ"</string>
|
||||
<string name="setup_step3_title">"ਵਧਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਸਾਰਾ ਸੈਟ ਕਰ ਲਿਆ ਹੈ!"</string>
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<string name="show_setup_wizard_icon">"Pokaż ikonę aplikacji"</string>
|
||||
<string name="show_setup_wizard_icon_summary">"Wyświetlaj ikonę aplikacji w programie uruchamiającym"</string>
|
||||
<string name="dictionary_settings_title">"Słowniki dodatkowe"</string>
|
||||
<string name="dictionary_available">"Słownik dostępny"</string>
|
||||
<string name="dictionary_available">Dostępny słownik</string>
|
||||
<string name="no_dictionaries_available">"Brak słowników"</string>
|
||||
<string name="last_update">"Ostatnia aktualizacja"</string>
|
||||
<string name="settings">"Ustawienia"</string>
|
||||
|
@ -174,13 +174,13 @@
|
|||
<string name="restore_error">Błąd podczas przywracania kopii zapasowej: %s</string>
|
||||
<string name="theme_colors">Kolory</string>
|
||||
<string name="select_color_functional_key_background">Tło klawiszy funkcyjnych</string>
|
||||
<string name="subtype_generic_sebeolsik_390"><xliff:g id="LANGUAGE_NAME" example="Koreański">%s</xliff:g> (Sebeolsik 390)</string>
|
||||
<string name="subtype_generic_sebeolsik_390"><xliff:g id="LANGUAGE_NAME" example="koreański">%s</xliff:g> (Sebeolsik 390)</string>
|
||||
<string name="add_to_personal_dictionary_summary">Używaj słownika osobistego do przechowywania nauczonych słów</string>
|
||||
<string name="user_dict_word_already_present">To słowo znajduje się już w słowniku: %s. Wpisz inne.</string>
|
||||
<string name="style_name_Rounded" tools:keep="@string/style_name_Rounded">Zaokrąglony</string>
|
||||
<string name="button_backup">Kopia</string>
|
||||
<string name="theme_name_black" tools:keep="@string/theme_name_black">Czarne</string>
|
||||
<string name="subtype_generic_sebeolsik_final"><xliff:g id="LANGUAGE_NAME" example="Koreański">%s</xliff:g> (Sebeolsik Final)</string>
|
||||
<string name="subtype_generic_sebeolsik_final"><xliff:g id="LANGUAGE_NAME" example="koreański">%s</xliff:g> (Sebeolsik Final)</string>
|
||||
<string name="theme_name_chocolate" tools:keep="@string/theme_name_chocolate">Czekoladowe</string>
|
||||
<string name="remove_dictionary_message">Na pewno usunąć słownik \"%s\" dodany przez użytkownika?</string>
|
||||
<string name="theme_name_cloudy" tools:keep="@string/theme_name_cloudy">Pochmurne</string>
|
||||
|
@ -195,7 +195,7 @@
|
|||
<string name="theme_name_pink" tools:keep="@string/theme_name_pink">Różowe</string>
|
||||
<string name="language_and_layouts_title">Języki i układy</string>
|
||||
<string name="file_read_error">Nie można odczytać pliku</string>
|
||||
<string name="dictionary_link_text">stąd</string>
|
||||
<string name="dictionary_link_text">tutaj</string>
|
||||
<string name="dictionary_file_error">Błąd: wybrany plik nie jest prawidłowym plikiem słownika</string>
|
||||
<string name="hidden_features_text">chronionej pamięci urządzenia</string>
|
||||
<string name="theme_navbar">Koloruj pasek nawigacyjny</string>
|
||||
|
@ -360,7 +360,7 @@
|
|||
<string name="show_vertical_space_swipe">Spacja - przesuwanie pionowe</string>
|
||||
<string name="show_horizontal_space_swipe">Spacja - przesuwanie poziome</string>
|
||||
<string name="space_swipe_move_cursor_entry">Przesuń kursor</string>
|
||||
<string name="action_none">Brak przesuwania</string>
|
||||
<string name="action_none">Brak</string>
|
||||
<string name="var_toolbar_direction_summary">Odwróć kierunek po wybraniu układu klawiatury od prawej do lewej</string>
|
||||
<string name="var_toolbar_direction">Zmienny kierunek paska narzędzi</string>
|
||||
<string name="subtype_probhat_bn_BD"><xliff:g id="LANGUAGE_NAME" example="bengalski">%s</xliff:g> (Probhat)</string>
|
||||
|
@ -392,7 +392,7 @@
|
|||
<string name="emoji" tools:keep="@string/emoji">Emotikony</string>
|
||||
<string name="customize_currencies_detail">Ustaw główny i do 6 drugorzędnych symboli waluty, oddzielonych spacją</string>
|
||||
<string name="customize_currencies">Dostosuj waluty</string>
|
||||
<string name="load">Załaduj</string>
|
||||
<string name="load">Dodaj</string>
|
||||
<string name="copy_to_clipboard">Skopiuj do schowka</string>
|
||||
<string name="load_will_overwrite">Ładowanie spowoduje zastąpienie bieżącego motywu</string>
|
||||
<string name="button_save_file">Zapisz do pliku</string>
|
||||
|
@ -471,7 +471,11 @@
|
|||
<string name="name_invalid">Nieprawidłowa nazwa</string>
|
||||
<string name="locales_with_dict">Języki ze słownikami</string>
|
||||
<string name="layout_in_use">Ostrzeżenie: ten układ jest aktualnie używany</string>
|
||||
<string name="get_colors_message">Motywy możesz znaleźć i udostępnić w %s .</string>
|
||||
<string name="get_layouts_message">Układy możesz znaleźć i udostępnić w %s .</string>
|
||||
<string name="get_colors_message">Motywy możesz znaleźć i udostępnić w %s.</string>
|
||||
<string name="get_layouts_message">Układy możesz znaleźć i udostępnić w %s.</string>
|
||||
<string name="discussion_section_link">sekcji dyskusji</string>
|
||||
</resources>
|
||||
<string name="custom_subtype">Własny układ</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="bengalski">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="show_tld_popup_keys">Pokaż wyskakujące okienka TLD</string>
|
||||
<string name="show_tld_popup_keys_summary">Zastąp wyskakujące okienka klawisza kropki domenami najwyższego poziomu podczas wpisywania adresów URL i adresów e-mail</string>
|
||||
</resources>
|
||||
|
|
|
@ -123,7 +123,7 @@
|
|||
<string name="subtype_no_language_colemak">Alfabeto (Colemak)</string>
|
||||
<string name="subtype_no_language_colemak_dh">Alfabeto (Colemak Mod-DH)</string>
|
||||
<string name="subtype_no_language_workman">Alfabeto (Workman)</string>
|
||||
<string name="setup_welcome_title">Bem-vindo ao<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_welcome_title">Bem-vindo ao <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">Mostrar a paleta de emojis ao tocar na tecla Alt física</string>
|
||||
<string name="setup_steps_title">Configurando <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step1_instruction">Por favor, ative o \\<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" em \'Idiomas e Entrada\' nas configurações. Isso permitirá que ele seja usado no seu dispositivo.\"</string>
|
||||
|
@ -439,4 +439,6 @@
|
|||
<string name="discussion_section_link">seção de discussão</string>
|
||||
<string name="custom_subtype">Subtipo customizado</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengali">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="show_tld_popup_keys">Mostrar teclas de TLD</string>
|
||||
<string name="show_tld_popup_keys_summary">Substituir os pop-ups da tecla de ponto com domínios de topo ao digitar URLs e endereços de e-mail</string>
|
||||
</resources>
|
||||
|
|
|
@ -210,4 +210,20 @@
|
|||
<string name="customize_toolbar_key_code_reset_message">Limpar realmente todos os códigos de teclas personalizados?</string>
|
||||
<string name="number_row_hints">Mostrar dicas na linha dos números</string>
|
||||
<string name="prefs_language_swipe_distance">Mudar a distância de deslizamento do idioma</string>
|
||||
</resources>
|
||||
<string name="popup_keys_number" tools:keep="@string/popup_keys_number">Linha de números</string>
|
||||
<string name="popup_keys_layout" tools:keep="@string/popup_keys_layout">Disposição</string>
|
||||
<string name="show_popup_keys_more">Adicionar variantes comuns</string>
|
||||
<string name="popup_keys_symbols" tools:keep="@string/popup_keys_symbols">Símbolos</string>
|
||||
<string name="popup_keys_language_priority" tools:keep="@string/popup_keys_language_priority">Língua (prioridade)</string>
|
||||
<string name="emoji" tools:keep="@string/emoji">Emoji</string>
|
||||
<string name="show_popup_keys_all">Adicionar todas as variantes disponíveis</string>
|
||||
<string name="popup_keys_language" tools:keep="@string/popup_keys_language">Idioma</string>
|
||||
<string name="up" tools:keep="@string/up">Cima</string>
|
||||
<string name="down" tools:keep="@string/down">Baixo</string>
|
||||
<string name="clear_clipboard" tools:keep="@string/clear_clipboard">Limpar a área de transferência</string>
|
||||
<string name="select_word" tools:keep="@string/select_word">Selecionar palavra</string>
|
||||
<string name="left" tools:keep="@string/left">Esquerda</string>
|
||||
<string name="right" tools:keep="@string/right">Direita</string>
|
||||
<string name="locales_with_dict">Idiomas com dicionários</string>
|
||||
<string name="clipboard" tools:keep="@string/clipboard">Área de transferência</string>
|
||||
</resources>
|
||||
|
|
|
@ -161,4 +161,4 @@
|
|||
<string name="label_search_key">"Pesquisar"</string>
|
||||
<string name="label_pause_key">"Pausa"</string>
|
||||
<string name="label_wait_key">"Esp."</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -399,4 +399,35 @@
|
|||
<string name="label_shortcut_key_disabled" tools:keep="@string/label_shortcut_key_disabled">Introducerea vocală este dezactivată</string>
|
||||
<string name="label_toolbar_key" tools:keep="@string/label_toolbar_key">Afișează/ascunde bara de instrumente</string>
|
||||
<string name="customize_icons_reset_message">Resetezi cu adevărat toate pictogramele personalizate?</string>
|
||||
</resources>
|
||||
<string name="custom_subtype">Subtip personalizat</string>
|
||||
<string name="name_invalid">Nume greșit</string>
|
||||
<string name="subtype_baishakhi_bn_IN"><xliff:g id="LANGUAGE_NAME" example="Bengali">%s</xliff:g> (Baishakhi)</string>
|
||||
<string name="locales_with_dict">Limbi cu dicționare</string>
|
||||
<string name="split" tools:keep="@string/split">Tastatură împărțită</string>
|
||||
<string name="layout_in_use">AVERTIZARE: Aspectul este utilizat în prezent</string>
|
||||
<string name="customize_background_image_landscape">Setează imaginea de fundal (peisaj)</string>
|
||||
<string name="summary_customize_background_image_landscape">Dacă nu este setat, se va folosi imaginea portret</string>
|
||||
<string name="get_layouts_message">Poți găsi și împărtăși aspecte în %s.</string>
|
||||
<string name="label_zwj_key" tools:keep="@string/label_zwj_key">Conectorul lățimii zero</string>
|
||||
<string name="customize_toolbar_key_code_reset_message">Ștergi cu adevărat toate codurile cheie personalizate?</string>
|
||||
<string name="split_spacer_scale_landscape">Distanța divizării (peisaj)</string>
|
||||
<string name="enable_split_keyboard_landscape">Activează tastatura divizată (peisaj)</string>
|
||||
<string name="gesture_fast_typing_cooldown">Timp de restabilire a tastării rapide</string>
|
||||
<string name="auto_correct_shortcuts">Comenzi rapide corectare automată</string>
|
||||
<string name="auto_correct_shortcuts_summary">Dacă este activat, comenzile rapide pot fi extinse prin corecție automată</string>
|
||||
<string name="delete_confirmation">Chiar ștergi %s?</string>
|
||||
<string name="custom_font">Setează font personalizat din fișier</string>
|
||||
<string name="remove_redundant_popups_summary">Suprimă tastele pop-up care sunt deja prezente pe aspectul de bază</string>
|
||||
<string name="layout_functional_keys_tablet" tools:keep="@string/layout_functional_keys_tablet">Taste funcționale (ecran mare)</string>
|
||||
<string name="settings_screen_secondary_layouts">Aspecte secundare</string>
|
||||
<string name="prefs_bottom_padding_scale_landscape">Scală umplutură inferioară (peisaj)</string>
|
||||
<string name="prefs_font_scale">Scală font la tastatură</string>
|
||||
<string name="prefs_emoji_font_scale">Scală font vizualizare emoji</string>
|
||||
<string name="label_bin" tools:keep="@string/label_bin">Coș de reciclare</string>
|
||||
<string name="prefs_side_padding_scale_landscape">Scală umplutură laterală (peisaj)</string>
|
||||
<string name="prefs_side_padding_scale">Scală umplutură laterală</string>
|
||||
<string name="number_row_hints">Afișează indicii pe rândul cu numere</string>
|
||||
<string name="prefs_language_swipe_distance">Distanța de deplasare pentru comutarea limbii</string>
|
||||
<string name="get_colors_message">Poți găsi și împărtăși culori în %s.</string>
|
||||
<string name="discussion_section_link">secțiunea de discuții</string>
|
||||
</resources>
|
||||
|
|
|
@ -81,16 +81,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">Эмодзи для физической клавиатуры</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">Физическая клавиша Alt показывает все доступные эмодзи</string>
|
||||
<string name="button_default">По умолчанию</string>
|
||||
<string name="setup_welcome_title">Добро пожаловать в<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_welcome_title">Добро пожаловать в <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_welcome_additional_description">с непрерывным вводом</string>
|
||||
<string name="setup_start_action">Начать работу</string>
|
||||
<string name="setup_next_action">Далее</string>
|
||||
<string name="setup_steps_title">Настроить<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step1_title">Включить<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_steps_title">Настроить <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step1_title">Включить <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step1_instruction">Убедитесь, что \\<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" включен в настройках языка и ввода. Это позволит ему работать на вашем устройстве.\"</string>
|
||||
<string name="setup_step1_finished_instruction">Приложение <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g> уже включено в настройках языка и ввода. Перейдите к следующему шагу!\"</string>
|
||||
<string name="setup_step1_action">Включить в настройках</string>
|
||||
<string name="setup_step2_title">Переключитесь на<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step2_title">Переключитесь на <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g></string>
|
||||
<string name="setup_step2_instruction">Теперь выберите \\<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" в качестве активного метода ввода текста.\"</string>
|
||||
<string name="setup_step2_action">Другой способ ввода</string>
|
||||
<string name="setup_step3_title">Поздравляем, всё готово!</string>
|
||||
|
@ -285,7 +285,7 @@
|
|||
<string name="theme_name_holo_white" tools:keep="@string/theme_name_holo_white">Holo Белая</string>
|
||||
<string name="language_switch_key_switch_both">Смена обоих</string>
|
||||
<string name="up" tools:keep="@string/up">Вверх</string>
|
||||
<string name="remove_dictionary_message">Удалить пользовательский словарь \"%s\"?</string>
|
||||
<string name="remove_dictionary_message">Удалить пользовательский словарь «%s»?</string>
|
||||
<string name="file_read_error">Не получается прочитать файл</string>
|
||||
<string name="dictionary_link_text">здесь</string>
|
||||
<string name="add_dictionary">Выберите для добавления словаря. Словари в формате .dict можно скачать %s.</string>
|
||||
|
@ -307,7 +307,7 @@
|
|||
<string name="dictionary_file_wrong_locale_ok">Всё ещё используется</string>
|
||||
<string name="dictionary_file_wrong_locale">Выбранный файл предназначен для %1$s, но ожидался %2$s. Всё ещё используете его для %2$s?</string>
|
||||
<string name="dictionary_file_error">Ошибка: выбранный файл не является корректным словарем</string>
|
||||
<string name="no_dictionary_message">"Без словаря вы будете получать предложения только для введенного ранее текста.<br>\n Вы можете загрузить словари %1$s или проверить, можно ли загрузить словарь для \"%2$s\" напрямую %3$s."</string>
|
||||
<string name="no_dictionary_message">"Без словаря вы будете получать предложения только для введенного ранее текста.<br>\n Вы можете загрузить словари %1$s или проверить, можно ли загрузить словарь для «%2$s» напрямую %3$s."</string>
|
||||
<string name="available_dictionary_experimental">%s (экспериментальный)</string>
|
||||
<string name="layout_symbols" tools:keep="@string/layout_symbols">Символы</string>
|
||||
<string name="layout_symbols_arabic" tools:keep="@string/layout_symbols_arabic">Символы (арабские)</string>
|
||||
|
@ -425,7 +425,7 @@
|
|||
<string name="label_shift_key" tools:keep="@string/label_shift_key">Shift</string>
|
||||
<string name="label_shift_key_shifted" tools:keep="@string/label_shift_key_shifted">Shift (нажат)</string>
|
||||
<string name="label_shift_key_locked" tools:keep="@string/label_shift_key_locked">Caps lock</string>
|
||||
<string name="label_shortcut_key_disabled" tools:keep="@string/label_shortcut_key_disabled">Голосовой ввод отключен</string>
|
||||
<string name="label_shortcut_key_disabled" tools:keep="@string/label_shortcut_key_disabled">Голосовой ввод отключён</string>
|
||||
<string name="label_toolbar_key" tools:keep="@string/label_toolbar_key">Показать / скрыть панель инструментов</string>
|
||||
<string name="label_zwj_key" tools:keep="@string/label_zwj_key">Соединитель нулевой ширины</string>
|
||||
<string name="customize_toolbar_key_codes">Настроить коды клавиш панели инструментов</string>
|
||||
|
@ -435,8 +435,8 @@
|
|||
<string name="label_zwnj_key" tools:keep="@string/label_zwnj_key">Разъединитель нулевой ширины</string>
|
||||
<string name="label_stop_onehanded_mode_key" tools:keep="@string/label_stop_onehanded_mode_key">Выход из режима работы одной рукой</string>
|
||||
<string name="customize_icons_reset_message">Действительно сбросить все настроенные иконки?</string>
|
||||
<string name="label_bin" tools:keep="@string/label_bin">Bin</string>
|
||||
<string name="vibrate_in_dnd_mode">Вибрировать в режиме Не беспокоить</string>
|
||||
<string name="label_bin" tools:keep="@string/label_bin">Корзина</string>
|
||||
<string name="vibrate_in_dnd_mode">Вибрация в режиме «Не беспокоить»</string>
|
||||
<string name="subtype_generic_phonetic"><xliff:g id="LANGUAGE_NAME" example="Хинди">%s</xliff:g> (Фонетика)</string>
|
||||
<string name="auto_correct_shortcuts">Автокоррекция сочетаний клавиш</string>
|
||||
<string name="custom_font">Установить пользовательский шрифт из файла</string>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"සබඳතා නම් විමසන්න"</string>
|
||||
<string name="vibrate_on_keypress">"යතුර ඔබන විට කම්පනය"</string>
|
||||
<string name="sound_on_keypress">"යතුරු එබිම මත හඬ"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"භෞතික යතුරුපුවරුව සඳහා ඉමොජි"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"භෞතික Alt යතුර ඉමොජි පෙන්වයි"</string>
|
||||
<string name="button_default">"සුපුරුදු"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> වෙත සාදරයෙන් පිළිගනිමු"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> වෙත සාදරයෙන් පිළිගනිමු\"</string>
|
||||
<string name="setup_welcome_additional_description">"ඉංගිත ටයිප් කිරීම් සමග"</string>
|
||||
<string name="setup_start_action">"අරඹන්න"</string>
|
||||
<string name="setup_next_action">"ඊළඟ පියවර"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> සැකසෙමින් පවතී"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> සබල කරන්න"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> සැකසෙමින් පවතී\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> සබල කරන්න\"</string>
|
||||
<string name="setup_step1_instruction">"කරණාකර ඔබගේ භාෂාව සහ ආදාන සැකසීම් තුළ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" පරීක්ෂා කරන්න. මෙය ඔබගේ උපාංගය මත එයට ධාවනය වීමට අනුමැතිය දෙනු ඇත."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> දැනටමත් ඔබගේ භාෂාව සහ ආදාන සැකසීම් තුළ සබල කර ඇත, එම නිසා මෙම පියවර නිමයි. ඊළඟ එක වෙතට!"</string>
|
||||
<string name="setup_step1_action">"සැකසීම් තුළ සබල කරන්න"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> වෙත මාරුවන්න"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> වෙත මාරුවන්න\"</string>
|
||||
<string name="setup_step2_instruction">"ඊළඟට, ඔබගේ සක්රිය පෙළ-ආදාන ක්රමය ලෙස \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" තෝරන්න."</string>
|
||||
<string name="setup_step2_action">"ආදාන ක්රම මාරු කරන්න"</string>
|
||||
<string name="setup_step3_title">"සුබපැතුම්, ඔබ සියල්ල පිහිටුවා ඇත!"</string>
|
||||
|
|
|
@ -170,4 +170,4 @@
|
|||
<string name="show_popup_keys_more">Додај уобичајене варијанте</string>
|
||||
<string name="switch_language">Промена језика</string>
|
||||
<string name="disable_personalized_dicts_message">Упозорење: онемогућавање овог подешавања ће обрисати научене податке</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -282,4 +282,4 @@
|
|||
<string name="remove_redundant_popups">Ta bort överflödiga popuper</string>
|
||||
<string name="remove_redundant_popups_summary">Dämpa popup-tangenter som finns i grundlayouten</string>
|
||||
<string name="action_none">Ingen</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"தொடர்பு பெயர்களை ஆய்வுசெய்"</string>
|
||||
<string name="vibrate_on_keypress">"விசையழுத்தின்போது அதிர்வுரு"</string>
|
||||
<string name="sound_on_keypress">"விசையழுத்தத்தின்போது ஒலியெழுப்பு"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"கைமுறை விசைப்பலகைக்கான ஈமோஜி"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"ஈமோஜி பலகத்தைக் காட்டும் கைமுறை Alt விசை"</string>
|
||||
<string name="button_default">"இயல்புநிலை"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாட்டிற்கு வரவேற்கிறோம்"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாட்டிற்கு வரவேற்கிறோம்\"</string>
|
||||
<string name="setup_welcome_additional_description">"ஸ்வைப் உள்ளீடு மூலம்"</string>
|
||||
<string name="setup_start_action">"தொடங்குக"</string>
|
||||
<string name="setup_next_action">"அடுத்த கட்டம்"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ஆப்ஸை அமைக்கிறது"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ஆப்ஸை இயக்கவும்"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ஆப்ஸை அமைக்கிறது\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> ஆப்ஸை இயக்கவும்\"</string>
|
||||
<string name="setup_step1_instruction">"மொழி & உள்ளீட்டு அமைப்புகளில் \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ஆப்ஸைத் தேர்வு செய்யவும். இதனால், சாதனத்தில் ஆப்ஸை இயக்கலாம்."</string>
|
||||
<string name="setup_step1_finished_instruction">"மொழி & உள்ளீட்டு அமைப்புகளில் <xliff:g id="APPLICATION_NAME">%s</xliff:g> ஏற்கனவே இயக்கப்பட்டுள்ளதால் இப்படிமுறை முடிந்தது. அடுத்த படிமுறைக்குச் செல்லவும்!"</string>
|
||||
<string name="setup_step1_action">"அமைப்புகளில் இயக்கு"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> க்கு மாறவும்"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g> க்கு மாறவும்\"</string>
|
||||
<string name="setup_step2_instruction">"அடுத்து, உங்கள் செயலில் உள்ள உரை உள்ளீட்டு முறையாக \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" பயன்பாட்டைத் தேர்ந்தெடுக்கவும்."</string>
|
||||
<string name="setup_step2_action">"உள்ளீட்டு முறைகளை மாற்றவும்"</string>
|
||||
<string name="setup_step3_title">"வாழ்த்துகள், தயாராகிவிட்டீர்கள்!"</string>
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
Copyright (C) 2008 The Android Open Source Project
|
||||
modified
|
||||
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
--><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="use_contacts_dict">"పరిచయ పేర్లను వెతకండి"</string>
|
||||
<string name="vibrate_on_keypress">"కీని నొక్కినప్పుడు వైబ్రేట్"</string>
|
||||
<string name="sound_on_keypress">"కీని నొక్కినప్పుడు ధ్వని"</string>
|
||||
|
@ -76,16 +75,16 @@
|
|||
<string name="prefs_enable_emoji_alt_physical_key">"భౌతిక కీబోర్డ్ కోసం ఎమోజి"</string>
|
||||
<string name="prefs_enable_emoji_alt_physical_key_summary">"భౌతిక Alt కీ ఎమోజి ఫలకాన్ని చూపుతుంది"</string>
|
||||
<string name="button_default">"డిఫాల్ట్"</string>
|
||||
<string name="setup_welcome_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>కు స్వాగతం"</string>
|
||||
<string name="setup_welcome_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>కు స్వాగతం\"</string>
|
||||
<string name="setup_welcome_additional_description">"సంజ్ఞ టైపింగ్తో"</string>
|
||||
<string name="setup_start_action">"ప్రారంభించండి"</string>
|
||||
<string name="setup_next_action">"తర్వాత దశ"</string>
|
||||
<string name="setup_steps_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ని సెటప్ చేయడం"</string>
|
||||
<string name="setup_step1_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ని ప్రారంభించండి"</string>
|
||||
<string name="setup_steps_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>ని సెటప్ చేయడం\"</string>
|
||||
<string name="setup_step1_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>ని ప్రారంభించండి\"</string>
|
||||
<string name="setup_step1_instruction">"దయచేసి మీ భాషలు & ఇన్పుట్ సెట్టింగ్ల్లో \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" తనిఖీ చేయండి. ఇది మీ పరికరంలో అమలు కావడానికి దీన్ని ప్రామాణీకరిస్తుంది."</string>
|
||||
<string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ఇప్పటికే మీ భాషలు & ఇన్పుట్ సెట్టింగ్ల్లో ప్రారంభించబడింది, కనుక ఈ దశ పూర్తయింది. తర్వాత దశకు వెళ్లండి!"</string>
|
||||
<string name="setup_step1_action">"సెట్టింగ్ల్లో ప్రారంభించండి"</string>
|
||||
<string name="setup_step2_title">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>కు మారండి"</string>
|
||||
<string name="setup_step2_title"><xliff:g id="APPLICATION_NAME">%s</xliff:g>కు మారండి\"</string>
|
||||
<string name="setup_step2_instruction">"తర్వాత, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\"ని మీ సక్రియ వచన-ఇన్పుట్ పద్ధతిగా ఎంచుకోండి."</string>
|
||||
<string name="setup_step2_action">"ఇన్పుట్ పద్ధతులను మార్చు"</string>
|
||||
<string name="setup_step3_title">"అభినందనలు, మీరు అంతా పూర్తి చేసారు!"</string>
|
||||
|
@ -143,4 +142,4 @@
|
|||
<string name="label_search_key">"వెతుకు"</string>
|
||||
<string name="label_pause_key">"పాజ్ చేయి"</string>
|
||||
<string name="label_wait_key">"వేచి ఉ."</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
|
@ -282,42 +282,7 @@
|
|||
<string name="select_user_colors_summary">Metin ve arka planlar için renkleri seç</string>
|
||||
<string name="select_color_accent">Vurgu</string>
|
||||
<string name="hidden_features_title">Gizli özelliklerin açıklaması</string>
|
||||
<string name="hidden_features_message">► Sabitlenmiş araç çubuğu tuşlarına uzun basmak ek işlevsellik sağlar: <br>
|
||||
\n\t• panoya kopyala &#65515; yapıştır <br>
|
||||
\n\t• sola/sağa hareket et &#65515; kelime sola/sağa <br>
|
||||
\n\t• yukarı/aşağı hareket et &#65515; sayfa yukarı/aşağı <br>
|
||||
\n\t• kelime sola/sağa &#65515; satır başı/sonu <br>
|
||||
\n\t• sayfa yukarı/aşağı &#65515; sayfa başı/sonu <br>
|
||||
\n\t• kopyala &#65515; kes <br>
|
||||
\n\t• kelime seç &#8596; tümünü seç <br>
|
||||
\n\t• geri al &#8596; yinele <br> <br>
|
||||
\n► Öneri şeridi araç çubuğundaki tuşlara uzun basmak, onları öneri şeridine sabitler. <br> <br>
|
||||
\n► Virgül tuşuna uzun basarak Pano Görünümü, Emoji Görünümü, Tek El Modu, Ayarlar veya Dil Değiştir\'e erişebilirsin: <br>
|
||||
\n\t• Emoji Görünümü ve Dil Değiştir, ilgili tuşu etkinleştirdiysen kaybolur; <br>
|
||||
\n\t• Bazı düzenler için bu, Virgül tuşu değil, aynı konumdaki başka bir tuş olabilir (örneğin, Dvorak düzeninde bu tuş \'q\'dur). <br> <br>
|
||||
\n► Gizli mod etkinleştirildiğinde, hiçbir kelime öğrenilmeyecek ve son eklenen emojilere yeni bir emoji eklenmeyecektir. <br> <br>
|
||||
\n► Gizli mod simgesine basarak araç çubuğuna erişebilirsin. <br> <br>
|
||||
\n► Kaydırmalı tuş girişi: Shift tuşundan başka bir tuşa kaydırarak tek bir büyük harf yazabilirsin: <br>
|
||||
\n\t• Bu, ayrıca \'123\' tuşu için semboller klavyesinden tek bir sembol yazmak ve ilgili tuşlar için de çalışır. <br> <br>
|
||||
\n► Shift veya sembol tuşunu basılı tut, bir veya daha fazla tuşa bas ve ardından önceki klavyeye dönmek için Shift veya sembol tuşunu bırak. <br> <br>
|
||||
\n► Öneri şeridindeki bir öneriye uzun basarak daha fazla öneriyi ve bu öneriyi kaldırmak için bir silme düğmesini gösterir. <br> <br>
|
||||
\n► Bir öneriye yukarı kaydırarak daha fazla öneriyi aç ve seçmek için öneri üzerinde bırak. <br> <br>
|
||||
\n► Pano geçmişindeki bir girdiye uzun basarak onu sabitleyebilirsin (sabitlediğin sürece panoda kalır). <br> <br>
|
||||
\n► Pano görünümünde bir girdiyi kaldırmak için sola kaydır (sabitlediğin sürece hariç). <br> <br>
|
||||
\n► Metni seç ve büyük/küçük harflerini değiştirmek için Shift tuşuna bas. <br> <br>
|
||||
\n► Sözlükleri bir dosya gezgini ile açarak ekleyebilirsin: <br>
|
||||
\n\t• Bu yalnızca <i>content-uris</i> ile çalışır, <i>file-uris</i> ile çalışmaz, yani bazı dosya gezginlerinde çalışmayabilir. <br> <br>
|
||||
\n► Kök erişimiyle manuel yedekleme yapan kullanıcılar için: <br>
|
||||
\n\t• Android 7\'den başlayarak, paylaşılan tercih dosyası varsayılan konumda değildir, çünkü uygulama %s kullanmaktadır. Bu, cihaz kilitlenmeden önce, örneğin açılışta, ayarların okunabilmesi için gereklidir; <br>
|
||||
\n\t• Dosya /data/user_de/0/package_id/shared_prefs/ konumunda bulunur, ancak bu cihaz ve Android sürümüne bağlı olarak değişebilir. <br> <br>
|
||||
\n<i><b>Hata ayıklama modu / hata ayıklama APK\'sı</b></i> <br> <br>
|
||||
\n► Bir öneriye uzun basarak kaynak sözlüğü göster. <br> <br>
|
||||
\n► Hata ayıklama APK\'sı kullanırken, Gelişmiş Tercihler içinde Hata Ayıklama Ayarlarını bulabilirsin, ancak bu yalnızca sözlükleri günlüğe dökmek için sınırlı fayda sağlar. <br>
|
||||
\n\t• Yayın APK\'sı için, <i>Hakkında</i> kısmındaki sürüme birkaç kez dokunman gerekir, ardından Gelişmiş Tercihler içinde hata ayıklama ayarlarını bulabilirsin. <br>
|
||||
\n\t• <i>Öneri bilgilerini göster</i> etkinleştirildiğinde, önerilerin üzerinde bazı iç puan ve kaynak sözlük gösteren küçük sayılar olacaktır. <br> <br>
|
||||
\n► Bir uygulama çökmesi durumunda, Ayarları açtığında çökme günlüklerini isteyip istemediğin sorulacaktır. <br> <br>
|
||||
\n► Çok dilli yazım kullanırken, boşluk tuşu şu anda kullanılan dili belirlemek için kullanılan bir güven değerini gösterir. <br> <br>
|
||||
\n► Önerilerin üzerinde bazı iç puan ve kaynak sözlük gösteren küçük sayılar olacaktır (devre dışı bırakılabilir).</string>
|
||||
<string name="hidden_features_message">► Sabitlenmiş araç çubuğu tuşlarına uzun basmak ek işlevsellik sağlar: <br> \n\t• panoya kopyala &#65515; yapıştır <br> \n\t• sola/sağa hareket et &#65515; kelime sola/sağa <br> \n\t• yukarı/aşağı hareket et &#65515; sayfa yukarı/aşağı <br> \n\t• kelime sola/sağa &#65515; satır başı/sonu <br> \n\t• sayfa yukarı/aşağı &#65515; sayfa başı/sonu <br> \n\t• kopyala &#65515; kes <br> \n\t• kelime seç &#8596; tümünü seç <br> \n\t• geri al &#8596; yinele <br> <br> \n► Öneri şeridi araç çubuğundaki tuşlara uzun basmak, onları öneri şeridine sabitler. <br> <br> \n► Virgül tuşuna uzun basarak Pano Görünümü, Emoji Görünümü, Tek El Modu, Ayarlar veya Dil Değiştir\'e erişebilirsin: <br> \n\t• Emoji Görünümü ve Dil Değiştir, ilgili tuşu etkinleştirdiysen kaybolur; <br> \n\t• Bazı düzenler için bu, Virgül tuşu değil, aynı konumdaki başka bir tuş olabilir (örneğin, Dvorak düzeninde bu tuş \'q\'dur). <br> <br> \n► Gizli mod etkinleştirildiğinde, hiçbir kelime öğrenilmeyecek ve son eklenen emojilere yeni bir emoji eklenmeyecektir. <br> <br> \n► Gizli mod simgesine basarak araç çubuğuna erişebilirsin. <br> <br> \n► Kaydırmalı tuş girişi: Shift tuşundan başka bir tuşa kaydırarak tek bir büyük harf yazabilirsin: <br> \n\t• Bu, ayrıca \'123\' tuşu için semboller klavyesinden tek bir sembol yazmak ve ilgili tuşlar için de çalışır. <br> <br> \n► Shift veya sembol tuşunu basılı tut, bir veya daha fazla tuşa bas ve ardından önceki klavyeye dönmek için Shift veya sembol tuşunu bırak. <br> <br> \n► Öneri şeridindeki bir öneriye uzun basarak daha fazla öneriyi ve bu öneriyi kaldırmak için bir silme düğmesini gösterir. <br> <br> \n► Bir öneriye yukarı kaydırarak daha fazla öneriyi aç ve seçmek için öneri üzerinde bırak. <br> <br> \n► Pano geçmişindeki bir girdiye uzun basarak onu sabitleyebilirsin (sabitlediğin sürece panoda kalır). <br> <br> \n► Pano görünümünde bir girdiyi kaldırmak için sola kaydır (sabitlediğin sürece hariç). <br> <br> \n► Metni seç ve büyük/küçük harflerini değiştirmek için Shift tuşuna bas. <br> <br> \n► Sözlükleri bir dosya gezgini ile açarak ekleyebilirsin: <br> \n\t• Bu yalnızca <i>content-uris</i> ile çalışır, <i>file-uris</i> ile çalışmaz, yani bazı dosya gezginlerinde çalışmayabilir. <br> <br> \n► Kök erişimiyle manuel yedekleme yapan kullanıcılar için: <br> \n\t• Android 7\'den başlayarak, paylaşılan tercih dosyası varsayılan konumda değildir, çünkü uygulama %s kullanmaktadır. Bu, cihaz kilitlenmeden önce, örneğin açılışta, ayarların okunabilmesi için gereklidir; <br> \n\t• Dosya /data/user_de/0/package_id/shared_prefs/ konumunda bulunur, ancak bu cihaz ve Android sürümüne bağlı olarak değişebilir. <br> <br> \n<i><b>Hata ayıklama modu / hata ayıklama APK\'sı</b></i> <br> <br> \n► Bir öneriye uzun basarak kaynak sözlüğü göster. <br> <br> \n► Hata ayıklama APK\'sı kullanırken, Gelişmiş Tercihler içinde Hata Ayıklama Ayarlarını bulabilirsin, ancak bu yalnızca sözlükleri günlüğe dökmek için sınırlı fayda sağlar. <br> \n\t• Yayın APK\'sı için, <i>Hakkında</i> kısmındaki sürüme birkaç kez dokunman gerekir, ardından Gelişmiş Tercihler içinde hata ayıklama ayarlarını bulabilirsin. <br> \n\t• <i>Öneri bilgilerini göster</i> etkinleştirildiğinde, önerilerin üzerinde bazı iç puan ve kaynak sözlük gösteren küçük sayılar olacaktır. <br> <br> \n► Bir uygulama çökmesi durumunda, Ayarları açtığında çökme günlüklerini isteyip istemediğin sorulacaktır. <br> <br> \n► Çok dilli yazım kullanırken, boşluk tuşu şu anda kullanılan dili belirlemek için kullanılan bir güven değerini gösterir. <br> <br> \n► Önerilerin üzerinde bazı iç puan ve kaynak sözlük gösteren küçük sayılar olacaktır (devre dışı bırakılabilir).</string>
|
||||
<string name="show_vertical_space_swipe">Dikey boşluk çubuğu kaydırma hareketi</string>
|
||||
<string name="action_none">Yok</string>
|
||||
<string name="space_swipe_move_cursor_entry">İmleci taşı</string>
|
||||
|
@ -425,4 +390,4 @@
|
|||
<string name="label_enter_key" tools:keep="@string/label_enter_key">Giriș</string>
|
||||
<string name="label_tab_key" tools:keep="@string/label_tab_key">Tab</string>
|
||||
<string name="label_delete_key" tools:keep="@string/label_delete_key">Sil</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue