Compare commits

...

80 Commits

Author SHA1 Message Date
Patrick Goldinger
1c2596147a Release v0.3.7 2021-02-04 23:56:56 +01:00
Patrick Goldinger
d355143ba1 Update selection keyboard icon (#316) 2021-02-04 23:47:00 +01:00
Patrick Goldinger
a9eb4c0eec Update translations from Crowdin 2021-02-04 19:57:17 +01:00
Patrick Goldinger
487a37bc66 Merge pull request #313 from eandersons/layout-lv_LV
Add QWERTY based extended popups for Latvian
2021-02-04 18:51:09 +01:00
Patrick Goldinger
85a54e701e Merge pull request #317 from florisboard/improve-landscape-input-ui
Improve Landscape Input UI
2021-02-04 18:48:10 +01:00
Patrick Goldinger
2666acd4ae Improve Landscape Input UI 2021-02-04 18:17:58 +01:00
Edgars
ba72e6274f Add Euro sign to e extended popup 2021-02-04 07:47:30 +02:00
Edgars
e20ce07957 Add QWERTY based extended popups for Latvian 2021-02-04 07:32:52 +02:00
Patrick Goldinger
765a12537e Update extract edit UI strings to be more user-friendly 2021-02-03 22:37:36 +01:00
Patrick Goldinger
4845ce55b5 Fix Spanish extended popups (#251) 2021-02-03 20:54:02 +01:00
Patrick Goldinger
47cd655d76 Update bug_report.md (#309) 2021-02-03 20:04:25 +01:00
Patrick Goldinger
d3edd3d332 Possible fix for background color bug (#274) 2021-02-03 19:50:16 +01:00
Patrick Goldinger
2d32364123 Fix cut/copy button not working in Smartbar (#308) 2021-02-03 19:07:40 +01:00
Patrick Goldinger
509308ec82 Fix welcome screen not appearing in rare cases (#310) 2021-02-03 18:54:53 +01:00
Patrick Goldinger
db65af5ea5 Fix symbols layouts applying the caps state (#298) 2021-02-03 00:50:14 +01:00
Patrick Goldinger
9a46cf9dff Improve one-handed toggle UX (#303) 2021-02-02 23:39:14 +01:00
Patrick Goldinger
2591eaa49d Fix Italian extended popups (#299) 2021-02-02 23:28:32 +01:00
Patrick Goldinger
57350b422d Release v0.3.6 2021-02-01 20:47:53 +01:00
Patrick Goldinger
fe8efa8496 Update translations from Crowdin 2021-02-01 20:07:28 +01:00
Patrick Goldinger
c5ce9ba252 Merge pull request #297 from serebit/master
Add Floris Black and Floris Black Borderless themes
2021-02-01 19:57:14 +01:00
Patrick Goldinger
4e39273812 Fix memory leaks and reset failures (#267) 2021-02-01 19:42:51 +01:00
Campbell Jones
43995f1ac5 Add Floris Black and Floris Black Borderless themes 2021-02-01 12:44:00 -05:00
Patrick Goldinger
3688f8e8dc Improve bottom offset feature (#58) 2021-01-31 23:40:50 +01:00
Patrick Goldinger
5cbbbc2295 Improve key hint label style (#213) 2021-01-31 17:05:06 +01:00
Karim
af08947929 Switch emoji and one-handed mode extended popup / Add Gboard Day theme (#258)
* switch positions between emojis and one hand keys

* new theme

* new theme

* Create gboard_like_day.json

* Rename gboard_like_day.json to gboard_day.json

* Changing label and name's value

* Changing label and name's value

Co-authored-by: Karim <52888633+itskarim@users.noreply.github.com>
Co-authored-by: Kareem <d.abdelkarim@outlook.com>
2021-01-31 15:25:10 +01:00
Patrick Goldinger
3e8a227320 Merge pull request #288 from florisboard/feat-improve-moving-gestures
Improve moving gestures detection and UX
2021-01-31 14:46:36 +01:00
Patrick Goldinger
adb69dc365 Improve moving gestures detection and UX 2021-01-31 03:52:16 +01:00
Patrick Goldinger
c2998c9a2e Merge branch 'feat-label-always-visible' 2021-01-30 19:23:39 +01:00
Patrick Goldinger
f801c31ebb Change bottom nav label visibility to always show 2021-01-30 19:23:02 +01:00
Patrick Goldinger
6b8652bcd9 Merge pull request #275 from GrbavaCigla/master
Serbian layouts
2021-01-30 12:16:59 +01:00
GrbavaCigla
65b5d252b6 copied hr.json to sr.json for extended popups 2021-01-30 11:09:22 +01:00
Patrick Goldinger
c5ae916ece Merge branch 'make-app-name-translatable' 2021-01-29 19:27:17 +01:00
Patrick Goldinger
de3fcceeaf Make app name translatable (#253) 2021-01-29 19:26:45 +01:00
florisboard-bot
f06ea18e89 Update Crowdin configuration file 2021-01-29 19:20:33 +01:00
GrbavaCigla
9d7754b8db Fixed layout 2021-01-29 18:51:02 +01:00
GrbavaCigla
2be1a328b6 Merge conflict solved 2021-01-29 17:45:29 +01:00
GrbavaCigla
9cd7931b3e Script moved to utils 2021-01-29 17:41:11 +01:00
Patrick Goldinger
03f9014b7c Fix machine-keyword Locale issue (#135) 2021-01-29 16:59:51 +01:00
Patrick Goldinger
62abefc36e Merge pull request #271 from kurdikeyboard/master
Added Kurdish Keyboard Qwerty(No-shift) layout
2021-01-29 15:37:54 +01:00
Patrick Goldinger
f5d79e8556 Fix semantic issues and asset naming 2021-01-29 15:33:59 +01:00
Patrick Goldinger
e68428ef11 Merge branch 'master' of https://github.com/kurdikeyboard/florisboard into kurdikeyboard-master 2021-01-29 15:15:04 +01:00
Patrick Goldinger
1cfde9c2b9 Merge pull request #276 from florisboard/feat-extract-edit-layout
Add ExtractEditLayout support
2021-01-29 15:12:42 +01:00
Patrick Goldinger
765a596eb2 Add ExtractEditLayout support 2021-01-29 14:59:27 +01:00
GrbavaCigla
a27035a81b Script for updating codes 2021-01-29 12:37:38 +01:00
GrbavaCigla
380eaffb08 Fix config 2021-01-29 12:34:06 +01:00
GrbavaCigla
0e7eac2796 Added layouts to config.json 2021-01-29 12:13:03 +01:00
GrbavaCigla
6da344fd6c Added layouts 2021-01-29 12:04:24 +01:00
Goran Gharib
7787af69fd Added Kurdish Keyboard Qwerty(No-shift) layout 2021-01-29 06:33:48 +03:00
Patrick Goldinger
288bd61fb4 Fix theme creation crash (#266) 2021-01-28 19:12:24 +01:00
Patrick Goldinger
fe69c0f3e1 Fix language code not matching in iw.json 2021-01-28 17:52:07 +01:00
antonygggg
766c5efa95 Added Hebrew layout (#264)
* Update config.json

Added characterLayouts hebrew and defaultSubtypes he-IL

* Create hebrew.json

* Create he.json

* Create hebrew.json

* Update hebrew.json

Added modifier hebrew

* Update hebrew.json

* Update hebrew.json

* Update he.json

* Update hebrew.json

* Update hebrew.json

* Update hebrew.json

* Update hebrew.json

* Update hebrew.json

* Update hebrew.json

* Fix language code for Android and fix brackets

Co-authored-by: Patrick Goldinger <patrick.goldinger@pm.me>
2021-01-28 13:43:43 +01:00
Patrick Goldinger
35bd6e7c8d Merge pull request #254 from antonygggg/patch-1
Update CONTRIBUTING.md
2021-01-28 09:56:09 +01:00
antonygggg
23f14ab57d Update CONTRIBUTING.md 2021-01-28 08:59:00 +02:00
Patrick Goldinger
ac688a38ab Merge pull request #250 from florisboard/fix-utility-key-naming
Fix utility key naming
2021-01-27 23:57:39 +01:00
Patrick Goldinger
a2e393d7dd Fix utility key naming (#246) 2021-01-27 21:00:10 +01:00
Patrick Goldinger
ba8ebaf231 Merge pull request #247 from kisekinopureya/master
Add Turkish extended popups for QWERTY
2021-01-27 18:23:56 +01:00
Gökhan Özdemir
a0e381ed93 Merge branch 'master' into master 2021-01-27 17:10:46 +00:00
Patrick Goldinger
09833a3369 Merge pull request #244 from Iorvethe/master
Add Bulgarian layouts
2021-01-27 17:22:02 +01:00
kisekinopureya
f014b010d8 Add Turkish extended popups for QWERTY 2021-01-27 17:07:39 +03:00
Iorvethe
9512eb32f0 Add popups for Bulgarian layouts 2021-01-27 11:21:28 +01:00
Patrick Goldinger
82f99bd721 Fix context for the switch_key_mode string 2021-01-26 23:55:54 +01:00
bpetrov
1d710dfb85 Add Bulgarian (BDS) layout 2021-01-26 22:26:42 +01:00
bpetrov
1328eb1f05 Add Bulgarian(Phonetic) layout 2021-01-26 21:48:29 +01:00
Patrick Goldinger
1cda0662ae Release v0.3.5 2021-01-25 21:45:27 +01:00
Patrick Goldinger
11cacb25c8 Merge pull request #241 from florisboard/feat-switch-key-customization
Add ability to customize switch key (emoji, language)
2021-01-25 21:13:17 +01:00
Patrick Goldinger
c0207fd84e Add ability to customize switch key (emoji, language) (#79) 2021-01-25 20:54:15 +01:00
Patrick Goldinger
56d3acfc67 Merge pull request #240 from florisboard/improve-adaptive-theme
Improve adaptive theme / Fix color dialog cache bug in theme editor
2021-01-25 19:44:56 +01:00
Patrick Goldinger
a3e5ae9337 Fix color dialog cache problem in theme editor (#237) 2021-01-25 18:44:31 +01:00
Patrick Goldinger
7e84f71464 Improve adaptive theme coloring (#226) 2021-01-25 18:43:57 +01:00
Patrick Goldinger
eb88fbc981 Update translations from Crowdin 2021-01-25 00:07:12 +01:00
Patrick Goldinger
96320e6b06 Merge pull request #234 from florisboard/improve-theme-editor
Improve theme editor UI and UX
2021-01-24 21:01:24 +01:00
Patrick Goldinger
fee9c2a0ac Improve theme editor UI and UX 2021-01-24 19:40:07 +01:00
Patrick Goldinger
c74a5841ec Add ext popups for less-than and greater-than symbols (#219) 2021-01-24 02:37:04 +01:00
Patrick Goldinger
aab7a6e33a Fix theme group name input validation (again) 2021-01-24 02:20:28 +01:00
Patrick Goldinger
0ea59cf2ed Merge pull request #232 from florisboard/fix-space-bar-long-press
Fix space bar long press
2021-01-24 02:08:49 +01:00
Patrick Goldinger
1be6ce1ae8 Fix space bar long press 2021-01-24 02:05:02 +01:00
Patrick Goldinger
8d06bea6bb Merge pull request #231 from florisboard/feat-proper-loading-screen
Proper loading keyboard animation
2021-01-23 19:18:39 +01:00
Patrick Goldinger
4b1a0c9972 Improve startup loading animation 2021-01-23 19:13:14 +01:00
Patrick Goldinger
3d50ea59af Add wiki page reference in Theme Editor 2021-01-22 16:00:50 +01:00
Patrick Goldinger
c365acb800 Add InputView placeholder loading animation 2021-01-21 21:18:33 +01:00
119 changed files with 5526 additions and 934 deletions

View File

@@ -15,18 +15,21 @@ assignees: ''
- Thank you for your help in making FlorisBoard better!
-->
**Environment information**
- FlorisBoard Version: <!-- e.g. 0.1.0 -->
- Install Source: <!-- Google PlayStore/F-Droid/GitHub/? -->
- Device: <!-- e.g. OnePlus 7T -->
- Android version, ROM: <!-- e.g. 10, Stock -->
#### Short description
Describe the bug in a short but concise way.
**Steps to reproduce**
#### Steps to reproduce
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
#### Environment information
- FlorisBoard Version: <!-- e.g. 0.3.6 -->
- Install Source: <!-- Google PlayStore/F-Droid/GitHub/? -->
- Device: <!-- e.g. OnePlus 7T -->
- Android version, ROM: <!-- e.g. 10, Stock -->
<!-- (remove this line if you paste a log)
```
If applicable, paste the captured debug log here.

View File

@@ -32,7 +32,7 @@ free to ask for help at any time!
## Adding a new keyboard layout / dictionary for locale
You can now oficially add layouts to FlorisBoard as described below.
You can now officially add layouts to FlorisBoard as described below.
FlorisBoard's core has stabilized enough that adding new content is
safe, although there will be some changes in the future.

View File

@@ -19,8 +19,8 @@ android {
applicationId "dev.patrickgold.florisboard"
minSdkVersion 23
targetSdkVersion 29
versionCode 23
versionName "0.3.4"
versionCode 26
versionName "0.3.7"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -32,12 +32,12 @@ android {
buildTypes {
debug {
applicationIdSuffix ".debug"
resValue "string", "app_name", "FlorisBoard Debug"
resValue 'string', 'floris_app_name', 'FlorisBoard Debug'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
resValue "string", "app_name", "FlorisBoard"
resValue 'string', 'floris_app_name', '@string/app_name'
}
}

View File

@@ -23,9 +23,8 @@
<application
android:name=".ime.core.FlorisApplication"
android:allowBackup="false"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:label="@string/floris_app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/SettingsTheme">
@@ -33,7 +32,7 @@
<!-- IME service -->
<service
android:name="dev.patrickgold.florisboard.ime.core.FlorisBoard"
android:label="@string/app_name"
android:label="@string/floris_app_name"
android:permission="android.permission.BIND_INPUT_METHOD">
<meta-data
android:name="android.view.im"
@@ -57,7 +56,7 @@
<activity-alias
android:name="dev.patrickgold.florisboard.SettingsLauncherAlias"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:label="@string/floris_app_name"
android:launchMode="singleTask"
android:roundIcon="@mipmap/ic_launcher_round"
android:targetActivity="dev.patrickgold.florisboard.setup.SetupActivity">

View File

@@ -5,6 +5,8 @@
"qwertz": "QWERTZ",
"azerty": "AZERTY",
"bepo": "BÉPO",
"bulgarian_bds": "Bulgarian (BDS)",
"bulgarian_phonetic": "Bulgarian (Phonetic)",
"spanish": "Spanish (QWERTY)",
"norwegian": "Norwegian (QWERTY)",
"swedish_finnish": "Swedish/Finnish (QWERTY)",
@@ -22,7 +24,11 @@
"dvorak": "Dvorak",
"jcuken_russian": "Russian (JCUKEN)",
"canadian_french": "Canadian French (QWERTY)",
"greek": "Ελληνικά"
"greek": "Ελληνικά",
"hebrew": "עברית",
"serbian_latin": "Serbian (QWERTZ)",
"serbian_cyrillic": "Serbian (ЉЊЕРТЗ)",
"kurdish": "کوردی"
},
"defaultSubtypes": [
{
@@ -184,6 +190,36 @@
"id": 1601,
"languageTag": "pl",
"preferredLayout": "qwerty"
},
{
"id": 1701,
"languageTag": "bg-bg",
"preferredLayout": "bulgarian_phonetic"
},
{
"id": 1801,
"languageTag": "tr",
"preferredLayout": "qwerty"
},
{
"id": 1901,
"languageTag": "iw-IL",
"preferredLayout": "hebrew"
},
{
"id": 2001,
"languageTag": "ckb",
"preferredLayout": "kurdish"
},
{
"id": 2101,
"languageTag": "sr-RS",
"preferredLayout": "serbian_cyrillic"
},
{
"id": 2201,
"languageTag": "lv-LV",
"preferredLayout": "qwerty"
}
]
}

View File

@@ -0,0 +1,46 @@
{
"type": "characters",
"name": "bulgarian_bds",
"authors": [ "iorvethe" ],
"direction": "ltr",
"arrangement": [
[
{ "code": 1099, "label": "ы" },
{ "code": 1091, "label": "у" },
{ "code": 1077, "label": "е" },
{ "code": 1080, "label": "и" },
{ "code": 1096, "label": "ш" },
{ "code": 1097, "label": "щ" },
{ "code": 1082, "label": "к" },
{ "code": 1089, "label": "с" },
{ "code": 1076, "label": "д" },
{ "code": 1079, "label": "з" },
{ "code": 1094, "label": "ц" }
],
[
{ "code": 1100, "label": "ь" },
{ "code": 1103, "label": "я" },
{ "code": 1072, "label": "а" },
{ "code": 1086, "label": "о" },
{ "code": 1078, "label": "ж" },
{ "code": 1075, "label": "г" },
{ "code": 1090, "label": "т" },
{ "code": 1085, "label": "н" },
{ "code": 1074, "label": "в" },
{ "code": 1084, "label": "м" },
{ "code": 1095, "label": "ч" }
],
[
{ "code": 1102, "label": "ю" },
{ "code": 1081, "label": "й" },
{ "code": 1098, "label": "ъ" },
{ "code": 1101, "label": "э" },
{ "code": 1092, "label": "ф" },
{ "code": 1093, "label": "х" },
{ "code": 1087, "label": "п" },
{ "code": 1088, "label": "р" },
{ "code": 1083, "label": "л" },
{ "code": 1073, "label": "б" }
]
]
}

View File

@@ -0,0 +1,44 @@
{
"type": "characters",
"name": "bulgarian_phonetic",
"authors": [ "iorvethe" ],
"direction": "ltr",
"arrangement": [
[
{ "code": 1103, "label": "я" },
{ "code": 1074, "label": "в" },
{ "code": 1077, "label": "е" },
{ "code": 1088, "label": "р" },
{ "code": 1090, "label": "т" },
{ "code": 1098, "label": "ъ" },
{ "code": 1091, "label": "у" },
{ "code": 1080, "label": "и" },
{ "code": 1086, "label": "о" },
{ "code": 1087, "label": "п" },
{ "code": 1095, "label": "ч" }
],
[
{ "code": 1072, "label": "а" },
{ "code": 1089, "label": "с" },
{ "code": 1076, "label": "д" },
{ "code": 1092, "label": "ф" },
{ "code": 1075, "label": "г" },
{ "code": 1093, "label": "х" },
{ "code": 1081, "label": "й" },
{ "code": 1082, "label": "к" },
{ "code": 1083, "label": "л" },
{ "code": 1096, "label": "ш" },
{ "code": 1097, "label": "щ" }
],
[
{ "code": 1079, "label": "з" },
{ "code": 1100, "label": "ь" },
{ "code": 1094, "label": "ц" },
{ "code": 1078, "label": "ж" },
{ "code": 1073, "label": "б" },
{ "code": 1085, "label": "н" },
{ "code": 1084, "label": "м" },
{ "code": 1102, "label": "ю" }
]
]
}

View File

@@ -5,18 +5,19 @@
"mapping": {
"all": {
"~enter": {
"main": { "code": -215, "label": "toggle_one_handed_mode", "type": "system_gui" },
"main": { "code": -213, "label": "switch_to_media_context", "type": "system_gui" },
"relevant": [
{ "code": -213, "label": "switch_to_media_context", "type": "system_gui" }
{ "code": -216, "label": "toggle_one_handed_mode_right", "type": "system_gui" }
]
},
"~left": {
"main": { "code": -213, "label": "switch_to_media_context", "type": "system_gui" },
"relevant": [
{ "code": -215, "label": "toggle_one_handed_mode", "type": "system_gui" },
{ "code": -215, "label": "toggle_one_handed_mode_left", "type": "system_gui" },
{ "code": -100, "label": "settings", "type": "system_gui" }
]
}
}
}
}

View File

@@ -0,0 +1,45 @@
{
"type": "characters/extended_popups",
"name": "bg",
"authors": [ "iorvethe" ],
"mapping": {
"all": {
"и": {
"relevant": [
{ "code": 1117, "label": "ѝ" }
]
},
"~right": {
"main": { "code": 44, "label": "," },
"relevant": [
{ "code": 38, "label": "&" },
{ "code": 37, "label": "%" },
{ "code": 43, "label": "+" },
{ "code": 34, "label": "\"" },
{ "code": 45, "label": "-" },
{ "code": 58, "label": ":" },
{ "code": 39, "label": "'" },
{ "code": 64, "label": "@" },
{ "code": 59, "label": ";" },
{ "code": 47, "label": "/" },
{ "code": 40, "label": "(" },
{ "code": 41, "label": ")" },
{ "code": 35, "label": "#" },
{ "code": 33, "label": "!" },
{ "code": 63, "label": "?" }
]
}
},
"uri": {
"~right": {
"main": { "code": -255, "label": ".com" },
"relevant": [
{ "code": -255, "label": ".bg" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" }
]
}
}
}
}

View File

@@ -0,0 +1,167 @@
{
"type": "characters/extended_popups",
"name": "ckb",
"authors": [ "GoRaN" ],
"mapping": {
"all": {
"ق": {
"relevant": [
{ "code": 1647, "label": "ٯ" }
]
},
"ئ": {
"relevant": [
{"code": 1569, "label": "ء" }
]
},
"ە": {
"relevant": [
{ "code": 1577, "label": "ة" },
{ "code": 1729, "label": "ـہ" }
]
},
"ر": {
"relevant": [
{ "code": 1685, "label": "ڕ" },
{ "code": 1682, "label": "ڒ" }
]
},
"ف": {
"relevant": [
{ "code": 1701, "label": "ڥ" },
{ "code": 1698, "label": "ڢ" },
{ "code": 1700, "label": "ڤ" },
{ "code": 1697, "label": "ڡ" }
]
},
"": {
"relevant": [
{ "code": 65163, "label": "ﺋ" },
{ "code": 1569, "label": "ء" },
{ "code": 65139, "label": "ﹳ" }
]
},
"ع": {
"relevant": [
{ "code": 1551, "label": "؏" },
{ "code": 1594, "label": "غ" }
]
},
"د": {
"relevant": [
{ "code": 1676, "label": "ڌ" },
{ "code": 64390, "label": "ﮆ" },
{ "code": 1584, "label": "ذ" },
{ "code": 1774, "label": "ۮ" }
]
},
"ه": {
"relevant": [
{ "code": 1726, "label": "ھ" }
]
},
"خ": {
"relevant": [
{ "code": 1567, "label": "؟" }
]
},
"س": {
"relevant": [
{ "code": 1589, "label": "ص" }
]
},
"ش": {
"relevant": [
{ "code": 1590, "label": "ض" }
]
},
"ب": {
"relevant": [
{ "code": 65010, "label": "ﷲ" },
{ "code": 65021, "label": "﷽" },
{ "code": 65019, "label": "ﷻ" }
]
},
"م": {
"relevant": [
{ "code": 65018, "label": "ﷺ" },
{ "code": 65012, "label": "ﷴ" }
]
},
"ل": {
"relevant": [
{ "code": 1718, "label": "ڶ" },
{ "code": 1719, "label": "ڷ" },
{ "code": 1717, "label": "ڵ" },
{ "code": 1720, "label": "ڸ" }
]
},
"ا": {
"relevant": [
{ "code": 1571, "label": "أ" },
{ "code": 1573, "label": "إ" },
{ "code": 1570, "label": "آ" },
{ "code": 1649, "label": "ٱ" }
]
},
"ک": {
"relevant": [
{ "code": 1706, "label": "ڪ" },
{ "code": 1603, "label": "ك"}
]
},
"ی": {
"relevant": [
{ "code": 1746, "label": "ے" },
{ "code": 1610, "label": "ي" },
{ "code": 1744, "label": "ې" },
{ "code": 1741, "label": "ۍ" },
{ "code": 1742, "label": "ێ" },
{ "code": 1597, "label": "ؽ" }
]
},
"ۆ": {
"relevant": [
{ "code": 1743, "label": "ۏ" },
{ "code": 1735, "label": "ۇ" },
{ "code": 1737, "label": "ۉ" },
{ "code": 1738, "label": "ۊ" },
{ "code": 1572, "label": "ؤ" },
{ "code": 1739, "label": "ۋ" }
]
},
"~right": {
"main": { "code": 1567, "label": "؟" },
"relevant": [
{ "code": 1600, "label": "ــ" },
{ "code": 33, "label": "!" },
{ "code": 1548, "label": "،" },
{ "code": 44, "label": "," },
{ "code": 1549, "label": "؍" },
{ "code": 1563, "label": "؛" },
{ "code": 59, "label": ";" },
{ "code": 58, "label": ":" },
{ "code": 64, "label": "@" },
{ "code": 35, "label": "#" },
{ "code": 42, "label": "*" },
{ "code": 95, "label": "_" },
{ "code": 45, "label": "-" }
]
}
},
"uri": {
"~right": {
"main": { "code": -255, "label": ".krd"},
"relevant": [
{ "code": -255, "label": ".gov" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".com" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" },
{ "code": -255, "label": ".iq" },
{ "code": -255, "label": ".tv" }
]
}
}
}
}

View File

@@ -26,23 +26,23 @@
]
},
"e": {
"main": { "code": 233, "label": "é" },
"relevant": [
{ "code": 275, "label": "ē" },
{ "code": 281, "label": "ę" },
{ "code": 279, "label": "ė" },
{ "code": 235, "label": "ë" },
{ "code": 233, "label": "é" },
{ "code": 232, "label": "è" },
{ "code": 234, "label": "ê" }
]
},
"i": {
"main": { "code": 237, "label": "í" },
"relevant": [
{ "code": 299, "label": "ī" },
{ "code": 238, "label": "î" },
{ "code": 303, "label": "į" },
{ "code": 236, "label": "ì" },
{ "code": 237, "label": "í" },
{ "code": 239, "label": "ï" }
]
},
@@ -71,8 +71,8 @@
]
},
"u": {
"main": { "code": 250, "label": "ú" },
"relevant": [
{ "code": 250, "label": "ú" },
{ "code": 363, "label": "ū" },
{ "code": 249, "label": "ù" },
{ "code": 252, "label": "ü" },
@@ -104,9 +104,9 @@
"~right": {
"main": { "code": -255, "label": ".com" },
"relevant": [
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".com.es" },
{ "code": -255, "label": ".es" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" }
]
}

View File

@@ -5,8 +5,8 @@
"mapping": {
"all": {
"a": {
"main": { "code": 224, "label": "à" },
"relevant": [
{ "code": 224, "label": "à" },
{ "code": 227, "label": "ã" },
{ "code": 229, "label": "å" },
{ "code": 257, "label": "ā" },
@@ -18,8 +18,8 @@
]
},
"e": {
"main": { "code": 232, "label": "è" },
"relevant": [
{ "code": 232, "label": "è" },
{ "code": 275, "label": "ē" },
{ "code": 281, "label": "ę" },
{ "code": 279, "label": "ė" },
@@ -29,8 +29,8 @@
]
},
"i": {
"main": { "code": 236, "label": "ì" },
"relevant": [
{ "code": 236, "label": "ì" },
{ "code": 299, "label": "ī" },
{ "code": 239, "label": "ï" },
{ "code": 303, "label": "į" },
@@ -45,8 +45,8 @@
]
},
"o": {
"main": { "code": 242, "label": "ò" },
"relevant": [
{ "code": 242, "label": "ò" },
{ "code": 186, "label": "º" },
{ "code": 333, "label": "ō" },
{ "code": 339, "label": "œ" },
@@ -58,8 +58,8 @@
]
},
"u": {
"main": { "code": 249, "label": "ù" },
"relevant": [
{ "code": 249, "label": "ù" },
{ "code": 363, "label": "ū" },
{ "code": 251, "label": "û" },
{ "code": 250, "label": "ú" },
@@ -91,10 +91,10 @@
"~right": {
"main": { "code": -255, "label": ".com" },
"relevant": [
{ "code": -255, "label": ".gov" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".it" },
{ "code": -255, "label": ".gov.it" },
{ "code": -255, "label": ".edu.it" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".it" },
{ "code": -255, "label": ".net" }
]
}

View File

@@ -0,0 +1,42 @@
{
"type": "characters/extended_popups",
"name": "iw",
"authors": [ "Antony" ],
"mapping": {
"all": {
"~right": {
"main": { "code": 44, "label": "," },
"relevant": [
{ "code": 38, "label": "&" },
{ "code": 37, "label": "%" },
{ "code": 43, "label": "+" },
{ "code": 34, "label": "\"" },
{ "code": 45, "label": "-" },
{ "code": 58, "label": ":" },
{ "code": 39, "label": "'" },
{ "code": 64, "label": "@" },
{ "code": 59, "label": ";" },
{ "code": 47, "label": "/" },
{ "code": 40, "label": "(" },
{ "code": 41, "label": ")" },
{ "code": 35, "label": "#" },
{ "code": 33, "label": "!" },
{ "code": 63, "label": "?" }
]
}
},
"uri": {
"~right": {
"main": { "code": -255, "label": ".com" },
"relevant": [
{ "code": -255, "label": ".gov" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" },
{ "code": -255, "label": ".co.il" },
{ "code": -255, "label": ".gov.il" }
]
}
}
}
}

View File

@@ -0,0 +1,112 @@
{
"type": "characters/extended_popups",
"name": "lv",
"authors": [ "patrickgold", "eandersons" ],
"mapping": {
"all": {
"a": {
"relevant": [
{ "code": 257, "label": "ā" }
]
},
"c": {
"relevant": [
{ "code": 269, "label": "č" }
]
},
"e": {
"relevant": [
{ "code": 275, "label": "ē" },
{ "code": 8364, "label": "€" }
]
},
"g": {
"relevant": [
{ "code": 291, "label": "ģ" }
]
},
"i": {
"relevant": [
{ "code": 299, "label": "ī" }
]
},
"k": {
"relevant": [
{ "code": 311, "label": "ķ" }
]
},
"l": {
"relevant": [
{ "code": 316, "label": "ļ" }
]
},
"n": {
"relevant": [
{ "code": 326, "label": "ņ" }
]
},
"o": {
"relevant": [
{ "code": 333, "label": "ō" }
]
},
"r": {
"relevant": [
{ "code": 343, "label": "ŗ" }
]
},
"s": {
"relevant": [
{ "code": 353, "label": "š" }
]
},
"u": {
"relevant": [
{ "code": 363, "label": "ū" }
]
},
"z": {
"relevant": [
{ "code": 382, "label": "ž" }
]
},
"~right": {
"main": { "code": 44, "label": "," },
"relevant": [
{ "code": 38, "label": "&" },
{ "code": 37, "label": "%" },
{ "code": 43, "label": "+" },
{ "code": 34, "label": "\"" },
{ "code": 45, "label": "-" },
{ "code": 8212, "label": "—" },
{ "code": 58, "label": ":" },
{ "code": 39, "label": "'" },
{ "code": 64, "label": "@" },
{ "code": 59, "label": ";" },
{ "code": 47, "label": "/" },
{ "code": 40, "label": "(" },
{ "code": 41, "label": ")" },
{ "code": 35, "label": "#" },
{ "code": 33, "label": "!" },
{ "code": 63, "label": "?" }
]
}
},
"uri": {
"~right": {
"main": { "code": -255, "label": ".lv" },
"relevant": [
{ "code": -255, "label": ".eu" },
{ "code": -255, "label": ".com" },
{ "code": -255, "label": ".gov.lv" },
{ "code": -255, "label": ".edu.lv" },
{ "code": -255, "label": ".org.lv" },
{ "code": -255, "label": ".gov" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" }
]
}
}
}
}

View File

@@ -0,0 +1,61 @@
{
"type": "characters/extended_popups",
"name": "sr",
"authors": [ "hedidnothingwrong", "GrbavaCigla" ],
"mapping": {
"all": {
"c": {
"relevant": [
{ "code": 269, "label": "č" },
{ "code": 263, "label": "ć" }
]
},
"d": {
"relevant": [
{ "code": 273, "label": "đ" }
]
},
"s": {
"relevant": [
{ "code": 353, "label": "š" }
]
},
"z": {
"relevant": [
{ "code": 382, "label": "ž" }
]
},
"~right": {
"main": { "code": 44, "label": "," },
"relevant": [
{ "code": 38, "label": "&" },
{ "code": 37, "label": "%" },
{ "code": 43, "label": "+" },
{ "code": 34, "label": "\"" },
{ "code": 45, "label": "-" },
{ "code": 58, "label": ":" },
{ "code": 39, "label": "'" },
{ "code": 64, "label": "@" },
{ "code": 59, "label": ";" },
{ "code": 47, "label": "/" },
{ "code": 40, "label": "(" },
{ "code": 41, "label": ")" },
{ "code": 35, "label": "#" },
{ "code": 33, "label": "!" },
{ "code": 63, "label": "?" }
]
}
},
"uri": {
"~right": {
"main": { "code": -255, "label": ".com" },
"relevant": [
{ "code": -255, "label": ".eu" },
{ "code": -255, "label": ".rs" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" }
]
}
}
}
}

View File

@@ -0,0 +1,78 @@
{
"type": "characters/extended_popups",
"name": "tr",
"authors": [ "kisekinopureya" ],
"mapping": {
"all": {
"a": {
"relevant": [
{ "code": 226, "label": "â" }
]
},
"c": {
"relevant": [
{ "code": 231, "label": "ç" }
]
},
"g": {
"relevant": [
{ "code": 287, "label": "ğ" }
]
},
"i": {
"relevant": [
{ "code": 238, "label": "î" },
{ "code": 305, "label": "ı" }
]
},
"o": {
"relevant": [
{ "code": 246, "label": "ö" }
]
},
"s": {
"relevant": [
{ "code": 351, "label": "ş" }
]
},
"u": {
"relevant": [
{ "code": 252, "label": "ü" },
{ "code": 251, "label": "û" }
]
},
"~right": {
"main": { "code": 44, "label": "," },
"relevant": [
{ "code": 38, "label": "&" },
{ "code": 37, "label": "%" },
{ "code": 43, "label": "+" },
{ "code": 34, "label": "\"" },
{ "code": 45, "label": "-" },
{ "code": 58, "label": ":" },
{ "code": 39, "label": "'" },
{ "code": 64, "label": "@" },
{ "code": 59, "label": ";" },
{ "code": 47, "label": "/" },
{ "code": 40, "label": "(" },
{ "code": 41, "label": ")" },
{ "code": 35, "label": "#" },
{ "code": 33, "label": "!" },
{ "code": 63, "label": "?" }
]
}
},
"uri": {
"~right": {
"main": { "code": -255, "label": ".com" },
"relevant": [
{ "code": -255, "label": ".gov" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".tr" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".net" }
]
}
}
}
}

View File

@@ -0,0 +1,53 @@
{
"type": "characters",
"name": "hebrew",
"authors": [ "Antony" ],
"direction": "rtl",
"modifier": "hebrew",
"arrangement": [
[
{ "code": 39, "label": "'", "popup": {
"relevant": [
{ "code": 34, "label": "\"" },
{ "code": 96, "label": "`" }
]
} },
{ "code": 45, "label": "-", "popup": {
"relevant": [
{ "code": 95, "label": "_" }
]
} },
{ "code": 1511, "label": "ק" },
{ "code": 1512, "label": "ר" },
{ "code": 1488, "label": "א" },
{ "code": 1496, "label": "ט" },
{ "code": 1493, "label": "ו" },
{ "code": 1503, "label": "ן" },
{ "code": 1501, "label": "ם" },
{ "code": 1508, "label": "פ" }
],
[
{ "code": 1513, "label": "ף" },
{ "code": 1491, "label": "ך" },
{ "code": 1490, "label": "ל" },
{ "code": 1499, "label": "ח" },
{ "code": 1506, "label": "י" },
{ "code": 1497, "label": "ע" },
{ "code": 1495, "label": "כ" },
{ "code": 1500, "label": "ג" },
{ "code": 1498, "label": "ד" },
{ "code": 1507, "label": "ש" }
],
[
{ "code": 1494, "label": "ץ" },
{ "code": 1505, "label": "ת" },
{ "code": 1489, "label": "צ" },
{ "code": 1492, "label": "מ" },
{ "code": 1504, "label": "נ" },
{ "code": 1502, "label": "ה" },
{ "code": 1510, "label": "ב" },
{ "code": 1514, "label": "ס" },
{ "code": 1509, "label": "ז" }
]
]
}

View File

@@ -0,0 +1,57 @@
{
"type": "characters",
"name": "kurdish",
"authors": [ "GoRaN" ],
"direction": "rtl",
"modifier": "kurdish",
"arrangement": [
[
{ "code": 1602, "label": "ق", "popup": {
"main": { "code": 1647, "label": "ٯ" }
} },
{ "code": 1608, "label": "و", "popup": {
"main": { "code": -255, "label": "وو" }
} },
{ "code": 1749, "label": "", "popup": {
"main": { "code": 1577, "label": "ة" }
} },
{ "code": 1585, "label": "ر" },
{ "code": 1578, "label": "ت", "popup": {
"main": { "code": 1591, "label": "ط" }
} },
{ "code": 1740, "label": "ی" },
{ "code": 1574, "label": "ﺋ", "popup": {
"main": { "code": 1569, "label": "ء" }
} },
{ "code": 1593, "label": "ع" },
{ "code": 1734, "label": "ۆ" },
{ "code": 1662, "label": "پ", "popup": {
"main": { "code": 1579, "label": "ث" }
} }
],
[
{ "code": 1575, "label": "ا" },
{ "code": 1587, "label": "س" },
{ "code": 1588, "label": "ش" },
{ "code": 1583, "label": "د" },
{ "code": 1601, "label": "ف" },
{ "code": 1607, "label": "ھ" },
{ "code": 1688, "label": "ژ" },
{ "code": 1604, "label": "ل" },
{ "code": 1705, "label": "ک" },
{ "code": 1711, "label": "گ" }
],
[
{ "code": 1586, "label": "ز", "popup": {
"main": {"code": 1592, "label": "ظ" }
} },
{ "code": 1582, "label": "خ" },
{ "code": 1580, "label": "ج" },
{ "code": 1670, "label": "چ" },
{ "code": 1581, "label": "ح" },
{ "code": 1576, "label": "ب" },
{ "code": 1606, "label": "ن" },
{ "code": 1605, "label": "م" }
]
]
}

View File

@@ -0,0 +1,27 @@
{
"type": "characters/mod",
"name": "hebrew",
"authors": [ "Antony" ],
"direction": "rtl",
"arrangement": [
[
{ "code": 0, "type": "placeholder" },
{ "code": -5, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "code": 64, "label": "@", "groupId": 1, "variation": "email_address" },
{ "code": 44, "label": ",", "groupId": 1, "variation": "normal" },
{ "code": 44, "label": ",", "groupId": 1, "variation": "password" },
{ "code": 47, "label": "/", "groupId": 1, "variation": "uri" },
{ "code": -210, "label": "language_switch", "type": "system_gui" },
{ "code": -213, "label": "switch_to_media_context", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "email_address" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "normal" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "password" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "uri" },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]
}

View File

@@ -0,0 +1,27 @@
{
"type": "characters/mod",
"name": "kurdish",
"authors": [ "GoRaN" ],
"direction": "rtl",
"arrangement": [
[
{ "code": 0, "type": "placeholder" },
{ "code": -5, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "code": 64, "label": "@", "groupId": 1, "variation": "email_address" },
{ "code": 1567, "label": "؟", "groupId": 1, "variation": "normal" },
{ "code": 1548, "label": "،", "groupId": 1, "variation": "password" },
{ "code": 47, "label": "/", "groupId": 1, "variation": "uri" },
{ "code": -210, "label": "language_switch", "type": "system_gui" },
{ "code": -213, "label": "switch_to_media_context", "type": "system_gui" },
{ "code": 32, "label": " " },
{ "code": 46, "label": ".", "groupId": 2, "variation": "email_address" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "normal" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "password" },
{ "code": 46, "label": ".", "groupId": 2, "variation": "uri" },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]
}

View File

@@ -0,0 +1,44 @@
{
"type": "characters",
"name": "serbian_cyrillic",
"authors": ["GrbavaCigla"],
"direction": "ltr",
"arrangement": [
[
{ "code": 1113, "label": "љ" },
{ "code": 1114, "label": "њ" },
{ "code": 1077, "label": "е" },
{ "code": 1088, "label": "р" },
{ "code": 1090, "label": "т" },
{ "code": 1079, "label": "з" },
{ "code": 1091, "label": "у" },
{ "code": 1080, "label": "и" },
{ "code": 1086, "label": "о" },
{ "code": 1087, "label": "п" },
{ "code": 1096, "label": "ш" }
],
[
{ "code": 1072, "label": "а" },
{ "code": 1089, "label": "с" },
{ "code": 1076, "label": "д" },
{ "code": 1092, "label": "ф" },
{ "code": 1075, "label": "г" },
{ "code": 1093, "label": "х" },
{ "code": 1112, "label": "ј" },
{ "code": 1082, "label": "к" },
{ "code": 1083, "label": "л" },
{ "code": 1095, "label": "ч" },
{ "code": 1115, "label": "ћ" }
],
[
{ "code": 1119, "label": "џ" },
{ "code": 1094, "label": "ц" },
{ "code": 1074, "label": "в" },
{ "code": 1073, "label": "б" },
{ "code": 1085, "label": "н" },
{ "code": 1084, "label": "м" },
{ "code": 1106, "label": "ђ" },
{ "code": 1078, "label": "ж" }
]
]
}

View File

@@ -0,0 +1,45 @@
{
"type": "characters",
"name": "serbian_latin",
"authors": ["GrbavaCigla"],
"direction": "ltr",
"arrangement": [
[
{ "code": 113, "label": "q" },
{ "code": 119, "label": "w" },
{ "code": 101, "label": "e" },
{ "code": 114, "label": "r" },
{ "code": 116, "label": "t" },
{ "code": 122, "label": "z" },
{ "code": 117, "label": "u" },
{ "code": 105, "label": "i" },
{ "code": 111, "label": "o" },
{ "code": 112, "label": "p" },
{ "code": 353, "label": "š" }
],
[
{ "code": 97, "label": "a" },
{ "code": 115, "label": "s" },
{ "code": 100, "label": "d" },
{ "code": 102, "label": "f" },
{ "code": 103, "label": "g" },
{ "code": 104, "label": "h" },
{ "code": 106, "label": "j" },
{ "code": 107, "label": "k" },
{ "code": 108, "label": "l" },
{ "code": 269, "label": "č" },
{ "code": 263, "label": "ć" }
],
[
{ "code": 121, "label": "y" },
{ "code": 120, "label": "x" },
{ "code": 99, "label": "c" },
{ "code": 118, "label": "v" },
{ "code": 98, "label": "b" },
{ "code": 110, "label": "n" },
{ "code": 109, "label": "m" },
{ "code": 273, "label": "đ" },
{ "code": 382, "label": "ž" }
]
]
}

View File

@@ -11,10 +11,24 @@
],
[
{ "code": -201, "label": "view_characters", "type": "system_gui" },
{ "code": 60, "label": "<" },
{ "code": 60, "label": "<", "popup": {
"relevant": [
{ "code": 171, "label": "«" },
{ "code": 8804, "label": "≤" },
{ "code": 8249, "label": "" },
{ "code":10216, "label": "⟨" }
]
} },
{ "code": -205, "label": "view_numeric_advanced", "type": "system_gui" },
{ "code": 32, "label": "space" },
{ "code": 62, "label": ">" },
{ "code": 62, "label": ">", "popup": {
"relevant": [
{ "code":10217, "label": "⟩" },
{ "code": 8250, "label": "" },
{ "code": 8805, "label": "≥" },
{ "code": 187, "label": "»" }
]
} },
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
]
]

View File

@@ -21,6 +21,9 @@
{ "code": 960, "label": "π", "popup": {
"main": { "code": 928, "label": "Π" },
"relevant": [
{ "code": 969, "label": "ω" },
{ "code": 945, "label": "α" },
{ "code": 946, "label": "β" },
{ "code": 937, "label": "Ω" },
{ "code": 956, "label": "μ" }
]

View File

@@ -0,0 +1,73 @@
{
"$type": "dev.patrickgold.florisboard.ime.theme.Theme",
"name": "floris_black",
"label": "Floris Black",
"authors": [ "serebit" ],
"isNightTheme": true,
"attributes": {
"window": {
"colorPrimary": "#388E3C",
"colorPrimaryDark": "#306D32",
"colorAccent": "#FF9800",
"navigationBarColor": "@keyboard/background",
"navigationBarLight": "false",
"semiTransparentColor": "#20FFFFFF",
"textColor": "#EEEEEE"
},
"keyboard": {
"background": "#000000"
},
"key": {
"background": "#212121",
"backgroundPressed": "#3D3D3D",
"foreground": "@window/textColor",
"foregroundPressed": "@window/textColor",
"showBorder": "true"
},
"key:enter": {
"background": "@window/colorPrimary",
"backgroundPressed": "@window/colorPrimaryDark",
"foreground": "@window/textColor",
"foregroundPressed": "@window/textColor"
},
"key:shift:capslock": {
"foreground": "@window/colorAccent",
"foregroundPressed": "@window/colorAccent"
},
"media": {
"foreground": "@window/textColor",
"foregroundAlt": "#BDBDBD"
},
"oneHanded": {
"background": "#000000",
"foreground": "@window/textColor"
},
"popup": {
"background": "#424242",
"backgroundActive": "#707070",
"foreground": "@window/textColor"
},
"privateMode": {
"background": "#7800BF",
"foreground": "@window/textColor"
},
"smartbar": {
"background": "transparent",
"foreground": "@window/textColor",
"foregroundAlt": "#73FFFFFF"
},
"smartbarButton": {
"background": "@key/background",
"foreground": "@key/foreground"
},
"extractEditLayout": {
"background": "#282828",
"foreground": "@window/textColor",
"foregroundAlt": "#73FFFFFF"
},
"extractActionButton": {
"background": "@smartbarButton/background",
"foreground": "@smartbarButton/foreground"
}
}
}

View File

@@ -0,0 +1,76 @@
{
"$type": "dev.patrickgold.florisboard.ime.theme.Theme",
"name": "floris_black_borderless",
"label": "Floris Black Borderless",
"authors": [ "serebit" ],
"isNightTheme": true,
"attributes": {
"window": {
"colorPrimary": "#388E3C",
"colorPrimaryDark": "#306D32",
"colorAccent": "#FF9800",
"navigationBarColor": "@keyboard/background",
"navigationBarLight": "false",
"semiTransparentColor": "#20FFFFFF",
"textColor": "#EEEEEE"
},
"keyboard": {
"background": "#000000"
},
"key": {
"background": "transparent",
"backgroundPressed": "#7F616161",
"foreground": "@window/textColor",
"foregroundPressed": "@window/textColor",
"showBorder": "false"
},
"key:enter": {
"background": "@window/colorPrimary",
"backgroundPressed": "@window/colorPrimaryDark",
"foreground": "@window/textColor",
"foregroundPressed": "@window/textColor"
},
"key:shift:capslock": {
"foreground": "@window/colorAccent",
"foregroundPressed": "@window/colorAccent"
},
"key:space": {
"background": "#46616161"
},
"media": {
"foreground": "@window/textColor",
"foregroundAlt": "#BDBDBD"
},
"oneHanded": {
"background": "#000000",
"foreground": "@window/textColor"
},
"popup": {
"background": "#363636",
"backgroundActive": "#5F5F5F",
"foreground": "@window/textColor"
},
"privateMode": {
"background": "#7800BF",
"foreground": "@window/textColor"
},
"smartbar": {
"background": "transparent",
"foreground": "@window/textColor",
"foregroundAlt": "#73FFFFFF"
},
"smartbarButton": {
"background": "#212121",
"foreground": "@window/textColor"
},
"extractEditLayout": {
"background": "#282828",
"foreground": "@window/textColor",
"foregroundAlt": "#73FFFFFF"
},
"extractActionButton": {
"background": "@smartbarButton/background",
"foreground": "@smartbarButton/foreground"
}
}
}

View File

@@ -59,6 +59,15 @@
"smartbarButton": {
"background": "@key/background",
"foreground": "@key/foreground"
},
"extractEditLayout": {
"background": "#E8E8E8",
"foreground": "@window/textColor",
"foregroundAlt": "#8A8A8A"
},
"extractActionButton": {
"background": "@smartbarButton/background",
"foreground": "@smartbarButton/foreground"
}
}
}

View File

@@ -63,6 +63,15 @@
"smartbarButton": {
"background": "#FFFFFF",
"foreground": "@window/textColor"
},
"extractEditLayout": {
"background": "#E8E8E8",
"foreground": "@window/textColor",
"foregroundAlt": "#8A8A8A"
},
"extractActionButton": {
"background": "@smartbarButton/background",
"foreground": "@smartbarButton/foreground"
}
}
}

View File

@@ -59,6 +59,15 @@
"smartbarButton": {
"background": "@key/background",
"foreground": "@key/foreground"
},
"extractEditLayout": {
"background": "#282828",
"foreground": "@window/textColor",
"foregroundAlt": "#73FFFFFF"
},
"extractActionButton": {
"background": "@smartbarButton/background",
"foreground": "@smartbarButton/foreground"
}
}
}

View File

@@ -63,6 +63,15 @@
"smartbarButton": {
"background": "#424242",
"foreground": "@window/textColor"
},
"extractEditLayout": {
"background": "#282828",
"foreground": "@window/textColor",
"foregroundAlt": "#73FFFFFF"
},
"extractActionButton": {
"background": "@smartbarButton/background",
"foreground": "@smartbarButton/foreground"
}
}
}

View File

@@ -0,0 +1,64 @@
{
"$type": "dev.patrickgold.florisboard.ime.theme.Theme",
"name": "gboard_day",
"label": "Gboard Day",
"authors": [ "patrickgold", "itskareem" ],
"isNightTheme": false,
"attributes": {
"window": {
"colorPrimary": "#0479ed",
"colorPrimaryDark": "#0467c9",
"colorAccent": "#FF9800",
"navigationBarColor": "@keyboard/background",
"navigationBarLight": "true",
"semiTransparentColor": "#20000000",
"textColor": "#000000"
},
"keyboard": {
"background": "#D1D6DC"
},
"key": {
"background": "#FCFFFF",
"backgroundPressed": "#F5F5F5",
"foreground": "@window/textColor",
"foregroundPressed": "@window/textColor",
"showBorder": "true"
},
"key:enter": {
"background": "@window/colorPrimary",
"backgroundPressed": "@window/colorPrimaryDark",
"foreground": "#FFFFFF",
"foregroundPressed": "#FFFFFF"
},
"key:shift:capslock": {
"foreground": "@window/colorAccent",
"foregroundPressed": "@window/colorAccent"
},
"media": {
"foreground": "@window/textColor",
"foregroundAlt": "#757575"
},
"oneHanded": {
"background": "@keyboard/background",
"foreground": "#424242"
},
"popup": {
"background": "#EEEEEE",
"backgroundActive": "#BDBDBD",
"foreground": "@window/textColor"
},
"privateMode": {
"background": "#A000FF",
"foreground": "#FFFFFF"
},
"smartbar": {
"background": "@keyboard/background",
"foreground": "@window/textColor",
"foregroundAlt": "#8A8A8A"
},
"smartbarButton": {
"background": "@key/background",
"foreground": "@key/foreground"
}
}
}

View File

@@ -23,32 +23,37 @@ import android.content.Intent
import android.content.res.ColorStateList
import android.content.res.Configuration
import android.graphics.Color
import android.inputmethodservice.ExtractEditText
import android.inputmethodservice.InputMethodService
import android.media.AudioManager
import android.os.*
import android.provider.Settings
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import android.view.*
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.FrameLayout
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat
import com.squareup.moshi.Json
import dev.patrickgold.florisboard.BuildConfig
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.media.MediaInputManager
import dev.patrickgold.florisboard.ime.popup.PopupLayerView
import dev.patrickgold.florisboard.ime.text.TextInputManager
import dev.patrickgold.florisboard.ime.landscapeinput.LandscapeInputUiMode
import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.key.KeyCode
import dev.patrickgold.florisboard.ime.text.key.KeyData
import dev.patrickgold.florisboard.ime.text.keyboard.KeyboardMode
import dev.patrickgold.florisboard.ime.theme.Theme
import dev.patrickgold.florisboard.ime.theme.ThemeManager
import dev.patrickgold.florisboard.settings.SettingsMainActivity
import dev.patrickgold.florisboard.setup.SetupActivity
import dev.patrickgold.florisboard.util.*
import timber.log.Timber
import java.lang.ref.WeakReference
import java.util.concurrent.CopyOnWriteArrayList
/**
* Variable which holds the current [FlorisBoard] instance. To get this instance from another
@@ -67,12 +72,13 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
val context: Context
get() = inputWindowView?.context ?: this
private var extractEditLayout: WeakReference<ViewGroup?> = WeakReference(null)
var inputView: InputView? = null
private set
private var inputWindowView: InputWindowView? = null
var popupLayerView: PopupLayerView? = null
private set
private var inputWindowView: InputWindowView? = null
private var eventListeners: MutableList<WeakReference<EventListener?>?> = mutableListOf()
private var eventListeners: CopyOnWriteArrayList<EventListener> = CopyOnWriteArrayList()
private var audioManager: AudioManager? = null
private var imeManager:InputMethodManager? = null
@@ -154,7 +160,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
override fun onCreate() {
if (BuildConfig.DEBUG) {
/*if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
@@ -171,7 +177,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
.penaltyDeath()
.build()
)
}
}*/
Timber.i("onCreate()")
imeManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
@@ -194,7 +200,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
AppVersionUtils.updateVersionOnInstallAndLastUse(this, prefs)
super.onCreate()
eventListeners.toList().forEach { it?.get()?.onCreate() }
eventListeners.toList().forEach { it?.onCreate() }
}
@SuppressLint("InflateParams")
@@ -204,16 +210,76 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
baseContext.setTheme(currentThemeResId)
inputWindowView = layoutInflater.inflate(R.layout.florisboard, null) as InputWindowView
popupLayerView = inputWindowView?.findViewById(R.id.popup_layer)
eventListeners.toList().forEach { it?.get()?.onCreateInputView() }
eventListeners.toList().forEach { it?.onCreateInputView() }
return inputWindowView
}
/**
* Disable the default candidates view.
*/
override fun onCreateCandidatesView(): View? {
return null
}
@SuppressLint("InflateParams")
override fun onCreateExtractTextView(): View? {
val eel = super.onCreateExtractTextView()
if (eel !is ViewGroup) {
return null
}
extractEditLayout = WeakReference(eel)
eel.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
extractEditLayout.get()?.let { eel ->
eel.viewTreeObserver.removeOnGlobalLayoutListener(this)
eel.layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT
).also {
it.setMargins(0, 0, 0, 0)
}
}
}
})
return eel
}
override fun onEvaluateFullscreenMode(): Boolean {
return resources?.configuration?.let { config ->
if (config.orientation != Configuration.ORIENTATION_LANDSCAPE) {
false
} else {
when (prefs.keyboard.landscapeInputUiMode) {
LandscapeInputUiMode.DYNAMICALLY_SHOW -> !activeEditorInstance.imeOptions.flagNoFullscreen && !activeEditorInstance.imeOptions.flagNoExtractUi
LandscapeInputUiMode.NEVER_SHOW -> false
LandscapeInputUiMode.ALWAYS_SHOW -> true
}
}
} ?: false
}
override fun updateFullscreenMode() {
super.updateFullscreenMode()
updateSoftInputWindowLayoutParameters()
}
override fun onUpdateExtractingVisibility(ei: EditorInfo?) {
isExtractViewShown = !activeEditorInstance.isRawInputEditor && when (prefs.keyboard.landscapeInputUiMode) {
LandscapeInputUiMode.DYNAMICALLY_SHOW -> !activeEditorInstance.imeOptions.flagNoExtractUi
LandscapeInputUiMode.NEVER_SHOW -> false
LandscapeInputUiMode.ALWAYS_SHOW -> true
}
}
fun registerInputView(inputView: InputView) {
Timber.i("registerInputView($inputView)")
window?.window?.findViewById<View>(android.R.id.content)?.let { content ->
popupLayerView = PopupLayerView(content.context)
if (content is ViewGroup) {
content.addView(popupLayerView)
}
}
this.inputView = inputView
initializeOneHandedEnvironment()
updateSoftInputWindowLayoutParameters()
@@ -221,7 +287,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
themeManager.notifyCallbackReceivers()
setActiveInput(R.id.text_input)
eventListeners.toList().forEach { it?.get()?.onRegisterInputView(inputView) }
eventListeners.toList().forEach { it?.onRegisterInputView(inputView) }
}
override fun onDestroy() {
@@ -232,7 +298,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
osHandler.removeCallbacksAndMessages(null)
florisboardInstance = null
eventListeners.toList().forEach { it?.get()?.onDestroy() }
eventListeners.toList().forEach { it?.onDestroy() }
eventListeners.clear()
super.onDestroy()
}
@@ -252,7 +318,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
activeEditorInstance = EditorInstance.from(info, this)
themeManager.updateRemoteColorValues(activeEditorInstance.packageName)
eventListeners.toList().forEach {
it?.get()?.onStartInputView(activeEditorInstance, restarting)
it?.onStartInputView(activeEditorInstance, restarting)
}
}
@@ -264,7 +330,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
super.onFinishInputView(finishingInput)
eventListeners.toList().forEach { it?.get()?.onFinishInputView(finishingInput) }
eventListeners.toList().forEach { it?.onFinishInputView(finishingInput) }
}
override fun onFinishInput() {
@@ -290,14 +356,14 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
setActiveInput(R.id.text_input)
super.onWindowShown()
eventListeners.toList().forEach { it?.get()?.onWindowShown() }
eventListeners.toList().forEach { it?.onWindowShown() }
}
override fun onWindowHidden() {
Timber.i("onWindowHidden()")
super.onWindowHidden()
eventListeners.toList().forEach { it?.get()?.onWindowHidden() }
eventListeners.toList().forEach { it?.onWindowHidden() }
}
override fun onConfigurationChanged(newConfig: Configuration) {
@@ -325,7 +391,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
oldSelStart, oldSelEnd,
newSelStart, newSelEnd
)
eventListeners.toList().forEach { it?.get()?.onUpdateSelection() }
eventListeners.toList().forEach { it?.onUpdateSelection() }
}
override fun onThemeUpdated(theme: Theme) {
@@ -375,7 +441,36 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
inputView?.oneHandedCtrlCloseStart?.imageTintList = it
inputView?.oneHandedCtrlCloseEnd?.imageTintList = it
}
eventListeners.toList().forEach { it?.get()?.onApplyThemeAttributes() }
inputView?.invalidate()
// Update ExtractTextView theme and attributes
extractEditLayout.get()?.let { eel ->
val p = resources.getDimension(R.dimen.landscapeInputUi_padding).toInt()
eel.setPadding(p, p, 0, p)
eel.setBackgroundColor(theme.getAttr(Theme.Attr.EXTRACT_EDIT_LAYOUT_BACKGROUND).toSolidColor().color)
eel.findViewById<ExtractEditText>(android.R.id.inputExtractEditText)?.let { eet ->
val p2 = resources.getDimension(R.dimen.landscapeInputUi_editText_padding).toInt()
eet.setPadding(p2, p2, p2, p2)
eet.background = ContextCompat.getDrawable(this, R.drawable.edit_text_background)?.also { d ->
DrawableCompat.setTint(d, theme.getAttr(Theme.Attr.WINDOW_COLOR_PRIMARY).toSolidColor().color)
}
eet.setTextColor(theme.getAttr(Theme.Attr.EXTRACT_EDIT_LAYOUT_FOREGROUND).toSolidColor().color)
eet.setHintTextColor(theme.getAttr(Theme.Attr.EXTRACT_EDIT_LAYOUT_FOREGROUND_ALT).toSolidColor().color)
eet.highlightColor = theme.getAttr(Theme.Attr.WINDOW_COLOR_PRIMARY).toSolidColor().color
}
eel.findViewWithType(FrameLayout::class)?.let { fra ->
fra.background = null
}
eel.findViewWithType(Button::class)?.let { btn ->
btn.background = ContextCompat.getDrawable(this, R.drawable.shape_rect_rounded)?.also { d ->
DrawableCompat.setTint(d, theme.getAttr(Theme.Attr.EXTRACT_ACTION_BUTTON_BACKGROUND).toSolidColor().color)
}
btn.setTextColor(theme.getAttr(Theme.Attr.EXTRACT_ACTION_BUTTON_FOREGROUND).toSolidColor().color)
}
eel.invalidate()
}
eventListeners.toList().forEach { it?.onApplyThemeAttributes() }
}
override fun onComputeInsets(outInsets: Insets?) {
@@ -393,11 +488,6 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
outInsets?.visibleTopInsets = visibleTopY
}
override fun updateFullscreenMode() {
super.updateFullscreenMode()
updateSoftInputWindowLayoutParameters()
}
/**
* Updates the layout params of the window and input view.
*/
@@ -477,11 +567,11 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
/**
* Hides the IME and launches [SettingsMainActivity].
* Hides the IME and launches [SetupActivity].
*/
fun launchSettings() {
requestHideSelf(0)
val i = Intent(this, SettingsMainActivity::class.java)
val i = Intent(this, SetupActivity::class.java)
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED or
Intent.FLAG_ACTIVITY_CLEAR_TOP
@@ -501,6 +591,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
switchToPreviousInputMethod()
} else {
window.window?.let { window ->
@Suppress("DEPRECATION")
imeManager?.switchToLastInputMethod(window.attributes.token)
}
}
@@ -510,6 +601,22 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
}
fun switchToNextKeyboard(){
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
switchToNextInputMethod(false)
} else {
window.window?.let { window ->
@Suppress("DEPRECATION")
imeManager?.switchToNextInputMethod(window.attributes.token, false)
}
}
} catch (e: Exception) {
Timber.e(e,"Unable to switch to the next IME")
imeManager?.showInputMethodPicker()
}
}
fun switchToPrevSubtype() {
activeSubtype = subtypeManager.switchToPrevSubtype() ?: Subtype.DEFAULT
onSubtypeChanged(activeSubtype)
@@ -561,10 +668,10 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
updateOneHandedPanelVisibility()
}
fun toggleOneHandedMode() {
fun toggleOneHandedMode(isRight: Boolean) {
when (prefs.keyboard.oneHandedMode) {
"off" -> {
prefs.keyboard.oneHandedMode = "end"
prefs.keyboard.oneHandedMode = if (isRight) { "end" } else { "start" }
}
else -> {
prefs.keyboard.oneHandedMode = "off"
@@ -600,7 +707,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
override fun onPrimaryClipChanged() {
eventListeners.toList().forEach { it?.get()?.onPrimaryClipChanged() }
eventListeners.toList().forEach { it?.onPrimaryClipChanged() }
}
/**
@@ -610,7 +717,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
* @return True if the listener has been added successfully, false otherwise.
*/
fun addEventListener(listener: EventListener): Boolean {
return eventListeners.add(WeakReference(listener))
return eventListeners.add(listener)
}
/**
@@ -623,12 +730,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
* value may also indicate that the [listener] was not added previously.
*/
fun removeEventListener(listener: EventListener): Boolean {
eventListeners.toList().forEach {
if (it?.get() == listener) {
return eventListeners.remove(it)
}
}
return false
return eventListeners.remove(listener)
}
interface EventListener {

View File

@@ -20,11 +20,9 @@ import android.content.Context
import android.content.res.Configuration
import android.util.AttributeSet
import android.util.DisplayMetrics
import android.util.Log
import android.widget.ImageButton
import android.widget.LinearLayout
import android.widget.ViewFlipper
import dev.patrickgold.florisboard.BuildConfig
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.text.key.KeyVariation
import dev.patrickgold.florisboard.ime.text.keyboard.KeyboardMode
@@ -135,7 +133,11 @@ class InputView : LinearLayout {
// Add bottom offset for curved screens here. As the desired heights have already been set,
// adding a value to the height now will result in a bottom padding (aka offset).
baseHeight += ViewLayoutUtils.convertDpToPixel(
florisboard.prefs.keyboard.bottomOffset.toFloat(),
if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
florisboard.prefs.keyboard.bottomOffsetLandscape.toFloat()
} else {
florisboard.prefs.keyboard.bottomOffsetPortrait.toFloat()
},
context
)

View File

@@ -21,10 +21,12 @@ import android.content.SharedPreferences
import android.provider.Settings
import androidx.preference.PreferenceManager
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.landscapeinput.LandscapeInputUiMode
import dev.patrickgold.florisboard.ime.text.gestures.DistanceThreshold
import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.gestures.VelocityThreshold
import dev.patrickgold.florisboard.ime.text.key.KeyHintMode
import dev.patrickgold.florisboard.ime.text.key.UtilityKeyAction
import dev.patrickgold.florisboard.ime.theme.ThemeMode
import dev.patrickgold.florisboard.util.TimeUtil
import dev.patrickgold.florisboard.util.VersionName
@@ -307,25 +309,32 @@ class PrefHelper(
*/
class Keyboard(private val prefHelper: PrefHelper) {
companion object {
const val BOTTOM_OFFSET = "keyboard__bottom_offset"
const val BOTTOM_OFFSET_PORTRAIT = "keyboard__bottom_offset_portrait"
const val BOTTOM_OFFSET_LANDSCAPE = "keyboard__bottom_offset_landscape"
const val FONT_SIZE_MULTIPLIER_PORTRAIT = "keyboard__font_size_multiplier_portrait"
const val FONT_SIZE_MULTIPLIER_LANDSCAPE = "keyboard__font_size_multiplier_landscape"
const val HEIGHT_FACTOR = "keyboard__height_factor"
const val HEIGHT_FACTOR_CUSTOM = "keyboard__height_factor_custom"
const val HINTED_NUMBER_ROW_MODE = "keyboard__hinted_number_row_mode"
const val HINTED_SYMBOLS_MODE = "keyboard__hinted_symbols_mode"
const val LANDSCAPE_INPUT_UI_MODE = "keyboard__landscape_input_ui_mode"
const val LONG_PRESS_DELAY = "keyboard__long_press_delay"
const val NUMBER_ROW = "keyboard__number_row"
const val ONE_HANDED_MODE = "keyboard__one_handed_mode"
const val POPUP_ENABLED = "keyboard__popup_enabled"
const val SOUND_ENABLED = "keyboard__sound_enabled"
const val SOUND_VOLUME = "keyboard__sound_volume"
const val UTILITY_KEY_ACTION = "keyboard__utility_key_action"
const val UTILITY_KEY_ENABLED = "keyboard__utility_key_enabled"
const val VIBRATION_ENABLED = "keyboard__vibration_enabled"
const val VIBRATION_STRENGTH = "keyboard__vibration_strength"
}
var bottomOffset: Int = 0
get() = prefHelper.getPref(BOTTOM_OFFSET, 0)
var bottomOffsetPortrait: Int = 0
get() = prefHelper.getPref(BOTTOM_OFFSET_PORTRAIT, 0)
private set
var bottomOffsetLandscape: Int = 0
get() = prefHelper.getPref(BOTTOM_OFFSET_LANDSCAPE, 0)
private set
var fontSizeMultiplierPortrait: Int
get() = prefHelper.getPref(FONT_SIZE_MULTIPLIER_PORTRAIT, 100)
@@ -345,6 +354,9 @@ class PrefHelper(
var hintedSymbolsMode: KeyHintMode
get() = KeyHintMode.fromString(prefHelper.getPref(HINTED_SYMBOLS_MODE, KeyHintMode.ENABLED_ACCENT_PRIORITY.toString()))
set(v) = prefHelper.setPref(HINTED_SYMBOLS_MODE, v)
var landscapeInputUiMode: LandscapeInputUiMode
get() = LandscapeInputUiMode.fromString(prefHelper.getPref(LANDSCAPE_INPUT_UI_MODE, LandscapeInputUiMode.DYNAMICALLY_SHOW.toString()))
set(v) = prefHelper.setPref(LANDSCAPE_INPUT_UI_MODE, v)
var longPressDelay: Int = 0
get() = prefHelper.getPref(LONG_PRESS_DELAY, 300)
private set
@@ -364,6 +376,12 @@ class PrefHelper(
var soundVolume: Int = 0
get() = prefHelper.getPref(SOUND_VOLUME, -1)
private set
var utilityKeyAction: UtilityKeyAction
get() = UtilityKeyAction.fromString(prefHelper.getPref(UTILITY_KEY_ACTION, UtilityKeyAction.DYNAMIC_SWITCH_LANGUAGE_EMOJIS.toString()))
set(v) = prefHelper.setPref(UTILITY_KEY_ACTION, v)
var utilityKeyEnabled: Boolean
get() = prefHelper.getPref(UTILITY_KEY_ENABLED, true)
set(v) = prefHelper.setPref(UTILITY_KEY_ENABLED, v)
var vibrationEnabled: Boolean = false
get() = prefHelper.getPref(VIBRATION_ENABLED, true)
private set

View File

@@ -0,0 +1,31 @@
/*
* Copyright (C) 2020 Patrick Goldinger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dev.patrickgold.florisboard.ime.landscapeinput
import java.util.*
enum class LandscapeInputUiMode {
DYNAMICALLY_SHOW,
NEVER_SHOW,
ALWAYS_SHOW;
companion object {
fun fromString(string: String): LandscapeInputUiMode {
return valueOf(string.toUpperCase(Locale.ENGLISH))
}
}
}

View File

@@ -43,12 +43,11 @@ class MediaInputView : LinearLayout, FlorisBoard.EventListener,
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
florisboard?.addEventListener(this)
}
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
override fun onAttachedToWindow() {
super.onAttachedToWindow()
florisboard?.addEventListener(this)
themeManager.registerOnThemeUpdatedListener(this)
tabLayout = findViewById(R.id.media_input_tabs)
switchToTextInputButton = findViewById(R.id.media_input_switch_to_text_input_button)
@@ -57,8 +56,9 @@ class MediaInputView : LinearLayout, FlorisBoard.EventListener,
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
themeManager.unregisterOnThemeUpdatedListener(this)
florisboard?.removeEventListener(this)
super.onDetachedFromWindow()
}
override fun onThemeUpdated(theme: Theme) {

View File

@@ -16,7 +16,7 @@
package dev.patrickgold.florisboard.ime.media.emoji
import android.annotation.SuppressLint
import java.util.*
/**
* Enum for emoji category.
@@ -38,9 +38,8 @@ enum class EmojiCategory {
}
companion object {
@SuppressLint("DefaultLocale")
fun fromString(string: String): EmojiCategory {
return valueOf(string.replace(" & ", "_").toUpperCase())
return valueOf(string.replace(" & ", "_").toUpperCase(Locale.ENGLISH))
}
}
}

View File

@@ -64,13 +64,16 @@ class EmojiKeyView(
triangleDrawable = ContextCompat.getDrawable(context, R.drawable.triangle_bottom_right)
text = data.getCodePointsAsString()
florisboard?.addEventListener(this)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
onApplyThemeAttributes()
florisboard?.addEventListener(this)
}
override fun onDetachedFromWindow() {
florisboard?.removeEventListener(this)
super.onDetachedFromWindow()
}
/**

View File

@@ -101,11 +101,11 @@ class EmojiKeyboardView : LinearLayout, FlorisBoard.EventListener,
override fun onTabUnselected(tab: TabLayout.Tab?) {}
})
addView(tabLayout)
florisboard?.addEventListener(this)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
florisboard?.addEventListener(this)
themeManager.registerOnThemeUpdatedListener(this)
mainScope.launch {
layouts.await()
@@ -116,8 +116,9 @@ class EmojiKeyboardView : LinearLayout, FlorisBoard.EventListener,
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
themeManager.unregisterOnThemeUpdatedListener(this)
florisboard?.removeEventListener(this)
super.onDetachedFromWindow()
}
/**

View File

@@ -71,6 +71,8 @@ private fun listStringToListInt(list: List<String>): List<Int> {
return ret.toList()
}
private var cachedEmojiLayoutMap: EmojiLayoutDataMap? = null
/**
* Reads the emoji list at the given [path] and returns an parsed [EmojiLayoutDataMap]. If the
* given file path does not exist, an empty [EmojiLayoutDataMap] is returned.
@@ -84,6 +86,7 @@ private fun listStringToListInt(list: List<String>): List<Int> {
fun parseRawEmojiSpecsFile(
context: Context, path: String
): EmojiLayoutDataMap {
cachedEmojiLayoutMap?.let { return it }
val layouts = EmojiLayoutDataMap(EmojiCategory::class.java)
for (category in EmojiCategory.values()) {
layouts[category] = mutableListOf()
@@ -182,5 +185,6 @@ fun parseRawEmojiSpecsFile(
}
}
}
cachedEmojiLayoutMap = layouts
return layouts
}

View File

@@ -35,8 +35,12 @@ import kotlin.math.min
class PopupExtendedView : View, ThemeManager.OnThemeUpdatedListener {
private val themeManager: ThemeManager = ThemeManager.default()
private val activeBackgroundDrawable: PaintDrawable = PaintDrawable()
private var backgroundDrawable: PaintDrawable = PaintDrawable()
private val activeBackgroundDrawable: PaintDrawable = PaintDrawable().apply {
setCornerRadius(ViewLayoutUtils.convertDpToPixel(6.0f, context))
}
private var backgroundDrawable: PaintDrawable = PaintDrawable().apply {
setCornerRadius(ViewLayoutUtils.convertDpToPixel(6.0f, context))
}
private val labelPaint: Paint = Paint().apply {
alpha = 255
color = 0
@@ -80,6 +84,7 @@ class PopupExtendedView : View, ThemeManager.OnThemeUpdatedListener {
init {
visibility = GONE
background = backgroundDrawable
elevation = ViewLayoutUtils.convertDpToPixel(4.0f, context)
}
override fun onAttachedToWindow() {
@@ -88,20 +93,17 @@ class PopupExtendedView : View, ThemeManager.OnThemeUpdatedListener {
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
themeManager.unregisterOnThemeUpdatedListener(this)
super.onDetachedFromWindow()
}
override fun onThemeUpdated(theme: Theme) {
activeBackgroundDrawable.apply {
setTint(theme.getAttr(Theme.Attr.POPUP_BACKGROUND_ACTIVE).toSolidColor().color)
setCornerRadius(ViewLayoutUtils.convertDpToPixel(6.0f, context))
}
backgroundDrawable.apply {
setTint(theme.getAttr(Theme.Attr.POPUP_BACKGROUND).toSolidColor().color)
setCornerRadius(ViewLayoutUtils.convertDpToPixel(6.0f, context))
}
elevation = ViewLayoutUtils.convertDpToPixel(4.0f, context)
labelPaint.color = theme.getAttr(Theme.Attr.POPUP_FOREGROUND).toSolidColor().color
tldPaint.color = theme.getAttr(Theme.Attr.POPUP_FOREGROUND).toSolidColor().color
if (isShowing) {

View File

@@ -20,12 +20,14 @@ import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.ViewGroup
import android.widget.FrameLayout
import dev.patrickgold.florisboard.ime.core.PrefHelper
/**
* Basic helper view class which acts as a non-interactive layer view, which sits above the whole
* input UI. Automatically rejects any touch events and passes it through to the View below.
*/
class PopupLayerView : FrameLayout {
private val prefs: PrefHelper = PrefHelper.getDefaultInstance(context)
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
@@ -34,6 +36,9 @@ class PopupLayerView : FrameLayout {
background = null
isClickable = false
isFocusable = false
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
)
}
override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {

View File

@@ -111,7 +111,8 @@ class PopupManager<T_KBD: View, T_KV: View>(
keyView.data.popup[adjustedIndex].label, adjustedIndex
)
}
KeyCode.TOGGLE_ONE_HANDED_MODE -> {
KeyCode.TOGGLE_ONE_HANDED_MODE_LEFT,
KeyCode.TOGGLE_ONE_HANDED_MODE_RIGHT -> {
getDrawable(keyView.context, R.drawable.ic_smartphone)?.let {
PopupExtendedView.Element.Icon(it, adjustedIndex)
} ?: PopupExtendedView.Element.Undefined

View File

@@ -34,7 +34,9 @@ import dev.patrickgold.florisboard.util.ViewLayoutUtils
class PopupView : View, ThemeManager.OnThemeUpdatedListener {
private val themeManager: ThemeManager = ThemeManager.default()
private var backgroundDrawable: PaintDrawable = PaintDrawable()
private var backgroundDrawable: PaintDrawable = PaintDrawable().apply {
setCornerRadius(ViewLayoutUtils.convertDpToPixel(6.0f, context))
}
private val labelPaint: Paint = Paint().apply {
alpha = 255
color = 0
@@ -86,7 +88,6 @@ class PopupView : View, ThemeManager.OnThemeUpdatedListener {
override fun onThemeUpdated(theme: Theme) {
backgroundDrawable.apply {
setTint(theme.getAttr(Theme.Attr.POPUP_BACKGROUND).toSolidColor().color)
setCornerRadius(ViewLayoutUtils.convertDpToPixel(6.0f, context))
}
elevation = ViewLayoutUtils.convertDpToPixel(4.0f, context)
threeDotsDrawable?.apply {

View File

@@ -16,6 +16,8 @@
package dev.patrickgold.florisboard.ime.text
import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.content.Context
import android.os.Handler
import android.view.KeyEvent
@@ -27,10 +29,7 @@ import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.core.*
import dev.patrickgold.florisboard.ime.text.editing.EditingKeyboardView
import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.key.KeyCode
import dev.patrickgold.florisboard.ime.text.key.KeyData
import dev.patrickgold.florisboard.ime.text.key.KeyType
import dev.patrickgold.florisboard.ime.text.key.KeyVariation
import dev.patrickgold.florisboard.ime.text.key.*
import dev.patrickgold.florisboard.ime.text.keyboard.KeyboardMode
import dev.patrickgold.florisboard.ime.text.keyboard.KeyboardView
import dev.patrickgold.florisboard.ime.text.layout.LayoutManager
@@ -38,6 +37,7 @@ import dev.patrickgold.florisboard.ime.text.smartbar.SmartbarView
import kotlinx.coroutines.*
import timber.log.Timber
import java.util.*
import kotlin.math.roundToLong
/**
* TextInputManager is responsible for managing everything which is related to text input. All of
@@ -58,11 +58,13 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
get() = florisboard.activeEditorInstance
private var activeKeyboardMode: KeyboardMode? = null
private var animator: ObjectAnimator? = null
private val keyboardViews = EnumMap<KeyboardMode, KeyboardView>(KeyboardMode::class.java)
private var editingKeyboardView: EditingKeyboardView? = null
private var loadingPlaceholderKeyboard: KeyboardView? = null
private val osHandler = Handler()
private var textViewFlipper: ViewFlipper? = null
var textViewGroup: LinearLayout? = null
private var textViewGroup: LinearLayout? = null
var keyVariation: KeyVariation = KeyVariation.NORMAL
val layoutManager = LayoutManager(florisboard)
@@ -115,6 +117,10 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
}
override fun onCreateInputView() {
keyboardViews.clear()
}
private suspend fun addKeyboardView(mode: KeyboardMode) {
val keyboardView = KeyboardView(florisboard.context)
keyboardView.computedLayout = layoutManager.fetchComputedLayoutAsync(mode, florisboard.activeSubtype, florisboard.prefs).await()
@@ -128,14 +134,38 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
override fun onRegisterInputView(inputView: InputView) {
Timber.i("onRegisterInputView(inputView)")
launch(Dispatchers.Main) {
textViewGroup = inputView.findViewById(R.id.text_input)
textViewFlipper = inputView.findViewById(R.id.text_input_view_flipper)
editingKeyboardView = inputView.findViewById(R.id.editing)
textViewGroup = inputView.findViewById(R.id.text_input)
textViewFlipper = inputView.findViewById(R.id.text_input_view_flipper)
editingKeyboardView = inputView.findViewById(R.id.editing)
loadingPlaceholderKeyboard = inputView.findViewById(R.id.keyboard_preview)
launch(Dispatchers.Main) {
textViewGroup?.let {
animator = ObjectAnimator.ofFloat(it, "alpha", 0.9f, 1.0f).apply {
duration = 125
repeatCount = ValueAnimator.INFINITE
repeatMode = ValueAnimator.REVERSE
start()
launch {
delay(duration)
try {
duration = 500
setFloatValues(1.0f, 0.4f)
} catch (_: Exception) {}
}
}
}
val activeKeyboardMode = getActiveKeyboardMode()
addKeyboardView(activeKeyboardMode)
setActiveKeyboardMode(activeKeyboardMode)
animator?.cancel()
textViewGroup?.let {
animator = ObjectAnimator.ofFloat(it, "alpha", it.alpha, 1.0f).apply {
duration = (((1.0f - it.alpha) / 0.6f) * 125f).roundToLong()
repeatCount = 0
start()
}
}
for (mode in KeyboardMode.values()) {
if (mode != activeKeyboardMode && mode != KeyboardMode.SMARTBAR_NUMBER_ROW) {
addKeyboardView(mode)
@@ -149,6 +179,12 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
smartbarView?.setEventListener(this)
}
fun unregisterSmartbarView(view: SmartbarView) {
if (smartbarView == view) {
smartbarView = null
}
}
/**
* Cancels all coroutines and cleans up.
*/
@@ -246,11 +282,11 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
/**
* Sets [activeKeyboardMode] and updates the [SmartbarView.isQuickActionsVisible] state.
*/
fun setActiveKeyboardMode(mode: KeyboardMode) {
private fun setActiveKeyboardMode(mode: KeyboardMode) {
textViewFlipper?.displayedChild = textViewFlipper?.indexOfChild(when (mode) {
KeyboardMode.EDITING -> editingKeyboardView
else -> keyboardViews[mode]
}) ?: 0
})?.coerceAtLeast(0) ?: 0
keyboardViews[mode]?.updateVisibility()
keyboardViews[mode]?.requestLayout()
keyboardViews[mode]?.requestLayoutAllKeys()
@@ -343,7 +379,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
R.id.quick_action_switch_to_media_context -> florisboard.setActiveInput(R.id.media_input)
R.id.quick_action_open_settings -> florisboard.launchSettings()
R.id.quick_action_one_handed_toggle -> florisboard.toggleOneHandedMode()
R.id.quick_action_one_handed_toggle -> florisboard.toggleOneHandedMode(isRight = true)
R.id.quick_action_undo -> {
handleUndo()
return
@@ -412,6 +448,18 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
}
/**
* Handles a [KeyCode.LANGUAGE_SWITCH] event. Also handles if the language switch should cycle
* FlorisBoard internal or system-wide.
*/
private fun handleLanguageSwitch() {
when (florisboard.prefs.keyboard.utilityKeyAction) {
UtilityKeyAction.DYNAMIC_SWITCH_LANGUAGE_EMOJIS,
UtilityKeyAction.SWITCH_LANGUAGE -> florisboard.switchToNextSubtype()
else -> florisboard.switchToNextKeyboard()
}
}
/**
* Handles a [KeyCode.SHIFT] event.
*/
@@ -627,7 +675,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
handleEnter()
smartbarView?.resetClipboardSuggestion()
}
KeyCode.LANGUAGE_SWITCH -> florisboard.switchToNextSubtype()
KeyCode.LANGUAGE_SWITCH -> handleLanguageSwitch()
KeyCode.SETTINGS -> florisboard.launchSettings()
KeyCode.SHIFT -> handleShift()
KeyCode.SHOW_INPUT_METHOD_PICKER -> {
@@ -637,7 +685,8 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
KeyCode.SWITCH_TO_MEDIA_CONTEXT -> florisboard.setActiveInput(R.id.media_input)
KeyCode.SWITCH_TO_TEXT_CONTEXT -> florisboard.setActiveInput(R.id.text_input)
KeyCode.TOGGLE_ONE_HANDED_MODE -> florisboard.toggleOneHandedMode()
KeyCode.TOGGLE_ONE_HANDED_MODE_LEFT -> florisboard.toggleOneHandedMode(isRight = false)
KeyCode.TOGGLE_ONE_HANDED_MODE_RIGHT -> florisboard.toggleOneHandedMode(isRight = true)
KeyCode.VIEW_CHARACTERS -> setActiveKeyboardMode(KeyboardMode.CHARACTERS)
KeyCode.VIEW_NUMERIC -> setActiveKeyboardMode(KeyboardMode.NUMERIC)
KeyCode.VIEW_NUMERIC_ADVANCED -> setActiveKeyboardMode(KeyboardMode.NUMERIC_ADVANCED)
@@ -668,19 +717,16 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
KeyType.CHARACTER, KeyType.NUMERIC -> when (keyData.code) {
KeyCode.SPACE -> handleSpace()
KeyCode.URI_COMPONENT_TLD -> {
val tld = when (caps) {
true -> keyData.label.toUpperCase(Locale.getDefault())
false -> keyData.label.toLowerCase(Locale.getDefault())
}
val tld = keyData.label.toLowerCase(Locale.ENGLISH)
activeEditorInstance.commitText(tld)
}
else -> {
hasCapsRecentlyChanged = false
hasSpaceRecentlyPressed = false
var text = keyData.code.toChar().toString()
text = when (caps) {
true -> text.toUpperCase(Locale.getDefault())
false -> text.toLowerCase(Locale.getDefault())
text = when (caps && activeKeyboardMode == KeyboardMode.CHARACTERS) {
true -> text.toUpperCase(florisboard.activeSubtype.locale)
false -> text
}
activeEditorInstance.commitText(text)
}

View File

@@ -45,12 +45,11 @@ class EditingKeyboardView : ConstraintLayout, FlorisBoard.EventListener,
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
florisboard?.addEventListener(this)
}
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
override fun onAttachedToWindow() {
super.onAttachedToWindow()
florisboard?.addEventListener(this)
themeManager.registerOnThemeUpdatedListener(this)
arrowUpKey = findViewById(R.id.arrow_up)
@@ -63,8 +62,9 @@ class EditingKeyboardView : ConstraintLayout, FlorisBoard.EventListener,
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
themeManager.unregisterOnThemeUpdatedListener(this)
florisboard?.removeEventListener(this)
super.onDetachedFromWindow()
}
override fun onThemeUpdated(theme: Theme) {

View File

@@ -63,36 +63,61 @@ abstract class SwipeGesture {
* @property listener The listener to report detected swipes to.
*/
class Detector(private val context: Context, private val listener: Listener) {
private val eventList: MutableList<MotionEvent> = mutableListOf()
private var indexFirst: Int = 0
private var indexLastMoveRecognized: Int = 0
private var firstMotionEvent: MotionEvent? = null
private var lastMotionEvent: MotionEvent? = null
private var absUnitCountX: Int = 0
private var absUnitCountY: Int = 0
private var thresholdWidth: Double = numericValue(context, DistanceThreshold.NORMAL)
private var unitWidth: Double = thresholdWidth / 4.0
var distanceThreshold: DistanceThreshold = DistanceThreshold.NORMAL
set(value) {
field = value
thresholdWidth = numericValue(context, value)
unitWidth = thresholdWidth / 4.0
}
var velocityThreshold: VelocityThreshold = VelocityThreshold.NORMAL
fun onTouchEvent(event: MotionEvent): Boolean {
/**
* Method which evaluates if a given [event] is a gesture.
*
* @param event The MotionEvent which should be checked for a gesture.
* @param alwaysTriggerOnMove Set to true if the moving detection algorithm should always
* trigger, regardless of the distance from the previous event. Defaults to false.
* @return True if the given [event] is a gesture, false otherwise.
*/
fun onTouchEvent(event: MotionEvent, alwaysTriggerOnMove: Boolean = false): Boolean {
try {
when (event.actionMasked) {
MotionEvent.ACTION_DOWN,
MotionEvent.ACTION_POINTER_DOWN -> {
clearEventList()
eventList.add(MotionEvent.obtainNoHistory(event))
resetState()
firstMotionEvent = MotionEvent.obtainNoHistory(event)
lastMotionEvent = firstMotionEvent
}
MotionEvent.ACTION_MOVE -> {
eventList.add(MotionEvent.obtainNoHistory(event))
val firstEvent = eventList[indexFirst]
val lastEvent = eventList[indexLastMoveRecognized]
val diffX = event.x - lastEvent.x
val diffY = event.y - lastEvent.y
val distanceThresholdNV = numericValue(context, distanceThreshold) / 4.0f
return if (abs(diffX) > distanceThresholdNV || abs(diffY) > distanceThresholdNV) {
indexLastMoveRecognized = eventList.size - 1
val direction = detectDirection(diffX.toDouble(), diffY.toDouble())
val firstEvent = firstMotionEvent ?: return false
val absDiffX = event.x - firstEvent.x
val absDiffY = event.y - firstEvent.y
val lastEvent = lastMotionEvent ?: return false
val relDiffX = event.x - lastEvent.x
val relDiffY = event.y - lastEvent.y
return if (alwaysTriggerOnMove || abs(relDiffX) > (thresholdWidth / 2.0) || abs(relDiffY) > (thresholdWidth / 2.0)) {
lastMotionEvent = MotionEvent.obtainNoHistory(event)
val direction = detectDirection(relDiffX.toDouble(), relDiffY.toDouble())
val newAbsUnitCountX = (absDiffX / unitWidth).toInt()
val newAbsUnitCountY = (absDiffY / unitWidth).toInt()
val relUnitCountX = newAbsUnitCountX - absUnitCountX
val relUnitCountY = newAbsUnitCountY - absUnitCountY
absUnitCountX = newAbsUnitCountX
absUnitCountY = newAbsUnitCountY
listener.onSwipe(Event(
direction = direction,
type = Type.TOUCH_MOVE,
diffX = event.x - firstEvent.x,
diffY = event.y - firstEvent.y
absUnitCountX,
absUnitCountY,
relUnitCountX,
relUnitCountY
))
} else {
false
@@ -100,32 +125,36 @@ abstract class SwipeGesture {
}
MotionEvent.ACTION_UP,
MotionEvent.ACTION_POINTER_UP -> {
val firstEvent = eventList[indexFirst]
val diffX = event.x - firstEvent.x
val diffY = event.y - firstEvent.y
val distanceThresholdNV = numericValue(context, distanceThreshold)
val firstEvent = firstMotionEvent ?: return false
val absDiffX = event.x - firstEvent.x
val absDiffY = event.y - firstEvent.y
/*val velocityThresholdNV = numericValue(velocityThreshold)
val velocity =
((convertPixelsToDp(
sqrt(diffX.pow(2) + diffY.pow(2)),
context
) / event.downTime) * 10.0f.pow(8)).toInt()*/
clearEventList()
// return if ((abs(diffX) > distanceThresholdNV || abs(diffY) > distanceThresholdNV) && velocity >= velocityThresholdNV) {
return if ((abs(diffX) > distanceThresholdNV || abs(diffY) > distanceThresholdNV)) {
val direction = detectDirection(diffX.toDouble(), diffY.toDouble())
val ret = if ((abs(absDiffX) > thresholdWidth || abs(absDiffY) > thresholdWidth)) {
val direction = detectDirection(absDiffX.toDouble(), absDiffY.toDouble())
absUnitCountX = (absDiffX / unitWidth).toInt()
absUnitCountY = (absDiffY / unitWidth).toInt()
listener.onSwipe(Event(
direction = direction,
type = Type.TOUCH_UP,
diffX = diffX,
diffY = diffY
absUnitCountX,
absUnitCountY,
absUnitCountX,
absUnitCountY
))
} else {
false
}
resetState()
return ret
}
MotionEvent.ACTION_CANCEL -> {
clearEventList()
resetState()
}
else -> return false
}
@@ -175,22 +204,45 @@ abstract class SwipeGesture {
}
/**
* Cleans up and clears the event list.
* Resets the state.
*/
private fun clearEventList() {
for (event in eventList) {
event.recycle()
}
eventList.clear()
indexFirst = 0
indexLastMoveRecognized = 0
private fun resetState() {
firstMotionEvent = null
lastMotionEvent = null
absUnitCountX = 0
absUnitCountY = 0
}
}
interface Listener {
/**
* An interface which provides an abstract callback function, which will be called for any
* detected swipe event.
*/
fun interface Listener {
fun onSwipe(event: Event): Boolean
}
/**
* Data class which describes a single gesture event.
*/
data class Event(
/** The direction of the swipe. */
val direction: Direction,
/** The type of the swipe. */
val type: Type,
/** The unit count on the x-axis, measured from the first event (ACTION_DOWN). */
val absUnitCountX: Int,
/** The unit count on the y-axis, measured from the first event (ACTION_DOWN). */
val absUnitCountY: Int,
/** The unit count on the x-axis, measured from the last event (ACTION_MOVE). */
val relUnitCountX: Int,
/** The unit count on the y-axis, measured from the last event (ACTION_MOVE). */
val relUnitCountY: Int
)
/**
* ENum which defines the direction of the detected swipe.
*/
enum class Direction {
UP_LEFT,
UP,
@@ -202,13 +254,9 @@ abstract class SwipeGesture {
LEFT,
}
data class Event(
val direction: Direction,
val type: Type,
val diffX: Float,
val diffY: Float
)
/**
* Enum which defines the type of the gesture.
*/
enum class Type {
TOUCH_UP,
TOUCH_MOVE;

View File

@@ -83,7 +83,8 @@ object KeyCode {
const val SWITCH_TO_TEXT_CONTEXT = -212
const val SWITCH_TO_MEDIA_CONTEXT = -213
const val SWITCH_TO_CLIPBOARD_CONTEXT = -214
const val TOGGLE_ONE_HANDED_MODE = -215
const val TOGGLE_ONE_HANDED_MODE_LEFT = -215
const val TOGGLE_ONE_HANDED_MODE_RIGHT =-216
const val URI_COMPONENT_TLD = -255
const val KESHIDA = 1600

View File

@@ -16,8 +16,8 @@
package dev.patrickgold.florisboard.ime.text.key
import android.annotation.SuppressLint
import com.squareup.moshi.FromJson
import java.util.*
enum class KeyVariation {
ALL,
@@ -27,9 +27,8 @@ enum class KeyVariation {
URI;
companion object {
@SuppressLint("DefaultLocale")
fun fromString(string: String): KeyVariation {
return valueOf(string.toUpperCase())
return valueOf(string.toUpperCase(Locale.ENGLISH))
}
}
}

View File

@@ -33,6 +33,7 @@ import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.core.FlorisBoard
import dev.patrickgold.florisboard.ime.core.ImeOptions
import dev.patrickgold.florisboard.ime.core.PrefHelper
import dev.patrickgold.florisboard.ime.core.Subtype
import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.gestures.SwipeGesture
import dev.patrickgold.florisboard.ime.text.keyboard.KeyboardMode
@@ -42,6 +43,7 @@ import dev.patrickgold.florisboard.ime.theme.ThemeManager
import dev.patrickgold.florisboard.ime.theme.ThemeValue
import dev.patrickgold.florisboard.util.*
import java.util.*
import kotlin.math.abs
/**
* View class for managing the rendering and the events of a single keyboard key.
@@ -54,13 +56,16 @@ import java.util.*
@SuppressLint("ViewConstructor")
class KeyView(
private val keyboardView: KeyboardView,
val data: FlorisKeyData
val data: FlorisKeyData,
private val florisboard: FlorisBoard?
) : View(keyboardView.context), SwipeGesture.Listener, ThemeManager.OnThemeUpdatedListener {
private var isKeyPressed: Boolean = false
set(value) {
field = value
updateKeyPressedBackground()
}
private var initSelectionStart: Int = 0
private var initSelectionEnd: Int = 0
private var hasTriggeredGestureMove: Boolean = false
private var keyHintMode: KeyHintMode = KeyHintMode.DISABLED
private val longKeyPressHandler: Handler = Handler(context.mainLooper)
@@ -95,12 +100,11 @@ class KeyView(
isFakeBoldText = false
textAlign = Paint.Align.CENTER
textSize = resources.getDimension(R.dimen.key_textHintSize)
typeface = Typeface.DEFAULT
typeface = Typeface.MONOSPACE
}
private val tempRect: Rect = Rect()
private var themeValueCache: ThemeValueCache = ThemeValueCache()
var florisboard: FlorisBoard? = null
val swipeGestureDetector = SwipeGesture.Detector(context, this)
var touchHitBox: Rect = Rect(-1, -1, -1, -1)
@@ -162,20 +166,29 @@ class KeyView(
* Creates a label text from the given [keyData].
*
* @param keyData Optional. The key data to generate the label from. Defaults to [data].
* @return The generated label.
* @param caps If the generated text should be uppercase (true) or in lowercase (false).
* Defaults to FlorisBoard's TextInputManager's caps state or false. Ignored when the passed
* [keyData] is a TLD, in which case always the lower case variant is returned.
* @param subtype The subtype for which this label should be created. Defaults to
* [Subtype.DEFAULT]. Ignored when the passed [keyData] is a TLD.
* @return The generated label ready for usage in the front-end UI.
*/
fun getComputedLetter(keyData: KeyData = data): String {
if (keyData.code == KeyCode.URI_COMPONENT_TLD) {
return when (florisboard?.textInputManager?.caps) {
true -> keyData.label.toUpperCase(Locale.getDefault())
else -> keyData.label.toLowerCase(Locale.getDefault())
fun getComputedLetter(
keyData: KeyData = data,
caps: Boolean = florisboard?.textInputManager?.caps ?: false && florisboard?.textInputManager?.getActiveKeyboardMode() == KeyboardMode.CHARACTERS,
subtype: Subtype = florisboard?.activeSubtype ?: Subtype.DEFAULT
): String {
return when (data.code) {
KeyCode.URI_COMPONENT_TLD -> keyData.label.toLowerCase(Locale.ENGLISH)
else -> {
val labelText = (keyData.code.toChar()).toString()
if (caps) {
labelText.toUpperCase(subtype.locale)
} else {
labelText
}
}
}
val label = (keyData.code.toChar()).toString()
return when {
florisboard?.textInputManager?.caps ?: false -> label.toUpperCase(Locale.getDefault())
else -> label
}
}
/**
@@ -204,7 +217,11 @@ class KeyView(
*/
fun onFlorisTouchEvent(event: MotionEvent?): Boolean {
if (event == null || !isEnabled) return false
if (swipeGestureDetector.onTouchEvent(event)) {
val alwaysTriggerOnMove = (hasTriggeredGestureMove
&& florisboard?.activeEditorInstance?.isRawInputEditor == false
&& (data.code == KeyCode.DELETE && prefs.gestures.deleteKeySwipeLeft == SwipeAction.DELETE_CHARACTERS_PRECISELY
|| data.code == KeyCode.SPACE))
if (swipeGestureDetector.onTouchEvent(event, alwaysTriggerOnMove)) {
isKeyPressed = false
longKeyPressHandler.cancelAll()
repeatedKeyPressHandler.cancelAll()
@@ -236,7 +253,7 @@ class KeyView(
KeyCode.ARROW_RIGHT,
KeyCode.ARROW_UP,
KeyCode.DELETE -> {
repeatedKeyPressHandler.postAtScheduledRate(delayMillis, 25) {
repeatedKeyPressHandler.postAtScheduledRate((delayMillis * 2.0f).toLong(), 25) {
if (isKeyPressed) {
florisboard?.textInputManager?.sendKeyPress(data)
} else {
@@ -245,13 +262,24 @@ class KeyView(
}
}
}
longKeyPressHandler.postDelayed(delayMillis) {
if (data.popup.isNotEmpty()) {
keyboardView.popupManager.extend(this, keyHintMode)
if (data.code == KeyCode.SPACE) {
initSelectionStart = florisboard?.activeEditorInstance?.selection?.start ?: 0
initSelectionEnd = florisboard?.activeEditorInstance?.selection?.end ?: 0
longKeyPressHandler.postDelayed((delayMillis * 2.5f).toLong()) {
when (prefs.gestures.spaceBarLongPress) {
SwipeAction.NO_ACTION,
SwipeAction.INSERT_SPACE -> {}
else -> {
florisboard?.executeSwipeAction(prefs.gestures.spaceBarLongPress)
shouldBlockNextKeyCode = true
}
}
}
if (data.code == KeyCode.SPACE) {
florisboard?.executeSwipeAction(prefs.gestures.spaceBarLongPress)
shouldBlockNextKeyCode = true
} else {
longKeyPressHandler.postDelayed(delayMillis) {
if (data.popup.isNotEmpty()) {
keyboardView.popupManager.extend(this, keyHintMode)
}
}
}
}
@@ -281,7 +309,6 @@ class KeyView(
repeatedKeyPressHandler.cancelAll()
if (data.code != KeyCode.SHIFT) {
if (hasTriggeredGestureMove && data.code == KeyCode.DELETE) {
hasTriggeredGestureMove = false
florisboard?.activeEditorInstance?.apply {
if (selection.isSelectionMode) {
deleteBackwards()
@@ -297,6 +324,7 @@ class KeyView(
keyboardView.popupManager.hide()
}
}
hasTriggeredGestureMove = false
isKeyPressed = false
}
else -> return false
@@ -309,14 +337,14 @@ class KeyView(
* defined in the prefs.
*/
override fun onSwipe(event: SwipeGesture.Event): Boolean {
val florisboard = florisboard ?: return false
return when (data.code) {
KeyCode.DELETE -> when (event.type) {
SwipeGesture.Type.TOUCH_MOVE -> when (prefs.gestures.deleteKeySwipeLeft) {
SwipeAction.DELETE_CHARACTERS_PRECISELY -> {
val charWidth = SwipeGesture.numericValue(context, swipeGestureDetector.distanceThreshold) / 4.0f
florisboard?.activeEditorInstance?.apply {
florisboard.activeEditorInstance.apply {
setSelection(
(selection.end - (event.diffX.times(-1) / charWidth).toInt()).coerceIn(0, selection.end),
(selection.end + event.absUnitCountX).coerceIn(0, selection.end),
selection.end
)
}
@@ -326,7 +354,7 @@ class KeyView(
}
SwipeAction.DELETE_WORDS_PRECISELY -> when (event.direction) {
SwipeGesture.Direction.LEFT -> {
florisboard?.activeEditorInstance?.apply {
florisboard.activeEditorInstance.apply {
leftAppendWordToSelection()
}
hasTriggeredGestureMove = true
@@ -334,7 +362,7 @@ class KeyView(
true
}
SwipeGesture.Direction.RIGHT -> {
florisboard?.activeEditorInstance?.apply {
florisboard.activeEditorInstance.apply {
leftPopWordFromSelection()
}
shouldBlockNextKeyCode = true
@@ -349,17 +377,46 @@ class KeyView(
KeyCode.SPACE -> when (event.type) {
SwipeGesture.Type.TOUCH_MOVE -> when (event.direction) {
SwipeGesture.Direction.UP -> {
florisboard?.executeSwipeAction(prefs.gestures.spaceBarSwipeUp)
shouldBlockNextKeyCode = true
true
if (event.absUnitCountY.times(-1) >= 6) {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeUp)
hasTriggeredGestureMove = true
shouldBlockNextKeyCode = true
true
} else {
false
}
}
SwipeGesture.Direction.LEFT -> {
florisboard?.executeSwipeAction(prefs.gestures.spaceBarSwipeLeft)
if (prefs.gestures.spaceBarSwipeLeft == SwipeAction.MOVE_CURSOR_LEFT) {
if (!florisboard.activeEditorInstance.isRawInputEditor) {
val s = (initSelectionEnd + event.absUnitCountX).coerceIn(0, florisboard.activeEditorInstance.cachedText.length)
florisboard.activeEditorInstance.setSelection(s, s)
} else {
for (n in 0 until abs(event.relUnitCountX)) {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeLeft)
}
}
} else {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeLeft)
}
hasTriggeredGestureMove = true
shouldBlockNextKeyCode = true
true
}
SwipeGesture.Direction.RIGHT -> {
florisboard?.executeSwipeAction(prefs.gestures.spaceBarSwipeRight)
if (prefs.gestures.spaceBarSwipeRight == SwipeAction.MOVE_CURSOR_RIGHT) {
if (!florisboard.activeEditorInstance.isRawInputEditor) {
val s = (initSelectionEnd + event.absUnitCountX).coerceIn(0, florisboard.activeEditorInstance.cachedText.length)
florisboard.activeEditorInstance.setSelection(s, s)
} else {
for (n in 0 until abs(event.relUnitCountX)) {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeRight)
}
}
} else {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeRight)
}
hasTriggeredGestureMove = true
shouldBlockNextKeyCode = true
true
}
@@ -464,10 +521,9 @@ class KeyView(
private fun updateEnabledState() {
isEnabled = when (data.code) {
KeyCode.CLIPBOARD_COPY,
KeyCode.CLIPBOARD_CUT -> {
florisboard?.activeEditorInstance?.selection?.isSelectionMode == true &&
florisboard?.activeEditorInstance?.isRawInputEditor == false
}
KeyCode.CLIPBOARD_CUT -> (florisboard != null
&& florisboard.activeEditorInstance.selection.isSelectionMode
&& !florisboard.activeEditorInstance.isRawInputEditor)
KeyCode.CLIPBOARD_PASTE -> florisboard?.clipboardManager?.hasPrimaryClip() == true
KeyCode.CLIPBOARD_SELECT_ALL -> {
florisboard?.activeEditorInstance?.isRawInputEditor == false
@@ -480,35 +536,53 @@ class KeyView(
}
override fun onThemeUpdated(theme: Theme) {
if (keyboardView.isSmartbarKeyboardView) {
themeValueCache.apply {
keyBackground = theme.getAttr(Theme.Attr.SMARTBAR_BACKGROUND)
keyBackgroundPressed = theme.getAttr(Theme.Attr.SMARTBAR_BUTTON_BACKGROUND)
keyForeground = theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND)
keyForegroundAlt = theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND_ALT)
keyForegroundPressed = theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND)
shouldShowBorder = false
}
} else {
val label = data.label
val capsSpecific = when {
florisboard?.textInputManager?.capsLock == true -> {
"capslock"
}
florisboard?.textInputManager?.caps == true -> {
"caps"
}
else -> {
null
when {
keyboardView.isLoadingPlaceholderKeyboard -> {
val label = data.label
themeValueCache.apply {
shouldShowBorder = theme.getAttr(Theme.Attr.KEY_SHOW_BORDER, label).toOnOff().state
keyBackground = if (shouldShowBorder) {
theme.getAttr(Theme.Attr.KEY_BACKGROUND, label)
} else {
theme.getAttr(Theme.Attr.SMARTBAR_BUTTON_BACKGROUND, label)
}
keyBackgroundPressed = theme.getAttr(Theme.Attr.KEY_BACKGROUND_PRESSED, label)
keyForeground = keyBackground
keyForegroundAlt = ThemeValue.SolidColor(0)
keyForegroundPressed = keyBackgroundPressed
}
}
themeValueCache.apply {
keyBackground = theme.getAttr(Theme.Attr.KEY_BACKGROUND, label, capsSpecific)
keyBackgroundPressed = theme.getAttr(Theme.Attr.KEY_BACKGROUND_PRESSED, label, capsSpecific)
keyForeground = theme.getAttr(Theme.Attr.KEY_FOREGROUND, label, capsSpecific)
keyForegroundAlt = ThemeValue.SolidColor(0)
keyForegroundPressed = theme.getAttr(Theme.Attr.KEY_FOREGROUND_PRESSED, label, capsSpecific)
shouldShowBorder = theme.getAttr(Theme.Attr.KEY_SHOW_BORDER, label, capsSpecific).toOnOff().state
keyboardView.isSmartbarKeyboardView -> {
themeValueCache.apply {
keyBackground = theme.getAttr(Theme.Attr.SMARTBAR_BACKGROUND)
keyBackgroundPressed = theme.getAttr(Theme.Attr.SMARTBAR_BUTTON_BACKGROUND)
keyForeground = theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND)
keyForegroundAlt = theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND_ALT)
keyForegroundPressed = theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND)
shouldShowBorder = false
}
}
else -> {
val label = data.label
val capsSpecific = when {
florisboard?.textInputManager?.capsLock == true -> {
"capslock"
}
florisboard?.textInputManager?.caps == true -> {
"caps"
}
else -> {
null
}
}
themeValueCache.apply {
keyBackground = theme.getAttr(Theme.Attr.KEY_BACKGROUND, label, capsSpecific)
keyBackgroundPressed = theme.getAttr(Theme.Attr.KEY_BACKGROUND_PRESSED, label, capsSpecific)
keyForeground = theme.getAttr(Theme.Attr.KEY_FOREGROUND, label, capsSpecific)
keyForegroundAlt = ThemeValue.SolidColor(0)
keyForegroundPressed = theme.getAttr(Theme.Attr.KEY_FOREGROUND_PRESSED, label, capsSpecific)
shouldShowBorder = theme.getAttr(Theme.Attr.KEY_SHOW_BORDER, label, capsSpecific).toOnOff().state
}
}
}
updateKeyPressedBackground()
@@ -562,17 +636,39 @@ class KeyView(
when (data.code) {
KeyCode.SWITCH_TO_TEXT_CONTEXT,
KeyCode.SWITCH_TO_MEDIA_CONTEXT -> {
visibility = if (florisboard?.shouldShowLanguageSwitch() == true) {
GONE
} else {
VISIBLE
val tempUtilityKeyAction = when {
prefs.keyboard.utilityKeyEnabled -> prefs.keyboard.utilityKeyAction
else -> UtilityKeyAction.DISABLED
}
visibility = when (tempUtilityKeyAction) {
UtilityKeyAction.DISABLED,
UtilityKeyAction.SWITCH_LANGUAGE,
UtilityKeyAction.SWITCH_KEYBOARD_APP -> GONE
UtilityKeyAction.SWITCH_TO_EMOJIS -> VISIBLE
UtilityKeyAction.DYNAMIC_SWITCH_LANGUAGE_EMOJIS ->
if (florisboard?.shouldShowLanguageSwitch() == true) {
GONE
} else {
VISIBLE
}
}
}
KeyCode.LANGUAGE_SWITCH -> {
visibility = if (florisboard?.shouldShowLanguageSwitch() == true) {
VISIBLE
} else {
GONE
val tempUtilityKeyAction = when {
prefs.keyboard.utilityKeyEnabled -> prefs.keyboard.utilityKeyAction
else -> UtilityKeyAction.DISABLED
}
visibility = when (tempUtilityKeyAction) {
UtilityKeyAction.DISABLED,
UtilityKeyAction.SWITCH_TO_EMOJIS -> GONE
UtilityKeyAction.SWITCH_LANGUAGE,
UtilityKeyAction.SWITCH_KEYBOARD_APP -> VISIBLE
UtilityKeyAction.DYNAMIC_SWITCH_LANGUAGE_EMOJIS ->
if (florisboard?.shouldShowLanguageSwitch() == true) {
VISIBLE
} else {
GONE
}
}
}
else -> if (data.variation != KeyVariation.ALL) {
@@ -617,13 +713,9 @@ class KeyView(
}
/**
* Draw the key label / drawable.
* Computes the labels and drawables needed to draw the key.
*/
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
canvas ?: return
private fun computeLabelsAndDrawables() {
if (data.type == KeyType.CHARACTER && data.code != KeyCode.SPACE
&& data.code != KeyCode.HALF_SPACE && data.code != KeyCode.KESHIDA || data.type == KeyType.NUMERIC
) {
@@ -731,6 +823,17 @@ class KeyView(
}
}
}
}
/**
* Draw the key label / drawable.
*/
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
canvas ?: return
computeLabelsAndDrawables()
// Draw drawable
val drawable = drawable
@@ -802,7 +905,11 @@ class KeyView(
}
}
}
labelPaint.color = themeValueCache.keyForeground.toSolidColor().color
labelPaint.color = if (isKeyPressed && isEnabled) {
themeValueCache.keyForegroundPressed.toSolidColor().color
} else {
themeValueCache.keyForeground.toSolidColor().color
}
labelPaint.alpha = if (keyboardView.computedLayout?.mode == KeyboardMode.CHARACTERS &&
data.code == KeyCode.SPACE) { 120 } else { 255 }
val centerX = measuredWidth / 2.0f
@@ -822,15 +929,15 @@ class KeyView(
if (hintedLabel != null) {
setTextSizeFor(
hintedLabelPaint,
desiredWidth * 1.0f / 6.0f,
desiredHeight * 1.0f / 6.0f,
desiredWidth * 1.0f / 5.0f,
desiredHeight * 1.0f / 5.0f,
// Note: taking a "X" here because it is one of the biggest letters and
// the keys must have the same base character for calculation, else
// they will all look different and weird...
"X"
)
hintedLabelPaint.color = labelPaint.color
hintedLabelPaint.alpha = 120
hintedLabelPaint.alpha = 170
val centerX = measuredWidth * 5.0f / 6.0f
val centerY = measuredHeight * 1.0f / 6.0f + (hintedLabelPaint.textSize - hintedLabelPaint.descent()) / 2
canvas.drawText(hintedLabel, centerX, centerY, hintedLabelPaint)

View File

@@ -0,0 +1,36 @@
/*
* Copyright (C) 2020 Patrick Goldinger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dev.patrickgold.florisboard.ime.text.key
import java.util.*
/**
* Enum for declaring the utility key actions.
*/
enum class UtilityKeyAction {
SWITCH_TO_EMOJIS,
SWITCH_LANGUAGE,
SWITCH_KEYBOARD_APP,
DYNAMIC_SWITCH_LANGUAGE_EMOJIS,
DISABLED;
companion object {
fun fromString(string: String): UtilityKeyAction {
return valueOf(string.toUpperCase(Locale.ENGLISH))
}
}
}

View File

@@ -64,6 +64,7 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
private var initialKeyCode: Int = 0
private val isPreviewMode: Boolean
val isSmartbarKeyboardView: Boolean
val isLoadingPlaceholderKeyboard: Boolean
var popupManager = PopupManager<KeyboardView, KeyView>(this, florisboard?.popupLayerView)
private val prefs: PrefHelper = PrefHelper.getDefaultInstance(context)
private val themeManager: ThemeManager = ThemeManager.default()
@@ -75,6 +76,7 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
context.obtainStyledAttributes(attrs, R.styleable.KeyboardView).apply {
isPreviewMode = getBoolean(R.styleable.KeyboardView_isPreviewKeyboard, false)
isSmartbarKeyboardView = getBoolean(R.styleable.KeyboardView_isSmartbarKeyboard, false)
isLoadingPlaceholderKeyboard = getBoolean(R.styleable.KeyboardView_isLoadingPlaceholderKeyboard, false)
recycle()
}
orientation = VERTICAL
@@ -82,8 +84,10 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
florisboard?.addEventListener(this)
onWindowShown()
if (isLoadingPlaceholderKeyboard) {
computedLayout = ComputedLayoutData.PRE_GENERATED_LOADING_KEYBOARD
}
}
/**
@@ -95,8 +99,7 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
for (row in computedLayout.arrangement) {
val rowView = KeyboardRowView(context)
for (key in row) {
val keyView = KeyView(this, key)
keyView.florisboard = florisboard
val keyView = KeyView(this, key, florisboard)
rowView.addView(keyView)
}
addView(rowView)
@@ -118,6 +121,7 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
override fun onAttachedToWindow() {
super.onAttachedToWindow()
florisboard?.addEventListener(this)
if (!isPreviewMode) {
themeManager.registerOnThemeUpdatedListener(this)
}
@@ -127,11 +131,12 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
* Dismisses all shown key popups when keyboard is detached from window.
*/
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
popupManager.dismissAllPopups()
if (!isPreviewMode) {
themeManager.unregisterOnThemeUpdatedListener(this)
}
florisboard?.removeEventListener(this)
super.onDetachedFromWindow()
}
override fun onWindowShown() {
@@ -166,7 +171,7 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(event: MotionEvent?): Boolean {
event ?: return false
if (isPreviewMode) {
if (isPreviewMode || isLoadingPlaceholderKeyboard) {
return false
}
val eventFloris = MotionEvent.obtainNoHistory(event)

View File

@@ -17,6 +17,9 @@
package dev.patrickgold.florisboard.ime.text.layout
import dev.patrickgold.florisboard.ime.text.key.FlorisKeyData
import dev.patrickgold.florisboard.ime.text.key.KeyCode
import dev.patrickgold.florisboard.ime.text.key.KeyData
import dev.patrickgold.florisboard.ime.text.key.KeyType
import dev.patrickgold.florisboard.ime.text.keyboard.KeyboardMode
typealias LayoutDataArrangement = List<List<FlorisKeyData>>
@@ -52,4 +55,56 @@ data class ComputedLayoutData(
val name: String,
val direction: String,
val arrangement: ComputedLayoutDataArrangement = mutableListOf()
)
) {
companion object {
val PRE_GENERATED_LOADING_KEYBOARD = ComputedLayoutData(
mode = KeyboardMode.CHARACTERS,
name = "__loading_keyboard__",
direction = "ltr",
arrangement = mutableListOf(
mutableListOf(
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0)
),
mutableListOf(
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0)
),
mutableListOf(
FlorisKeyData(code = KeyCode.SHIFT, type = KeyType.MODIFIER, label = "shift"),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = KeyCode.DELETE, type = KeyType.ENTER_EDITING, label = "delete")
),
mutableListOf(
FlorisKeyData(code = KeyCode.VIEW_SYMBOLS, type = KeyType.SYSTEM_GUI, label = "view_symbols"),
FlorisKeyData(code = 0),
FlorisKeyData(code = 0),
FlorisKeyData(code = KeyCode.SPACE, label = "space"),
FlorisKeyData(code = 0),
FlorisKeyData(code = KeyCode.ENTER, type = KeyType.ENTER_EDITING, label = "enter")
)
)
)
}
}

View File

@@ -1,7 +1,7 @@
package dev.patrickgold.florisboard.ime.text.layout
import android.annotation.SuppressLint
import com.squareup.moshi.FromJson
import java.util.*
/**
* Defines the type of the layout.
@@ -19,15 +19,13 @@ enum class LayoutType {
SYMBOLS2,
SYMBOLS2_MOD;
@SuppressLint("DefaultLocale")
override fun toString(): String {
return super.toString().replace("_", "/").toLowerCase()
return super.toString().replace("_", "/").toLowerCase(Locale.ENGLISH)
}
companion object {
@SuppressLint("DefaultLocale")
fun fromString(string: String): LayoutType {
return valueOf(string.replace("/", "_").toUpperCase())
return valueOf(string.replace("/", "_").toUpperCase(Locale.ENGLISH))
}
}
}

View File

@@ -40,8 +40,8 @@ class SmartbarQuickActionButton : androidx.appcompat.widget.AppCompatImageButton
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
themeManager.unregisterOnThemeUpdatedListener(this)
super.onDetachedFromWindow()
}
/**

View File

@@ -37,6 +37,7 @@ import dev.patrickgold.florisboard.util.setDrawableTintColor2
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import timber.log.Timber
import java.lang.ref.WeakReference
import kotlin.math.roundToInt
@@ -113,7 +114,7 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
Subtype.DEFAULT,
prefs
).await()
launch(Dispatchers.Main) {
withContext(Dispatchers.Main) {
binding.clipboardCursorRow.computedLayout = layout
binding.clipboardCursorRow.updateVisibility()
}
@@ -133,7 +134,7 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
Subtype.DEFAULT,
prefs
).await()
launch(Dispatchers.Main) {
withContext(Dispatchers.Main) {
binding.numberRow.computedLayout = layout
binding.numberRow.updateVisibility()
}
@@ -146,7 +147,9 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
for (quickAction in binding.quickActions.children) {
if (quickAction is SmartbarQuickActionButton) {
quickAction.setOnClickListener { eventListener?.get()?.onSmartbarQuickActionPressed(quickAction.id) }
quickAction.id.let { quickActionId ->
quickAction.setOnClickListener { eventListener?.get()?.onSmartbarQuickActionPressed(quickActionId) }
}
}
}
@@ -169,8 +172,10 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
eventListener = null
florisboard?.textInputManager?.unregisterSmartbarView(this)
themeManager.unregisterOnThemeUpdatedListener(this)
super.onDetachedFromWindow()
}
/**
@@ -330,6 +335,7 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
for (view in candidateViewList) {
view.setTextColor(theme.getAttr(Theme.Attr.SMARTBAR_FOREGROUND).toSolidColor().color)
}
invalidate()
}
fun setEventListener(listener: EventListener) {

View File

@@ -16,6 +16,8 @@
package dev.patrickgold.florisboard.ime.theme
import android.graphics.Color
/**
* Theme overlay class which, if enabled, changes some requested attributes in a Theme and returns
* the corresponding adaptive color. The adaptive colors itself are determined by the ThemeManager
@@ -29,13 +31,18 @@ class AdaptiveThemeOverlay(
return when {
themeManager.isAdaptiveThemeEnabled -> when (ref) {
Attr.KEYBOARD_BACKGROUND,
Attr.KEY_BACKGROUND_PRESSED,
Attr.SMARTBAR_BACKGROUND,
Attr.WINDOW_NAVIGATION_BAR_COLOR -> {
themeManager.remoteColorPrimaryVariant ?: super.getAttr(ref, s1, s2)
}
Attr.KEY_FOREGROUND_PRESSED,
Attr.SMARTBAR_FOREGROUND -> {
themeManager.remoteColorPrimaryVariant?.complimentaryTextColor() ?: super.getAttr(ref, s1, s2)
}
Attr.SMARTBAR_FOREGROUND_ALT -> {
themeManager.remoteColorPrimaryVariant?.complimentaryTextColor(true) ?: super.getAttr(ref, s1, s2)
}
Attr.KEY_BACKGROUND,
Attr.SMARTBAR_BUTTON_BACKGROUND -> {
themeManager.remoteColorPrimary ?: super.getAttr(ref, s1, s2)
@@ -51,6 +58,22 @@ class AdaptiveThemeOverlay(
super.getAttr(ref, s1, s2)
}
}
Attr.WINDOW_NAVIGATION_BAR_LIGHT -> {
if (themeManager.remoteColorPrimaryVariant != null) {
ThemeValue.OnOff(themeManager.remoteColorPrimaryVariant?.complimentaryTextColor()?.color == Color.BLACK)
} else {
super.getAttr(ref, s1, s2)
}
}
Attr.POPUP_BACKGROUND -> {
themeManager.remoteColorSecondary ?: super.getAttr(ref, s1, s2)
}
Attr.POPUP_BACKGROUND_ACTIVE -> {
themeManager.remoteColorSecondary?.complimentaryTextColor(true) ?: super.getAttr(ref, s1, s2)
}
Attr.POPUP_FOREGROUND -> {
themeManager.remoteColorSecondary?.complimentaryTextColor() ?: super.getAttr(ref, s1, s2)
}
else -> super.getAttr(ref, s1, s2)
}
else -> super.getAttr(ref, s1, s2)

View File

@@ -16,7 +16,9 @@
package dev.patrickgold.florisboard.ime.theme
import android.content.Context
import android.graphics.Color
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.extension.Asset
/**
@@ -53,7 +55,7 @@ open class Theme(
) : Asset {
companion object : Asset.Companion<Theme> {
private val VALIDATION_REGEX_THEME_LABEL = """^.+${'$'}""".toRegex()
private val VALIDATION_REGEX_GROUP_NAME = """^[a-zA-Z]+((:[a-zA-Z]+)|(::[a-zA-Z]+)|(:[a-zA-Z]+:[a-zA-Z]+))?${'$'}""".toRegex()
private val VALIDATION_REGEX_GROUP_NAME = """^[a-zA-Z]+((:[a-zA-Z0-9_~]+)|(::[a-zA-Z]+)|(:[a-zA-Z0-9_~]+:[a-zA-Z]+))?${'$'}""".toRegex()
private val VALIDATION_REGEX_ATTR_NAME = """^[a-zA-Z]+${'$'}""".toRegex()
/**
@@ -67,6 +69,82 @@ open class Theme(
isNightTheme = true
)
/**
* Gets the Ui string for a given [attrName]. Used in the theme editor to properly display
* attributes for non-advanced users.
*
* @param context The current activity context, used for retrieving the Ui string.
* @param attrName The attribute name, which is used to determine which Ui string should be
* fetched.
* @return The Ui string representation, which is localized and can be shown to the user.
*/
fun getUiAttrNameString(context: Context, attrName: String): String {
val strId = when (attrName) {
"background" -> R.string.settings__theme__attr_background
"backgroundActive" -> R.string.settings__theme__attr_backgroundActive
"backgroundPressed" -> R.string.settings__theme__attr_backgroundPressed
"foreground" -> R.string.settings__theme__attr_foreground
"foregroundAlt" -> R.string.settings__theme__attr_foregroundAlt
"foregroundPressed" -> R.string.settings__theme__attr_foregroundPressed
"showBorder" -> R.string.settings__theme__attr_showBorder
"colorPrimary" -> R.string.settings__theme__attr_colorPrimary
"colorPrimaryDark" -> R.string.settings__theme__attr_colorPrimaryDark
"colorAccent" -> R.string.settings__theme__attr_colorAccent
"navigationBarColor" -> R.string.settings__theme__attr_navBarColor
"navigationBarLight" -> R.string.settings__theme__attr_navBarLight
"semiTransparentColor" -> R.string.settings__theme__attr_semiTransparentColor
"textColor" -> R.string.settings__theme__attr_textColor
else -> null
}
return if (strId != null) {
context.resources.getString(strId)
} else {
context.resources.getString(
R.string.settings__theme__attr_custom, attrName
)
}
}
/**
* Gets the Ui string for a given [groupName]. Used in the theme editor to properly display
* group names for non-advanced users.
*
* @param context The current activity context, used for retrieving the Ui string.
* @param groupName The group name, which is used to determine which Ui string should be
* fetched.
* @return The Ui string representation, which is localized and can be shown to the user.
*/
fun getUiGroupNameString(context: Context, groupName: String): String {
return when {
groupName.startsWith("key:") -> context.resources.getString(
R.string.settings__theme__group_key_specific, groupName.substring(4)
)
else -> {
val strId = when (groupName) {
"window" -> R.string.settings__theme__group_window
"keyboard" -> R.string.settings__theme__group_keyboard
"key" -> R.string.settings__theme__group_key
"media" -> R.string.settings__theme__group_media
"oneHanded" -> R.string.settings__theme__group_oneHanded
"popup" -> R.string.settings__theme__group_popup
"privateMode" -> R.string.settings__theme__group_privateMode
"smartbar" -> R.string.settings__theme__group_smartbar
"smartbarButton" -> R.string.settings__theme__group_smartbarButton
"extractEditLayout" -> R.string.settings__theme__group_extractEditLayout
"extractActionButton" -> R.string.settings__theme__group_extractActionButton
else -> null
}
if (strId != null) {
context.resources.getString(strId)
} else {
context.resources.getString(
R.string.settings__theme__group_custom, groupName
)
}
}
}
}
/**
* Generate a base theme with the given meta data. For the argument info see [Theme].
*
@@ -134,6 +212,15 @@ open class Theme(
Pair("smartbarButton", mapOf(
Pair("background", ThemeValue.fromString("@key/background")),
Pair("foreground", ThemeValue.fromString("@key/foreground")),
)),
Pair("extractEditLayout", mapOf(
Pair("background", bgColor),
Pair("foreground", ThemeValue.fromString("@window/textColor")),
Pair("foregroundAlt", ThemeValue.fromString("#73FFFFFF")),
)),
Pair("extractActionButton", mapOf(
Pair("background", ThemeValue.fromString("@smartbarButton/background")),
Pair("foreground", ThemeValue.fromString("@smartbarButton/foreground")),
))
)
)
@@ -230,7 +317,7 @@ open class Theme(
getAttrOrNull(ref.copy(group = "${ref.group}::$s2"))?.let { return it }
}
getAttrOrNull(ref)?.let { return it }
return ThemeValue.SolidColor(0)
return BASE_THEME.getAttrOrNull(ref) ?: ThemeValue.SolidColor(0)
}
/**
@@ -291,6 +378,13 @@ open class Theme(
val SMARTBAR_BUTTON_BACKGROUND = ThemeValue.Reference("smartbarButton", "background")
val SMARTBAR_BUTTON_FOREGROUND = ThemeValue.Reference("smartbarButton", "foreground")
val EXTRACT_EDIT_LAYOUT_BACKGROUND = ThemeValue.Reference("extractEditLayout", "background")
val EXTRACT_EDIT_LAYOUT_FOREGROUND = ThemeValue.Reference("extractEditLayout", "foreground")
val EXTRACT_EDIT_LAYOUT_FOREGROUND_ALT = ThemeValue.Reference("extractEditLayout", "foregroundAlt")
val EXTRACT_ACTION_BUTTON_BACKGROUND = ThemeValue.Reference("extractActionButton", "background")
val EXTRACT_ACTION_BUTTON_FOREGROUND = ThemeValue.Reference("extractActionButton", "foreground")
}
}

View File

@@ -17,6 +17,7 @@
package dev.patrickgold.florisboard.ime.theme
import android.annotation.SuppressLint
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageManager
import android.content.res.Configuration
@@ -53,6 +54,8 @@ class ThemeManager private constructor(
private set
var remoteColorPrimaryVariant: ThemeValue.SolidColor? = null
private set
var remoteColorSecondary: ThemeValue.SolidColor? = null
private set
companion object {
/**
@@ -113,6 +116,7 @@ class ThemeManager private constructor(
* @param packageName The package name from which the colors should be extracted.
*/
@SuppressLint("ResourceType")
@Suppress("UNNECESSARY_SAFE_CALL")
fun updateRemoteColorValues(packageName: String) {
try {
val pm = packageManager ?: return
@@ -122,7 +126,10 @@ class ThemeManager private constructor(
android.R.attr.colorPrimary,
res.getIdentifier("colorPrimaryDark", "attr", packageName),
android.R.attr.colorPrimaryDark,
res.getIdentifier("colorPrimaryVariant", "attr", packageName)
res.getIdentifier("colorPrimaryVariant", "attr", packageName),
res.getIdentifier("colorAccent", "attr", packageName),
android.R.attr.colorAccent,
res.getIdentifier("colorSecondary", "attr", packageName)
)
val androidTheme = res.newTheme()
val defColor = if (activeTheme.isNightTheme) {
@@ -130,11 +137,31 @@ class ThemeManager private constructor(
} else {
Color.WHITE
}
val cn = pm.getLaunchIntentForPackage(packageName)?.component
if (cn != null) {
androidTheme.applyStyle(pm.getActivityInfo(cn, 0).theme, false)
@Suppress("UNNECESSARY_SAFE_CALL")
androidTheme.obtainStyledAttributes(attrs.toIntArray())?.let { a ->
val themeIds = mutableListOf<Int>()
pm.getLaunchIntentForPackage(packageName)?.component?.let { cn ->
pm.getActivityInfo(cn, 0)?.let { launchActivity ->
if (launchActivity.targetActivity != null) {
pm.getActivityInfo(ComponentName(packageName, launchActivity.targetActivity), 0)?.let {
themeIds.add(it.theme)
}
} else {
themeIds.add(launchActivity.theme)
}
}
}
pm.getApplicationInfo(packageName, 0)?.let { applicationInfo ->
themeIds.add(applicationInfo.theme)
}
remoteColorPrimary = null
remoteColorPrimaryVariant = null
remoteColorSecondary = null
for (themeId in themeIds) {
if (remoteColorPrimary != null && remoteColorPrimaryVariant != null &&
remoteColorSecondary != null) {
break
}
androidTheme.applyStyle(themeId, false)
androidTheme.obtainStyledAttributes(attrs.toIntArray()).let { a ->
remoteColorPrimary = when {
a.hasValue(0) -> {
ThemeValue.SolidColor(a.getColor(0, defColor))
@@ -143,7 +170,7 @@ class ThemeManager private constructor(
ThemeValue.SolidColor(a.getColor(1, defColor))
}
else -> {
null
remoteColorPrimary
}
}
remoteColorPrimaryVariant = when {
@@ -157,7 +184,21 @@ class ThemeManager private constructor(
ThemeValue.SolidColor(a.getColor(4, defColor))
}
else -> {
null
remoteColorPrimaryVariant
}
}
remoteColorSecondary = when {
a.hasValue(5) -> {
ThemeValue.SolidColor(a.getColor(5, defColor))
}
a.hasValue(6) -> {
ThemeValue.SolidColor(a.getColor(6, defColor))
}
a.hasValue(7) -> {
ThemeValue.SolidColor(a.getColor(7, defColor))
}
else -> {
remoteColorSecondary
}
}
a.recycle()
@@ -166,6 +207,16 @@ class ThemeManager private constructor(
} catch (e: Exception) {
e.printStackTrace()
}
remoteColorPrimary?.let {
remoteColorPrimary = ThemeValue.SolidColor(it.color or Color.BLACK)
}
remoteColorPrimaryVariant?.let {
remoteColorPrimaryVariant = ThemeValue.SolidColor(it.color or Color.BLACK)
}
remoteColorSecondary?.let {
remoteColorSecondary = ThemeValue.SolidColor(it.color or Color.BLACK)
}
notifyCallbackReceivers()
}
/**

View File

@@ -44,13 +44,25 @@ sealed class ThemeValue {
return super.toString()
}
fun complimentaryTextColor(): SolidColor {
return if (Color.red(color) * 0.299 + Color.green(color) * 0.587 +
fun complimentaryTextColor(isAlt: Boolean = false): SolidColor {
val ret = if (Color.red(color) * 0.299 + Color.green(color) * 0.587 +
Color.blue(color) * 0.114 > 186) {
SolidColor(Color.BLACK)
Color.BLACK
} else {
SolidColor(Color.WHITE)
Color.WHITE
}
return SolidColor(
if (isAlt) {
Color.argb(
0x60,
Color.red(ret),
Color.green(ret),
Color.blue(ret)
)
} else {
ret
}
)
}
}

View File

@@ -90,7 +90,7 @@ class SettingsMainActivity : AppCompatActivity(),
R.id.settings__navigation__home -> {
supportActionBar?.title = String.format(
resources.getString(R.string.settings__home__title),
resources.getString(R.string.app_name)
resources.getString(R.string.floris_app_name)
)
loadFragment(HomeFragment())
true

View File

@@ -16,7 +16,10 @@
package dev.patrickgold.florisboard.settings
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import androidx.annotation.IdRes
@@ -24,6 +27,7 @@ import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.view.children
import androidx.core.view.forEach
import com.github.michaelbull.result.onSuccess
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.databinding.ThemeEditorActivityBinding
@@ -41,6 +45,10 @@ import dev.patrickgold.florisboard.settings.components.ThemeAttrView
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
/**
* This class is the main Ui activity for directly editing a theme used by FlorisBoard. It provides
* a base for group and attr views to operate in and also shows a preview of the current changes.
*/
class ThemeEditorActivity : AppCompatActivity() {
private lateinit var binding: ThemeEditorActivityBinding
private lateinit var layoutManager: LayoutManager
@@ -53,9 +61,13 @@ class ThemeEditorActivity : AppCompatActivity() {
private var isSaved: Boolean = false
companion object {
const val RESULT_CODE_THEME_EDIT_SAVED: Int = 0xFBADC1
const val RESULT_CODE_THEME_EDIT_CANCELLED: Int = 0xFBADC2
/** Constant code for a theme saved activity result. */
const val RESULT_CODE_THEME_EDIT_SAVED: Int = 0xFBADC1
/** Constant code for a theme cancelled activity result. */
const val RESULT_CODE_THEME_EDIT_CANCELLED: Int = 0xFBADC2
/** Constant key for passing the reference to the theme to edit. */
const val EXTRA_THEME_REF: String = "theme_ref"
}
@@ -86,16 +98,32 @@ class ThemeEditorActivity : AppCompatActivity() {
buildUi()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.theme_editor_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
onBackPressed()
true
}
R.id.settings__help -> {
val browserIntent = Intent(
Intent.ACTION_VIEW,
Uri.parse(resources.getString(R.string.florisboard__theme_editor_wiki_url))
)
startActivity(browserIntent)
true
}
else -> super.onOptionsItemSelected(item)
}
}
/**
* Callback function to handle clicks on the buttons in the bottom bar of this activity.
*/
fun onActionClicked(view: View) {
when (view.id) {
R.id.add_group_btn -> addGroup()
@@ -105,20 +133,26 @@ class ThemeEditorActivity : AppCompatActivity() {
if (Theme.validateField(Theme.ValidationField.THEME_LABEL, themeName)) {
val ref = editedThemeRef
if (ref != null) {
themeManager.writeTheme(ref, editedTheme.copy(
label = themeName
))
themeManager.writeTheme(
ref, editedTheme.copy(
label = themeName
)
)
isSaved = true
finish()
}
} else {
binding.themeNameLabel.error = resources.getString(R.string.settings__theme_editor__error_theme_label_empty)
binding.themeNameLabel.error =
resources.getString(R.string.settings__theme_editor__error_theme_label_empty)
binding.themeNameLabel.isErrorEnabled = true
}
}
}
}
/**
* Shows a cancel confirmation dialog when the back key is pressed.
*/
override fun onBackPressed() {
AlertDialog.Builder(this).apply {
setTitle(R.string.assets__action__cancel_confirm_title)
@@ -133,15 +167,28 @@ class ThemeEditorActivity : AppCompatActivity() {
}
}
/**
* Set the result just before this activity finishes according to [isSaved].
*/
override fun finish() {
setResult(if (isSaved) {
RESULT_CODE_THEME_EDIT_SAVED
} else {
RESULT_CODE_THEME_EDIT_CANCELLED
})
setResult(
if (isSaved) {
RESULT_CODE_THEME_EDIT_SAVED
} else {
RESULT_CODE_THEME_EDIT_CANCELLED
}
)
super.finish()
}
/**
* Add a new group view to the Ui with the specified group [name]. Returns a binding to the
* created view class. If [name] is null, this method assumes that a new group should be
* instantiated and will show an add group dialog.
*
* @param name The group name or null for a new group.
* @return The binding to the created group view.
*/
private fun addGroup(name: String? = null): ThemeEditorGroupViewBinding {
val groupView = ThemeEditorGroupViewBinding.inflate(layoutInflater)
groupView.root.themeEditorActivity = this
@@ -154,6 +201,11 @@ class ThemeEditorActivity : AppCompatActivity() {
return groupView
}
/**
* Deletes a view from the current Ui stack. Refreshes the theme preview afterwards.
*
* @param id The id of the group view to remove.
*/
fun deleteGroup(@IdRes id: Int) {
binding.themeAttributes.findViewById<View>(id)?.let {
binding.themeAttributes.removeView(it)
@@ -161,6 +213,84 @@ class ThemeEditorActivity : AppCompatActivity() {
refreshTheme()
}
/**
* This method tries to focus the specified group view (causes the nested scroll view to jump
* to the specified group view).
*
* @param id The id of the group view to focus.
*/
fun focusGroup(@IdRes id: Int) {
binding.themeAttributes.findViewById<View>(id)?.let {
binding.themeAttributes.requestChildFocus(it, it)
}
}
/**
* Checks if the current Ui stack has a group view with [name], excluding the group view
* specified by [id] to prevent the check on the view that initiated the request.
*
* @param id The group view to exclude from the check.
* @param name The group name to check for.
* @return True if the group name exists (except in the group view with [id]), false otherwise.
*/
fun hasGroup(@IdRes id: Int, name: String): Boolean {
if (name.isEmpty()) {
return false
}
binding.themeAttributes.forEach { groupView ->
if (groupView is ThemeAttrGroupView) {
if (groupView.groupName == name && groupView.id != id) {
return true
}
}
}
return false
}
/**
* Sorts the group views alphabetically by the group, with the exception that "window" and
* "keyboard" are always on first and second position if they exist in the current stack.
*/
fun sortGroups() {
val baseMap = mutableMapOf<Int, String>()
for (groupView in binding.themeAttributes.children) {
if (groupView is ThemeAttrGroupView) {
baseMap[groupView.id] = groupView.groupName
}
}
val sortedMap = baseMap.toList().sortedBy { (_, v) -> v }.toMap().toMutableMap()
val groupIds = sortedMap.keys.toMutableList()
val groupNames = sortedMap.values.toMutableList()
listOf(
Pair("keyboard", true),
Pair("window", true),
Pair("extractEditLayout", false),
Pair("extractActionButton", false),
).forEach { (groupName, addFirst) ->
if (groupNames.contains(groupName)) {
val groupId = groupIds[groupNames.indexOf(groupName)]
groupIds.remove(groupId)
groupNames.remove(groupName)
if (addFirst) {
groupIds.add(0, groupId)
groupNames.add(0, groupName)
} else {
groupIds.add(groupId)
groupNames.add(groupName)
}
}
}
for ((n, groupId) in groupIds.withIndex()) {
binding.themeAttributes.findViewById<ThemeAttrGroupView>(groupId)?.let { groupView ->
binding.themeAttributes.removeView(groupView)
binding.themeAttributes.addView(groupView, n)
}
}
}
/**
* Refreshes the cached theme object and applies it to the preview keyboard view.
*/
fun refreshTheme() {
val tempMap = mutableMapOf<String, Map<String, ThemeValue>>()
for (groupView in binding.themeAttributes.children) {
@@ -181,6 +311,9 @@ class ThemeEditorActivity : AppCompatActivity() {
binding.keyboardPreview.onThemeUpdated(editedTheme)
}
/**
* Builds the Ui for the current [editedTheme]. Also sorts the groups afterwards.
*/
private fun buildUi() {
binding.themeNameValue.setText(editedTheme.label)
for ((groupName, groupAttrs) in editedTheme.attributes) {
@@ -191,8 +324,10 @@ class ThemeEditorActivity : AppCompatActivity() {
}
mainScope.launch {
binding.keyboardPreview.computedLayout = layoutManager.fetchComputedLayoutAsync(
KeyboardMode.CHARACTERS, Subtype.DEFAULT, prefs).await()
KeyboardMode.CHARACTERS, Subtype.DEFAULT, prefs
).await()
binding.keyboardPreview.onThemeUpdated(editedTheme)
}
sortGroups()
}
}

View File

@@ -89,6 +89,11 @@ class ThemeManagerActivity : AppCompatActivity() {
)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
binding.fabOptionCreateEmpty.setOnClickListener { onActionClicked(it) }
binding.fabOptionCreateFromSelected.setOnClickListener { onActionClicked(it) }
binding.themeDeleteBtn.setOnClickListener { onActionClicked(it) }
binding.themeEditBtn.setOnClickListener { onActionClicked(it) }
layoutManager = LayoutManager(this).apply {
preloadComputedLayout(KeyboardMode.CHARACTERS, Subtype.DEFAULT, prefs)
}

View File

@@ -23,6 +23,7 @@ import android.view.LayoutInflater
import android.view.View
import android.widget.LinearLayout
import androidx.annotation.IdRes
import androidx.core.view.forEach
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.databinding.ThemeEditorAttrViewBinding
import dev.patrickgold.florisboard.databinding.ThemeEditorGroupDialogBinding
@@ -39,7 +40,7 @@ class ThemeAttrGroupView : LinearLayout {
var groupName: String = ""
set(v) {
field = v
binding.groupName.text = v
binding.groupName.text = Theme.getUiGroupNameString(context, v)
refreshTheme()
}
@@ -78,6 +79,20 @@ class ThemeAttrGroupView : LinearLayout {
refreshTheme()
}
fun hasAttr(@IdRes id: Int, name: String): Boolean {
if (name.isEmpty()) {
return false
}
binding.root.forEach { attrView ->
if (attrView is ThemeAttrView) {
if (attrView.attrName == name && attrView.id != id) {
return true
}
}
}
return false
}
fun refreshTheme() {
themeEditorActivity?.refreshTheme()
}
@@ -114,17 +129,20 @@ class ThemeAttrGroupView : LinearLayout {
dialog = show()
dialog.getButton(AlertDialog.BUTTON_POSITIVE)?.setOnClickListener {
val tempGroupName = dialogView.groupName.text.toString().trim()
if (Theme.validateField(Theme.ValidationField.GROUP_NAME, tempGroupName)) {
val groupUnique = themeEditorActivity?.hasGroup(id, tempGroupName) != true
if (Theme.validateField(Theme.ValidationField.GROUP_NAME, tempGroupName) && groupUnique) {
groupName = tempGroupName
dialog.dismiss()
} else {
dialogView.groupNameLabel.error = resources.getString(when {
!groupUnique -> R.string.settings__theme_editor__error_group_name_already_exists
tempGroupName.isEmpty() -> R.string.settings__theme_editor__error_group_name_empty
else -> R.string.settings__theme_editor__error_group_name
})
dialogView.groupNameLabel.isErrorEnabled = true
}
themeEditorActivity?.sortGroups()
themeEditorActivity?.focusGroup(id)
}
}
}

View File

@@ -19,6 +19,7 @@ package dev.patrickgold.florisboard.settings.components
import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
import android.util.AttributeSet
import android.view.LayoutInflater
@@ -52,7 +53,7 @@ class ThemeAttrView : LinearLayout {
var attrName: String = ""
set(v) {
field = v
binding.title.text = v
binding.title.text = Theme.getUiAttrNameString(context, v)
themeAttrGroupView?.refreshTheme()
}
var attrValue: ThemeValue = ThemeValue.Other("")
@@ -137,7 +138,7 @@ class ThemeAttrView : LinearLayout {
ThemeValue.UI_STRING_MAP.keys.indexOf(ThemeValue.SolidColor::class.simpleName!!)
.coerceAtLeast(0)
)
configureDialogUi(dialogView, ThemeValue.SolidColor(0))
configureDialogUi(dialogView, ThemeValue.SolidColor(Color.BLACK))
}
var userTouched = false
dialogView.attrType.setOnTouchListener { _, _ ->
@@ -159,7 +160,7 @@ class ThemeAttrView : LinearLayout {
ThemeValue.Reference("", "")
}
ThemeValue.SolidColor::class.simpleName -> {
ThemeValue.SolidColor(0)
ThemeValue.SolidColor(Color.BLACK)
}
ThemeValue.LinearGradient::class.simpleName -> {
ThemeValue.LinearGradient(0)
@@ -208,12 +209,14 @@ class ThemeAttrView : LinearLayout {
dialog = show()
dialog.getButton(AlertDialog.BUTTON_POSITIVE)?.setOnClickListener {
val tempAttrName = dialogView.attrName.text.toString().trim()
if (Theme.validateField(Theme.ValidationField.ATTR_NAME, tempAttrName)) {
val attrUnique = themeAttrGroupView?.hasAttr(id, tempAttrName) != true
if (Theme.validateField(Theme.ValidationField.ATTR_NAME, tempAttrName) && attrUnique) {
attrName = tempAttrName
attrValue = getThemeValueFromDialogUi(dialogView)
dialog.dismiss()
} else {
dialogView.attrNameLabel.error = resources.getString(when {
!attrUnique -> R.string.settings__theme_editor__error_attr_name_already_exists
tempAttrName.isEmpty() -> R.string.settings__theme_editor__error_attr_name_empty
else -> R.string.settings__theme_editor__error_attr_name
})
@@ -239,6 +242,8 @@ class ThemeAttrView : LinearLayout {
is ThemeValue.SolidColor -> {
dialogView.attrValueSolidColor.isVisible = true
dialogView.attrValueSolidColorInt.text = value.toString()
dialogView.attrValueSolidColorEditBtn.background.setTint(value.color)
dialogView.attrValueSolidColorEditBtn.drawable.setTint(value.complimentaryTextColor().color)
dialogView.attrValueSolidColorEditBtn.setOnClickListener {
// Method on how to create a dialog which does not have a listener in the
// Activity taken from the original source code for the PreferenceCompat class.
@@ -249,7 +254,9 @@ class ThemeAttrView : LinearLayout {
}.create()
colorPickerDialog.setColorPickerDialogListener(object : ColorPickerDialogListener {
override fun onColorSelected(dialogId: Int, color: Int) {
dialogView.attrValueSolidColorInt.text = ThemeValue.SolidColor(color).toString()
val tempSolidColor = ThemeValue.SolidColor(color)
dialogView.attrValueSolidColorInt.text = tempSolidColor.toString()
configureDialogUi(dialogView, tempSolidColor)
}
override fun onDialogDismissed(dialogId: Int) {

View File

@@ -18,6 +18,7 @@ package dev.patrickgold.florisboard.settings.fragments
import android.content.SharedPreferences
import android.os.Bundle
import androidx.preference.ListPreference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager
import dev.patrickgold.florisboard.R
@@ -27,6 +28,7 @@ import dev.patrickgold.florisboard.settings.components.DialogSeekBarPreference
class KeyboardFragment : PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {
private var heightFactorCustom: DialogSeekBarPreference? = null
private var utilityKeyAction: ListPreference? = null
private var sharedPrefs: SharedPreferences? = null
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@@ -34,7 +36,9 @@ class KeyboardFragment : PreferenceFragmentCompat(),
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context)
heightFactorCustom = findPreference(PrefHelper.Keyboard.HEIGHT_FACTOR_CUSTOM)
utilityKeyAction = findPreference(PrefHelper.Keyboard.UTILITY_KEY_ACTION)
onSharedPreferenceChanged(null, PrefHelper.Keyboard.HEIGHT_FACTOR)
onSharedPreferenceChanged(null, PrefHelper.Keyboard.UTILITY_KEY_ENABLED)
}
override fun onResume() {
@@ -50,6 +54,8 @@ class KeyboardFragment : PreferenceFragmentCompat(),
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
if (key == PrefHelper.Keyboard.HEIGHT_FACTOR) {
heightFactorCustom?.isVisible = sharedPrefs?.getString(key, "") == "custom"
} else if (key == PrefHelper.Keyboard.UTILITY_KEY_ENABLED) {
utilityKeyAction?.isVisible = sharedPrefs?.getBoolean(key, false) == true
}
}
}

View File

@@ -1,6 +1,5 @@
package dev.patrickgold.florisboard.util
import android.app.Activity
import android.content.Context
import android.content.ContextWrapper
import android.content.res.ColorStateList
@@ -11,6 +10,7 @@ import android.widget.Button
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.children
import kotlin.reflect.KClass
fun getColorFromAttr(
context: Context,
@@ -73,6 +73,18 @@ fun refreshLayoutOf(view: View?) {
}
}
@Suppress("UNCHECKED_CAST")
fun <T : View> ViewGroup.findViewWithType(type: KClass<T>): T? {
for (child in this.children) {
if (type.isInstance(child)) {
return child as T
} else if (child is ViewGroup) {
child.findViewWithType(type)?.let { return it }
}
}
return null
}
/**
* Context extension function to get the Activity from the Context. Originally written by Vlad as
* an SO answer. Modified to return an AppCompatActivity, as FlorisBoard relies on some compat

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="#FFFFFFFF"/>
<item android:color="#A2FFFFFF"/>
</selector>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:tintMode="multiply">
<solid android:color="@android:color/transparent"/>
<corners android:radius="@dimen/landscapeInputUi_editText_cornerRadius"/>
<stroke android:width="@dimen/landscapeInputUi_editText_borderWidth" android:color="@android:color/white"/>
</shape>

View File

@@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?android:attr/textColorPrimary" android:pathData="M11,18h2v-2h-2v2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM12,6c-2.21,0 -4,1.79 -4,4h2c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,2 -3,1.75 -3,5h2c0,-2.25 3,-2.5 3,-5 0,-2.21 -1.79,-4 -4,-4z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="?android:attr/textColorPrimary" android:pathData="M10,9h4L14,6h3l-5,-5 -5,5h3v3zM9,10L6,10L6,7l-5,5 5,5v-3h3v-4zM23,12l-5,-5v3h-3v4h3v3l5,-5zM14,15h-4v3L7,18l5,5 5,-5h-3v-3z"/>
</vector>

View File

@@ -30,7 +30,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:text="@string/floris_app_name"
android:textSize="24sp"
android:textStyle="bold"/>

View File

@@ -81,9 +81,4 @@
</dev.patrickgold.florisboard.ime.core.InputView>
<dev.patrickgold.florisboard.ime.popup.PopupLayerView
android:id="@+id/popup_layer"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</dev.patrickgold.florisboard.ime.core.InputWindowView>

View File

@@ -27,8 +27,9 @@
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?colorPrimary"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
app:itemIconTint="@drawable/bottom_nav_bar_color_selector"
app:itemTextColor="@drawable/bottom_nav_bar_color_selector"
app:labelVisibilityMode="labeled"
app:menu="@menu/settings_navigation" />
</LinearLayout>

View File

@@ -110,12 +110,11 @@
android:contentDescription="@string/smartbar__quick_action__one_handed_mode"
android:src="@drawable/ic_smartphone"/>
<!-- TODO: find better icon for editing -->
<dev.patrickgold.florisboard.ime.text.smartbar.SmartbarQuickActionButton
android:id="@+id/quick_action_switch_to_editing_context"
style="@style/SmartbarQuickAction"
android:contentDescription="@string/smartbar__quick_action__switch_to_editing_context"
android:src="@drawable/ic_format_italic"/>
android:src="@drawable/ic_open_with"/>
</LinearLayout>

View File

@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/text_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:orientation="vertical"
android:alpha="0.9">
<include layout="@layout/smartbar"/>
@@ -15,21 +17,11 @@
android:layout_height="wrap_content"
android:measureAllChildren="true">
<LinearLayout
<dev.patrickgold.florisboard.ime.text.keyboard.KeyboardView
android:id="@+id/keyboard_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<!-- TODO: make a good looking keyboard preview -->
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:text="Loading keyboard, please wait..."/>
</LinearLayout>
app:isLoadingPlaceholderKeyboard="true"/>
<include layout="@layout/editing_layout"/>

View File

@@ -58,7 +58,10 @@
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/theme_name_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textFilter"
android:imeOptions="flagForceAscii|flagNoExtractUi"/>
</com.google.android.material.textfield.TextInputLayout>

View File

@@ -22,7 +22,10 @@
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/attr_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textFilter"
android:imeOptions="flagForceAscii|flagNoExtractUi"/>
</com.google.android.material.textfield.TextInputLayout>
@@ -48,7 +51,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
android:gravity="center_vertical"
android:baselineAligned="false">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
@@ -64,7 +68,10 @@
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/attr_value_reference_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textFilter"
android:imeOptions="flagForceAscii|flagNoExtractUi"/>
</com.google.android.material.textfield.TextInputLayout>
@@ -82,7 +89,10 @@
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/attr_value_reference_attr"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textFilter"
android:imeOptions="flagForceAscii|flagNoExtractUi"/>
</com.google.android.material.textfield.TextInputLayout>
@@ -108,8 +118,9 @@
<ImageButton
android:id="@+id/attr_value_solid_color_edit_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/shape_rect_rounded"
android:src="@drawable/ic_edit"
android:contentDescription="@string/assets__action__edit"/>
@@ -157,7 +168,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
android:gravity="center_vertical"
android:baselineAligned="false">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
@@ -173,7 +185,10 @@
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/attr_value_other_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textFilter"
android:imeOptions="flagForceAscii|flagNoExtractUi"/>
</com.google.android.material.textfield.TextInputLayout>

View File

@@ -21,7 +21,10 @@
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/group_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textFilter"
android:imeOptions="flagForceAscii|flagNoExtractUi"/>
</com.google.android.material.textfield.TextInputLayout>

View File

@@ -126,8 +126,7 @@
android:textColor="?android:textColorPrimary"
android:drawableStart="@drawable/ic_delete"
android:drawablePadding="8dp"
android:drawableTint="?colorAccent"
android:onClick="onActionClicked"/>
android:drawableTint="?colorAccent"/>
<Button
android:id="@+id/theme_edit_btn"
@@ -140,8 +139,7 @@
android:textColor="?android:textColorPrimary"
android:drawableStart="@drawable/ic_edit"
android:drawablePadding="8dp"
android:drawableTint="?colorAccent"
android:onClick="onActionClicked"/>
android:drawableTint="?colorAccent"/>
</LinearLayout>
@@ -183,24 +181,21 @@
android:layout_height="wrap_content"
app:fab_color="?colorPrimaryDark"
app:fab_icon="@drawable/ic_file_blank"
app:label_text="@string/settings__theme_manager__create_empty"
android:onClick="onActionClicked"/>
app:label_text="@string/settings__theme_manager__create_empty"/>
<com.nambimobile.widgets.efab.FabOption
android:id="@+id/fab_option_create_from_selected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_color="?colorPrimaryDark"
app:fab_icon="@drawable/ic_file"
app:label_text="@string/settings__theme_manager__create_from_selected"
android:onClick="onActionClicked"/>
app:label_text="@string/settings__theme_manager__create_from_selected"/>
<!--<com.nambimobile.widgets.efab.FabOption
android:id="@+id/fab_option_import"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_color="?colorPrimaryDark"
app:fab_icon="@drawable/ic_input"
app:label_text="@string/assets__action__import"
android:onClick="onActionClicked"/>-->
app:label_text="@string/assets__action__import"/>-->
</com.nambimobile.widgets.efab.ExpandableFabLayout>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/settings__help"
android:icon="@drawable/ic_help_outline"
android:title="@string/settings__help"
app:showAsAction="always"/>
</menu>

View File

@@ -40,6 +40,7 @@
<string name="settings__title" comment="Title of Settings">الاعدادات</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">المزيد من الخيارات</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">المساعدة والملاحظات</string>
<string name="settings__help" comment="General label for help buttons in Settings">مساعدة</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">الصفحة الرئيسية</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">لوحة المفاتيح</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">الكتابة</string>
@@ -64,37 +65,51 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">هذا النوع الفرعي موجود مسبقا!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">مظهر لوحة المفاتيح</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">غير محدد</string>
<string name="settings__theme__background" comment="General label for a background preference">لون الخلفية</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">لون الخلفية عند التنشيط</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">لون الخلفية عند الضغط</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">لون الواجهة</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">لون الواجهة (البديل)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">لون الواجهة (وضع الحروف الكبيرة)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">اختر اللون</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">وضع النسق</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">دائما يومي</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">دائما ليلي</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">اتبّاع النظام</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">اتبّاع الوقت</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">وقت الشروق</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">وقت الغروب</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">نسق يومي</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">نسق ليلي</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">النسق المحدد</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">تكييف الألوان مع التطبيق</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">تتكيف ألوان النسق مع تلك الموجودة في التطبيق الحالي ، إذا كان التطبيق المستهدف يدعم ذلك.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">أصول تطبيق FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">الذاكرة الداخلية</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">مزود خارجي</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">مدير النسق (يومي)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">مدير النسق (ليلي)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">إنشاء نسق فارغ جديد</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">إنشاء من النسق المحدد</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">مخصص (على أساس %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">نسق جديد</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">تحرير النسق</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">اسم</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">نوع</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">إضافة مجموعة</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">تحرير المجموعة</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">اضافة الخاصيه</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">مجموعة</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">تبديل</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">الحالة</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">أخرى</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">النص</string>
<string name="settings__theme__group_window" comment="Theme group label">النافذة والنظام</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">لوحة المفاتيح</string>
<string name="settings__theme__group_key" comment="Theme group label">المفتاح</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">مفتاح الإدخال</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">نافذة المفتاح المنبثقة</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">مفتاح التحويل</string>
<string name="settings__theme__group_media" comment="Theme group label">سياق الوسائط</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">اليد الواحدة</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">زر اليد الواحدة</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">الوضع الخاص</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">اليد الواحدة</string>
<string name="settings__theme__group_popup" comment="Theme group label">نافذة منبثقة</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">الوضع الخاص</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">الشريط الذكـي</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">زر الشريط الذكي</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">اللون الأساسي</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">يتم تطبيقه على تموج علامة تبويب الوسائط الرئيسية وإبراز الاختيار</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">اللون الأساسي (داكن)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">غير مستخدم حاليا ، محجوز للتنفيذ المستقبلي</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">لون التمييز</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">يتم تطبيقه على علامة تبويب الإيموجي</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">لون شريط التصفّح</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">خلفية شريط التصفّح.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">واجهة شريط التصفّح</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">ضبط على التشغيل للواجهة الداكنة أو على إيقاف التشغيل للواجهة الفاتحة.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">إطار المفتاح</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">اضبط على التفعيل لإظهار الإطار أو على الإيقاف لإخفائه</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">لون الخلفية</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">لون الواجهة</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">عرض الحدود</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">اللون الأساسي (داكن)</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">لون النص</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">تفضيلات لوحة المفاتيح</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">المفاتيح</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">صف الأعداد</string>
@@ -105,6 +120,8 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">مفعّل (الأولوية للتلميح)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">مفعّل (الأولوية للحروف الإضافية)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">مفعّل (تحديد الأولويات الذكي)</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">تغيير اللغة</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">تبديل تطبيق لوحة المفاتيح</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">مضاعف حجم الخط (عمودي)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">مضاعف حجم الخط (أفقي)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">نظام التخطيط</string>
@@ -122,7 +139,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">طويل جدا</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">مخصص</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">قيمة ارتفاع لوحة المفاتيح المخصصة</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">الإزاحة السفلية (للشاشات المقوسة)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">ضغط المفتاح</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">الصوت عند ضغط المفتاح</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">حجم الصوت عند ضغط المفتاح</string>
@@ -154,12 +170,12 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">أكتب كلمة بتمرير إصبعك عبر حروفها</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] إظهار آثار التمرير</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">سوف يختفي بعد كل كلمة</string>
<string name="pref__gestures__general_title" comment="Preference group title">الإيماءات</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">بدون إجراء</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">حذف الحروف بدقة</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">حذف الكلمة الحالية</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">حذف الكلمات بدقة</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">إخفاء لوحة المفاتيح</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">إدراج مسافة</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">تحريك المؤشر إلى الأعلى</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">تحريك المؤشر إلى الأسفل</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">تحريك المؤشر إلى اليسار</string>
@@ -203,6 +219,21 @@
<string name="about__view_source_code" comment="Label of View source code button in About">مصدر التعليمات البرمجية</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">تراخيص البرامج مفتوحة المصدر</string>
<!-- Assets strings -->
<string name="assets__file__name">الاسم</string>
<string name="assets__file__source">المصدر</string>
<string name="assets__action__add">إضافة</string>
<string name="assets__action__cancel">إلغاء</string>
<string name="assets__action__cancel_confirm_title">تأكيد الإلغاء</string>
<string name="assets__action__delete">حذف</string>
<string name="assets__action__delete_confirm_title">تأكيد الحذف</string>
<string name="assets__action__delete_confirm_message">هل أنت متأكد من حذف \"%s\"؟ لا يمكن التراجع عن هذا الإجراء.</string>
<string name="assets__action__edit">تعديل</string>
<string name="assets__action__export">تصدير</string>
<string name="assets__action__import">إستيراد</string>
<string name="assets__action__no">كلا</string>
<string name="assets__action__save">حفظ</string>
<string name="assets__action__yes">موافق</string>
<string name="assets__error__invalid">غير صحيح</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">الإعداد</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">السابق</string>

View File

@@ -0,0 +1,323 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FlorisBoard</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Пауза</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Изчакване</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Икона с три точки. Ако е видима, означава, че при по-продължително натискане могат да се използват повече букви.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">Затваряне на режим с една ръка.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">Преместване на клавиатурата вляво.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">Преместване на клавиатурата вдясно.</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Поверителен режим</string>
<!--
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">Емоджита</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Емотикони</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">Каомоджи</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion" comment="Emoji category name">Усмивки и емоции</string>
<string name="emoji__category__people_body" comment="Emoji category name">Хора и тяло</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Животни и природа</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Храни и напитки</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Пътуване и забележителности</string>
<string name="emoji__category__activities" comment="Emoji category name">Дейности</string>
<string name="emoji__category__objects" comment="Emoji category name">Обекти</string>
<string name="emoji__category__symbols" comment="Emoji category name">Символи</string>
<string name="emoji__category__flags" comment="Emoji category name">Знамена</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Превключване на бързо действие. При натискане, превключва между предложенията за думи и бутоните за бързо действие.</string>
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">Изход от панела за редактиране на текст.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Превключване на състоянието на режима с една ръка.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Отваряне на настройките.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Преминаване към панела за редактиране на текст.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Преминаване към изглед за въвеждане на медия.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Бутон за отмяна, който връща последното действие</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Бутон за повтаряне, който връща последната отмяна</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">Ако се вижда, означава, че е активен поверителен режим. При щракване показва информация за поверителния режим.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Настройки</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Още настройки</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Помощ и обратна връзка</string>
<string name="settings__help" comment="General label for help buttons in Settings">Помощ</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Начало</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Клавиатура</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Въвеждане</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Тема</string>
<string name="settings__navigation__gestures" comment="Long-press hint of bottom nav item Gestures in Settings">Жестове</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">По подразбиране</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">По подразбиране от системата</string>
<string name="settings__home__title" comment="Title of the Home fragment">Добре дошли във %s</string>
<string name="settings__home__ime_not_enabled" comment="Error message shown in Home fragment when FlorisBoard is not enabled in the system">FlorisBoard не е активен в системата и по този начин не може да бъде достъпен като метод за въвеждане. Щракнете тук, за да разрешите този проблем.</string>
<string name="settings__home__ime_not_selected" comment="Warning message shown in Home fragment when FlorisBoard is not selected as the default keyboard">FlorisBoard не е избран като метод за въвеждане по подразбиране. Щракнете тук, за да разрешите този проблем.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Благодарим ви, че изпробвате приложението FlorisBoard! Този проект все още е в алфа версия и поради това има липсващи възможности. Ако откриете грешки или искате да направите предложение, моля, проверете хранилището в GitHub и подайте сигнал за проблем. Така ще допринесете за подобряване на FlorisBoard за всички потребители!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Езици и клавиатурни подредби</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Изглежда, че не сте настроили подтипове. Като резервен вариант ще се използва подтипът English/QWERTY!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Добавяне</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Добавяне на подтип</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">Прилагане</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">Отказ</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">Изтриване</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Редактиране на подтип</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">Език</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Клавиатурна подредба</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Този подтип вече съществува!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Тема на клавиатурата</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Недефинирано</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Режим на тема</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Винаги ден</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Винаги нощ</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Според системата</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Според часа</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Време на изгрев</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Време на залез</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Дневна тема</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Нощна тема</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Избрана тема</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Адаптиране на цветовете спрямо приложението</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Цветовете на темата се адаптират спрямо текущото приложение, ако то го поддържа.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">Активи на FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Вътрешно хранилище</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Външен доставчик</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Управление на теми (ден)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Управление на теми (нощ)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Създаване на празна тема</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Създаване от избрана тема</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Персонализирано (базирано на %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Нова тема</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Редактиране на тема</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Име</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Вид</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Добавяне на група</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Редактиране на група</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Добавяне на атрибут</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Редактиране на атрибут</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Референция</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Група</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Атрибут</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Плътен цвят</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Линеен градиент</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Радиален градиент</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Превключване</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Състояние</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Други</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Текст</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Преглед на стойността на темата</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Моля, въведете име на темата.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Моля, въведете име на група, която съдържа само букви (aя и/или AЯ), двоеточия (:) за подгрупиране или допълнително числа (09), тилда (~) и подчертаване (_) за етикета на клавиша.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Моля, въведете име на група.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Това име на група вече съществува в тази тема. Моля, посочете друго.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Моля, въведете име на атрибут, което съдържа само буквите a-я и/или A-Я.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Моля, въведете име на атрибут.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Това име на атрибут вече съществува в тази група. Моля, посочете друго.</string>
<string name="settings__theme__group_window" comment="Theme group label">Прозорец и система</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Клавиатура</string>
<string name="settings__theme__group_key" comment="Theme group label">Клавиши</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Клавиш (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Медиен контекст</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">За една ръка</string>
<string name="settings__theme__group_popup" comment="Theme group label">Изскачащ прозорец</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Поверителен режим</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Умна лента</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Бутон за умна лента</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Клавиатура на цял екран (пейзаж)</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Бутон към клавиатура на цял екран (пейзаж)</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Персонализирана група (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Цвят на фона</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Цвят на фона (активен)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Цвят на фона (натиснат)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Цвят на текста</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Цвят на текста (алтернативен)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Цвят на текста (натиснат)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Показване на кант</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Основен цвят</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Основен цвят (тъмен)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Акцентиращ цвят</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Цвят на лентата за навигация</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Лента за навигация с тъмен текст</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Полупрозрачен цвят</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Цвят на текста</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Персонализиран атрибут (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Предпочитания за клавиатурата</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Клавиши</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Ред с цифри</string>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Показване на ред с цифри над първия ред</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Подсказан ред с цифри</string>
<string name="pref__keyboard__hinted_symbols_mode__label" comment="Preference title">Подсказани символи</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Изключено</string>
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Включено (подсказка с приоритет)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Включено (акцент с приоритет)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Включено (умен приоритет)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Показване на помощен клавиш</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Показва помощен клавиш до бутона за интервал</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Действие на помощния клавиш</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Преминаване към емоджита</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Промяна на език</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Промяна на приложението за клавиатура</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Динамично: Преминаване към емоджита/промяна на език</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Множител на размера на шрифта (портрет)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Множител на размера на шрифта (пейзаж)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Оформление</string>
<string name="pref__keyboard__one_handed_mode__label" comment="Preference value">Режим за работа с една ръка</string>
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Изключено</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Режим за дясна ръка</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Режим за лява ръка</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Клавиатура на цял екран (пейзаж)</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Никога да не се показва</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Винаги да се показва</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Да се показва динамично</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Височина на клавиатурата</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Много ниска</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Ниска</string>
<string name="pref__keyboard__height_factor__mid_short" comment="Preference value">Среднониска</string>
<string name="pref__keyboard__height_factor__normal" comment="Preference value">Нормална</string>
<string name="pref__keyboard__height_factor__mid_tall" comment="Preference value">Средновисока</string>
<string name="pref__keyboard__height_factor__tall" comment="Preference value">Висока</string>
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Много висока</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Персонализирана</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Персонализирана стойност за височина на клавиатурата</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Отстъп отдолу (портрет)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Отстъп отдолу (пейзаж)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Натискане на клавиш</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Звук при натискане на клавиш</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Сила на звук при натискане на клавиш</string>
<string name="pref__keyboard__vibration_enabled__label" comment="Preference title">Вибрация при натискане на клавиш</string>
<string name="pref__keyboard__vibration_strength__label" comment="Preference title">Сила на вибрация при натискане на клавиш</string>
<string name="pref__keyboard__popup_visible__label" comment="Preference title">Видимост на изскачащ прозорец</string>
<string name="pref__keyboard__popup_visible__summary" comment="Preference summary">Показване на изскачащ прозорец при натискане на клавиш</string>
<string name="pref__keyboard__long_press_delay__label" comment="Preference title">Закъснение при продължително натискане на клавиш</string>
<string name="settings__typing__title" comment="Title of Typing experience fragment">Изживяване от писане</string>
<string name="pref__smartbar__enabled__label" comment="Preference title">Показване на умна лента</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Ще се покаже отгоре на клавиатурата</string>
<string name="pref__suggestion__title" comment="Preference group title">Предложения</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Показване на предложения, при писане</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Ще се покаже в умната лента</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Предложения от съдържанието на буфера</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Предлагане да се постави съдържанието на клипборда, ако е копирано преди това</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Предложения за следваща дума</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Използване на предишните думи за генериране на предложения</string>
<string name="pref__correction__title" comment="Preference group title">Корекции</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Автоматични главни букви</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Думите се изписват с главни букви въз основа на текущия контекст на въвеждане</string>
<string name="pref__correction__remember_caps_lock_state__label" comment="Preference title">Запомняне на състоянието на клавиш Caps Lock</string>
<string name="pref__correction__remember_caps_lock_state__summary" comment="Preference summary">Клавишът Caps Lock да остане включен при преместване в друго текстово поле</string>
<string name="pref__correction__double_space_period__label" comment="Preference title">Точка при двоен интервал</string>
<string name="pref__correction__double_space_period__summary" comment="Preference summary">Двукратното докосване на интервала вмъква точка, последвана от интервал</string>
<string name="settings__gestures__title" comment="Title of Gestures fragment">Жестове и писане чрез плъзгане</string>
<string name="pref__glide__title" comment="Preference group title">Писане чрез плъзгане</string>
<string name="pref__glide__enabled__label" comment="Preference title">[NYI] Въвеждане чрез плъзгане</string>
<string name="pref__glide__enabled__summary" comment="Preference summary">Въвеждане на дума чрез плъзгане на пръст през буквите ѝ</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Показване на следа от плъзгане</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Ще изчезва след въведена дума</string>
<string name="pref__gestures__general_title" comment="Preference group title">Основни жестове</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Жестове с клавиша за интервал</string>
<string name="pref__gestures__other_title" comment="Preference group title">Други жестове / праг на жеста</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Без действие</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Прецизно изтриване на символи</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Изтриване на текущата дума</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Точно изтриване на думи</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Скриване на клавиатура</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Вмъкване на интервал</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Преместване на курсора нагоре</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Преместване на курсора надолу</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Преместване на курсора наляво</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Преместване на курсора надясно</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Преместване на курсора в началото на реда</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Преместване на курсора в края на реда</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Shift</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Показване на варианти от методи за въвеждане</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Преминаване към предишна клавиатура</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Преминаване към предишен подтип</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Преминаване към следващ подтип</string>
<string name="pref__gestures__swipe_up__label" comment="Preference title">Плъзгане нагоре</string>
<string name="pref__gestures__swipe_down__label" comment="Preference title">Плъзгане надолу</string>
<string name="pref__gestures__swipe_left__label" comment="Preference title">Плъзгане наляво</string>
<string name="pref__gestures__swipe_right__label" comment="Preference title">Плъзгане надясно</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Плъзгане върху клавиш за интервал нагоре</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Плъзгане върху клавиш за интервал наляво</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Плъзгане върху клавиш за интервал надясно</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Продължително натискане на клавиш за интервал</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Плъзгане върху клавиш за изтриване наляво</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Праг за скоростта на плъзгане</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Много бавно</string>
<string name="pref__gestures__swipe_velocity_threshold__slow" comment="Preference value for swipe velocity threshold">Бавно</string>
<string name="pref__gestures__swipe_velocity_threshold__normal" comment="Preference value for swipe velocity threshold">Нормално</string>
<string name="pref__gestures__swipe_velocity_threshold__fast" comment="Preference value for swipe velocity threshold">Бързо</string>
<string name="pref__gestures__swipe_velocity_threshold__very_fast" comment="Preference value for swipe velocity threshold">Много бързо</string>
<string name="pref__gestures__swipe_distance_threshold__label" comment="Preference title">Минимално разстояние на плъзгане</string>
<string name="pref__gestures__swipe_distance_threshold__very_short" comment="Preference value for swipe distance threshold">Много кратко</string>
<string name="pref__gestures__swipe_distance_threshold__short" comment="Preference value for swipe distance threshold">Кратко</string>
<string name="pref__gestures__swipe_distance_threshold__normal" comment="Preference value for swipe distance threshold">Нормално</string>
<string name="pref__gestures__swipe_distance_threshold__long" comment="Preference value for swipe distance threshold">Дълго</string>
<string name="pref__gestures__swipe_distance_threshold__very_long" comment="Preference value for swipe distance threshold">Много дълго</string>
<string name="settings__advanced__title" comment="Title of Advanced settings activity">Разширени</string>
<string name="pref__advanced__settings_theme__label" comment="Label of Settings theme preference in Advanced">Тема на настройките</string>
<string name="pref__advanced__settings_theme__light" comment="Possible value of Settings theme preference in Advanced">Светла</string>
<string name="pref__advanced__settings_theme__dark" comment="Possible value of Settings theme preference in Advanced">Тъмна</string>
<string name="pref__advanced__show_app_icon__label" comment="Label of Show app icon preference in Advanced">Показване на иконата на приложението в стартовия панел</string>
<string name="pref__advanced__force_private_mode__label" comment="Label of Force private mode preference in Advanced">Принуждаване на поверителен режим</string>
<string name="pref__advanced__force_private_mode__summary" comment="Summary of Force private mode preference in Advanced">Ще изключи всички функции, които трябва временно да работят с вашите входящи данни</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">Относно</string>
<string name="about__app_icon_content_description" comment="Content description of app icon in About">Икона на приложението FlorisBoard</string>
<string name="about__view_licenses" comment="Label of View licenses button in About">Лицензи с отворен код</string>
<string name="about__view_privacy_policy" comment="Label of View privacy policy button in About">Политика за поверителност</string>
<string name="about__view_source_code" comment="Label of View source code button in About">Изходен код</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Лицензи с отворен код</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">Автор</item>
<item quantity="other">Автори</item>
</plurals>
<string name="assets__file__name">Име</string>
<string name="assets__file__source">Източник</string>
<string name="assets__action__add">Добавяне</string>
<string name="assets__action__cancel">Отказ</string>
<string name="assets__action__cancel_confirm_title">Потвърждаване на отказ</string>
<string name="assets__action__cancel_confirm_message">Наистина ли искате да отхвърлите всички незапазени промени? Това действие не може да бъде отменено, след като бъде изпълнено.</string>
<string name="assets__action__delete">Изтриване</string>
<string name="assets__action__delete_confirm_title">Потвърждаване на изтриване</string>
<string name="assets__action__delete_confirm_message">Наистина ли искате да изтриете „%s“? Това действие не може да бъде отменено, след като бъде изпълнено.</string>
<string name="assets__action__edit">Редактиране</string>
<string name="assets__action__export">Изнасяне</string>
<string name="assets__action__import">Внасяне</string>
<string name="assets__action__no">Не</string>
<string name="assets__action__save">Запазване</string>
<string name="assets__action__yes">Да</string>
<string name="assets__error__invalid">Невалидно</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Настройка</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Пред.</string>
<string name="setup__cancel_button" comment="Label of Cancel button in Setup">Отказ</string>
<string name="setup__next_button" comment="Label of Next button in Setup (try to find a short translation due to limited space in UI)">Напред</string>
<string name="setup__finish_button" comment="Label of Finish button in Setup">Край</string>
<string name="setup__ok_button" comment="Label of OK button in Setup">Добре</string>
<string name="setup__welcome__title" comment="Title of Welcome fragment in Setup">Добре дошли!</string>
<string name="setup__welcome__intro" comment="Paragraph in Welcome fragment in Setup">Благодарим ви, че изпробвате приложението FlorisBoard! Преди да можете да го използвате, трябва да направите обичайните неща, за да го активирате в системните настройки, да настроите предпочитания език/подредба и т.н… Но без притеснения - съветникът за настройка ще ви преведе!</string>
<string name="setup__welcome__privacy" comment="Paragraph in Welcome fragment in Setup">FlorisBoard зачита изцяло вашата поверителност и не събира никакви потребителски данни. За повече информация вижте:</string>
<string name="setup__welcome__trust" comment="Paragraph in Welcome fragment in Setup">Изходният код на FlorisBoard е публично достъпен за всеки, така че можете лесно да прегледате това, което FlorisBoard прави зад кулисите. Вижте препратката към хранилището по-долу.</string>
<string name="setup__welcome__contribute" comment="Paragraph in Welcome fragment in Setup">Последно преди да започнете настройката - ако се натъкнете на дефекти/сривове/проблеми с FlorisBoard или имате заявка за функция - преминете към хранилището на GitHub, препратката е по-долу, и подайте сигнал за проблем. Така ще допринесете за подобряване на FlorisBoard за всички потребители!</string>
<string name="setup__welcome__outro" comment="Paragraph in Welcome fragment in Setup">За да стартирате настройката, щракнете върху <i>НАПРЕД</i>.</string>
<string name="setup__enable_ime__title" comment="Title of Enable IME fragment in Setup">Включете FlorisBoard</string>
<string name="setup__enable_ime__text_before_enabled" comment="Description of state in Enable IME fragment before user enabled">Android изисква всяка персонализирана клавиатура да бъде активирана ръчно, преди да можете да я използвате. Щракнете върху бутона по-долу, за да отидете при настройките за <i>Език и въвеждане</i>, след това не забравяйте да поставите отметка на \'<i>FlorisBoard</i> \'.</string>
<string name="setup__enable_ime__text_after_enabled" comment="Description of state in Enable IME fragment after user enabled">FlorisBoard е успешно активиран. За да продължите, щракнете върху <i>НАПРЕД</i>!</string>
<string name="setup__enable_ime__text_button_language_and_input" comment="Label of language and input button in Enable IME fragment">Отваряне на настройките за Език &amp; Въвеждане</string>
<string name="setup__make_default__title" comment="Title of Make IME default fragment in Setup">Направете FlorisBoard по подразбиране</string>
<string name="setup__make_default__text_before_switch" comment="Description of state in Make IME default fragment before user switched">FlorisBoard вече е активиран в системата. За да го използвате активно, превключете на FlorisBoard, като го изберете в диалоговия прозорец с методи за въвеждане!</string>
<string name="setup__make_default__text_after_switch" comment="Description of state in Make IME default fragment after user switched">Успешно сменихте клавиатурата си по подразбиране на FlorisBoard!</string>
<string name="setup__make_default__text_switch_button" comment="Label of switch button in Make IME default fragment">Смяна на клавиатура</string>
<string name="setup__finish__title" comment="Title of Setup finished fragment in Setup">Настройката завърши!</string>
<!-- Crash Dialog strings -->
<string name="crash_dialog__title" comment="Title of crash dialog">Отчет за грешка на FlorisBoard</string>
<string name="crash_dialog__description" comment="Description of crash dialog">Извинете за неудобството, но FlorisBoard се срина поради неочаквана грешка.\n\nАко искате да съобщите за нея, щракнете върху „Копиране в клипборда“, след това върху бутона „Отваряне на доклад за грешка“. Попълнете отчета за грешки и го поставете. Така ще допринесете за подобряване на FlorisBoard за всички потребители! Благодарим ви!</string>
<string name="crash_dialog__copy_to_clipboard" comment="Label of Copy to clipboard button in crash dialog">Копиране в клипборда</string>
<string name="crash_dialog__open_bug_report_form" comment="Label of Open bug report button in crash dialog">Отваряне на формуляр за доклад за грешка (github.com)</string>
<string name="crash_dialog__close" comment="Label of Close button in crash dialog">Затваряне</string>
<string name="crash_notification_channel__title" comment="Title of crash notification channel">Доклади за грешки на FlorisBoard</string>
<string name="crash_once_notification__title" comment="Title of the notification for a single crash">FlorisBoard спря да работи…</string>
<string name="crash_once_notification__body" comment="Body of the notification for a single crash">Докоснете, за да видите подробности за грешката</string>
<string name="crash_multiple_notification__title" comment="Title of the notification for consecutive crashes">FlorisBoard изглежда спира да работи многократно…</string>
<string name="crash_multiple_notification__body" comment="Body of the notification for consecutive crashes">Връщане към предишна клавиатура, за да се спре безкрайния цикъл от сривове. Докоснете, за да видите подробности за грешката</string>
</resources>

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FlorisBoard</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Pausa</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Esperar</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Icona de tres punts. Si és visible, indica que es poden utilitzar més lletres si es prem més temps.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">Tanca el mode d\'una mà.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">Mou el teclat a l\'esquerra.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">Mou el teclat a la dreta.</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Mode privat</string>
<!--
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">Emojis</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Emoticones</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">Kaomoji</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion" comment="Emoji category name">Emocions &amp; Emoticones</string>
<string name="emoji__category__people_body" comment="Emoji category name">Persones &amp; Cos</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Animals &amp; Natura</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Mejar &amp; Beure</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Viatges &amp; Llocs</string>
<string name="emoji__category__activities" comment="Emoji category name">Activitats</string>
<string name="emoji__category__objects" comment="Emoji category name">Objectes</string>
<string name="emoji__category__symbols" comment="Emoji category name">Símbols</string>
<string name="emoji__category__flags" comment="Emoji category name">Banderes</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Commutació d\'acció ràpida. Si es prem, commuta entre els suggeriments de paraula i els botons d\'acció ràpida.</string>
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">Surt del quadre d\'edició de text.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Commuta l\'estat del mode d\'una sola mà.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Obre la configuració.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Canvia al plafó d\'edició de text.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Canvia a la vista d\'entrada de suports.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Botó de desfer per invertir l\'última acció</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Botó de refer per revertir l\'últim desfer</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">Si visible, indica que el mode privat està actiu. Quan es fa clic, es mostra informació sobre el mode privat.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Preferències</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Més opcions</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Ajuda &amp; suggeriments</string>
<string name="settings__help" comment="General label for help buttons in Settings">Ajuda</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Inici</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Teclat</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Escritura</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Tema</string>
<string name="settings__navigation__gestures" comment="Long-press hint of bottom nav item Gestures in Settings">Gestos</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">Predeterminat</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">Per defecte del sistema</string>
<string name="settings__home__title" comment="Title of the Home fragment">Benvingut a %s</string>
<string name="settings__home__ime_not_enabled" comment="Error message shown in Home fragment when FlorisBoard is not enabled in the system">FlorisBoard no està habilitat en el sistema i per tant no estarà disponible com a mètode d\'entrada en el selector d\'entrada. Feu clic aquí per resoldre aquest problema.</string>
<string name="settings__home__ime_not_selected" comment="Warning message shown in Home fragment when FlorisBoard is not selected as the default keyboard">FlorisBoard no està seleccionat com a mètode d\'entrada per defecte. Feu clic aquí per resoldre aquest problema.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Gràcies per provar FlorisBoard! Aquest projecte encara està en alfa i, per tant, manquen les opcions. Si trobeu algun error o voleu fer un suggeriment, comproveu el dipòsit a GitHub i obriu un tiquet. Això ajuda a millorar FlorisBoard. Gràcies!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Idiomes &amp; Disposicions de teclat</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Sembla que no heu configurat cap subtipus. Com a alternativa s\'utilitzarà el subtipus anglès/QWERTY!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Afegir</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Afegeix un subtipus</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">Aplicar</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">Cancel·lar</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">Eliminar</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Editar el subtipus</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">Local</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Disposició de teclat</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Aquest subtipus ja existeix!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Tema del teclat</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Indefinit</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Mode del tema</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Sempre de dia</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Sempre de nit</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Segueix el sistema</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Segueix l\'hora</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Hora de trenc d\'alba</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Hora de posta de sol</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Tema diürn</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Tema nocturn</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Selecció del tema</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Adapta els colors a l\'aplicació</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Els colors del tema s\'adapten als de l\'aplicació actual, si l\'aplicació de destinació ho admet.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">Actius d\'aplicacions FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Emmagatzematge intern</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Proveïdor extern</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Gestor de temes (diürn)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Gestor de temes (nocturn)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Crear un nou tema</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Crear a partir del tema seleccionat</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Introduïu un nom d\'atribut.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Aquest nom d\'atribut ja existeix dins d\'aquest grup. Si us plau, especifiqueu-ne un altre.</string>
<string name="settings__theme__group_window" comment="Theme group label">Finestra &amp; Sistema</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Teclat</string>
<string name="settings__theme__group_key" comment="Theme group label">Clau</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Clau (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Context multimèdia</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">Una sola mà</string>
<string name="settings__theme__group_popup" comment="Theme group label">Finestra emergent</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Mode privat</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Barra intel·ligent</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Botó de barra intel·ligent</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Grup personalitzat (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Color de fons</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Color de fons (actiu)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Color de fons (pressat)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Color de primer pla</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Color de primer pla (alternativa)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Color de primer pla (pressat)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Mostra les vores</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Color principal</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Color principal (fosc)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Color d\'accent</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Color de la barra de navegació</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Color fosc de la barra de navegació</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Color semitransparent</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Color del text</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Atribut personalitzat (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Preferències del teclat</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Claus</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Número de fila</string>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Mostra el nombre de fila a la part superior de la disposició de caràcters</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Número d\'indicació de fila</string>
<string name="pref__keyboard__hinted_symbols_mode__label" comment="Preference title">Symbols marcats</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Desactivat</string>
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Activat (es prioritza el consell)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Activat (es prioritza l\'accent)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Activat (priorització intel·ligent)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Mostra la clau d\'utilitat</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Mostra una clau d\'utilitat configurable al costat de la barra d\'espai</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Canvia als emojis</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Canviar l\'idioma</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Canviar l\'aplicació de teclat</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Dinàmic: Canvia a emojis / Canvia d\'idioma</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Multiplicador de la mida del tipus de lletra (vertical)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Multiplicador de la mida de la lletra (horitzontal)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Disposició</string>
<string name="pref__keyboard__one_handed_mode__label" comment="Preference value">Mode d\'una sola mà</string>
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Desactivat</string>
<!-- About UI strings -->
<!-- Assets strings -->
<!-- Setup UI strings -->
<!-- Crash Dialog strings -->
</resources>

View File

@@ -40,6 +40,7 @@
<string name="settings__title" comment="Title of Settings">ڕێکخستنەکان</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">هەڵبژاردنی زیاتر</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">یارمەتی و فێرکاری</string>
<string name="settings__help" comment="General label for help buttons in Settings">یارمەتی</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">سەرەتا</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">تەختەکلیل</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">نووسین</string>
@@ -104,41 +105,38 @@
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">نوسین</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">ڕێژەی پیشاندانی ڕووکار</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">تکایە ناوی ڕووکار بنوسە</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">تکایە ناوی گروپ بنووسە کە تەنها پیتەکانی a-z و/یان A-Z ی تێدا بێت.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">تکایە ناوی گروپ بنووسە کە تەنها پیتی (a-z و/یان A-Z) لەخۆ بگرێت، کۆلۆن (:) بۆ ژێر-گروپکردن یان ژمارە زیادەکان (0-9), (~) و ژێرهێڵەکان (_) بۆ ناولێنانی کلیلەکە.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">تکایە ناوی گرووپ بنوسە</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">ئەم ناوی گرووپە بوونی هەیە، تکایە دانەیەکی تر بنوسە.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">تکایە ناوی تایبەتمەندی بنووسە کە تەنها پیتەکانی a-z و/یان A-Z ی تێدا بێت.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">تکایە ناوی تایبەتمەندی بنوسە</string>
<string name="settings__theme__background" comment="General label for a background preference">ڕەنگی پشتتەوە</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">ڕەنگی پشت شاشە لەکاتی چالاکبوندا</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">ڕەنگی پشت شاشە لەکاتی دەستلێدان</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">ڕەنگی پێشەوە</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">ڕەنگی پێشەوە (جێگرەوە)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">ڕەنگی پێشەوە (قوفڵی caps)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">ڕەنگێک هەڵبژێرە</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">ئەم ناوە بوونی هەیە لە گرووپدا، تکایە دانەیەکی تر بنوسە.</string>
<string name="settings__theme__group_window" comment="Theme group label">ڕووکەش</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">تەختەکلیل</string>
<string name="settings__theme__group_key" comment="Theme group label">دوگمە</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">دوگمەی ئینتەر</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">دوگمەی بچوککراوە</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">دوگمەی شێفت</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">دوگمە (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">لیستی میدیا</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">بەکارهێنان بە یەک دەست</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">دوگمەی بەکارهێنانی یەک دەست</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">دۆخی تایبەت</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">بەکارهێنان بە یەک دەست</string>
<string name="settings__theme__group_popup" comment="Theme group label">بچووکراوەی پیت</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">دۆخی تایبەت</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">ڕەنگی بەشی سەرەوە</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">ڕەنگی دوگمەکانی بەشی سەرەوە</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">ڕەنگی بنەڕەتی</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">جێبەجێ کراوە بۆ بەشی میدیای سەرەکی شەپۆل و تیشکخستنەسەر هەڵبژاردنەکان</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">ڕەنگی بنەڕەتی (تاریک)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">لە ئێستادا بەردەست نییە، دنراوە بۆ جێبەجێکردنی داهاتوو</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">ڕەنگی دووەم</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">جێبەجێ کراوە بۆ بەشی خەندەکان</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">ڕەنگی بەشی خوارەوە</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">پشت شاشەی بەشی خوارەوە</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">پشت شاشەی تاریکی بەشی خوارەوە</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">بۆ تاریک کردن یان بۆ کوژاندنەوەی بۆ ڕووناککردنی پێشگرەکە</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">لێواری دوگمەکان</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">چالاککردن واتە پیشاندانی لێوار یان نا چالاک نۆ شاردنەوە</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">ڕەنگی دوگمەکانی بەشی سەرەوە</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">گرووپی تایبەت (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">ڕەنگی پشتتەوە</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">ڕەنگی پشتەوە (چالاک)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">ڕەنگی پشت شاشە (دەسلێدراو)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">ڕەنگی لاوەکی</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">ڕەنگی لاوەکی (جێگرەوە)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">ڕەنگی لاوەکی (دەسلێدراو)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">پیشاندانی لێوار</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">ڕەنگی بنەڕەتی</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">ڕەنگی بنەڕەتی (تاریک)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">ڕەنگی لاوەکی</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">ڕەنگی بەشی خوارەوە</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">پشت شاشەی تاریکی بەشی خوارەوە</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">ڕەنکی نیمچە کاڵ</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">رەنگی نوسین</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">بەهای تایبەت (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">ڕێکخستنی تەختەکلیل</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">دوگمەکان</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">لیستی ژمارەکان</string>
@@ -149,6 +147,13 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">پیشاندان (هێماکان)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">پیشاندان (پیتەکان)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">پیشاندان (هەڵبژاردنی زیرەک)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">پیشاندانی دوگمەی فرمان</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">پیشاندانی دوگمەی ئامرازی دەستکاریکردن لە تەنیشت دوگمەی بۆشایی</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">فرمانی دوگمەی ئامراز</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">کردنەوەی خەندەکان</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">گۆڕینی زمان</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">گؤرینی تەختەکلیل</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">داینامیک: کردنەوەی خەندەکان/گۆڕینی زمان</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">قەبارەی نووسین (ستوونی)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">قەبارەی نووسین (ئاسۆیی) </string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">شێوازەکان</string>
@@ -166,7 +171,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">گەورەترین</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">تایبەت</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">ڕێژەی ئاستی قیاسی تەختەکلیل</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">قەبارەی بەشی خوارەوە (بۆ شاشە تەنیشت چەماوەکان)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">کاریگەرییەکان</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">دەنگ لەکاتی نووسین</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">ئاستی دەنگ</string>
@@ -198,17 +202,23 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">نووسین بەسەریەکەوە بەشێوەی دەسخشاندن بەسەر پیتەکاندا</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] پیشاندانی هێڵی نووسین</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">لەدوای هەر ووشەیەک دەردەکەوێ</string>
<string name="pref__gestures__general_title" comment="Preference group title">ئاماژەکان</string>
<string name="pref__gestures__general_title" comment="Preference group title">ئاماژژە گشتییەکان</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">ئاماژەی دوگمەی بۆشایی</string>
<string name="pref__gestures__other_title" comment="Preference group title">ئاماژەکانی/فرمانەکانی تر</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">هیچ فرمانێک</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">سڕینەوەی پیتەکان یەک بە یەک</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">سڕینەوەی ووشەی ئێستا</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">سڕینەوەی ووشەکان یەک بە یەک</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">شاردنەوەی تەختەکلیل</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">زیادکردنی ماوە</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">بردن بۆ سەرەوە</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">بردن بۆ خوارەوە</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">بردن بۆ لای چەپ</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">بردن بۆ لای ڕاست</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">چوون بۆ سەرەتای ڕستە</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">چوون بۆ کۆتایی ڕستە</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">گەورەکردن (Shift) </string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">گۆڕینی تەختەکلیل</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">گۆڕین بۆ تەختەکلیلی پێشوو</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">گۆڕین بۆ زمانی پێشوو</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">گۆڕین بۆ زمانی دواتر</string>
@@ -219,6 +229,7 @@
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">دوگمەی بۆشایی بۆ سەرەوە</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">دوگمەی بۆشایی بۆ لای چەپ</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">دوگمەی بۆشایی بۆ لای ڕاست</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">دوگمەی بۆشایی لەکاتی دەستڕاگرتن</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">دوگمەی سڕینەوە بۆ لای چەپ</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">ئاستی خێرایی ڕاکێشان</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">خاوترین</string>

View File

@@ -60,34 +60,11 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Tento podtyp již existuje!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Motiv klávesnice</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Definován</string>
<string name="settings__theme__background" comment="General label for a background preference">Pozadí</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Barva pozadí při aktivní</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Barva pozadí při stisknutí</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Barva popředí</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Barva popředí (alternativní)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Barva popředí (caps lock)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Vyberte barvu</string>
<string name="settings__theme__group_window" comment="Theme group label">Okno &amp; systém</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Klávesnice</string>
<string name="settings__theme__group_key" comment="Theme group label">Klíč</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Klávesa</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Vyskakovací okno klíče</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Shift</string>
<string name="settings__theme__group_media" comment="Theme group label">Mediální kontext</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">Jednoruční</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Tlačítko s jednou rukou</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Smartbar</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Tlačítko Smartbar</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Primární barva</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Aplikováno na hlavní kartu Media ripple a zvýraznění výběru</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Primární barva (tmavá)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">V současné době se nepoužívá, vyhrazeno pro budoucí implementaci</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Barva přízvuku</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Aplikováno na kartu Emoji ripple</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Barva navigačního panelu</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">Pozadí navigační lišty.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Navigační lišta tmavé popředí</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Nastavte na Zapnuto pro tmavé nebo vypnuté pro světlé popředí.</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Předvolby Klávesnice</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Šipka</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Multiplikátor velikosti písma (portrét)</string>
@@ -107,7 +84,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Extra vysoká</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Vlastní</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Vlastní hodnota výšky klávesnice</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Odstup zdola (pro zahnuté displeje)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Stisk klávesy</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Zvuk při stisku klávesy</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Hlasitost zvuku při stisku klávesy</string>
@@ -136,7 +112,6 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Zadejte slovo posunutím prstu jeho písmeny</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Zobrazit sestupovou stopu</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Zmizí po každém slově</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gesto</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Žádná akce</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Smazat znaky přesně</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Smazat aktuální slovo</string>

View File

@@ -64,33 +64,17 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Dette undertastatur findes allerede!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Tastaturtema</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Ikke defineret</string>
<string name="settings__theme__background" comment="General label for a background preference">Baggrundsfarve</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Baggrundsfarve når aktiv</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Baggrundsfarve ved tryk</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Forgrundsfarve</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Forgrundsfarve (alternativ)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Forgrundsfarve (caps lock)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Vælg en farve</string>
<string name="settings__theme__group_window" comment="Theme group label">Vindue &amp; System</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Tastatur</string>
<string name="settings__theme__group_key" comment="Theme group label">Tast</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Enter-tast</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Tast popup</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Shift-tast</string>
<string name="settings__theme__group_media" comment="Theme group label">Mediekontekst</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">En-håndstilstand</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">En-håndstilstand knap</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Privattilstand</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">SmartBjælke</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Smartbjælke knap</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Primær farve</string>
<string name="pref__keyboard__height_factor__normal" comment="Preference value">Normal</string>
<string name="pref__keyboard__height_factor__mid_tall" comment="Preference value">Middel-høj</string>
<string name="pref__keyboard__height_factor__tall" comment="Preference value">Høj</string>
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Extra-høj</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Brugerdefineret</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Brugerdefineret tastatur højde</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Forskudt fra bund (for kurvede skærme)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Tastetryk</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Lyd ved tastetryk</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Lydstryke ved tastetryk</string>
@@ -122,7 +106,6 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Skriv ord ved at stryge fingeren igennem bogstaver</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Vis glidespor</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Vil forsvinde efter hvert ord</string>
<string name="pref__gestures__general_title" comment="Preference group title">Bevægelser</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Ingen handling</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Slet tegn præcist</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Slet nuværende ord</string>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FlorisBoard</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Pausieren</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Warten</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Drei-Punkte-Symbol. Zeigt an, dass durch langes Drücken mehr Zeichen verwendet werden können.</string>
@@ -40,6 +41,7 @@
<string name="settings__title" comment="Title of Settings">Einstellungen</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Weitere Optionen</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Hilfe &amp; Feedback</string>
<string name="settings__help" comment="General label for help buttons in Settings">Hilfe</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Start</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Tastatur</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Schreiben</string>
@@ -64,37 +66,78 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Dieser Eingabestil ist bereits vorhanden!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Tastaturdesign</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Nicht definiert</string>
<string name="settings__theme__background" comment="General label for a background preference">Hintergrundfarbe</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Hintergrundfarbe wenn aktiv</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Hintergrundfarbe wenn gedrückt</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Vordergrundfarbe</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Vordergrundfarbe (Alternativ)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Vordergrundfarbe (Umschalttaste festgestellt)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Farbe wählen</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Design-Modus</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Dauerhafter Tagmodus</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Dauerhafter Nachtmodus</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Systemkonform</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Zeitverlauf folgen</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Sonnenaufgangszeit</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Sonnenuntergangszeit</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Helles Design</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Dunkles Design</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Ausgewähltes Design</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Farbdesign an eine App anpassen</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Farbdesign passt sich an die verwendeten App an. Nur möglich wenn die verwendete App diese Funktionalität unterstützt.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">FlorisBoard App Ressourcen</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Interner Speicher</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Externer Anbieter</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Design Manager (Tag)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Design Manager (Nacht)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Leeres Design anlegen</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Aus ausgewähltem Design erstellen</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Benutzerdefiniert (basierend auf %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Neues Design</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Design bearbeiten</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Name</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Typ</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Gruppe hinzufügen</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Gruppe bearbeiten</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Attribute hinzufügen</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Attribut bearbeiten</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Verweis</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Gruppe</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Attribut</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Einheitliche Farbe</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Linearer Farbverlauf</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Radialer Farbverlauf</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Wechseln</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Status</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Andere</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Text</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Vorschau der Design Werte</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Bitte geben Sie einen Namen für das Design ein.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Bitte geben Sie einen Gruppennamen ein, welcher nur die Buchstaben (a-z und/oder A-Z), Doppelpunkte (:) für Untergruppierungen, oder zusätzliche Zahlen (0-9), Tilde (~) und Unterstriche (_) für die Tastenbeschriftung, enthält.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Bitte geben Sie einen Gruppennamen ein.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Dieser Gruppenname existiert bereits in diesem Design. Bitte wählen Sie einen anderen aus.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Bitte geben Sie einen Attributnamen ein welcher nur die Buchstaben a-z und/oder A-Z enthält.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Bitte geben Sie einen Attributnamen ein.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Dieser Attributname existiert bereits in dieser Gruppe. Bitte wählen Sie einen anderen aus.</string>
<string name="settings__theme__group_window" comment="Theme group label">Fenster &amp; System</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Tastatur</string>
<string name="settings__theme__group_key" comment="Theme group label">Taste</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Eingabetaste</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Tasten Pop-Up</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Umschalttaste</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Key (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Medienkontext</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">Einhandmodus</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Einhandmodus Schalter</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Privater Modus</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">Einhandmodus</string>
<string name="settings__theme__group_popup" comment="Theme group label">Popup</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Privater Modus</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Schnellzugriffsleiste</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Schnellzugriffsleiste Schalter</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Hauptfarbe</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Wird auf Medien-Reiter und aktuelle Auswahl angewandt</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Hauptfarbe (dunkel)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Zurzeit nicht in Benutzung, für zukünftige Funktionen reserviert</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Akzentfarbe</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Wird auf den Emoji-Reiter angewandt</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Farbe der Navigationsleiste</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">Der Hintergrund der Navigationsleiste.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Dunkler Vordergrund der Navigationsleiste</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">EIN für dunklen oder AUS für hellen Vordergrund.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">Umrandung der Tasten</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">Stellen Sie auf AN, um den Rand anzuzeigen, oder AUS, um ihn auszublenden</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Schnellzugriffsleiste Schalter</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Benutzerdefinierte Gruppe (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Hintergrundfarbe</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Hintergrundfarbe (aktiv)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Hintergrundfarbe (wenn gedrückt)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Vordergrundfarbe</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Vordergrundfarbe (Alternativ)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Vordergrundfarbe (wenn gedrückt)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Rahmen anzeigen</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Primärfarbe</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Primärfarbe (dunkel)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Sekundärfarbe</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Farbe der Navigationsleiste</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Dunkler Vordergrund der Navigationsleiste</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Halbtransparente Farbe</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Schriftfarbe</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Benutzerdefinierte Attribute (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Tastatur-Einstellungen</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Tasten</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Zahlenreihe</string>
@@ -105,6 +148,13 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Aktiviert (Andeutung ist priorisiert)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Aktiviert (Akzente sind priorisiert)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Aktiviert (Intelligente Priorisierung)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Utility-Taste anzeigen</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Zeigt eine konfigurierbare Utility-Taste neben der Leertaste an</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Utility-Taste Aktion</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Zu Emojis wechseln</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Sprache wechseln</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Tastatur-App wechseln</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Dynamisch: Zu Emojis / Sprache wechseln</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Schriftgröße anpassen (Hochformat)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Schriftgröße anpassen (Querformat)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Layout</string>
@@ -122,7 +172,8 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Sehr groß</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Benutzerdefiniert</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Benutzerdefinierte Tastaturhöhe</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Unteres Ende absetzen (für abgerundete Bildschirme)</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Unterer Versatz (Hochformat)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Unterer Versatz (Querformat)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Tastendruck</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Ton bei Tastendruck</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Lautstärke der Tastendrucktöne</string>
@@ -154,17 +205,23 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Durch Gleiten über die Buchstaben Wort eingeben</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Bewegungsspur anzeigen</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Wird jeweils nach einem Wort ausgeblendet</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gesten</string>
<string name="pref__gestures__general_title" comment="Preference group title">Allgemeine Gesten</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Leertaste Gesten</string>
<string name="pref__gestures__other_title" comment="Preference group title">Andere Gesten / Gesten Schwellenwerte</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Keine Aktion</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Einzelne Zeichen exakt löschen</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Aktuelles Wort löschen</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Einzelne Wörter exakt löschen</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Tastatur verstecken</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Leerzeichen einfügen</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Cursor nach oben bewegen</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Cursor nach unten bewegen</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Cursor nach links bewegen</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Cursor nach rechts bewegen</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Cursor an den Zeilenanfang bewegen</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Cursor an das Zeilenende bewegen</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Umschalttaste</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Auswahl der Eingabemethode anzeigen</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Zur vorherigen Tastatur wechseln</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Zum vorherigen Eingabestil wechseln</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Zum nächsten Eingabestil wechseln</string>
@@ -172,9 +229,10 @@
<string name="pref__gestures__swipe_down__label" comment="Preference title">Nach unten streichen</string>
<string name="pref__gestures__swipe_left__label" comment="Preference title">Nach links streichen</string>
<string name="pref__gestures__swipe_right__label" comment="Preference title">Nach rechts streichen</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Leertaste nach oben wischen</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Leertaste nach oben streichen</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Leertaste nach links streichen</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Leertaste nach rechts streichen</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Leertaste lang drücken</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Löschtaste nach links streichen</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Gesten-Geschwindigkeitsschwelle</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Sehr langsam</string>
@@ -203,6 +261,26 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Quellcode</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Open Source-Lizenzen</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">Ersteller</item>
<item quantity="other">Ersteller</item>
</plurals>
<string name="assets__file__name">Name</string>
<string name="assets__file__source">Quelle</string>
<string name="assets__action__add">Hinzufügen</string>
<string name="assets__action__cancel">Abbrechen</string>
<string name="assets__action__cancel_confirm_title">Abbruch bestätigen</string>
<string name="assets__action__cancel_confirm_message">Wollen Sie wirklich alle ungespeicherten Änderungen verwerfen? Dieser Vorgang kann nicht rückgängig gemacht werden.</string>
<string name="assets__action__delete">Löschen</string>
<string name="assets__action__delete_confirm_title">Löschvorgang bestätigen</string>
<string name="assets__action__delete_confirm_message">Sind Sie sicher, dass sie \"%s\" löschen wollen? Dieser Vorgang kann nicht rückgängig gemacht werden.</string>
<string name="assets__action__edit">Bearbeiten</string>
<string name="assets__action__export">Exportieren</string>
<string name="assets__action__import">Importieren</string>
<string name="assets__action__no">Nein</string>
<string name="assets__action__save">Speichern</string>
<string name="assets__action__yes">Ja</string>
<string name="assets__error__invalid">Ungültig</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Einrichtung</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Zurück</string>

View File

@@ -64,37 +64,48 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Αυτός ο υποτύπος υπάρχει ήδη!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Θέμα πληκτρολογίου</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Μη ορισμένο</string>
<string name="settings__theme__background" comment="General label for a background preference">Χρώμα φόντου</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Χρώμα φόντου όταν είναι ενεργό</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Χρώμα φόντου όταν πατηθεί</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Χρώμα προσκηνίου</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Χρώμα προσκηνίου (εναλλακτικό)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Χρώμα προσκηνίου (κεφαλαία)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Επιλέξτε ένα χρώμα</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Λειτουργία θέματος</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Πάντα μέρα</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Πάντα νύχτα</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Σύμφωνα με το σύστημα</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Σύμφωνα με την ώρα</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Ώρα ανατολής</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Ώρα δύσης</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Θέμα ημέρας</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Θέμα νύχτας</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Επιλεγμένο θέμα</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Προσαρμογή χρωμάτων στην εφαρμογή</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Τα χρώματα του θέματος προσαρμόζονται σε αυτά της τρέχουσας εφαρμογής, εάν αυτή η εφαρμογή το υποστηρίζει.</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Εσωτερικός αποθηκευτικός χώρος</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Διαχειριστής Θέματος (Μέρα)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Διαχειριστής Θέματος (Νύχτα)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Δημιουργία κενού θέματος</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Δημιουργία από επιλεγμένο θέμα</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Ειδικό (βασισμένο σε %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Νέο θέμα</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Επεξεργασία θέματος</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Όνομα</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Τύπος</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Προσθήκη ομάδας</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Επεξεργασία ομάδας</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Προσθήκη χαρακτηριστικού</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Επεξεργασία χαρακτηριστικού</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Αναφορά</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Ομάδα</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Χαρακτηριστικό</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Συμπαγές χρώμα</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Εναλλαγή</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Κατάσταση</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Άλλο</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Κείμενο</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Προεπισκόπηση της τιμής του θέματος</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Παρακαλώ εισάγετε ένα όνομα για το θέμα.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Παρακαλώ εισάγετε ένα όνομα για την ομάδα.</string>
<string name="settings__theme__group_window" comment="Theme group label">Παράθυρο &amp; Σύστημα</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Πληκτρολόγιο</string>
<string name="settings__theme__group_key" comment="Theme group label">Πλήκτρο</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Πλήκτρο εισαγωγής</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Εμφάνιση πλήκτρων</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Πλήκτρο κεφαλαίων</string>
<string name="settings__theme__group_media" comment="Theme group label">Περιεχόμενο μέσων</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">Με το ένα χέρι</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Πλήκτρο λειτουργίας ενός-χεριού</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Ιδιωτική λειτουργία</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Έξυπνη Μπάρα</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Πλήκτρο έξυπνης μπάρας</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Κυρίως χρώμα</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Εφαρμόζεται στην μπάρα κυματισμού των κυρίως μέσων και στην επισήμανση επιλογής</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Κυρίως χρώμα (σκούρο)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Δεν χρησιμοποιείται προς το παρόν, δεσμευμένο για μελλοντική εφαρμογή</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Χρώμα έμφασης</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Εφαρμόζεται στον κυματισμό μπάρας των emoji</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Χρώμα μπάρας πλοήγησης</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">To φόντο της μπάρας πλοήγησης.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Σκούρο προσκήνιο μπάρας πλοήγησης</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Ορίστε ΕΝΕΡΓΟΠΟΙΗΜΈΝΟ για σκούρο ή ΑΠΕΝΕΡΓΟΠΟΙΗΜΈΝΟ για φωτεινό προσκήνιο.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">Περίγραμμα Πλήκτρου</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">Ενεργοποιείστε για εμφάνιση των περιγραμμάτων ή απενεργοποιείστε για απόκρυψη</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Προτιμήσεις Πληκτρολογίου</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Πλήκτρα</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Σειρά αριθμών</string>
@@ -122,7 +133,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Πολύ-ψηλό</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Προσαρμοσμένο</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Προσαρμοσμένη τιμή ύψους πληκτρολογίου</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Αντιστάθμιση βάσης (για κυρτές οθόνες)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Πάτημα πλήκτρου</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Ήχος κατά το πάτημα πλήκτρου</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Ένταση ήχου κατά το πάτημα πλήκτρου</string>
@@ -154,7 +164,6 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Πληκτρολογήστε μία λέξη με ολίσθηση του δαχτύλου μέσα από τα γράμματά της</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Εμφάνιση διαδρομής ολίσθησης</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Θα εξαφανίζεται μετά από κάθε λέξη</string>
<string name="pref__gestures__general_title" comment="Preference group title">Κινήσεις</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Καμία ενέργεια</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Διαγραφή χαρακτήρων με ακρίβεια</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Διαγραφή της τρέχουσας λέξης</string>
@@ -203,6 +212,21 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Πηγαίος κώδικας</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Άδειες λογισμικού ανοικτού κώδικα</string>
<!-- Assets strings -->
<string name="assets__file__name">Όνομα</string>
<string name="assets__file__source">Πηγή</string>
<string name="assets__action__add">Προσθήκη</string>
<string name="assets__action__cancel">Ακύρωση</string>
<string name="assets__action__cancel_confirm_title">Επιβεβαίωση ακύρωσης</string>
<string name="assets__action__delete">Διαγραφή</string>
<string name="assets__action__delete_confirm_title">Επιβεβαίωση διαγραφής</string>
<string name="assets__action__delete_confirm_message">Είστε βέβαιοι ότι θέλετε να διαγράψετε \"%s\"; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.</string>
<string name="assets__action__edit">Επεξεργασία</string>
<string name="assets__action__export">Εξαγωγή</string>
<string name="assets__action__import">Εισαγωγή</string>
<string name="assets__action__no">Όχι</string>
<string name="assets__action__save">Αποθήκευση</string>
<string name="assets__action__yes">Ναι</string>
<string name="assets__error__invalid">Μη έγκυρο</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Ρύθμιση</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Προηγ</string>

View File

@@ -26,6 +26,7 @@
<string name="settings__title" comment="Title of Settings">Agordoj</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Pliaj opcioj</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Helpo &amp; kuplado</string>
<string name="settings__help" comment="General label for help buttons in Settings">Helpo</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Hejmo</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Klavaro</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Tajpado</string>
@@ -44,12 +45,15 @@
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Klavaro</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Klavaro etoso</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Nedifinita</string>
<string name="settings__theme__background" comment="General label for a background preference">Fona koloro</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Fona koloro kiam aktiva</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Fona koloro kiam depremos</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Malfona koloro</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Malfona koloro (alternativo)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Malfona koloro (fiksiĝema ĉeflitera registrumo)</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Ĉiama tago</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Ĉiama nokto</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Taga etoso</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Nokta etoso</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Nova etoso</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Redakti etoson</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nomo</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Alia</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Teksto</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Klavaro</string>
<string name="settings__theme__group_key" comment="Theme group label">Klavo</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Klavaro agordoj</string>
@@ -59,13 +63,14 @@
<string name="pref__keyboard__height_factor__label" comment="Preference title">Klavaro alteco</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Pli kurta</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Kurta</string>
<string name="pref__keyboard__height_factor__mid_short" comment="Preference value">Mez-kurta</string>
<string name="pref__keyboard__height_factor__normal" comment="Preference value">Norma</string>
<string name="pref__keyboard__height_factor__mid_tall" comment="Preference value">Mez-alta</string>
<string name="pref__keyboard__height_factor__tall" comment="Preference value">Granda</string>
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Pli granda</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Laŭmenda</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Laŭmenda klavaro alteca valora</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Klavaĵo ekdepremi</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gestoj</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Neniu ago</string>
<string name="pref__gestures__swipe_up__label" comment="Preference title">Ŝovumi supre</string>
<string name="pref__gestures__swipe_down__label" comment="Preference title">Ŝovumi sube</string>
@@ -76,7 +81,7 @@
<string name="pref__gestures__swipe_velocity_threshold__normal" comment="Preference value for swipe velocity threshold">Norma</string>
<string name="pref__gestures__swipe_velocity_threshold__fast" comment="Preference value for swipe velocity threshold">Rapida</string>
<string name="pref__gestures__swipe_velocity_threshold__very_fast" comment="Preference value for swipe velocity threshold">Tre rapida</string>
<string name="pref__gestures__swipe_distance_threshold__very_short" comment="Preference value for swipe distance threshold">Tre mallonga</string>
<string name="pref__gestures__swipe_distance_threshold__very_short" comment="Preference value for swipe distance threshold">Tre kurta</string>
<string name="pref__gestures__swipe_distance_threshold__short" comment="Preference value for swipe distance threshold">Mallonga</string>
<string name="pref__gestures__swipe_distance_threshold__normal" comment="Preference value for swipe distance threshold">Norma</string>
<string name="pref__gestures__swipe_distance_threshold__long" comment="Preference value for swipe distance threshold">Longa</string>
@@ -94,6 +99,14 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Fontkodo</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Malfermitkodaj permesiloj</string>
<!-- Assets strings -->
<string name="assets__file__name">Nomo</string>
<string name="assets__file__source">Fonto</string>
<string name="assets__action__add">Aldoni</string>
<string name="assets__action__cancel">Nuligi</string>
<string name="assets__action__delete">Forigi</string>
<string name="assets__action__edit">Redakti</string>
<string name="assets__action__no">Ne</string>
<string name="assets__action__yes">Jes</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Agordaĵo</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Antaŭa</string>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Pausar</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Detener</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Espere</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Icono de tres puntos. Si está visible, indica que se pueden utilizar más letras si se pulsa durante más tiempo.</string>
<!-- One-handed strings -->
@@ -40,6 +40,7 @@
<string name="settings__title" comment="Title of Settings">Ajustes</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Más opciones</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Ayuda y comentarios</string>
<string name="settings__help" comment="General label for help buttons in Settings">Ayuda</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Inicio</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Teclado</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Escritura</string>
@@ -64,37 +65,75 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">¡Este subtipo ya existe!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Tema de teclado</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Sin definir</string>
<string name="settings__theme__background" comment="General label for a background preference">Color de fondo</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Color de fondo cuando está activo</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Color de fondo cuando está pulsado</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Color principal</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Color principal (alternativo)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Color principal (bloqueo de mayúsculas)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Seleccionar un color</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Tema</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Siempre</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Siempre</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Predeterminado del sistema</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">De acuerdo al tiempo</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Hora de puesta de sol</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Tema claro</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Tema oscuro</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Tema seleccionado</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Adaptar colores a la aplicación</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Los colores del tema se adaptan a los de la aplicación actual, si la aplicación de destino lo admite.</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Almacenamiento interno</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Proveedor externo</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Administrador de tema (claro)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Administrador de tema (Oscuro)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Crear un tema nuevo</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Crear de tema seleccionado</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Personalizado (basado en %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Nuevo tema</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Editar tema</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nombre</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Tipo</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Agregar grupo</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Editar grupo</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Agregar atributo</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Editar Atributo</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Referencia</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Grupo</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Atributo</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Color sólido</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Gradiente lineal</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Gradiente radial</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Cambiar</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Estado</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Otro</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Texto</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Valor previo del tema</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Por favor, ingresa un nombre para el tema.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Ingrese un nombre de grupo que solo contenga letras (a z y / o A Z), dos puntos (:) para subgrupos o, además, números (09), tilde (~) y subrayados (_) para la clave etiqueta.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Por favor, introduzca un nombre de grupo.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Este nombre de grupo ya existe dentro de este tema. Por favor elije otro.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Por favor, ingresa un nombre que contenga solo las letras a-z y/o A-Z.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Por favor, introduzca un nombre al atributo.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Este nombre de atributo ya existe en este grupo. Por favor, escribe otro.</string>
<string name="settings__theme__group_window" comment="Theme group label">Ventana y sistema</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Teclado</string>
<string name="settings__theme__group_key" comment="Theme group label">Tecla</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Tecla Intro</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Tecla emergente</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Tecla Shift</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Tecla (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Contexto de multimedia</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">A una mano</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Botón a una mano</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Modo privado</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">Una mano</string>
<string name="settings__theme__group_popup" comment="Theme group label">Emergente</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Modo privado</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Barra inteligente</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Bóton de barra inteligente</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Color principal</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Aplicado al indicador de la pestaña principal de multimedia y al resaltado de la selección</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Color principal (oscuro)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Actualmente no se utiliza, reservado para su futura aplicación</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Color de acento</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Aplicado al indicador de la pestaña de los emojis</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Color de la barra de navegación</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">El fondo de la barra de navegación.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Color principal oscuro de la barra de navegación</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Establecer en ENCENDIDO para el oscuro o en APAGADO para el claro en el color principal.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">Borde de la tecla</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">Establecer en ENCENDIDO para mostrar el borde o en APAGADO para ocultarlo</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Bóton de barra inteligente</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Grupo personalizado (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Color de fondo</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Color de fondo (activo)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Color de fondo (presionado)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Color principal</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Color principal (alternativo)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Color principal (presionado)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Ver borde</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Color principal</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Color principal (oscuro)</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Color de la barra de navegación</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Color principal de la barra de navegación en modo oscuro</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Color semitransparente</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Color de texto</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Atributo personalizado (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Preferencias de teclado</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Teclas</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Número de filas</string>
@@ -105,6 +144,10 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Habilitado (Prioridad en la sugerencia)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Habilitado (Prioridad en el acento)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Habilitado (Priorización inteligente)</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Cambiar a emojis</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Cambiar idioma</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Cambiar aplicación de teclado</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Dinámico: cambiar a emojis / cambiar de idioma</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Multiplicador del tamaño de la fuente (vertical)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Multiplicador del tamaño de la fuente (horizontal)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Distribución</string>
@@ -122,7 +165,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Muy alto</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Personalizado</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Valor de altura del teclado personalizada</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Desplazamiento del fondo (para pantallas curvas)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Pulsación de tecla</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Sonido al pulsar la tecla</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Volumen del sonido al pulsar la tecla</string>
@@ -154,16 +196,21 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Escriba una palabra deslizando su dedo a través de sus letras</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Mostrar recorrido del deslizamiento</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Desaparecerá después de cada palabra</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gestos</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gestos generales</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Gestos en la barra de espacio</string>
<string name="pref__gestures__other_title" comment="Preference group title">Otros gestos / umbrales de gestos</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Sin acción</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Eliminar caracteres con precisión</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Eliminar palabra actual</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Eliminar palabras con precisión</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Ocultar teclado</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Insertar espacio</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Mover cursor hacia arriba</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Mover cursor hacia abajo</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Mover curso hacia la izquierda</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Mover curso hacia la derecha</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Mover el cursor al principio de la línea</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Mover el cursor al final de la línea</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Shift</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Cambiar al teclado anterior</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Cambiar al subtipo anterior</string>
@@ -175,6 +222,7 @@
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Deslizar arriba en la barra espaciadora</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Deslizar a la izquierda en la barra espaciadora</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Deslizar a la derecha en la barra espaciadora</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Pulsación larga de la barra espaciadora</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Eliminar deslizamiento de la tecla a la izquierda</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Umbral de la velocidad de deslizamiento</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Muy lento</string>
@@ -203,6 +251,26 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Código fuente</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Licencias de código abierto</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">Autor</item>
<item quantity="other">Autores</item>
</plurals>
<string name="assets__file__name">Nombre</string>
<string name="assets__file__source">Fuente</string>
<string name="assets__action__add">Agregar</string>
<string name="assets__action__cancel">Cancelar</string>
<string name="assets__action__cancel_confirm_title">Confirmar cancelación</string>
<string name="assets__action__cancel_confirm_message">¿Está seguro de que desea descartar los cambios no guardados? Esta acción no se puede deshacer una vez ejecutada.</string>
<string name="assets__action__delete">Borrar</string>
<string name="assets__action__delete_confirm_title">Confirmar borrado</string>
<string name="assets__action__delete_confirm_message">¿Está seguro que quiere borrar \"%s\"? Esta acción no se puede deshacer.</string>
<string name="assets__action__edit">Editar</string>
<string name="assets__action__export">Exportar</string>
<string name="assets__action__import">Importar</string>
<string name="assets__action__no">No</string>
<string name="assets__action__save">Guardar</string>
<string name="assets__action__yes">Si</string>
<string name="assets__error__invalid">Inválido</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Configuración</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Anterior</string>

View File

@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">فلوریس بورد</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">مکث</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">صبر‌کنید</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">نماد سه نقطه. در صورت مشاهده ، نشان می دهد که در صورت فشار بیشتر می توان از حروف بیشتری استفاده کرد.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">بستن حالت یک دستی.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">جابه‌جایی صفحه کلید به سمت چپ.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">جابه‌جایی صفحه کلید به سمت راست.</string>
<!-- Private mode info dialog strings -->
@@ -11,7 +14,7 @@
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">ایموجی ها</string>
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">شکلک‌ها</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Emoticons</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">Kaomoji</string>
<!-- Emoji strings -->
@@ -22,17 +25,23 @@
<string name="emoji__category__travel_places" comment="Emoji category name">صفر &amp; مکان ها</string>
<string name="emoji__category__activities" comment="Emoji category name">فعالیت ها</string>
<string name="emoji__category__objects" comment="Emoji category name">اشیاء</string>
<string name="emoji__category__symbols" comment="Emoji category name">نشانه ها</string>
<string name="emoji__category__symbols" comment="Emoji category name">نمادها</string>
<string name="emoji__category__flags" comment="Emoji category name">پرچم ها</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">ضامن اقدام سریع. در صورت فشار ، بین پیشنهادات کلمه و دکمه های اقدام سریع جابجا می شود.</string>
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">خروج از صفحه ویرایش متن.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">ضامن تغییر حالت یک دستی.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">باز کردن تنظیمات.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">تغییر به صفحه ویرایش متن.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">تغییر به حالت ورودی رسانه.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">دکمه برگرداندن برای برگشتن به انجام آخرین عمل</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">دکمه بازگردانی برای بازگشت به آخرین عمل برگشت داده شده</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">اگر معلوم باشد، نشان می دهد که حالت خصوصی فعال است. وقتی روی آن کلیک شود، اطلاعاتی درباره حالت خصوصی نشان می دهد.</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">در ضورت قابل مشاهده بودن، نشان میـدهد که حالت خصوصی فعال است. در صورت ضربه روی ان، اطلاعاتی درباره حالت خصوصی نشان میدهد.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">تنظیمات</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">گزینه‌های بیشتر</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">کمک &amp; بازخورد</string>
<string name="settings__help" comment="General label for help buttons in Settings">راهنمایی</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">خانه</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">صفحه کلید</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">نوشتن</string>
@@ -41,32 +50,94 @@
<string name="settings__default" comment="General string which is used when a preference has the default value set">پیشفرض</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">پیشفرض سیستم</string>
<string name="settings__home__title" comment="Title of the Home fragment">خوش آمدید به %s</string>
<string name="settings__home__ime_not_enabled" comment="Error message shown in Home fragment when FlorisBoard is not enabled in the system">فلوریس بورد در سیستم به عنوان روش ورودی فعلا نیست و به این علت به عنوان روش ورودی قابل انتخاب نیست. برای حل این مشکل اینجا کلیک کنید.</string>
<string name="settings__home__ime_not_selected" comment="Warning message shown in Home fragment when FlorisBoard is not selected as the default keyboard">فلوریس بود به عنوان روش ورودی پیش فرض انتخاب نشده. برای حل این مشکل اینجا کلیک کنید.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">با تشکر از شما برای امتحان فلوریس بورد! به علت قرار داشت در مراحل آلفا بود برای همین فاقد یک سری از ویژگی های اصلی است. اگر مشکلی پیدا کردید یا می خواهید پیشنهادی ارائه دهید ، لطفاً برنامه را در GitHub مشاهده و برای مشکل issue طراحی کنید. این کار به بهتر کردن فلوریس بورد کمک می کند. با تشکر!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">زبان ها &amp; چیدمان های صفحه کلید</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">به نظر میرسد که هیچگونه زیرگروه دیگری را انتخاب نکرده اید. به همین علت زیرگروه English/QWERTY استفاده خواهد شد!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">افزودن</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">افزودن زیر-نوعی</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">اعمال</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">لغو</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">حذف</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">ویرایش زیر-نوعی</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">منطقه</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">چیدمان صفحه کلید</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">این زیرنوع درحال حاضر وجود دارد!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">طرح زمینه صفحه کلید</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">تعریف نشده</string>
<string name="settings__theme__background" comment="General label for a background preference">رنگ پس‌زمینه</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">رنگ پس‌زمینه هنگامی که فعال است</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">رنگ پس‌زمینه هنگامی که انتخاب شود</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">رنگ روی‌زمینه</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">رنگ روی‌زمینه (جایگزین)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">رنگ روی‌زمینه (caps lock)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">انتخاب یک رنگ</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">حالت طرح‌زمینه</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">همیشه روز</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">همیشه شب</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">پیروی از سیستم</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">پیروی از زمان</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">زمان طلوع</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">زمان غروب</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">طرح‌زمینه روز</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">طرح‌زمینه شب</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">طرح زمینه انتخاب شده</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">تطبیق دادن رنگ ها به برنامه</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">رنگ های طرح زمینه بر اساس برنامه های فعلی تطبیق داده شوند، اگر برنامه مورد نظر از این پشتیبانی کند.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">ابزار های برنامه فلوریس بورد</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">حافظه داخلی</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">ارائه دهنده خارجی</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">مدیریت طرح‌ضمینه (روز)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">مدیریت طرح‌ضمینه (شب)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">ساختن طرح‌زمینه خالی</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">ساختن از طرح‌زمینه انتخاب شده</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">سفارشی (بر اساس %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">طرح‌زمینه جدید</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">ویرایش طرح زمینه</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">نام</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">نوع</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">افزودن گروه</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">ویرایش گروه</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">افزودن ویژگی</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">ویرایش ویژگی</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">مرجع</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">گروه</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">ویژگی</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">رنگ ثابت</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">تعویض</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">حالت</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">ديگر</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">متن</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">پیش‌نمایش مقدار طرح زمینه</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">لطفا نام طرح زمینه را وارد کنید.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">لطفا نام گروهی را وارد کنید که فقط حاوی حروف (a-z و/یا A-Z) باشد، دونقطه (:) برای زیرگروه ها و یا اعداد (0-9)، آکولاد (~) و زیرخط (_) برای عنوان هر کلید می باشد.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">لطفا یک نام گروه وارد کنید.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">گروهی با این نام در طراحی زمینه وجود دارد. لطفا نام دیگری انتخاب کنید.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">لطفا نام یک ویژگی را وارد کنید که فقط حاوی حروف a-z و/یا A-Z باشد.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">لطفا نام ویژگی را وارد کنید.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">خصوصیتی با این نام در طراحی زمینه وجود دارد. لطفا مورد دیگری را مشخص کنید.</string>
<string name="settings__theme__group_window" comment="Theme group label">پنجره &amp; سیستم</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">صفحه‌کلید</string>
<string name="settings__theme__group_key" comment="Theme group label">کلید</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">کلید را وارد کنید</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">پاپ‌آپ کلید</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">کلید Shift</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">حالت خصوصی</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">حاشیه کلید</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">روی روشن بزارید تا حاشیه را نمایش دهد یا روی خاموش بزنید تا مخفی‌اش کند</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">کلید (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">متن رسانه</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">یک دستی</string>
<string name="settings__theme__group_popup" comment="Theme group label">پنجره</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">حالت خصوصی</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">نوار هوشمند</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">دکمه نوار نوشمند</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">حالت چیدمان تمام صفحه افقی</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">دکمه عملیات در حالت تمام صفحه افقی</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">گروه سفارشی (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">رنگ پس‌زمینه</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">رنگ پس زمینه (هنگام فعال بودن)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">رنگ پس زمینه (در صورت فشار)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">رنگ روی‌زمینه</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">رنگ روی‌زمینه (جایگزین)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">رنگ پس زمینه (در صورت فشار)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">نمایش مرزها</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">رنگ اصلی</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">رنگ اصلی (تاریک)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">رنگ ثانویه</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">رنگ نوار پیمایش</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">پیش زمینه تاریک نوار پیمایش</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">رنگ نیمه شفاف</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">رنگ متن</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">مشخصات سفارشی (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">تنظیمات صفحه‌کلید</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">کلیدها</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">ردیف عدد</string>
@@ -77,6 +148,13 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">فعال شد(راهنما در اولویت)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">فعال شد(راهنما اولویت بندی شده)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">فعال شد(اولولیت بندی هوشمند)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">نشان دادن کلید ابزار</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">یک کلید ابزار قابل تنظیم در کنار نوار فاصله نشان می دهد</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">عملکرد کلید ابزار</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">تغییر به شکلک‌ها</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">تغییر زبان</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">تغییر برنامه کیبورد</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">متغیر: تغییر به شکلک‌ها / تغییر زبان</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">اندازه فونت چند برابری(عمودی)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">اندازه فونت چند برابری(افقی)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">چیدمان</string>
@@ -84,6 +162,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">خاموش</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">حالت دست راستی</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">حالت دست چپی</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">ورودی تمام صفحه افقی</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">هرگز نشان نده</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">همیشه نشان بده</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">به صورت پویا نشان بده</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">ارتفاع صفحه کلید</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">بیشتر-کوتاه</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">کوتاه</string>
@@ -94,7 +176,8 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">بیشتر-بلند</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">سفارشی</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">مقدار ارتفاع سفارشی صفحه‌کلید</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">فاصله از کف (برای صفحه های منحنی)</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">فاصله از پایین (افقی)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">فاصله از پایین (عمودی)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">فشردن کلید</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">صدای فشردن کلید</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">میزان صدای فشردن کلید</string>
@@ -109,6 +192,8 @@
<string name="pref__suggestion__title" comment="Preference group title">پیشنهادات</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] نمایش پیشنهادات حین تایپ کردن</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">در نوار هوشمند نمایش داده خواهد شد</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">پیشنهادات محتوای کلیپ بورد</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">محتوای کلیپ بورد را پیشنهاد کنید تا اگر قبلاً کپی شده است ، جای گذاری شود</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] پیشنهادات کلمه بعدی</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">استفاده از کلمه قبلی برای پیشنهادات</string>
<string name="pref__correction__title" comment="Preference group title">تصحیح</string>
@@ -122,26 +207,115 @@
<string name="pref__glide__title" comment="Preference group title">نوشتن گلایدی</string>
<string name="pref__glide__enabled__label" comment="Preference title">[NYI] فعال سازی نوشتن گلایدی</string>
<string name="pref__glide__enabled__summary" comment="Preference summary">نوشتن حروف با حرکت مداوم و نگه داشتن روی حرف مورد نظر</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] نشان دادن دنباله سر خوردن</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">بعد از هر کلمه ناپدید خواهد شد</string>
<string name="pref__gestures__general_title" comment="Preference group title">اشارات کلی</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">دکمه space اشارات</string>
<string name="pref__gestures__other_title" comment="Preference group title">دیگر اشارات/ آشارات آستانه</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">بدون عمل</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">حذف کردن دقیق حروف</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">حذف کلمه کنونی</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">حذف دقیق‌ کلمات</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">مخفی کردن کیبورد</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">وارد کردن فاصله</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">حرکت مکان نما به بالا</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">حرکت مکان نما به پایین</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">حرکت مکان نما به چپ</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">حرکت مکان نما به راست</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">انتقال اشاره به شروع خط</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">انتقال اشاره به پایان خط</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">شیفت</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">نمایش حالت انتخاب کننده</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">تعویض به صفحه کلید قبلی</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">کشیدن فاصله</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">تغییر به زیر گروه قبلی</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">تغییر به زیرگروه بعدی</string>
<string name="pref__gestures__swipe_up__label" comment="Preference title">به بالا کشیدن</string>
<string name="pref__gestures__swipe_down__label" comment="Preference title">به پایین بکشید</string>
<string name="pref__gestures__swipe_left__label" comment="Preference title">به چپ بکشید</string>
<string name="pref__gestures__swipe_right__label" comment="Preference title">به راست بکشید</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">کشیدن نوار فاصله به بالا</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">کشیدن نوار فاصله به چپ</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">کشیدن نوار فاصله به راست</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">نگه داشتن نوار فاصله</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">کشیدن دکمه پاک کردن به چپ</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">آستانه سرعت کشیدن</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">بسیار کند</string>
<string name="pref__gestures__swipe_velocity_threshold__slow" comment="Preference value for swipe velocity threshold">کند</string>
<string name="pref__gestures__swipe_velocity_threshold__normal" comment="Preference value for swipe velocity threshold">متوسط</string>
<string name="pref__gestures__swipe_velocity_threshold__fast" comment="Preference value for swipe velocity threshold">تند</string>
<string name="pref__gestures__swipe_velocity_threshold__very_fast" comment="Preference value for swipe velocity threshold">بسیار تند</string>
<string name="pref__gestures__swipe_distance_threshold__label" comment="Preference title">آستانه مسافت کشیدن</string>
<string name="pref__gestures__swipe_distance_threshold__very_short" comment="Preference value for swipe distance threshold">بسیار کوتاه</string>
<string name="pref__gestures__swipe_distance_threshold__short" comment="Preference value for swipe distance threshold">کوتاه</string>
<string name="pref__gestures__swipe_distance_threshold__normal" comment="Preference value for swipe distance threshold">متوسط</string>
<string name="pref__gestures__swipe_distance_threshold__long" comment="Preference value for swipe distance threshold">طولانی</string>
<string name="pref__gestures__swipe_distance_threshold__very_long" comment="Preference value for swipe distance threshold">بسیار طولانی</string>
<string name="settings__advanced__title" comment="Title of Advanced settings activity">پیشرفته</string>
<string name="pref__advanced__settings_theme__label" comment="Label of Settings theme preference in Advanced">تنظیمات زمینه</string>
<string name="pref__advanced__settings_theme__light" comment="Possible value of Settings theme preference in Advanced">روشن</string>
<string name="pref__advanced__settings_theme__dark" comment="Possible value of Settings theme preference in Advanced">تاریک</string>
<string name="pref__advanced__show_app_icon__label" comment="Label of Show app icon preference in Advanced">قرار دادن آیکون برنامه در لانچر</string>
<string name="pref__advanced__force_private_mode__label" comment="Label of Force private mode preference in Advanced">حالت خصوصی اجباری</string>
<string name="pref__advanced__force_private_mode__summary" comment="Summary of Force private mode preference in Advanced">هر ویژگی که که باید با ورودی شما کار کنند را موقتا غیرفعال می کند</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">درباره</string>
<string name="about__app_icon_content_description" comment="Content description of app icon in About">آیکون برنامه فلوریس بورد</string>
<string name="about__view_licenses" comment="Label of View licenses button in About">مجوزهای منبع باز</string>
<string name="about__view_privacy_policy" comment="Label of View privacy policy button in About">سیاست حفظ حریم خصوصی</string>
<string name="about__view_source_code" comment="Label of View source code button in About">کد منبع</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">مجوزهای متن باز</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">سازنده</item>
<item quantity="other">سازندگان</item>
</plurals>
<string name="assets__file__name">نام</string>
<string name="assets__file__source">منبع</string>
<string name="assets__action__add">اضافه کردن</string>
<string name="assets__action__cancel">لغو</string>
<string name="assets__action__cancel_confirm_title">تائید لغو</string>
<string name="assets__action__cancel_confirm_message">آیا مطمئنید که می خواهید هر یک از تغییرات ذخیره نشده را لغو کنید؟ این عمل در صورت اجرا غیرقابل بازگشت خواهد بود.</string>
<string name="assets__action__delete">حذف</string>
<string name="assets__action__delete_confirm_title">تائید حذف</string>
<string name="assets__action__delete_confirm_message">آیا مطمعنید که می خواهید \"%s\" را حذف کنید؟ این عمل دز صورت اجرا، غیرقابل بازگشت خواهد بود.</string>
<string name="assets__action__edit">ویرایش</string>
<string name="assets__action__export">استخراج</string>
<string name="assets__action__import">واردکردن</string>
<string name="assets__action__no">خیر</string>
<string name="assets__action__save">ذخیره</string>
<string name="assets__action__yes">بله</string>
<string name="assets__error__invalid">نامعتبر</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">راه‌اندازی</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">قبلی</string>
<string name="setup__cancel_button" comment="Label of Cancel button in Setup">لغو</string>
<string name="setup__next_button" comment="Label of Next button in Setup (try to find a short translation due to limited space in UI)">بعدی</string>
<string name="setup__finish_button" comment="Label of Finish button in Setup">پایان</string>
<string name="setup__ok_button" comment="Label of OK button in Setup">تأیید</string>
<string name="setup__welcome__title" comment="Title of Welcome fragment in Setup">خوش آمدید!</string>
<string name="setup__welcome__intro" comment="Paragraph in Welcome fragment in Setup">ممنون از اینکه FlorisBoard رو امتحان کردین! قبل از اینکه شروع به استفاده کنید، ما هم چیزای همیشگی که باید برای فعال کردنش در تنظیمات انجام بدهید را داریم، تنظیم زبان/چیدمان و… ولی نگران نباشید - تنظیم جادویی شما را در این کار راهنمایی خواد کرد!</string>
<string name="setup__welcome__privacy" comment="Paragraph in Welcome fragment in Setup">FlorisBoard به طور کامل به حریم خصوصی شما احترام می گذارد و هیچ اطلاعاتی از کاربر دریافت نمی کند. برای اطلاعات بیشتر به اینجا مراجعه کنید:</string>
<string name="setup__welcome__trust" comment="Paragraph in Welcome fragment in Setup">کد سورس FlorisBoard به طور عمومی در دسترس همگان قرار دارد، پس شما می توانید به راحتی اینکه پشت صحنه FlorisBoard چه اتفاقی می افتد را مرور کنید. لینک مخزن را از زیر مشاهده کنید.</string>
<string name="setup__welcome__contribute" comment="Paragraph in Welcome fragment in Setup">یک تنظیم پایانی قبل از شروع - اگر شما به ایرادی/خراب شدنی/مشکلی با FlorisBoard برخورد کردید یا درخواست خواصه خود را دارید - به مخزن GitHub که لینکش در زیر واقع شده بروید و مشکل را استناد کنید. این در تجربه به همه کاربران کمک می کند!</string>
<string name="setup__welcome__intro" comment="Paragraph in Welcome fragment in Setup">ممنون از اینکه فلوریس بورد را امتحان کردین! قبل از اینکه شروع به استفاده کنید، ما باید یک سری کار های همیشگی را انجام داده و برنامه را در تنظیمات دستگاه فعال کنیم، تنظیم زبان/چیدمان و… ولی نگران نباشید - تنظیم جادویی شما را در این کار راهنمایی خواد کرد!</string>
<string name="setup__welcome__privacy" comment="Paragraph in Welcome fragment in Setup">فلوریس بورد به طور کامل به حریم خصوصی شما احترام می گذارد و هیچ اطلاعاتی از کاربر دریافت نمی کند. برای اطلاعات بیشتر به اینجا مراجعه کنید:</string>
<string name="setup__welcome__trust" comment="Paragraph in Welcome fragment in Setup">کد منبع فلوریس بورد به طور عمومی در دسترس همگان قرار دارد، پس شما می توانید به راحتی اینکه پشت صحنه فلوریس چه اتفاقی میافتد را مرور کنید. لینک مخزن را از زیر مشاهده کنید.</string>
<string name="setup__welcome__contribute" comment="Paragraph in Welcome fragment in Setup">یک تنظیم پایانی قبل از شروع - اگر شما به خطا/خراب شدنی/مشکلی با فلوریس بورد برخورد کردید یا درخواست ویژگی خاصی را دارید - به مخزن GitHub که لینکش در زیر واقع شده بروید و مشکل را استناد کنید. این به تجربه همه کاربران کمک می کند!</string>
<string name="setup__welcome__outro" comment="Paragraph in Welcome fragment in Setup">برای شروع راه انداز تنظیمات روی <i>بعدی</i> کلیک کنید.</string>
<string name="setup__enable_ime__title" comment="Title of Enable IME fragment in Setup">فعال سازی FlorisBoard</string>
<string name="setup__enable_ime__text_before_enabled" comment="Description of state in Enable IME fragment before user enabled">در اندروید هر صفحه کلید سفارشی باید به طور دستی قبل از استفاده فعال شود. روی دکمه زیر کلیک کنید تا به تنظیمات <i>زبان &amp; ورودی</i> بروید، بعد مطمعن شوید که <i>FlorisBoard</i> را چک و فعال کرده اید.</string>
<string name="setup__enable_ime__text_after_enabled" comment="Description of state in Enable IME fragment after user enabled">FlorisBoard با موفقیت فعال شد. برای ادامه روی <i>بعدی</i> بزنید!</string>
<string name="setup__make_default__title" comment="Title of Make IME default fragment in Setup">تنظیم FlorisBoard به پیشفرض</string>
<string name="setup__enable_ime__title" comment="Title of Enable IME fragment in Setup">فعال سازی فبوریس بورد</string>
<string name="setup__enable_ime__text_before_enabled" comment="Description of state in Enable IME fragment before user enabled">در اندروید برنامه های کیبورد سفارشی باید به طور دستی قبل از استفاده فعال شوند. روی دکمه زیر کلیک کنید تا به تنظیمات <i>زبان &amp; ورودی</i> بروید، بعد مطمئن شوید که <i>فلوریس بورد</i> را چک و فعال کردهاید.</string>
<string name="setup__enable_ime__text_after_enabled" comment="Description of state in Enable IME fragment after user enabled">فلوریس بورد با موفقیت فعال شد. برای ادامه روی <i>بعدی</i> بزنید!</string>
<string name="setup__enable_ime__text_button_language_and_input" comment="Label of language and input button in Enable IME fragment">باز کردن زبان &amp; تنظیمات ورودی</string>
<string name="setup__make_default__title" comment="Title of Make IME default fragment in Setup">تنظیم فلوریس بورد به پیش فرض</string>
<string name="setup__make_default__text_before_switch" comment="Description of state in Make IME default fragment before user switched">هم اکنون فلوریس بورد در سیستم شما فعال شده است. برای استفاده از آن، فلوریس بورد را در بخش انتخاب روش ورودی، انتخاب کنید!</string>
<string name="setup__make_default__text_after_switch" comment="Description of state in Make IME default fragment after user switched">با موفقیت کیبورد پیش فرض را به فلوریس بورد تغییر داده شد!</string>
<string name="setup__make_default__text_switch_button" comment="Label of switch button in Make IME default fragment">تغییر صفحه‌کلید</string>
<string name="setup__finish__title" comment="Title of Setup finished fragment in Setup">نصب تمام شد!</string>
<!-- Crash Dialog strings -->
<string name="crash_dialog__title" comment="Title of crash dialog">گزارش خطای فلوریس بورد</string>
<string name="crash_dialog__description" comment="Description of crash dialog">با عرض پوزش برای این مشکل ، اما فلوریس بورد به دلیلی غیرمنتظره ای متوفق شده است.\n\n اگر می خواهید این خطا را گزارش کنید ، روی \"کپی در کلیپ بورد\" کلیک کنید ، سپس بر روی دکمه \"باز کردن گزارش اشکال\" کلیک کنید. گزارش اشکال را پر کرده و گزارش را وارد کنید. این امر به بهتر و پایدارتر شدن فلوریس بورد برای همه کمک می کند. متشکرم!</string>
<string name="crash_dialog__copy_to_clipboard" comment="Label of Copy to clipboard button in crash dialog">در کلیپ بورد کپی شد</string>
<string name="crash_dialog__open_bug_report_form" comment="Label of Open bug report button in crash dialog">باز کردن گزارش خطا توسط (github.com)</string>
<string name="crash_dialog__close" comment="Label of Close button in crash dialog">بستن</string>
<string name="crash_notification_channel__title" comment="Title of crash notification channel">گزارش های خطای فلوریس بورد</string>
<string name="crash_once_notification__title" comment="Title of the notification for a single crash">فلوریس بورد کار خود را متوقف کرده است…</string>
<string name="crash_once_notification__body" comment="Body of the notification for a single crash">برای دیدن جزئیات خطا ضربه بزنید</string>
<string name="crash_multiple_notification__title" comment="Title of the notification for consecutive crashes">به نظر می رسد فلوریس بورد کار خود را مکرر متوقف می کند…</string>
<string name="crash_multiple_notification__body" comment="Body of the notification for consecutive crashes">در خال بازگشت به کیبورد قبلی برای جلو گیری از بروز خطای دوباره. برای مشاهده جزئیات خطا ، ضربه بزنید</string>
</resources>

View File

@@ -60,34 +60,11 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Tämä asettelu on jo lisätty!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Näppäimistön teema</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Ei määritelty</string>
<string name="settings__theme__background" comment="General label for a background preference">Taustaväri</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Taustaväri aktiivisena</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Taustaväri painettuna</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Merkin väri</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Merkin väri (vaihtoehtoinen)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Merkin väri (caps lock)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Valitse väri</string>
<string name="settings__theme__group_window" comment="Theme group label">Ikkuna &amp; järjestelmä</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Näppäimistö</string>
<string name="settings__theme__group_key" comment="Theme group label">Painike</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Enter-painike</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Painikkeen ponnahdus</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Shift-painike</string>
<string name="settings__theme__group_media" comment="Theme group label">Mediakonteksti</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">Yksikätinen</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Yksikätisyyspainike</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Älypalkki</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Älypalkin painike</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Ensisijainen väri</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Sovelletaan tärkein media välilehti aaltoilu ja valinta korosta</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Ensisijainen väri (tumma teema)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Ei toistaiseksi käytössä, valmiina tulevia toimintoja varten</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Aksenttiväri</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Sovellettu emoji-välilehteen ripple</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Navigointipalkin väri</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">Navigointipalkin tausta.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Navigointipalkin tummat painikkeet</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Aseta päälle tummia tai pois päältä vaaleita painikkeita varten.</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Näppäimistön asetukset</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Painikkeet</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Fonttikoon kerroin (pystysuunnassa)</string>
@@ -107,7 +84,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Erittäin korkea</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Mukautettu</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Mukautettu näppäimistön korkeus</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Alareunan sijainnin korjaus (kaareville näytöille)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Painallus</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Painikeääni</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Painikeäänen voimakkuus</string>
@@ -136,7 +112,6 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Syötä sana liu\'uttamalla sormea sen kirjaimilla</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[EVS] Näytä liu\'un jälki</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Häviää joka sanan jälkeen</string>
<string name="pref__gestures__general_title" comment="Preference group title">Eleet</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Ei toimintoa</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Tarkka merkkien poisto</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Poista nykyinen sana</string>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FlorisBoard</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Pause</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Attendre</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Icône avec trois points. Si elle est visible, elle indique qu\'il est possible d\'utiliser plus de lettres si l\'on appuie plus longtemps.</string>
@@ -40,6 +41,7 @@
<string name="settings__title" comment="Title of Settings">Paramètres</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Plus d\'options</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Aide &amp; commentaires</string>
<string name="settings__help" comment="General label for help buttons in Settings">Aide</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Accueil</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Clavier</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Dactylographie</string>
@@ -64,37 +66,78 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Cette disposition existe déjà !</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Thème du clavier</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Non défini</string>
<string name="settings__theme__background" comment="General label for a background preference">Couleur d\'arrière-plan</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Couleur d\'arrière-plan lorsque actif</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Couleur d\'arrière-plan lorsqu\'on appuie sur une touche</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Couleur du premier plan</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Couleur d\'avant-plan (alternative)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Couleur d\'avant-plan (verrouillage des majuscules)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Sélectionnez une couleur</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Mode du thème</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Toujours clair</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Toujours sombre</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Suivre l\'appareil</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Suivre l\'heure</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Heure du lever du soleil</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Heure du coucher du soleil</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Thème clair</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Thème sombre</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Thème sélectionné</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Adapter les couleurs à l\'application</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Les couleurs du thème s\'adaptent à celles de l\'application utilisée, si cela est supporté par cette dernière.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">Ressources de l\'app FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Stockage interne</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Fournisseur externe</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Gestionnaire du thème (clair)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Gestionnaire du thème (sombre)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Créer un thème vide</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Créer depuis le thème sélectionné</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Personnalisé (basé sur %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Nouveau thème</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Modifier le thème</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nom</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Type</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Ajouter un groupe</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Modifier le groupe</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Ajouter un attribut</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Modifier l\'attribut</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Référence</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Groupe</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Attribut</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Couleur unie</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Dégradé linéaire</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Dégradé radial</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Changer</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">État</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Autre</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Texte</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Aperçu de la valeur du thème</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Veuillez entrer un nom de thème.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Veuillez saisir un nom de groupe qui ne contient que des lettres (a-z et/ou A-Z), des deux-points ( : ) pour le sous-groupe ou des chiffres supplémentaires (0-9), un tilde (~) et des traits de soulignement (_) pour l\'étiquette clé.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Veuillez entrer un nom de groupe.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Ce nom de groupe existe déjà au sein de ce thème. Veuillez en choisir un autre.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Veuillez entrer un nom d\'attribut ne contenant que les lettres a-z et/ou A-Z.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Veuillez entrer un nom d\'attribut.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Ce nom d\'attribut existe déjà dans ce groupe. Veuillez en spécifier un autre.</string>
<string name="settings__theme__group_window" comment="Theme group label">Fenêtre &amp; Système</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Clavier</string>
<string name="settings__theme__group_key" comment="Theme group label">Touche</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">La touche Entrer</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Pop-up de touche</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">La touche Maj</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Clé (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Contexte médiatique</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">À une main</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Bouton à une main</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Mode privé</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">À une main</string>
<string name="settings__theme__group_popup" comment="Theme group label">Fenêtre contextuelle</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Mode privé</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Barre intelligente</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Bouton de la barre intelligente</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Couleur primaire</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Appliqué à la sélection et à l\'ondulation de l\'onglet principal des médias</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Couleur primaire (sombre)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Non utilisé actuellement, réservé pour une implémentation future</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Couleur d\'accentuation</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Appliqué à l\'ondulation de l\'onglet emoji</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Couleur de la barre de navigation</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">L\'arrière-plan de la barre de navigation.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Avant-plan sombre de la barre de navigation</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Réglez sur ON pour sombre ou sur OFF pour clair en avant-plan.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">Bordure des touches</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">Réglez sur ON pour montrer la bordure ou sur OFF pour la cacher</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Bouton de la barre intelligente</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Groupe personnalisé (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Couleur d\'arrière-plan</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Couleur d\'arrière-plan (lorsque actif)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Couleur d\'arrière-plan (lorsqu\'on appuie sur une touche)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Couleur de premier plan</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Couleur d\'avant-plan (alternative)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Couleur de premier plan (lorsqu\'on appuie sur une touche)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Afficher les bordures</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Couleur primaire</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Couleur primaire (sombre)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Couleur d\'accentuation</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Couleur de la barre de navigation</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Barre de navigation avant-plan sombre</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Couleur semi-transparente</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Couleur du texte</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Attributs personnalisés (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Préférences de clavier</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Touches</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Rangée de numéros</string>
@@ -105,6 +148,13 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Activé (priorité à l\'indice)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Activé (priorité à l\'accent)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Activé (priorité intelligente)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Afficher la touche d\'outils</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Affiche une touche d\'outils configurable à côté de la barre d\'espace</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Action de la touche d\'outils</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Passer en emojis</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Changer de langue</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Changer d\'application de clavier</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Dynamique : Changer vers emojis / Changer de langue</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Multiplicateur de la taille de la police (portrait)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Multiplicateur de la taille de la police (paysage)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Disposition</string>
@@ -122,7 +172,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Très haut</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Personnalisée</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Valeur personnalisée de la hauteur du clavier</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Décalage du fond (pour les écrans courbes)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Touche pressée</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Tonalité des touches</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Volume sonore des touches</string>
@@ -154,17 +203,23 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Tapez un mot en faisant glisser votre doigt entre ses lettres</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Montrer la piste de glissement</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Disparaîtra après chaque mot</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gestes</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gestes généraux</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Gestes sur la barre d\'espace</string>
<string name="pref__gestures__other_title" comment="Preference group title">Autres gestes et seuil des gestes</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Aucune action</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Effacer les caractères avec précision</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Supprimer le mot courant</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Supprimer les mots avec précision</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Masquer le clavier</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Insérer une espace</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Déplacer le curseur vers le haut</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Déplacer le curseur vers le bas</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Déplacer le curseur vers la gauche</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Déplacer le curseur vers la droite</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Déplacer le curseur au début de la ligne</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Déplacer le curseur à la fin de la ligne</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Maj</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Afficher le sélecteur de mode de saisie</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Passer à la disposition précédente</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Passer à la disposition précédente</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Passer à la disposition suivante</string>
@@ -175,6 +230,7 @@
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Glisser de la barre d\'espace vers le haut</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Glisser de la barre d\'espace vers la gauche</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Glisser de la barre d\'espace vers la droite</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Appui long sur la barre d\'espace</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Glisser de la touche de suppression vers la gauche</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Seuil de vitesse de glissement</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Très lente</string>
@@ -203,6 +259,26 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Code source</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Licences de logiciels libres</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">Auteur</item>
<item quantity="other">Auteurs</item>
</plurals>
<string name="assets__file__name">Nom</string>
<string name="assets__file__source">Source</string>
<string name="assets__action__add">Ajouter</string>
<string name="assets__action__cancel">Annuler</string>
<string name="assets__action__cancel_confirm_title">Confirmer l\'annulation</string>
<string name="assets__action__cancel_confirm_message">Êtes-vous sûrs de vouloir abandonner tout changement non sauvegardé ? Cette action ne peut être annulée après son exécution.</string>
<string name="assets__action__delete">Supprimer</string>
<string name="assets__action__delete_confirm_title">Confirmer la suppression</string>
<string name="assets__action__delete_confirm_message">Êtes-vous sûrs de vouloir supprimer « %s » ? Cette action ne peut être annulée après son exécution.</string>
<string name="assets__action__edit">Modifier</string>
<string name="assets__action__export">Exporter</string>
<string name="assets__action__import">Importer</string>
<string name="assets__action__no">Non</string>
<string name="assets__action__save">Sauvegarder</string>
<string name="assets__action__yes">Oui</string>
<string name="assets__error__invalid">Invalide</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Configuration</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Préc</string>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FlorisBoard</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Szünet</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Várakozás</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Hárompontos ikon. Ha látható, azt jelzi, hogy több betű használható, ha hosszabb ideig megnyomja.</string>
@@ -40,6 +41,7 @@
<string name="settings__title" comment="Title of Settings">Beállítások</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">További beállítások</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Segítség és visszajelzés</string>
<string name="settings__help" comment="General label for help buttons in Settings">Súgó</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Kezdés</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Billentyűzet</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Gépelés</string>
@@ -64,42 +66,95 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Ez az altípus már létezik!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Billentyűzet téma</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Nem meghatározott</string>
<string name="settings__theme__background" comment="General label for a background preference">Háttérszín</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Aktív háttérszín</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Lenyomott háttérszín</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Előtérszín</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Előtérszín (alternatív)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Előtérszín (caps lock)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Szín kiválasztása</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Téma mód</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Mindig nappali</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Mindig éjszakai</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Rendszertéma követése</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Idő követése</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Napkelte ideje</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Napnyugta ideje</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Nappali téma</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Éjszakai téma</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Kiválasztott téma</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Színek módosítása az alkalmazáshoz</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Színek módosítása az alkalmazáshoz, ha a célalkalmazás támogatja.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">FlorisBoard alkalmazásadatok</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Belső tárhely</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Külső szolgáltató</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Témakezelő (nappali)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Témakezelő (éjszakai)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Üres téma létrehozása</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Létrehozás a kiválasztott témából</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Egyéni (ezen alapul: %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Új téma</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Téma szerkesztése</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Név</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Típus</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Csoport hozzáadása</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Csoport szerkesztése</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Tulajdonság hozzáadása</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Tulajdonság szerkesztése</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Hivatkozás</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Csoport</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Tulajdonság</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Egyszínű</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Lineáris átmenet</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Sugaras átmenet</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Kapcsoló</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Állapot</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Egyéb</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Szöveg</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">A téma értékének előnézete</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Adjon meg egy témanevet.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Adjon meg egy csoportnevet, amely csak betűket (a-z és/vagy A-Z) tartalmaz, vagy kettőspontot (:) a további csoportosításhoz, vagy további számokat (09), hullámvonalat (~) és aláhúzást (_) a billentyűcímkéhez.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Adjon meg egy csoportnevet.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Ez a csoportnév már létezik ebben a témában. Adjon meg egy másikat.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Adjon meg egy tulajdonságnevet, amely csak a-z és/vagy A-Z betűket tartalmaz.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Adjon meg egy tulajdonságnevet.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Ez a tulajdonságnév már létezik ebben a csoportban. Adjon meg egy másikat.</string>
<string name="settings__theme__group_window" comment="Theme group label">Ablak és rendszer</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Billentyűzet</string>
<string name="settings__theme__group_key" comment="Theme group label">Billentyű</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Enter billentyű</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Felugró billentyű</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Shift billentyű</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Billentyű (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Média kontextus</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">Egykezes</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Egykezes gomb</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Privát mód</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">Egykezes</string>
<string name="settings__theme__group_popup" comment="Theme group label">Felugró gomb</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Privát mód</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Okossáv</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Okossáv gomb</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Elsődleges szín</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Alkalmazva a fő média lapokra és a kiemelés színének</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Elsődleges szín (sötét)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Jelenleg nincs használva, fenntartva jövőbeli megvalósításra</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Kiemelés színe</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Alkalmazva az emoji lapokra</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Navigációs sáv színe</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">A navigációs sáv háttere.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Navigációs sáv sötét előtér</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Kapcsolja BE sötét, KI világos előtérszínhez.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">Billentyű szegélye</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">Kapcsolja BE a szegély megjelenítéséhez vagy KI az elrejtéséhez</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Okossáv gomb</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Egyéni csoport (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Háttérszín</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Háttérszín (aktív)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Háttérszín (lenyomva)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Előtérszín</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Előtérszín (alternatív)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Előtérszín (lenyomva)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Szegély megjelenítése</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Elsődleges szín</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Elsődleges szín (sötét)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Kiemelőszín</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Navigációs sáv színe</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Navigációs sáv sötét előtér</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Félig átlátszó szín</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Szövegszín</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Egyéni tulajdonság (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Billentyűzet beállítások</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Billentyűk</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Számsor</string>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Számsor megjelenítése a karakterelrendezés felett</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Másodlagos számsor</string>
<string name="pref__keyboard__hinted_symbols_mode__label" comment="Preference title">Másodlagos szimbólumok</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Letiltva</string>
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Engedélyezve (a másodlagos szimbólumok először)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Engedélyezve (az ékezetes szimbólumok először)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Engedélyezve (intelligens eldöntés)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Kellékgomb megjelenítése</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Egy beállítható kellékgomb megjelenítése a szóköz mellett</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Kellékgomb művelet</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Váltás emojikra</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Nyelv váltása</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Billentyűzetalkalmazás váltása</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Dinamikus: váltás emojikra/váltás nyelvre</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Betűméret szorzó (álló)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Betűméret szorzó (fekvő)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Elrendezés</string>
@@ -117,12 +172,13 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Nagyon magas</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Egyéni</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Egyéni billentyűzetmagasság értéke</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Alsó eltolás (ívelt kijelzőkhöz)</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Alsó eltolás (álló)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Alsó eltolás (fekvő)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Gombnyomás</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Hang gombnyomásra</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Hang gombnyomáskor</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Gombnyomás hangereje</string>
<string name="pref__keyboard__vibration_enabled__label" comment="Preference title">Rezgés gombnyomásra</string>
<string name="pref__keyboard__vibration_strength__label" comment="Preference title">Rezgés erőssége gombnyomásra</string>
<string name="pref__keyboard__vibration_enabled__label" comment="Preference title">Rezgés gombnyomáskor</string>
<string name="pref__keyboard__vibration_strength__label" comment="Preference title">Rezgés erőssége gombnyomáskor</string>
<string name="pref__keyboard__popup_visible__label" comment="Preference title">Felugró megjelenítése</string>
<string name="pref__keyboard__popup_visible__summary" comment="Preference summary">Felugró megjelenítése gombnyomáskor</string>
<string name="pref__keyboard__long_press_delay__label" comment="Preference title">Hosszú gombnyomás késleltetése</string>
@@ -149,17 +205,23 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Írjon be egy szót úgy, hogy ujját a betűin keresztülcsúsztatja</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Nyomvonal megjelenítése</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Minden szó után eltűnik</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gesztusok</string>
<string name="pref__gestures__general_title" comment="Preference group title">Általános gesztusok</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Szóköz gesztusok</string>
<string name="pref__gestures__other_title" comment="Preference group title">Egyéb gesztusok / gesztusküszöb</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Nincs művelet</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Karakterek pontos törlése</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">A jelenlegi szó törlése</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Szavak pontos törlése</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Billentyűzet elrejtése</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Szóköz beszúrása</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Kurzor mozgatása felfelé</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Kurzor mozgatása lefelé</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Kurzor mozgatása balra</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Kurzor mozgatása jobbra</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Kurzor sor elejére helyezése</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Kurzor sor végére helyezése</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Shift</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Bevitelválasztó megnyitása</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Váltás az előző billentyűzetre</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Váltás az előző altípusra</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Váltás a következő altípusra</string>
@@ -170,6 +232,7 @@
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Szóköz felhúzás</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Szóköz balra húzás</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Szóköz jobbra húzás</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Szóköz hosszú lenyomása</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Törlés gomb balra húzás</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Húzás sebesség küszöb</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Nagyon lassú</string>
@@ -198,6 +261,22 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Forráskód</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Nyílt forráskódú licencek</string>
<!-- Assets strings -->
<string name="assets__file__name">Név</string>
<string name="assets__file__source">Forrás</string>
<string name="assets__action__add">Hozzáadás</string>
<string name="assets__action__cancel">Mégse</string>
<string name="assets__action__cancel_confirm_title">Kilépés megerősítése</string>
<string name="assets__action__cancel_confirm_message">Biztosan el szeretne vetni minden mentetlen változtatást? Ezt a műveletet nem lehet visszavonni.</string>
<string name="assets__action__delete">Törlés</string>
<string name="assets__action__delete_confirm_title">Törlés megerősítése</string>
<string name="assets__action__delete_confirm_message">Biztosan törölni szeretné ezt \"%s\"? Ezt a műveletet nem lehet visszavonni.</string>
<string name="assets__action__edit">Szerkesztés</string>
<string name="assets__action__export">Exportálás</string>
<string name="assets__action__import">Importálás</string>
<string name="assets__action__no">Nem</string>
<string name="assets__action__save">Mentés</string>
<string name="assets__action__yes">Igen</string>
<string name="assets__error__invalid">Érvénytelen</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Beállítás</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">Előző</string>

View File

@@ -64,37 +64,11 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Questo stile di input esiste già !</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Tema tastiera</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Sconosciuto</string>
<string name="settings__theme__background" comment="General label for a background preference">Colore di sfondo</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">Colore di sfondo quando attivo</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">Colore di sfondo quando premuto</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">Colore di primo piano</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">Colore di primo piano (alternativo)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">Colore di primo piano (maiuscolo)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">Seleziona un colore</string>
<string name="settings__theme__group_window" comment="Theme group label">Finestra &amp; Sistema</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Tastiera</string>
<string name="settings__theme__group_key" comment="Theme group label">Tasto</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">Inserisci tasto</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">Popup tasto</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">Tasto Shift</string>
<string name="settings__theme__group_media" comment="Theme group label">Contesto multimediale</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">Una mano</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">Pulsante una mano</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">Modalità Privata</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Smartbar</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">Pulsante smartbar</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">Colore primario</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">Applicato alla tab principale e alla selezione</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">Colore primario (scuro)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">Attualmente non utilizzato, riservato per implementazioni future</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">Colore di accento</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">Applicato alla tab delle emoji</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">Colore della barra di navigazione</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">Il colore di sfondo della barra di navigazione.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">Colore scuro di primo piano della barra di navigazione</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">Imposta a ON per un colore di primo piano scuro e OFF per uno chiaro.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">Bordo dei tasti</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">Imposta a ON per mostrare il bordo e ad OFF per nasconderlo</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Tastiera preferenze</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Tasti</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Barra numerica</string>
@@ -122,7 +96,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Altissima</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Personalizzato</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Valore Altezza tastiera personalizzata</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">Offset dal basso (per schermi curvi)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Pressione tasti</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Suono pressione tasti</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Volume del suono alla pressione dei tasti</string>
@@ -154,7 +127,6 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">Scrivi una parola facendo scivolare il dito sulle lettere che la compongono</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Mostra scia dello swype</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Scomparirà dopo ogni parola</string>
<string name="pref__gestures__general_title" comment="Preference group title">Gesti</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Nessuna azione</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Cancella lettere con precisione</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Cancella la parola attuale</string>

View File

@@ -1,26 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">הפסק</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">חכה</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">אייקון של 3 נקודות. אם נראה, הוא מצביע על כך שניתן להשתמש ביותר אותיות אם לוחצים עליו למשך יותר זמן.</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">השהה</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">המתן</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">סמל שלוש הנקודות. אם מוצג, מציין שניתן להשתמש באותיות נוספות בעזרת לחיצה ארוכה.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">סגור מצב שימוש ביד אחת.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">הזז את המקלדת לשמאל.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">הזז את המקלדת לימין.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">הזז את המקלדת שמאלה.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">הזז את המקלדת ימינה.</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">מצב פרטיות</string>
<!--
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">אמוג\'י</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">אמוטיקונים</string>
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">אימוג\'ים</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">סמלי הבעה</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">קמוג\'י</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion" comment="Emoji category name">סמיילים ורגשות</string>
<string name="emoji__category__people_body" comment="Emoji category name">אנשים וחלקי גוף</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">חיות וטבע</string>
<string name="emoji__category__food_drink" comment="Emoji category name">מזון ומשקאות</string>
<string name="emoji__category__food_drink" comment="Emoji category name">מזון &amp; ומשקאות</string>
<string name="emoji__category__travel_places" comment="Emoji category name">נסיעות ומקומות</string>
<string name="emoji__category__activities" comment="Emoji category name">פעילויות</string>
<string name="emoji__category__objects" comment="Emoji category name">אובייקטים</string>
@@ -31,7 +31,7 @@
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">צא מהפנל לעריכת טקסט.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">החלף את המצב של מצב ביד אחת.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">פתח הגדרות.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">שנה לפנל עריכת טקסט.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">עבור ללוח עריכת טקסט.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">עבור לתצוגת קלט מדיה.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">כפתור Undo כדי לבטל את השינוי האחרון</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">כפתור Redo כדי לחזור לשינוי הקודם שבוטל</string>
@@ -40,6 +40,7 @@
<string name="settings__title" comment="Title of Settings">הגדרות</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">אפשרויות נוספות</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">עזרה ומשוב</string>
<string name="settings__help" comment="General label for help buttons in Settings">עזרה</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">מסך הבית</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">מקלדת</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">הקלדה</string>
@@ -64,37 +65,78 @@
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">תת הסוג הזה כבר קיים!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">ערכת נושא של המקלדת</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">לא מוגדר</string>
<string name="settings__theme__background" comment="General label for a background preference">צבע רקע</string>
<string name="settings__theme__background_active" comment="General label for an active background preference">צבע הרקע כאשר מופעל</string>
<string name="settings__theme__background_pressed" comment="General label for a pressed background preference">צבע הרקע כאשר מקש נלחץ</string>
<string name="settings__theme__foreground" comment="General label for a foreground preference">צבע רקע קדמי</string>
<string name="settings__theme__foreground_alt" comment="General label for an alternate foreground preference">צבע רקע קדמי (אלטרנטיבי)</string>
<string name="settings__theme__foreground_capslock" comment="General label for a capslock foreground preference">צבע קדמי (Caps lock)</string>
<string name="settings__theme__dialog_title" comment="Title of the color selection dialog for a single theme preference">בחר צבע</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">מצב ערכת נושא</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">תמיד בהיר</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">תמיד כהה</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">בהתאם למערכת</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">עקוב אחר הזמן</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">זמן זריחה</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">זמן שקיעה</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">ערכת נושא למצב יום</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">ערכת נושא למצב לילה</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">ערכת נושא נבחרת</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">התאם צבעים לאפליקציה</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">צבעי ערכת הנושא מתאימים לאלו שבאפליקציה הנוכחית, אם אפליקציית היעד תומכת בכך.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">נכסי אפליקצית FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">אחסון פנימי</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">ספק חיצוני</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">מנהל ערכת נושא (יום)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">מנהל ערכת נושא (לילה)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">צור ערכת עיצוב חדשה</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">צור מערכת הנושא שנבחרה</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">מותאם אישית (בהתבסס על %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">ערכת נושא חדשה</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">ערוך ערכת נושא</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">שם</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">סוג</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">הוסף קבוצה</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">ערוך קבוצה</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">הוסף מאפיין</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">ערוך מאפיין</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">התייחסות</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">קבוצה</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">מאפיין</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">צבע אחיד</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">מדרג ליניארי</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">מדרג רדיאלי</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">החלף</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">מצב</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">אחר</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">טקסט</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">תצוגה מקדימה של ערך הנושא</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">אנא הכנס שם ערכת נושא.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">אנא הזן שם קבוצה המכיל רק אותיות (az ו / או AZ), נקודתיים (:) לקבוצת משנה או בנוסף מספרים (09), טילדה (~) וקו תחתון (_) למפתח. תווית.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">אנא הזן שם קבוצה.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">שם קבוצה זה כבר קיים בערכת נושא זו. אנא בחר שם אחר.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">אנא הזן שם מאפיין המכיל רק אותיות a-z ו / או A-Z.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">אנא הזן שם מאפיין.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">שם מאפיין זה כבר קיים בקבוצה זו. אנא ציין אחד אחר.</string>
<string name="settings__theme__group_window" comment="Theme group label">חלון ומערכת</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">מקלדת</string>
<string name="settings__theme__group_key" comment="Theme group label">מקש</string>
<string name="settings__theme__group_key_enter" comment="Theme group label">מקש Enter</string>
<string name="settings__theme__group_key_popup" comment="Theme group label">חלונית מקש</string>
<string name="settings__theme__group_key_shift" comment="Theme group label">מקש Shift</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">מפתח (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">אזור המֶדְיָה</string>
<string name="settings__theme__group_one_handed" comment="Theme group label">ביד אחת</string>
<string name="settings__theme__group_one_handed_button" comment="Theme group label">כפתור יד אחת</string>
<string name="settings__theme__group_private_mode" comment="Theme group label">מצב פרטיות</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">ביד אחת</string>
<string name="settings__theme__group_popup" comment="Theme group label">חלון קופץ</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">מצב פרטיות</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">שורה חכמה</string>
<string name="settings__theme__group_smartbar_button" comment="Theme group label">כפתור שורה חכמה</string>
<string name="pref__theme__colorPrimary_title" comment="Title of Color primary theme preference">צבע ראשי</string>
<string name="pref__theme__colorPrimary_summary" comment="Summary of Color primary theme preference">מיושם על לשונית המדיה העיקרית ועל סממן הבחירה</string>
<string name="pref__theme__colorPrimaryDark_title" comment="Title of Color primary dark theme preference">צבע ראשי (כהה)</string>
<string name="pref__theme__colorPrimaryDark_summary" comment="Summary of Color primary dark theme preference">כרגע לא בשימוש, עם זאת שמור עבור מימוש עתידי</string>
<string name="pref__theme__colorAccent_title" comment="Title of Color accent theme preference">צבע הדגשה</string>
<string name="pref__theme__colorAccent_summary" comment="Summary of Color accent theme preference">מיושם על לשונית האימוג\'י</string>
<string name="pref__theme__navBarColor_title" comment="Title of Nav bar color theme preference">צבע סרגל הניווט</string>
<string name="pref__theme__navBarColor_summary" comment="Summary of Nav bar color theme preference">צבע הרקע של סרגל הניווט.</string>
<string name="pref__theme__navBarIsLight_title" comment="Title of Nav bar is light theme preference">סרגל ניווט בעל רקע קדמי כהה</string>
<string name="pref__theme__navBarIsLight_summary" comment="Summary of Nav bar is light theme preference">הגדר דלוק עבור כהה או לחילופין כבוי עבור רקע קדמי בהיר.</string>
<string name="pref__theme__showKeyBorder_title" comment="Title of Show Key Border preference">גבולות מקשים</string>
<string name="pref__theme__showKeyBorder_summary" comment="Summary of Show Key Border preference">הגדר דלוק כדי להציג גבולות מקשים או לחילופין כבוי כדי להחביא אותם</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">כפתור שורה חכמה</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">קבוצה מותאמת אישית (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">צבע רקע</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">צבע רקע (מופעל)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">צבע רקע (לחוץ)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">צבע החזית</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">צבע חזית (חלופי)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">צבע חזית (לחוץ)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">הצג גבול</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">צבע ראשי</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">צבע ראשי (כהה)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">צבע הדגשה</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">צבע סרגל הניווט</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">סרגל ניווט בעל רקע חזית כהה</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">צבע שקוף למחצה</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">צבע טקסט</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">מאפיין מותאם אישית (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">העדפות מקלדת</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">מקשים</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">שורת המספרים</string>
@@ -105,6 +147,13 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">פעיל (עדיפות לסמלים)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">פעיל (עדיפות למבטא)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">פעיל (עדיפות בצורה חכמה)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">הצג מפתח שירות</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">מראה מפתח שירות הניתן להגדרה לצד סרגל הרווח</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">פעולת מפתח השירות</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">עבור לאימוג\'ים</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">החלף שפה</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">החלף אפליקציית מקלדת</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">דינמי: עבור לאימוג\'ים / החלף שפה</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">מכפלת גודל גופן (אנכי)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">מכפלת גודל גופן (אופקי)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">אופן תצוגה</string>
@@ -122,7 +171,6 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">גבוה במיוחד</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">מותאם אישית</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">גובה מקלדת מותאם אישית</string>
<string name="pref__keyboard__bottom_offset__label" comment="Preference title">היסט מהתחתית (למסכים מעוקלים)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">לחיצת מקש</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">שמע בעת לחיצה על מקש</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">השמע צליל בעת לחיצה על מקש</string>
@@ -154,17 +202,23 @@
<string name="pref__glide__enabled__summary" comment="Preference summary">הקלד מילה באמצעות החלקה של האצבע בין האותיות</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] הצד את שביל הגלישה</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">יעלם אחרי כל מילה</string>
<string name="pref__gestures__general_title" comment="Preference group title">מחוות</string>
<string name="pref__gestures__general_title" comment="Preference group title">מחוות כלליות</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">מחוות סרגל רווח</string>
<string name="pref__gestures__other_title" comment="Preference group title">מחוות אחרות / ספי מחווה</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">ללא פעולה</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">מחיקת תווים בקפדנות</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">מחק מילה נוכחית</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">מחיקת מילים בקפדנות</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">הסתר מקשים</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">הכנס רווח</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">הזז סמן למעלה</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">הזז סמן למטה</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">הזז סמן שמאלה</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">הזז סמן ימינה</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">הזז את הסמן לתחילת השורה</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">העבר את הסמן לסוף השורה</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Shift</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">הצג בורר שיטות קלט</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">החלפה למקלדת הקודמת</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">החלף לתת-סוג הקודם</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">החלף לתת-סוג הבא</string>
@@ -175,6 +229,7 @@
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">החלקה למעלה על מקש הרווח</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">החלקה שמאלה על מקש הרווח</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">החלקה ימינה על מקש הרווח</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">הצג בורר שיטות קלט</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">החלקה שמאלה על מקש ה-Delete</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">סף מהירות החלקה</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">איטי מאוד</string>
@@ -203,6 +258,28 @@
<string name="about__view_source_code" comment="Label of View source code button in About">קוד מקור</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">רישיונות קוד פתוח</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">יוצר</item>
<item quantity="two">יוצרים</item>
<item quantity="many">יוצרים</item>
<item quantity="other">יוצרים</item>
</plurals>
<string name="assets__file__name">שם</string>
<string name="assets__file__source">מקור</string>
<string name="assets__action__add">הוסף</string>
<string name="assets__action__cancel">ביטול</string>
<string name="assets__action__cancel_confirm_title">אשר ביטול</string>
<string name="assets__action__cancel_confirm_message">האם אתה בטוח שברצונך לבטל שינויים שלא נשמרו? לא ניתן לבטל פעולה זו לאחר ביצועה.</string>
<string name="assets__action__delete">מחק</string>
<string name="assets__action__delete_confirm_title">אישור מחיקה</string>
<string name="assets__action__delete_confirm_message">האם אתה בטוח שברצונך למחוק את \"%s\"? לא ניתן לבטל פעולה זו לאחר ביצועה.</string>
<string name="assets__action__edit">ערוך</string>
<string name="assets__action__export">ייצוא</string>
<string name="assets__action__import">ייבוא</string>
<string name="assets__action__no">לא</string>
<string name="assets__action__save">שמור</string>
<string name="assets__action__yes">כן</string>
<string name="assets__error__invalid">לא תקין</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">הגדרות</string>
<string name="setup__prev_button" comment="Label of Previous button in Setup (try to find a short translation due to limited space in UI)">הקודם</string>

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Rawesandin</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Wendeman</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Îkona sê-dot. Eger xuya be, nîşan dide ku eger zêdetir pêl bê kirin, zêdetir tîp dikarin bên bikaranîn.</string>
<!-- One-handed strings -->
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Moda taybet</string>
<!--
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">Xende</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Hestnîşan</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">Kaomoji</string>
<!-- Emoji strings -->
<string name="emoji__category__activities" comment="Emoji category name">Çalakî</string>
<string name="emoji__category__objects" comment="Emoji category name">Amanc</string>
<string name="emoji__category__symbols" comment="Emoji category name">Sembol</string>
<string name="emoji__category__flags" comment="Emoji category name">Alayen</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Mîhengan veke.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Mîhengan</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Vebijêrkên zêdetir</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Alîkarî &amp; Dazanînên paş</string>
<string name="settings__help" comment="General label for help buttons in Settings">Alîkarî</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Mal</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Klavye</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Nivîsin</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Tema</string>
<string name="settings__navigation__gestures" comment="Long-press hint of bottom nav item Gestures in Settings">Jed</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">Rawêj</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">Jixwebera Sîstemê</string>
<string name="settings__home__title" comment="Title of the Home fragment">Bi xêr hatî %s</string>
<string name="settings__home__ime_not_enabled" comment="Error message shown in Home fragment when FlorisBoard is not enabled in the system">FlorisBoard di pergalê de ne çalak e û ji ber vê yekê dê wekî rêbazek têketê di hilbijarka têketê de tune be. Ji bo çareserkirina vê pirsgirêkê li vir bitikin.</string>
<string name="settings__home__ime_not_selected" comment="Warning message shown in Home fragment when FlorisBoard is not selected as the default keyboard">FlorisBoard wekî metoda têketê ya pêşdarazî nayê hilbijartin. Ji bo çareserkirina vê pirsgirêkê li vir bitikin.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Spas ji bo ceribandina FlorisBoard! Ev proje hîn di alfayê de ye û ji ber vê yekê taybetmendiyên winda Heke tu çewtiyekê dibînî an jî dixwazî pêşniyarekê bikî, ji kerema xwe repo ya li GitHub vekolin û pirsgirêkê pel bikin. Ev dibe alîkar ku FlorisBoard baştir bibe. Sax bî!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Ziman û klavye</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Wusa dixuye ku te tu cureyên jêr ava nekirine. Wekî paşvekê wê subtype English/QWERTY were bikaranîn!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Zêdekirin</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Zêdekirina Ziman</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">Pêkanîn</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">Betal kirin</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">Jêbirin</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Guherîne ziman</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">Ziman</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Nenas</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Moda tema</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Her dem roj</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Her dem şev</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Pergalê bişopîne</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Demê bişopîne</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Dema rojbûnê</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">dema berava rojê</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Rûkara Rojê</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Rûkara şevê</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Rûkara Hilbijartî</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Rengan li gorî pêvekan adapte bike</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nav</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Cure</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Referans</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Kom</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Taybetî</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Rengê tarî</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Gradyana xêzî</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Gradyana Gloverî</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Biguherîne</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Dox</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Din</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Nivîs</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Pêşdîtin ji bo nirxa tema</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Ji kerema xwe re navekî dirbê têkeve.</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Klavye</string>
<string name="settings__theme__group_key" comment="Theme group label">Kilîd</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Rengê Paşrûyê</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Rengê rûerdê</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Rengê rûerdê (Altêrnatîf)</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Rengê sereke</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Rengê sereke (Tarî)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Rengê devkî</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Rengê darka navîgasyonê</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Rengê nivîsarê</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Hat neçalakkirin</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Raxistin</string>
<string name="pref__keyboard__height_factor__normal" comment="Preference value">Normal</string>
<string name="pref__keyboard__height_factor__mid_tall" comment="Preference value">Nîv-dirêj</string>
<string name="pref__keyboard__height_factor__tall" comment="Preference value">Dirêj</string>
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Dirêjahiya zêde</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Edeba</string>
<string name="settings__typing__title" comment="Title of Typing experience fragment">Serpêhatiya nivîsandinê</string>
<string name="pref__suggestion__title" comment="Preference group title">Pêşniyar</string>
<string name="pref__correction__title" comment="Preference group title">Rastkirin</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Bixweber-kapîtalîzasyon</string>
<string name="pref__glide__title" comment="Preference group title">Glide typing</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Bê çalakî</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Klavyeyê veşêre</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Shift</string>
<string name="pref__gestures__swipe_velocity_threshold__slow" comment="Preference value for swipe velocity threshold">Hêdî</string>
<string name="pref__gestures__swipe_velocity_threshold__normal" comment="Preference value for swipe velocity threshold">Normal</string>
<string name="pref__gestures__swipe_velocity_threshold__fast" comment="Preference value for swipe velocity threshold">Lez</string>
<string name="pref__gestures__swipe_distance_threshold__normal" comment="Preference value for swipe distance threshold">Normal</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">Derbar</string>
<string name="about__view_licenses" comment="Label of View licenses button in About">Lîsansên çavkaniya vekirî</string>
<string name="about__view_source_code" comment="Label of View source code button in About">Koda çavkanî</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Lîsansên çavkaniya vekirî</string>
<!-- Assets strings -->
<string name="assets__file__name">Nav</string>
<string name="assets__action__add">Zêdekirin</string>
<string name="assets__action__cancel">Betal kirin</string>
<string name="assets__action__delete">Jêbirin</string>
<string name="assets__action__edit">Destkarî</string>
<string name="assets__action__export">Hinardin</string>
<!-- Setup UI strings -->
<!-- Crash Dialog strings -->
</resources>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">일시 정지</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">기다리기</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">한 손 조작 모드 닫기.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">키보드를 왼쪽으로 이동</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">키보드를 오른쪽으로 이동</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">사생활 모드</string>
<!--
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">이모지들</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">이모티콘들</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">카우모지</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion" comment="Emoji category name">웃음 &amp; 이모티콘</string>
<string name="emoji__category__people_body" comment="Emoji category name">사람 &amp; 사람들</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">동물들 &amp; 자연</string>
<string name="emoji__category__food_drink" comment="Emoji category name">음식 &amp; 음료</string>
<string name="emoji__category__travel_places" comment="Emoji category name">여행 &amp; 장소들</string>
<string name="emoji__category__activities" comment="Emoji category name">활동들</string>
<string name="emoji__category__objects" comment="Emoji category name">사물들</string>
<string name="emoji__category__symbols" comment="Emoji category name">기호</string>
<string name="emoji__category__flags" comment="Emoji category name">깃발</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">텍스트 수정판 나가기.</string>
<!-- Settings UI strings -->
<!-- About UI strings -->
<!-- Assets strings -->
<!-- Setup UI strings -->
<!-- Crash Dialog strings -->
</resources>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- One-handed strings -->
<!-- Private mode info dialog strings -->
<!--
<string name="private_mode_dialog__text" comment="Text of the private mode dialog">The icon you just clicked at indicates that FlorisBoard works in the private mode. This means that all features which require to process and temporarily save your input stop working. This applies at minimum to the following features (if they\'ve been turned on previously):\n\n - Next word algorithm adjustments\n\n - Clipboard paste suggestions\n\n - Clipboard history\n\nFlorisBoard enters this mode either if an app requests it or if it was specifically enabled in the advanced settings.</string>
-->
<!-- Media strings -->
<!-- Emoji strings -->
<!-- Smartbar strings -->
<!-- Settings UI strings -->
<!-- About UI strings -->
<!-- Assets strings -->
<!-- Setup UI strings -->
<!-- Crash Dialog strings -->
</resources>

Some files were not shown because too many files have changed in this diff Show More