Compare commits

..

60 Commits

Author SHA1 Message Date
Patrick Goldinger
91cbbe74a3 Release v0.3.8 2021-02-28 23:57:29 +01:00
Patrick Goldinger
637d7fe503 Merge pull request #405 from florisboard/fix-memory-leaks
Fix memory management for Flictionaries & prediction algorithm
2021-02-28 23:44:59 +01:00
Patrick Goldinger
6a5e5a1708 Update translations from Crowdin 2021-02-28 19:48:32 +01:00
Patrick Goldinger
22fad5ba0b Fix logic bugs in prediction algorithm 2021-02-28 18:58:13 +01:00
Patrick Goldinger
f3d2c8257a Improve internal prediction algorithm memory management 2021-02-28 18:07:06 +01:00
Patrick Goldinger
bc89675269 Improve Flictionary load function 2021-02-28 15:29:23 +01:00
Patrick Goldinger
2603eb2b52 Fix end count bug in load function 2021-02-27 19:26:29 +01:00
Patrick Goldinger
38baac1af9 Correct move to start/end of line behavior (#340) 2021-02-27 14:22:03 +01:00
Patrick Goldinger
7e56094f5c Merge pull request #338 from X-yl/keyspacing
Add options for key spacing
2021-02-27 12:24:08 +01:00
Patrick Goldinger
af6ee13855 Sort language list in subtype add/edit dialog alphabetically (#361) 2021-02-27 12:15:42 +01:00
Patrick Goldinger
edb8d87fa0 Fix enter popup not working on symbol/numeric_advanced layout (#350) 2021-02-27 11:49:42 +01:00
Patrick Goldinger
ff35372945 Merge pull request #329 from florisboard/feat-suggestions-phase1
Suggestions implementation: Phase 1
2021-02-26 20:55:00 +01:00
Patrick Goldinger
b6edbf76d0 Merge branch 'master' into feat-suggestions-phase1 2021-02-26 20:40:41 +01:00
Patrick Goldinger
1bde28e288 Move Flictionary load to Dispatchers.IO context 2021-02-26 19:30:11 +01:00
Patrick Goldinger
aafb02cb68 Cleanup and improve prediction components 2021-02-26 18:58:10 +01:00
Patrick Goldinger
a07c91f089 Update precompiled Flictionary to contain basic profanity entries 2021-02-26 02:07:44 +01:00
Patrick Goldinger
1af3c1a210 Rework suggestion preferences UI for first experimental release 2021-02-26 01:07:30 +01:00
Patrick Goldinger
c13ec8aca9 Improve suggestion memory management 2021-02-25 20:39:51 +01:00
Patrick Goldinger
4a826cc0a3 Improve code and document NgramNode 2021-02-25 01:40:04 +01:00
Patrick Goldinger
1c9e4c0b4c Fix offset bug in EditorInstance 2021-02-25 01:21:04 +01:00
Patrick Goldinger
6cbbca5658 Add edit distance to prediction algorithm / Improve performance 2021-02-25 01:13:29 +01:00
Patrick Goldinger
a1b8550fe2 Rework Flictionary load() / Improve search algorithm 2021-02-24 03:04:51 +01:00
Patrick Goldinger
ab1007175d Update English Flictionary 2021-02-23 02:19:39 +01:00
Patrick Goldinger
4cf8b4af58 Add new Flictionary decoder / Add basic unigram prediction algorithm 2021-02-23 01:51:19 +01:00
Patrick Goldinger
2b001d9eb8 Add abstract implementation of NLP related interfaces 2021-02-15 18:56:55 +01:00
x-yl
286ddd9971 make key spacing for smartbar use dimens.xml 2021-02-13 22:41:39 +04:00
x-yl
d4c6411e1a Update margin for KeyboardRowView in onMeasure 2021-02-13 22:31:43 +04:00
Patrick Goldinger
915bcec0ee Merge pull request #343 from yashpalgoyal1304/patch-1
Added PR links
2021-02-13 18:09:38 +01:00
yashpalgoyal1304
93eb731bf0 Added PR links 2021-02-13 21:29:37 +05:30
x-yl
7a02f1c958 fix bug by changing desired to measured 2021-02-13 09:57:29 +04:00
x-yl
160d31beb0 Update KeyView layout in onMeasure instead of refreshing all layouts 2021-02-13 09:56:00 +04:00
x-yl
6d389b9a7f Added options for key spacing 2021-02-12 18:21:07 +04:00
Patrick Goldinger
3ea620a22e Merge pull request #333 from serebit/codebase-cleanup-final
Clean up codebase
2021-02-11 20:41:00 +01:00
Patrick Goldinger
94f9f3f3e7 Add Flictionary class / Add English binary dictionary file 2021-02-11 20:19:40 +01:00
Campbell Jones
8f28d0e81a Clean up codebase 2021-02-10 15:38:32 -05:00
Patrick Goldinger
07ce0c83fa Add phantom space behavior / Add Suggestion click functionality 2021-02-09 23:35:20 +01:00
Patrick Goldinger
c95244cc06 Merge pull request #331 from serebit/gitattributes
Add exception for bat files to gitattributes
2021-02-09 22:12:47 +01:00
Campbell Jones
3c2d427b1d Add exception for bat files to gitattributes 2021-02-09 15:19:25 -05:00
Patrick Goldinger
85da2141cb Complete overhaul of EditorInstance core class 2021-02-09 04:57:10 +01:00
Patrick Goldinger
cc9688a2dd Merge pull request #326 from serebit/master
Use haptic feedback by default if available
2021-02-08 20:46:13 +01:00
Campbell Jones
cd048af114 Use haptic feedback by default if available 2021-02-08 12:32:02 -05:00
Patrick Goldinger
4382dfc869 Merge pull request #319 from Salamandar/bépo
Edit bépo layout to add "êà" keys
2021-02-05 16:09:00 +01:00
Félix Piédallu
a622749b7b Edit bépo layout to add êà keys 2021-02-05 15:00:16 +01:00
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
113 changed files with 4238 additions and 1303 deletions

13
.editorconfig Normal file
View File

@@ -0,0 +1,13 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
trim_trailing_whitespace = true
[{*.har,*.json}]
indent_size = 2

3
.gitattributes vendored
View File

@@ -1 +1,2 @@
* text=auto eol=lf
* text=auto eol=lf
*.bat text=auto eol=crlf

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

@@ -64,7 +64,7 @@ milestones, please refer to the [Feature roadmap](#feature-roadmap).
### Layouts
* [x] Latin character layouts (QWERTY, QWERTZ, AZERTY, Swiss, Spanish,
Norwegian, Swedish/Finnish, Icelandic, Danish, Hungarian,
Croatian, Polish, Romanian); more coming in future versions
Croatian, Polish, Romanian, Colemak, Dvorak); more coming in future versions
* [x] Non-latin character layouts (Arabic, Persian, Greek, Russian
(JCUKEN))
* [x] Adapt to situation in app (password, url, text, etc. )
@@ -106,7 +106,7 @@ most likely be delayed back, even though I'm eager to stick to these as
close as possible.
### [v0.4.0](https://github.com/florisboard/florisboard/milestone/4)
- Module A: Smartbar rework (Implemented with #91)
- Module A: Smartbar rework (Implemented with [#91])
- Ability to enable/disable Smartbar (features below thus only work if
Smartbar is enabled)
- Dynamic switching between clipboard tools and word suggestions
@@ -115,14 +115,13 @@ close as possible.
- Complete rework of the Smartbar code base and the Smartbar layout
definition in XML
- Module B: Composing suggestions
- Module B: Composing suggestions (Phase 1: [#329])
- Auto-suggestion of words based of precompiled dictionaries
- Management of custom dictionary entries
- Opt-in only: Learning of often typed word pais to better predict next
words over time. Data collected here is stored locally and never leaves
- Next-word suggestions by training language models. Data collected here is stored locally and never leaves
the user's device.
- Module C: Extension packs (base implementation with #162)
- Module C: Extension packs (base implementation with [#162])
- Ability to load dictionaries (and later potentially other cool
features too) only if needed to keep the core APK size small
- Currently unclear how exactly this will work, but this is definitely
@@ -132,10 +131,10 @@ close as possible.
- Swiping over the characters will automatically convert this to a word
- Possibly also add improvements based on the Flow keyboard
- Module E: Theme rework (Implemented with #162)
- Module E: Theme rework (Implemented with [#162])
- Themes are now based on the Asset schema
- Dynamic theme creation
- Different theme modes (`Always day`, `Always dark`, `Follow system`
- Different theme modes (`Always day`, `Always night`, `Follow system`
and `Follow time`)
- Define a separate theme both for day and night theme
- Adapt to app theme if possible
@@ -154,6 +153,10 @@ Backlog (currently not assigned to any milestone):
- Theme import/export
- Floating keyboard
[#91]: https://github.com/florisboard/florisboard/pull/91
[#162]: https://github.com/florisboard/florisboard/pull/162
[#329]: https://github.com/florisboard/florisboard/pull/329
## Contributing
Wanna contribute to FlorisBoard? That's great to hear! There are lots of
different ways to help out. Bug reporting, making pull requests,
@@ -181,6 +184,21 @@ to get more information on this topic.
* [expandable-fab](https://github.com/nambicompany/expandable-fab) by
[Nambi](https://github.com/nambicompany)
## Usage notes for included binary dictionary files
All binary dictionaries included within this project in
(this)[app/src/main/assets/ime/dict) asset folder are built from various
sources, as stated below.
### Source 1: [wordfreq library by LuminosoInsight](https://github.com/LuminosoInsight/wordfreq):
`wordfreq` is a repository which provides both a Python library and raw
data (the wordlists). Only the data has been extracted in order to build
binary dictionary files from it. `wordfreq`'s data is licensed under the
Creative Commons Attribution-ShareAlike 4.0 license
(https://creativecommons.org/licenses/by-sa/4.0/).
For further information on what wordfreq's data depends on, see
(https://github.com/LuminosoInsight/wordfreq#license).
## License
```
Copyright 2020 Patrick Goldinger

1
app/.gitignore vendored
View File

@@ -1 +0,0 @@
/build

View File

@@ -1,74 +0,0 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
defaultConfig {
applicationId "dev.patrickgold.florisboard"
minSdkVersion 23
targetSdkVersion 29
versionCode 25
versionName "0.3.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
viewBinding true
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
testImplementation 'androidx.test:core:1.3.0'
testImplementation 'org.mockito:mockito-core:1.10.19'
testImplementation 'org.mockito:mockito-inline:2.13.0'
testImplementation 'org.robolectric:robolectric:4.4'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'com.google.android:flexbox:2.0.1'
implementation "com.squareup.moshi:moshi-kotlin:1.9.2"
implementation 'com.squareup.moshi:moshi-adapters:1.9.2'
implementation 'com.google.android.material:material:1.2.1'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7"
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation "com.michael-bull.kotlin-result:kotlin-result:1.1.9"
implementation 'com.nambimobile.widgets:expandable-fab:1.0.2'
}

77
app/build.gradle.kts Normal file
View File

@@ -0,0 +1,77 @@
plugins {
id("com.android.application") version "4.1.2"
kotlin("android") version "1.4.30"
}
android {
compileSdkVersion(29)
buildToolsVersion("29.0.2")
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs = listOf("-Xallow-result-return-type") // enables use of kotlin.Result
}
defaultConfig {
applicationId = "dev.patrickgold.florisboard"
minSdkVersion(23)
targetSdkVersion(29)
versionCode(27)
versionName("0.3.8")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
viewBinding = true
}
buildTypes {
named("debug").configure {
applicationIdSuffix = ".debug"
resValue("string", "floris_app_name", "FlorisBoard Debug")
}
named("release").configure {
proguardFiles.add(getDefaultProguardFile("proguard-android-optimize.txt"))
resValue("string", "floris_app_name", "@string/app_name")
}
}
testOptions {
unitTests {
isIncludeAndroidResources = true
}
}
lintOptions {
isAbortOnError = false
}
}
dependencies {
implementation("androidx.appcompat", "appcompat", "1.2.0")
implementation("androidx.core", "core-ktx", "1.3.2")
implementation("androidx.preference", "preference-ktx", "1.1.1")
implementation("androidx.constraintlayout", "constraintlayout", "2.0.4")
implementation("com.google.android", "flexbox", "2.0.1") // requires jcenter as of version 2.0.1
implementation("com.squareup.moshi", "moshi-kotlin", "1.11.0")
implementation("com.squareup.moshi", "moshi-adapters", "1.11.0")
implementation("com.google.android.material", "material", "1.3.0")
implementation("org.jetbrains.kotlinx", "kotlinx-coroutines-android", "1.4.2")
implementation("com.jaredrummler", "colorpicker", "1.1.0")
implementation("com.jakewharton.timber", "timber", "4.7.1")
implementation("com.michael-bull.kotlin-result", "kotlin-result", "1.1.10")
implementation("com.nambimobile.widgets", "expandable-fab", "1.0.2")
testImplementation("junit", "junit", "4.13.1")
testImplementation("org.mockito", "mockito-inline", "3.7.7")
testImplementation("org.robolectric", "robolectric", "4.5.1")
androidTestImplementation("androidx.test.ext", "junit", "1.1.2")
androidTestImplementation("androidx.test.espresso", "espresso-core", "3.3.0")
}

View File

@@ -1,21 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -1,13 +1,11 @@
package dev.patrickgold.florisboard
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*

View File

@@ -1,3 +0,0 @@
<resources>
<string name="app_name">FlorisBoard Debug</string>
</resources>

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

@@ -215,6 +215,11 @@
"id": 2101,
"languageTag": "sr-RS",
"preferredLayout": "serbian_cyrillic"
},
{
"id": 2201,
"languageTag": "lv-LV",
"preferredLayout": "qwerty"
}
]
}

Binary file not shown.

View File

@@ -31,6 +31,8 @@
{ "code": 231, "label": "ç" }
],
[
{ "code": 234, "label": "ê" },
{ "code": 224, "label": "à" },
{ "code": 121, "label": "y" },
{ "code": 120, "label": "x" },
{ "code": 107, "label": "k" },

View File

@@ -7,13 +7,13 @@
"~enter": {
"main": { "code": -213, "label": "switch_to_media_context", "type": "system_gui" },
"relevant": [
{ "code": -215, "label": "toggle_one_handed_mode", "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

@@ -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,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

@@ -48,7 +48,7 @@
{ "code": 48, "label": "0", "type": "numeric" },
{ "code": 61, "label": "=" },
{ "code": 46, "label": "." },
{ "code": 10, "label": "enter", "type": "enter_editing" }
{ "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

@@ -800,6 +800,384 @@ shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
written authorization of the copyright holder.
</pre>
<hr>
<h3>Dictionary Source 1: wordfreq data</h3>
<span>Copyright (c) 2015 Luminoso Technologies, Inc.</span>
<pre>
Creative Commons Attribution-ShareAlike 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.
</pre>
</body>
</html>

View File

@@ -19,6 +19,7 @@ package dev.patrickgold.florisboard.ime.core
import android.app.Application
import dev.patrickgold.florisboard.BuildConfig
import dev.patrickgold.florisboard.crashutility.CrashUtility
import dev.patrickgold.florisboard.ime.dictionary.DictionaryManager
import dev.patrickgold.florisboard.ime.extension.AssetManager
import dev.patrickgold.florisboard.ime.theme.ThemeManager
import timber.log.Timber
@@ -32,6 +33,7 @@ class FlorisApplication : Application() {
CrashUtility.install(this)
val prefHelper = PrefHelper.getDefaultInstance(this)
val assetManager = AssetManager.init(this)
DictionaryManager.init(this)
ThemeManager.init(this, assetManager, prefHelper)
prefHelper.initDefaultPreferences()
}

View File

@@ -26,19 +26,23 @@ import android.graphics.Color
import android.inputmethodservice.ExtractEditText
import android.inputmethodservice.InputMethodService
import android.media.AudioManager
import android.os.*
import android.os.Build
import android.os.Handler
import android.os.VibrationEffect
import android.os.Vibrator
import android.provider.Settings
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
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.landscapeinput.LandscapeInputUiMode
import dev.patrickgold.florisboard.ime.media.MediaInputManager
import dev.patrickgold.florisboard.ime.popup.PopupLayerView
import dev.patrickgold.florisboard.ime.text.TextInputManager
@@ -48,7 +52,7 @@ 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
@@ -71,7 +75,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
val context: Context
get() = inputWindowView?.context ?: this
private var extractEditLayout: WeakReference<View?> = WeakReference(null)
private var extractEditLayout: WeakReference<ViewGroup?> = WeakReference(null)
var inputView: InputView? = null
private set
private var inputWindowView: InputWindowView? = null
@@ -80,7 +84,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
private var eventListeners: CopyOnWriteArrayList<EventListener> = CopyOnWriteArrayList()
private var audioManager: AudioManager? = null
private var imeManager:InputMethodManager? = null
var imeManager:InputMethodManager? = null
var clipboardManager: ClipboardManager? = null
private val themeManager: ThemeManager = ThemeManager.default()
private var vibrator: Vibrator? = null
@@ -159,7 +163,7 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
override fun onCreate() {
if (BuildConfig.DEBUG) {
/*if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
@@ -176,14 +180,14 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
.penaltyDeath()
.build()
)
}
}*/
Timber.i("onCreate()")
imeManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
imeManager = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
audioManager = getSystemService(Context.AUDIO_SERVICE) as? AudioManager
clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager
clipboardManager?.addPrimaryClipChangedListener(this)
vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as? Vibrator
prefs = PrefHelper.getDefaultInstance(this)
prefs.initDefaultPreferences()
prefs.sync()
@@ -208,7 +212,9 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
baseContext.setTheme(currentThemeResId)
inputWindowView = layoutInflater.inflate(R.layout.florisboard, null) as InputWindowView
inputWindowView = layoutInflater.inflate(R.layout.florisboard, null) as? InputWindowView
inputWindowView?.isHapticFeedbackEnabled = true
eventListeners.toList().forEach { it?.onCreateInputView() }
return inputWindowView
@@ -224,10 +230,52 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
@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)")
@@ -346,7 +394,8 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
)
activeEditorInstance.onUpdateSelection(
oldSelStart, oldSelEnd,
newSelStart, newSelEnd
newSelStart, newSelEnd,
candidatesStart, candidatesEnd
)
eventListeners.toList().forEach { it?.onUpdateSelection() }
}
@@ -400,21 +449,31 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
}
inputView?.invalidate()
// Update ExtractTextView theme
// Update ExtractTextView theme and attributes
extractEditLayout.get()?.let { eel ->
if (eel is ViewGroup) {
eel.setBackgroundColor(theme.getAttr(Theme.Attr.EXTRACT_EDIT_LAYOUT_BACKGROUND).toSolidColor().color)
eel.findViewById<ExtractEditText>(android.R.id.inputExtractEditText)?.let { textView ->
textView.background?.setTint(theme.getAttr(Theme.Attr.WINDOW_COLOR_PRIMARY).toSolidColor().color)
textView.setTextColor(theme.getAttr(Theme.Attr.EXTRACT_EDIT_LAYOUT_FOREGROUND).toSolidColor().color)
textView.setHintTextColor(theme.getAttr(Theme.Attr.EXTRACT_EDIT_LAYOUT_FOREGROUND_ALT).toSolidColor().color)
textView.highlightColor = theme.getAttr(Theme.Attr.WINDOW_COLOR_PRIMARY).toSolidColor().color
}
eel.findViewWithType(Button::class)?.let { actionButton ->
actionButton.setBackgroundColor(theme.getAttr(Theme.Attr.EXTRACT_ACTION_BUTTON_BACKGROUND).toSolidColor().color)
actionButton.setTextColor(theme.getAttr(Theme.Attr.EXTRACT_ACTION_BUTTON_FOREGROUND).toSolidColor().color)
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() }
@@ -435,11 +494,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.
*/
@@ -467,7 +521,12 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
if (prefs.keyboard.vibrationEnabled) {
var vibrationStrength = prefs.keyboard.vibrationStrength
if (vibrationStrength == -1 && prefs.keyboard.vibrationEnabledSystem) {
vibrationStrength = 36
val hapticsPerformed =
inputWindowView?.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP)
if (hapticsPerformed == false) {
vibrationStrength = 36
}
}
if (vibrationStrength > 0) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -519,11 +578,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
@@ -620,10 +679,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"
@@ -727,14 +786,21 @@ class FlorisBoard : InputMethodService(), ClipboardManager.OnPrimaryClipChangedL
val defaultSubtypesLanguageNames: List<String>
init {
val tmpCodes = mutableListOf<String>()
val tmpNames = mutableListOf<String>()
val tmpList = mutableListOf<Pair<String, String>>()
for (defaultSubtype in defaultSubtypes) {
tmpCodes.add(defaultSubtype.locale.toString())
tmpNames.add(defaultSubtype.locale.displayName)
tmpList.add(Pair(defaultSubtype.locale.toString(), defaultSubtype.locale.displayName))
}
defaultSubtypesLanguageCodes = tmpCodes.toList()
defaultSubtypesLanguageNames = tmpNames.toList()
// Sort language list alphabetically by the display name of a language
tmpList.sortBy { it.second }
// Move selected English variants to the top of the list
for (languageCode in listOf("en_CA", "en_AU", "en_UK", "en_US")) {
val index: Int = tmpList.indexOfFirst { it.first == languageCode }
if (index > 0) {
tmpList.add(0, tmpList.removeAt(index))
}
}
defaultSubtypesLanguageCodes = tmpList.map { it.first }.toList()
defaultSubtypesLanguageNames = tmpList.map { it.second }.toList()
}
}
}

View File

@@ -19,7 +19,6 @@ package dev.patrickgold.florisboard.ime.core
import android.content.Context
import android.util.AttributeSet
import android.widget.ViewFlipper
import java.lang.IllegalArgumentException
/**
* Custom ViewFlipper class used to prevent an unnecessary exception to be thrown when it is

View File

@@ -18,12 +18,7 @@ package dev.patrickgold.florisboard.ime.core
import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.ViewFlipper
import dev.patrickgold.florisboard.BuildConfig
import dev.patrickgold.florisboard.R
/**
* Root view of the keyboard.

View File

@@ -21,6 +21,7 @@ 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
@@ -29,7 +30,6 @@ 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
import kotlin.collections.HashMap
/**
* Helper class for an organized access to the shared preferences.
@@ -316,6 +316,9 @@ class PrefHelper(
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 KEY_SPACING_HORIZONTAL = "keyboard__key_spacing_horizontal"
const val KEY_SPACING_VERTICAL = "keyboard__key_spacing_vertical"
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"
@@ -352,6 +355,15 @@ 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 keySpacingHorizontal: Float = 2f
get() = prefHelper.getPref(KEY_SPACING_HORIZONTAL, 4) / 2f
private set
var keySpacingVertical: Float = 5f
get() = prefHelper.getPref(KEY_SPACING_VERTICAL, 10) / 2f
private set
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
@@ -421,11 +433,15 @@ class PrefHelper(
*/
class Suggestion(private val prefHelper: PrefHelper) {
companion object {
const val BLOCK_POSSIBLY_OFFENSIVE = "suggestion__block_possibly_offensive"
const val ENABLED = "suggestion__enabled"
const val SUGGEST_CLIPBOARD_CONTENT = "suggestion__suggest_clipboard_content"
const val USE_PREV_WORDS = "suggestion__use_prev_words"
}
var blockPossiblyOffensive: Boolean
get() = prefHelper.getPref(BLOCK_POSSIBLY_OFFENSIVE, true)
set(v) = prefHelper.setPref(BLOCK_POSSIBLY_OFFENSIVE, v)
var enabled: Boolean
get() = prefHelper.getPref(ENABLED, true)
set(v) = prefHelper.setPref(ENABLED, v)

View File

@@ -20,7 +20,10 @@ import android.content.Context
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import dev.patrickgold.florisboard.util.LocaleUtils
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import java.util.*
/**

View File

@@ -0,0 +1,59 @@
/*
* Copyright (C) 2021 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.dictionary
import dev.patrickgold.florisboard.ime.extension.Asset
import dev.patrickgold.florisboard.ime.nlp.LanguageModel
import dev.patrickgold.florisboard.ime.nlp.MutableLanguageModel
import dev.patrickgold.florisboard.ime.nlp.Token
import dev.patrickgold.florisboard.ime.nlp.WeightedToken
/**
* Standardized dictionary interface for interacting with dictionaries.
*/
interface Dictionary<T : Any, F : Comparable<F>> : Asset {
val languageModel: LanguageModel<T, F>
/**
* Gets token predictions based on the given [precedingTokens] and the [currentToken]. The
* length of the returned list is limited to [maxSuggestionCount]. Note that the returned list
* may at any time give back less items than [maxSuggestionCount] indicates.
*/
fun getTokenPredictions(
precedingTokens: List<Token<T>>,
currentToken: Token<T>?,
maxSuggestionCount: Int,
allowPossiblyOffensive: Boolean
): List<WeightedToken<T, F>>
fun getDate(): Long
fun getVersion(): Int
}
interface MutableDictionary<T : Any, F : Comparable<F>> : Dictionary<T, F> {
override val languageModel: MutableLanguageModel<T, F>
fun trainTokenPredictions(
precedingTokens: List<Token<T>>,
lastToken: Token<T>
)
fun setDate(date: Int)
fun setVersion(version: Int)
}

View File

@@ -0,0 +1,69 @@
/*
* Copyright (C) 2021 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.dictionary
import android.content.Context
import com.github.michaelbull.result.*
import dev.patrickgold.florisboard.ime.extension.AssetRef
import timber.log.Timber
/**
* TODO: document
*/
class DictionaryManager private constructor(private val applicationContext: Context) {
private val dictionaryCache: MutableMap<String, Dictionary<String, Int>> = mutableMapOf()
companion object {
private var defaultInstance: DictionaryManager? = null
fun init(applicationContext: Context): DictionaryManager {
val instance = DictionaryManager(applicationContext)
defaultInstance = instance
return instance
}
fun default(): DictionaryManager {
val instance = defaultInstance
if (instance != null) {
return instance
} else {
throw UninitializedPropertyAccessException(
"${DictionaryManager::class.simpleName} has not been initialized previously. Make sure to call init(applicationContext) before using default()."
)
}
}
}
fun loadDictionary(ref: AssetRef): Result<Dictionary<String, Int>, Throwable> {
dictionaryCache[ref.toString()]?.let {
return Ok(it)
}
if (ref.path.endsWith(".flict")) {
// Assume this is a Flictionary
Flictionary.load(applicationContext, ref).onSuccess { flict ->
dictionaryCache[ref.toString()] = flict
return Ok(flict)
}.onFailure { err ->
Timber.i(err)
return Err(err)
}
} else {
return Err(Exception("Unable to determine supported type for given AssetRef!"))
}
return Err(Exception("If this message is ever thrown, something is completely broken..."))
}
}

View File

@@ -0,0 +1,433 @@
/*
* Copyright (C) 2021 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.dictionary
import android.content.Context
import com.github.michaelbull.result.Err
import com.github.michaelbull.result.Ok
import com.github.michaelbull.result.Result
import dev.patrickgold.florisboard.ime.extension.AssetRef
import dev.patrickgold.florisboard.ime.extension.AssetSource
import dev.patrickgold.florisboard.ime.nlp.*
import java.io.InputStream
import java.util.*
import kotlin.jvm.Throws
/**
* Class Flictionary which takes care of loading the binary asset as well as providing words for
* queries.
*
* This class accepts binary dictionary files of the type "flict" as defined in here:
* https://github.com/florisboard/dictionary-tools/blob/main/flictionary.md
*/
class Flictionary private constructor(
override val name: String,
override val label: String,
override val authors: List<String>,
private val date: Long,
private val version: Int,
private val headerStr: String,
override val languageModel: LanguageModel<String, Int>
) : Dictionary<String, Int> {
companion object {
private const val VERSION_0 = 0x0
private const val MASK_BEGIN_PTREE_NODE = 0x80
private const val CMDB_BEGIN_PTREE_NODE = 0x00
private const val ATTR_PTREE_NODE_ORDER = 0x70
private const val ATTR_PTREE_NODE_TYPE = 0x0C
private const val ATTR_PTREE_NODE_TYPE_CHAR = 0
private const val ATTR_PTREE_NODE_TYPE_WORD_FILLER = 1
private const val ATTR_PTREE_NODE_TYPE_WORD = 2
private const val ATTR_PTREE_NODE_TYPE_SHORTCUT = 3
private const val ATTR_PTREE_NODE_SIZE = 0x03
private const val MASK_END = 0xC0
private const val CMDB_END = 0x80
private const val ATTR_END_COUNT = 0x3F
private const val MASK_BEGIN_HEADER = 0xE0
private const val CMDB_BEGIN_HEADER = 0xC0
private const val ATTR_HEADER_VERSION = 0x1F
private const val MASK_DEFINE_SHORTCUT = 0xF0
private const val CMDB_DEFINE_SHORTCUT = 0xE0
/**
* Loads a Flictionary binary asset from given [assetRef] and returns a result containing
* either the parsed dictionary or an exception giving information about the error which
* occurred.
*/
fun load(context: Context, assetRef: AssetRef): Result<Flictionary, Exception> {
val buffer = ByteArray(5000) { 0 }
val inputStream: InputStream
if (assetRef.source == AssetSource.Assets) {
inputStream = context.assets.open(assetRef.path)
} else {
return Err(Exception("Only AssetSource.Assets is currently supported!"))
}
var headerStr: String? = null
var date: Long = 0
var version = 0
val ngramTree = NgramTree()
var pos = 0
val ngramOrderStack = mutableListOf<Int>()
val ngramTreeStack = mutableListOf<NgramNode>()
while (true) {
if (inputStream.readNext(buffer, 0, 1) <= 0) {
break
}
val cmd = buffer[0].toInt() and 0xFF
when {
(cmd and MASK_BEGIN_PTREE_NODE) == CMDB_BEGIN_PTREE_NODE -> {
if (pos == 0) {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_CMD_BEGIN_PTREE_NODE,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
val order = ((cmd and ATTR_PTREE_NODE_ORDER) shr 4) + 1
val type = ((cmd and ATTR_PTREE_NODE_TYPE) shr 2)
val size = (cmd and ATTR_PTREE_NODE_SIZE) + 1
val freq: Int
val freqSize: Int
when (type) {
ATTR_PTREE_NODE_TYPE_CHAR -> {
freq = NgramNode.FREQ_CHARACTER
freqSize = 0
}
ATTR_PTREE_NODE_TYPE_WORD_FILLER -> {
freq = NgramNode.FREQ_WORD_FILLER
freqSize = 0
}
ATTR_PTREE_NODE_TYPE_WORD -> {
if (inputStream.readNext(buffer, 1, 1) > 0) {
freq = buffer[1].toInt() and 0xFF
} else {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_EOF,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
freqSize = 1
}
else -> return Err(Exception("TODO: shortcut not supported"))
}
if (inputStream.readNext(buffer, freqSize + 1, size) > 0) {
val char = String(buffer, freqSize + 1, size, Charsets.UTF_8)[0]
val node = NgramNode(order, char, freq)
val lastOrder = ngramOrderStack.lastOrNull()
if (lastOrder == null) {
ngramTree.higherOrderChildren.add(node)
} else {
if (lastOrder == order) {
ngramTreeStack.last().sameOrderChildren.add(node)
} else {
ngramTreeStack.last().higherOrderChildren.add(node)
}
}
ngramOrderStack.add(order)
ngramTreeStack.add(node)
pos += (freqSize + 1 + size)
} else {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_EOF,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
}
(cmd and MASK_BEGIN_HEADER) == CMDB_BEGIN_HEADER -> {
if (pos != 0) {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_CMD_BEGIN_HEADER,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
version = cmd and ATTR_HEADER_VERSION
if (version != VERSION_0) {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNSUPPORTED_FLICTIONARY_VERSION,
address = pos,
cmdByte = cmd.toByte(),
absoluteDepth = ngramTreeStack.size
)
)
}
if (inputStream.readNext(buffer, 1, 9) > 0) {
val size = (buffer[1].toInt() and 0xFF)
date =
((buffer[2].toInt() and 0xFF).toLong() shl 56) +
((buffer[3].toInt() and 0xFF).toLong() shl 48) +
((buffer[4].toInt() and 0xFF).toLong() shl 40) +
((buffer[5].toInt() and 0xFF).toLong() shl 32) +
((buffer[6].toInt() and 0xFF).toLong() shl 24) +
((buffer[7].toInt() and 0xFF).toLong() shl 16) +
((buffer[8].toInt() and 0xFF).toLong() shl 8) +
((buffer[9].toInt() and 0xFF).toLong() shl 0)
if (inputStream.readNext(buffer, 10, size) > 0) {
headerStr = String(buffer, 10, size, Charsets.UTF_8)
ngramOrderStack.add(-1)
ngramTreeStack.add(NgramTree())
pos += (10 + size)
} else {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_EOF,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
} else {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_EOF,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
}
(cmd and MASK_END) == CMDB_END -> {
if (pos == 0) {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_CMD_END,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
val n = (cmd and ATTR_END_COUNT)
if (n > 0) {
if (n <= ngramTreeStack.size) {
for (c in 0 until n) {
ngramOrderStack.removeLast()
ngramTreeStack.removeLast()
}
} else {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_ABSOLUTE_DEPTH_DECREASE_BELOW_ZERO,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size - n
)
)
}
} else {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_CMD_END_ZERO_VALUE,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
pos += 1
}
else -> {
inputStream.close()
return Err(
ParseException(
errorType = ParseException.ErrorType.INVALID_CMD_BYTE_PROVIDED,
address = pos, cmdByte = cmd.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
}
}
inputStream.close()
if (ngramTreeStack.size != 0) {
return Err(
ParseException(
errorType = ParseException.ErrorType.UNEXPECTED_ABSOLUTE_DEPTH_NOT_ZERO_AT_EOF,
address = pos, cmdByte = 0x00.toByte(), absoluteDepth = ngramTreeStack.size
)
)
}
return Ok(
Flictionary(
name = "flict",
label = "flict",
authors = listOf(),
headerStr = headerStr ?: "",
date = date,
version = version,
languageModel = FlorisLanguageModel(ngramTree)
)
)
}
}
override fun getDate(): Long = date
override fun getVersion(): Int = version
// TODO: preceding tokens are currently ignored
override fun getTokenPredictions(
precedingTokens: List<Token<String>>,
currentToken: Token<String>?,
maxSuggestionCount: Int,
allowPossiblyOffensive: Boolean
): List<WeightedToken<String, Int>> {
currentToken ?: return listOf()
return if (currentToken.data.isNotEmpty()) {
val retList = languageModel.matchAllNgrams(
ngram = Ngram(
_tokens = listOf(Token(currentToken.data.toLowerCase(Locale.ENGLISH))),
_freq = -1
),
maxEditDistance = 2,
maxTokenCount = maxSuggestionCount,
allowPossiblyOffensive = allowPossiblyOffensive
)
retList
} else {
listOf()
}
}
/**
* A parse exception to be used by [Flictionary] to indicate where the parsing of a binary file
* failed, while also providing some additional information.
*/
class ParseException(
private val errorType: ErrorType,
private val address: Int,
private val cmdByte: Byte,
private val absoluteDepth: Int
) : Exception() {
enum class ErrorType {
UNSUPPORTED_FLICTIONARY_VERSION,
UNEXPECTED_CMD_BEGIN_HEADER,
UNEXPECTED_CMD_BEGIN_PTREE_NODE,
UNEXPECTED_CMD_DEFINE_SHORTCUT,
UNEXPECTED_CMD_END,
UNEXPECTED_CMD_END_ZERO_VALUE,
UNEXPECTED_ABSOLUTE_DEPTH_DECREASE_BELOW_ZERO,
UNEXPECTED_ABSOLUTE_DEPTH_NOT_ZERO_AT_EOF,
UNEXPECTED_EOF,
INVALID_CMD_BYTE_PROVIDED,
}
override val message: String
get() = toString()
override fun toString(): String {
return StringBuilder().run {
append(
when (errorType) {
ErrorType.UNSUPPORTED_FLICTIONARY_VERSION -> {
"Unexpected Flictionary version: ${(cmdByte.toInt() and 0xFF) and ATTR_HEADER_VERSION}"
}
ErrorType.UNEXPECTED_CMD_BEGIN_HEADER -> {
"Unexpected command: BEGIN_HEADER"
}
ErrorType.UNEXPECTED_CMD_BEGIN_PTREE_NODE -> {
"Unexpected command: BEGIN_PTREE_NODE"
}
ErrorType.UNEXPECTED_CMD_DEFINE_SHORTCUT -> {
"Unexpected command: DEFINE_SHORTCUT"
}
ErrorType.UNEXPECTED_CMD_END -> {
"Unexpected command: END"
}
ErrorType.UNEXPECTED_CMD_END_ZERO_VALUE -> {
"Unexpected zero value provided for command END"
}
ErrorType.UNEXPECTED_ABSOLUTE_DEPTH_DECREASE_BELOW_ZERO -> {
"Unexpected decrease in absolute depth: cannot go below zero"
}
ErrorType.UNEXPECTED_ABSOLUTE_DEPTH_NOT_ZERO_AT_EOF -> {
"Unexpected non-zero value in absolute depth at end of file"
}
ErrorType.UNEXPECTED_EOF -> {
"Unexpected end of file while try to do look-ahead"
}
ErrorType.INVALID_CMD_BYTE_PROVIDED -> {
"Invalid command byte provided"
}
}
)
append(
String.format(
"\n at address 0x%08X where cmd_byte=0x%02X and section_depth=%d",
address,
cmdByte,
absoluteDepth
)
)
toString()
}
}
}
}
/**
* Reads the next [len] bytes from the input stream into the given byte array [b]. This method guarantees to either
* read the full length requested or if an EOF file is encountered, -1 is returned. The first byte written is at
* `b[off]`, the second byte at `b[off+1]` and so on.
*
* @param b The byte array to read the next [len] bytes into.
* @param off The offset of the first byte written in the byte array [b]. Must be non-negative.
* @param len The number of bytes to read. Must be non-negative.
*
* @return The number of bytes read, always matching [len] or -1 if EOF was encountered.
*
* @throws IndexOutOfBoundsException if either [off] or [len] is negative or the byte array has insufficient space to
* write the request [len] bytes into it.
*/
@Throws(IndexOutOfBoundsException::class)
fun InputStream.readNext(b: ByteArray, off: Int, len: Int): Int {
if (off < 0 || len < 0 || len > b.size - off) {
throw IndexOutOfBoundsException()
} else if (len == 0) {
return 0
}
var lenRead = 0
while (lenRead < len) {
val c = read()
if (c == -1) {
return -1
} else {
b[off + lenRead++] = c.toByte()
}
}
return lenRead
}

View File

@@ -19,13 +19,10 @@ package dev.patrickgold.florisboard.ime.extension
import android.content.Context
import com.github.michaelbull.result.*
import com.squareup.moshi.Moshi
import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import dev.patrickgold.florisboard.ime.popup.PopupExtension
import dev.patrickgold.florisboard.ime.text.key.KeyTypeAdapter
import dev.patrickgold.florisboard.ime.text.key.KeyVariationAdapter
import dev.patrickgold.florisboard.ime.text.layout.LayoutTypeAdapter
import dev.patrickgold.florisboard.ime.theme.Theme
import timber.log.Timber
import java.io.File

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

@@ -19,13 +19,11 @@ package dev.patrickgold.florisboard.ime.media.emoji
import android.content.Context
import android.graphics.Paint
import android.graphics.Typeface
import android.util.Log
import androidx.core.graphics.PaintCompat
import timber.log.Timber
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
import java.lang.Exception
import java.util.*
private const val GROUP_IDENTIFIER = "# group: "

View File

@@ -0,0 +1,294 @@
/*
* Copyright (C) 2021 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.nlp
/**
* Represents the root node to a n-gram tree.
*/
open class NgramTree(
sameOrderChildren: MutableList<NgramNode> = mutableListOf(),
higherOrderChildren: MutableList<NgramNode> = mutableListOf()
) : NgramNode(0, '?', -1, sameOrderChildren, higherOrderChildren)
/**
* A node of a n-gram tree, which holds the character it represents, the corresponding frequency,
* a pre-computed string representing all parent characters and the current one as well as child
* nodes, one for the same order n-gram nodes and one for the higher order n-gram nodes.
*/
open class NgramNode(
val order: Int,
val char: Char,
val freq: Int,
val sameOrderChildren: MutableList<NgramNode> = mutableListOf(),
val higherOrderChildren: MutableList<NgramNode> = mutableListOf()
) {
companion object {
const val FREQ_CHARACTER = -1
const val FREQ_WORD_MIN = 0
const val FREQ_WORD_MAX = 255
const val FREQ_WORD_FILLER = -2
const val FREQ_IS_POSSIBLY_OFFENSIVE = 0
}
val isCharacter: Boolean
get() = freq == FREQ_CHARACTER
val isWord: Boolean
get() = freq in FREQ_WORD_MIN..FREQ_WORD_MAX
val isWordFiller: Boolean
get() = freq == FREQ_WORD_FILLER
val isPossiblyOffensive: Boolean
get() = freq == FREQ_IS_POSSIBLY_OFFENSIVE
fun findWord(word: String): NgramNode? {
var currentNode = this
for ((pos, char) in word.withIndex()) {
val childNode = if (pos == 0) {
currentNode.higherOrderChildren.find { it.char == char }
} else {
currentNode.sameOrderChildren.find { it.char == char }
}
if (childNode != null) {
currentNode = childNode
} else {
return null
}
}
return if (currentNode.isWord || currentNode.isWordFiller) {
currentNode
} else {
null
}
}
/**
* This function allows to search for a given [input] word with a given [maxEditDistance] and
* adds all matches in the trie to the [list].
*/
fun listSimilarWords(
input: String,
list: StagedSuggestionList<String, Int>,
word: StringBuilder,
allowPossiblyOffensive: Boolean,
maxEditDistance: Int,
deletionCost: Int = 0,
insertionCost: Int = 0,
substitutionCost: Int = 0,
pos: Int = -1
) {
if (pos > -1) {
word.append(char)
}
val costSum = deletionCost + insertionCost + substitutionCost
if (pos > -1 && (pos + 1 == input.length) && isWord && ((isPossiblyOffensive && allowPossiblyOffensive)
|| !isPossiblyOffensive)) {
// Using shift right instead of divide by 2^(costSum) as it is mathematically the
// same but faster.
if (list.canAdd(freq shr costSum)) {
list.add(word.toString(), freq shr costSum)
}
}
if (pos <= -1) {
for (childNode in higherOrderChildren) {
childNode.listSimilarWords(
input, list, word, allowPossiblyOffensive, maxEditDistance, 0, 0, 0, 0
)
}
} else if (maxEditDistance == costSum) {
if (pos + 1 < input.length) {
sameOrderChildren.find { it.char == input[pos + 1] }?.listSimilarWords(
input, list, word, allowPossiblyOffensive, maxEditDistance,
deletionCost, insertionCost, substitutionCost, pos + 1
)
}
} else {
// Delete
if (pos + 2 < input.length) {
sameOrderChildren.find { it.char == input[pos + 2] }?.listSimilarWords(
input, list, word, allowPossiblyOffensive, maxEditDistance,
deletionCost + 1, insertionCost, substitutionCost, pos + 2
)
}
for (childNode in sameOrderChildren) {
if (pos + 1 < input.length && childNode.char == input[pos + 1]) {
childNode.listSimilarWords(
input, list, word, allowPossiblyOffensive, maxEditDistance,
deletionCost, insertionCost, substitutionCost, pos + 1
)
} else {
// Insert
childNode.listSimilarWords(
input, list, word, allowPossiblyOffensive, maxEditDistance,
deletionCost, insertionCost + 1, substitutionCost, pos
)
if (pos + 1 < input.length) {
// Substitute
childNode.listSimilarWords(
input, list, word, allowPossiblyOffensive, maxEditDistance,
deletionCost, insertionCost, substitutionCost + 1, pos + 1
)
}
}
}
}
if (pos > -1) {
word.deleteAt(word.lastIndex)
}
}
fun listAllSameOrderWords(list: StagedSuggestionList<String, Int>, word: StringBuilder, allowPossiblyOffensive: Boolean) {
word.append(char)
if (isWord && ((isPossiblyOffensive && allowPossiblyOffensive) || !isPossiblyOffensive)) {
if (list.canAdd(freq)) {
list.add(word.toString(), freq)
}
}
for (childNode in sameOrderChildren) {
childNode.listAllSameOrderWords(list, word, allowPossiblyOffensive)
}
word.deleteAt(word.lastIndex)
}
}
open class FlorisLanguageModel(
initTreeObj: NgramTree? = null
) : LanguageModel<String, Int> {
protected val ngramTree: NgramTree = initTreeObj ?: NgramTree()
override fun getNgram(vararg tokens: String): Ngram<String, Int> {
val ngramOut = getNgramOrNull(*tokens)
if (ngramOut != null) {
return ngramOut
} else {
throw NullPointerException("No n-gram found matching the given tokens: $tokens")
}
}
override fun getNgram(ngram: Ngram<String, Int>): Ngram<String, Int> {
val ngramOut = getNgramOrNull(ngram)
if (ngramOut != null) {
return ngramOut
} else {
throw NullPointerException("No n-gram found matching the given ngram: $ngram")
}
}
override fun getNgramOrNull(vararg tokens: String): Ngram<String, Int>? {
var currentNode: NgramNode = ngramTree
for (token in tokens) {
val childNode = currentNode.findWord(token)
if (childNode != null) {
currentNode = childNode
} else {
return null
}
}
return Ngram(tokens.toList().map { Token(it) }, currentNode.freq)
}
override fun getNgramOrNull(ngram: Ngram<String, Int>): Ngram<String, Int>? {
return getNgramOrNull(*ngram.tokens.toStringList().toTypedArray())
}
override fun hasNgram(ngram: Ngram<String, Int>, doMatchFreq: Boolean): Boolean {
val result = getNgramOrNull(ngram)
return if (result != null) {
if (doMatchFreq) {
ngram.freq == result.freq
} else {
true
}
} else {
false
}
}
override fun matchAllNgrams(
ngram: Ngram<String, Int>,
maxEditDistance: Int,
maxTokenCount: Int,
allowPossiblyOffensive: Boolean
): List<WeightedToken<String, Int>> {
val ngramList = mutableListOf<WeightedToken<String, Int>>()
var currentNode: NgramNode = ngramTree
for ((t, token) in ngram.tokens.withIndex()) {
val word = token.data
if (t + 1 >= ngram.tokens.size) {
if (word.isNotEmpty()) {
// The last word is not complete, so find all possible words and sort
val splitWord = mutableListOf<Char>()
var splitNode: NgramNode? = currentNode
for ((pos, char) in word.withIndex()) {
val node = if (pos == 0) {
splitNode?.higherOrderChildren?.find { it.char == char }
} else {
splitNode?.sameOrderChildren?.find { it.char == char }
}
splitWord.add(char)
splitNode = node
if (node == null) {
break
}
}
if (splitNode != null) {
// Input thus far is valid
val wordNodes = StagedSuggestionList<String, Int>(maxTokenCount)
val strBuilder = StringBuilder().append(word.substring(0, word.length - 1))
splitNode.listAllSameOrderWords(wordNodes, strBuilder, allowPossiblyOffensive)
ngramList.addAll(wordNodes)
}
if (ngramList.size < maxTokenCount) {
val wordNodes = StagedSuggestionList<String, Int>(maxTokenCount)
val strBuilder = StringBuilder()
currentNode.listSimilarWords(word, wordNodes, strBuilder, allowPossiblyOffensive, maxEditDistance)
ngramList.addAll(wordNodes)
}
}
} else {
val node = currentNode.findWord(word)
if (node == null) {
return ngramList
} else {
currentNode = node
}
}
}
return ngramList
}
fun toFlorisMutableLanguageModel(): FlorisMutableLanguageModel = FlorisMutableLanguageModel(ngramTree)
}
open class FlorisMutableLanguageModel(
initTreeObj: NgramTree? = null
) : MutableLanguageModel<String, Int>, FlorisLanguageModel(initTreeObj) {
override fun deleteNgram(ngram: Ngram<String, Int>) {
TODO("Not yet implemented")
}
override fun insertNgram(ngram: Ngram<String, Int>) {
TODO("Not yet implemented")
}
override fun updateNgram(ngram: Ngram<String, Int>) {
TODO("Not yet implemented")
}
fun toFlorisLanguageModel(): FlorisLanguageModel = FlorisLanguageModel(ngramTree)
}

View File

@@ -0,0 +1,74 @@
/*
* Copyright (C) 2021 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.nlp
/**
* Abstract interface for a language model. Can house any n-grams with a minimum order of one.
*/
interface LanguageModel<T : Any, F : Comparable<F>> {
/**
* Tries to get the n-gram for the passed [tokens]. Throws a NPE if no match could be found.
*/
@Throws(NullPointerException::class)
fun getNgram(vararg tokens: T): Ngram<T, F>
/**
* Tries to get the n-gram for the passed [ngram], whereas the frequency is ignored while
* searching. Throws a NPE if no match could be found.
*/
@Throws(NullPointerException::class)
fun getNgram(ngram: Ngram<T, F>): Ngram<T, F>
/**
* Tries to get the n-gram for the passed [tokens]. Returns null if no match could be found.
*/
fun getNgramOrNull(vararg tokens: T): Ngram<T, F>?
/**
* Tries to get the n-gram for the passed [ngram], whereas the frequency is ignored while
* searching. Returns null if no match could be found.
*/
fun getNgramOrNull(ngram: Ngram<T, F>): Ngram<T, F>?
/**
* Checks if a given [ngram] exists within this model. If [doMatchFreq] is set to true, the
* frequency is also matched.
*/
fun hasNgram(ngram: Ngram<T, F>, doMatchFreq: Boolean = false): Boolean
/**
* Matches all n-grams which match the given [ngram], whereas the last item in the n-gram is
* is used to search for predictions.
*/
fun matchAllNgrams(
ngram: Ngram<T, F>,
maxEditDistance: Int,
maxTokenCount: Int,
allowPossiblyOffensive: Boolean
): List<WeightedToken<T, F>>
}
/**
* Mutable version of [LanguageModel].
*/
interface MutableLanguageModel<T : Any, F : Comparable<F>> : LanguageModel<T, F> {
fun deleteNgram(ngram: Ngram<T, F>)
fun insertNgram(ngram: Ngram<T, F>)
fun updateNgram(ngram: Ngram<T, F>)
}

View File

@@ -0,0 +1,129 @@
/*
* Copyright (C) 2021 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.nlp
/**
* Abstract interface representing a n-gram of tokens. Each n-gram instance can be assigned a
* unique frequency [freq].
*/
open class Ngram<T : Any, F : Comparable<F>>(_tokens: List<Token<T>>, _freq: F) {
companion object {
/** Constant order value for unigrams. */
const val ORDER_UNIGRAM: Int = 1
/** Constant order value for bigrams. */
const val ORDER_BIGRAM: Int = 2
/** Constant order value for trigrams. */
const val ORDER_TRIGRAM: Int = 3
}
init {
if (_tokens.size < ORDER_UNIGRAM) {
throw Exception("A n-gram must contain at least 1 token!")
}
}
/**
* A list of tokens for this n-gram. The length of this list is guaranteed to be matching
* [order].
*/
val tokens: List<Token<T>> = _tokens
/**
* The frequency value of this n-gram.
*/
val freq: F = _freq
/**
* The order of this n-gram (1, 2, 3, ...).
*/
val order: Int
get() = tokens.size
}
/**
* Abstract interface representing a token used in [Ngram].
*/
open class Token<T : Any>(_data: T) {
/**
* The data of this token.
*/
val data: T = _data
override fun toString(): String {
return "Token(\"$data\")"
}
override fun hashCode(): Int {
return data.hashCode()
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as Token<*>
if (data != other.data) return false
return true
}
}
/**
* Same as [Token] but allows to add a frequency value [freq].
*/
open class WeightedToken<T : Any, F : Comparable<F>>(_data: T, _freq: F) : Token<T>(_data) {
/**
* The frequency of this weighed token.
*/
val freq: F = _freq
override fun toString(): String {
return "WeightedToken(\"$data\", $freq)"
}
override fun hashCode(): Int {
return data.hashCode() + 31 * freq.hashCode()
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as WeightedToken<*, *>
if (data != other.data || freq != other.freq) return false
return true
}
}
/**
* Converts a list of tokens carrying [CharSequence] data to a list of [CharSequence].
*/
fun List<Token<CharSequence>>.toCharSequenceList(): List<CharSequence> {
return this.map { it.data }
}
/**
* Converts a list of tokens carrying [String] data to a list of [String].
*/
fun List<Token<String>>.toStringList(): List<String> {
return this.map { it.data }
}

View File

@@ -0,0 +1,90 @@
/*
* Copyright (C) 2021 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.nlp
class StagedSuggestionList<T : Any, F : Comparable<F>>(
private val maxSize: Int
) : Collection<WeightedToken<T, F>> {
private val internalArray: Array<WeightedToken<T, F>?> = Array(maxSize) { null }
private var internalSize: Int = 0
override val size: Int
get() = internalSize
fun add(token: T, freq: F): Boolean {
if (internalSize < maxSize) {
internalArray[internalSize++] = WeightedToken(token, freq)
internalArray.sortByDescending { it?.freq }
return true
} else {
if (internalArray.last()!!.freq < freq) {
internalArray[internalArray.lastIndex] = WeightedToken(token, freq)
internalArray.sortByDescending { it?.freq }
return true
}
return false
}
}
fun canAdd(freq: F): Boolean {
return internalSize < maxSize || internalArray.last()!!.freq < freq
}
fun clear() {
for (n in internalArray.indices) {
internalArray[n] = null
}
internalSize = 0
}
override fun contains(element: WeightedToken<T, F>): Boolean = internalArray.contains(element)
override fun containsAll(elements: Collection<WeightedToken<T, F>>): Boolean {
elements.forEach { if (!contains(it)) return false }
return true
}
@Throws(IndexOutOfBoundsException::class)
operator fun get(index: Int): WeightedToken<T, F> {
val element = getOrNull(index)
if (element == null) {
throw IndexOutOfBoundsException("The specified index $index is not within the bounds of this list!")
} else {
return element
}
}
fun getOrNull(index: Int): WeightedToken<T, F>? {
return internalArray.getOrNull(index)
}
override fun isEmpty(): Boolean = internalSize <= 0
override fun iterator(): Iterator<WeightedToken<T, F>> {
return StagedIterator(this)
}
class StagedIterator<T : Any, F : Comparable<F>> internal constructor (
private val stagedSuggestionList: StagedSuggestionList<T, F>
) : Iterator<WeightedToken<T, F>> {
var index = 0
override fun next(): WeightedToken<T, F> = stagedSuggestionList[index++]
override fun hasNext(): Boolean = stagedSuggestionList.getOrNull(index) != null
}
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright (C) 2021 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.nlp
class TextProcessor {
data class Word(
val word: String,
val isPossiblyOffensive: Boolean = false
)
}

View File

@@ -17,7 +17,9 @@
package dev.patrickgold.florisboard.ime.popup
import android.content.res.Configuration
import android.view.*
import android.view.Gravity
import android.view.MotionEvent
import android.view.View
import androidx.core.content.ContextCompat.getDrawable
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.media.emoji.EmojiKeyData
@@ -111,7 +113,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

@@ -18,16 +18,21 @@ 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
import android.view.View
import android.view.inputmethod.*
import android.widget.LinearLayout
import android.widget.Toast
import android.widget.ViewFlipper
import com.github.michaelbull.result.getOr
import dev.patrickgold.florisboard.BuildConfig
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.core.*
import dev.patrickgold.florisboard.ime.dictionary.Dictionary
import dev.patrickgold.florisboard.ime.dictionary.DictionaryManager
import dev.patrickgold.florisboard.ime.extension.AssetRef
import dev.patrickgold.florisboard.ime.extension.AssetSource
import dev.patrickgold.florisboard.ime.nlp.Token
import dev.patrickgold.florisboard.ime.nlp.toStringList
import dev.patrickgold.florisboard.ime.text.editing.EditingKeyboardView
import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.key.*
@@ -66,6 +71,8 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
private val osHandler = Handler()
private var textViewFlipper: ViewFlipper? = null
private var textViewGroup: LinearLayout? = null
private val dictionaryManager: DictionaryManager = DictionaryManager.default()
private var activeDictionary: Dictionary<String, Int>? = null
var keyVariation: KeyVariation = KeyVariation.NORMAL
val layoutManager = LayoutManager(florisboard)
@@ -124,7 +131,6 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
private suspend fun addKeyboardView(mode: KeyboardMode) {
val keyboardView = KeyboardView(florisboard.context)
keyboardView.id = View.generateViewId()
keyboardView.computedLayout = layoutManager.fetchComputedLayoutAsync(mode, florisboard.activeSubtype, florisboard.prefs).await()
keyboardViews[mode] = keyboardView
textViewFlipper?.addView(keyboardView)
@@ -302,6 +308,13 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
override fun onSubtypeChanged(newSubtype: Subtype) {
launch {
if (activeEditorInstance.isComposingEnabled) {
withContext(Dispatchers.IO) {
dictionaryManager.loadDictionary(AssetRef(AssetSource.Assets,"ime/dict/en.flict")).let {
activeDictionary = it.getOr(null)
}
}
}
val keyboardView = keyboardViews[KeyboardMode.CHARACTERS]
keyboardView?.computedLayout = layoutManager.fetchComputedLayoutAsync(KeyboardMode.CHARACTERS, newSubtype, florisboard.prefs).await()
keyboardView?.updateVisibility()
@@ -320,6 +333,35 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
updateCapsState()
smartbarView?.updateSmartbarState()
if (BuildConfig.DEBUG) {
Timber.i("current word: ${activeEditorInstance.cachedInput.currentWord.text}")
}
if (activeEditorInstance.isComposingEnabled) {
if (activeEditorInstance.shouldReevaluateComposingSuggestions) {
activeEditorInstance.shouldReevaluateComposingSuggestions = false
activeDictionary?.let {
launch(Dispatchers.Default) {
val startTime = System.nanoTime()
val suggestions = it.getTokenPredictions(
precedingTokens = listOf(),
currentToken = Token(activeEditorInstance.cachedInput.currentWord.text),
maxSuggestionCount = 3,
allowPossiblyOffensive = !florisboard.prefs.suggestion.blockPossiblyOffensive
).toStringList()
if (BuildConfig.DEBUG) {
val elapsed = (System.nanoTime() - startTime) / 1000.0
Timber.i("sugg fetch time: $elapsed us")
}
withContext(Dispatchers.Main) {
smartbarView?.setCandidateSuggestionWords(startTime, suggestions)
smartbarView?.updateCandidateSuggestionCapsState()
}
}
}
} else {
smartbarView?.setCandidateSuggestionWords(System.nanoTime(), listOf())
}
}
}
override fun onPrimaryClipChanged() {
@@ -352,8 +394,10 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
SwipeAction.MOVE_CURSOR_UP -> handleArrow(KeyCode.ARROW_UP)
SwipeAction.MOVE_CURSOR_LEFT -> handleArrow(KeyCode.ARROW_LEFT)
SwipeAction.MOVE_CURSOR_RIGHT -> handleArrow(KeyCode.ARROW_RIGHT)
SwipeAction.MOVE_CURSOR_START_OF_LINE -> handleArrow(KeyCode.MOVE_HOME)
SwipeAction.MOVE_CURSOR_END_OF_LINE -> handleArrow(KeyCode.MOVE_END)
SwipeAction.MOVE_CURSOR_START_OF_LINE -> handleArrow(KeyCode.MOVE_START_OF_LINE)
SwipeAction.MOVE_CURSOR_END_OF_LINE -> handleArrow(KeyCode.MOVE_END_OF_LINE)
SwipeAction.MOVE_CURSOR_START_OF_PAGE -> handleArrow(KeyCode.MOVE_START_OF_PAGE)
SwipeAction.MOVE_CURSOR_END_OF_PAGE -> handleArrow(KeyCode.MOVE_END_OF_PAGE)
SwipeAction.SHIFT -> handleShift()
SwipeAction.SHOW_INPUT_METHOD_PICKER -> sendKeyPress(
KeyData(type = KeyType.FUNCTION, code = KeyCode.SHOW_INPUT_METHOD_PICKER)
@@ -366,6 +410,10 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
setActiveKeyboardMode(KeyboardMode.CHARACTERS)
}
override fun onSmartbarCandidatePressed(word: String) {
activeEditorInstance.commitCompletion(word)
}
override fun onSmartbarPrivateModeButtonClicked() {
Toast.makeText(florisboard.context, R.string.private_mode_dialog__title, Toast.LENGTH_LONG).show()
}
@@ -381,7 +429,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
@@ -480,6 +528,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}, 300)
}
keyboardViews[activeKeyboardMode]?.invalidateAllKeys()
smartbarView?.updateCandidateSuggestionCapsState()
}
/**
@@ -509,9 +558,9 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
/**
* Handles [KeyCode] arrow and move events, behaves differently depending on text selection.
*/
private fun handleArrow(code: Int) = activeEditorInstance.apply {
private fun handleArrow(code: Int) = activeEditorInstance.run {
val selectionStartMin = 0
val selectionEndMax = cachedText.length
val selectionEndMax = cachedInput.expectedMaxLength
if (selection.isSelectionMode && isManualSelectionMode) {
// Text is selected and it is manual selection -> Expand selection depending on started
// direction.
@@ -519,37 +568,37 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
KeyCode.ARROW_DOWN -> {}
KeyCode.ARROW_LEFT -> {
if (isManualSelectionModeLeft) {
setSelection(
selection.updateAndNotify(
(selection.start - 1).coerceAtLeast(selectionStartMin),
selection.end
)
} else {
setSelection(selection.start, selection.end - 1)
selection.updateAndNotify(selection.start, selection.end - 1)
}
}
KeyCode.ARROW_RIGHT -> {
if (isManualSelectionModeRight) {
setSelection(
selection.updateAndNotify(
selection.start,
(selection.end + 1).coerceAtMost(selectionEndMax)
)
} else {
setSelection(selection.start + 1, selection.end)
selection.updateAndNotify(selection.start + 1, selection.end)
}
}
KeyCode.ARROW_UP -> {}
KeyCode.MOVE_HOME -> {
KeyCode.MOVE_START_OF_LINE -> {
if (isManualSelectionModeLeft) {
setSelection(selectionStartMin, selection.end)
selection.updateAndNotify(selectionStartMin, selection.end)
} else {
setSelection(selectionStartMin, selection.start)
selection.updateAndNotify(selectionStartMin, selection.start)
}
}
KeyCode.MOVE_END -> {
KeyCode.MOVE_END_OF_LINE -> {
if (isManualSelectionModeRight) {
setSelection(selection.start, selectionEndMax)
selection.updateAndNotify(selection.start, selectionEndMax)
} else {
setSelection(selection.end, selectionEndMax)
selection.updateAndNotify(selection.end, selectionEndMax)
}
}
}
@@ -559,20 +608,20 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
when (code) {
KeyCode.ARROW_DOWN -> {}
KeyCode.ARROW_LEFT -> {
setSelection(selection.start, selection.end - 1)
selection.updateAndNotify(selection.start, selection.end - 1)
}
KeyCode.ARROW_RIGHT -> {
setSelection(
selection.updateAndNotify(
selection.start,
(selection.end + 1).coerceAtMost(selectionEndMax)
)
}
KeyCode.ARROW_UP -> {}
KeyCode.MOVE_HOME -> {
setSelection(selectionStartMin, selection.start)
KeyCode.MOVE_START_OF_LINE -> {
selection.updateAndNotify(selectionStartMin, selection.start)
}
KeyCode.MOVE_END -> {
setSelection(selection.start, selectionEndMax)
KeyCode.MOVE_END_OF_LINE -> {
selection.updateAndNotify(selection.start, selectionEndMax)
}
}
} else if (!selection.isSelectionMode && isManualSelectionMode) {
@@ -581,7 +630,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
when (code) {
KeyCode.ARROW_DOWN -> {}
KeyCode.ARROW_LEFT -> {
setSelection(
selection.updateAndNotify(
(selection.start - 1).coerceAtLeast(selectionStartMin),
selection.start
)
@@ -589,7 +638,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
isManualSelectionModeRight = false
}
KeyCode.ARROW_RIGHT -> {
setSelection(
selection.updateAndNotify(
selection.end,
(selection.end + 1).coerceAtMost(selectionEndMax)
)
@@ -597,13 +646,13 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
isManualSelectionModeRight = true
}
KeyCode.ARROW_UP -> {}
KeyCode.MOVE_HOME -> {
setSelection(selectionStartMin, selection.start)
KeyCode.MOVE_START_OF_LINE -> {
selection.updateAndNotify(selectionStartMin, selection.start)
isManualSelectionModeLeft = true
isManualSelectionModeRight = false
}
KeyCode.MOVE_END -> {
setSelection(selection.end, selectionEndMax)
KeyCode.MOVE_END_OF_LINE -> {
selection.updateAndNotify(selection.end, selectionEndMax)
isManualSelectionModeLeft = false
isManualSelectionModeRight = true
}
@@ -615,10 +664,13 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
KeyCode.ARROW_LEFT -> activeEditorInstance.sendSystemKeyEvent(KeyEvent.KEYCODE_DPAD_LEFT)
KeyCode.ARROW_RIGHT -> activeEditorInstance.sendSystemKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT)
KeyCode.ARROW_UP -> activeEditorInstance.sendSystemKeyEvent(KeyEvent.KEYCODE_DPAD_UP)
KeyCode.MOVE_HOME -> activeEditorInstance.sendSystemKeyEventAlt(KeyEvent.KEYCODE_DPAD_UP)
KeyCode.MOVE_END -> activeEditorInstance.sendSystemKeyEventAlt(KeyEvent.KEYCODE_DPAD_DOWN)
KeyCode.MOVE_START_OF_PAGE -> activeEditorInstance.sendSystemKeyEventAlt(KeyEvent.KEYCODE_DPAD_UP)
KeyCode.MOVE_END_OF_PAGE -> activeEditorInstance.sendSystemKeyEventAlt(KeyEvent.KEYCODE_DPAD_DOWN)
KeyCode.MOVE_START_OF_LINE -> activeEditorInstance.sendSystemKeyEventAlt(KeyEvent.KEYCODE_DPAD_LEFT)
KeyCode.MOVE_END_OF_LINE -> activeEditorInstance.sendSystemKeyEventAlt(KeyEvent.KEYCODE_DPAD_RIGHT)
}
}
Unit
}
/**
@@ -627,9 +679,9 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
private fun handleClipboardSelect() = activeEditorInstance.apply {
if (selection.isSelectionMode) {
if (isManualSelectionMode && isManualSelectionModeLeft) {
setSelection(selection.start, selection.start)
selection.updateAndNotify(selection.start, selection.start)
} else {
setSelection(selection.end, selection.end)
selection.updateAndNotify(selection.end, selection.end)
}
isManualSelectionMode = false
} else {
@@ -639,13 +691,6 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
}
/**
* Handles a [KeyCode.CLIPBOARD_SELECT_ALL] event.
*/
private fun handleClipboardSelectAll() {
activeEditorInstance.setSelection(0, activeEditorInstance.cachedText.length)
}
/**
* Main logic point for sending a key press. Different actions may occur depending on the given
* [KeyData]. This method handles all key press send events, which are text based. For media
@@ -659,8 +704,10 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
KeyCode.ARROW_LEFT,
KeyCode.ARROW_RIGHT,
KeyCode.ARROW_UP,
KeyCode.MOVE_HOME,
KeyCode.MOVE_END -> handleArrow(keyData.code)
KeyCode.MOVE_START_OF_PAGE,
KeyCode.MOVE_END_OF_PAGE,
KeyCode.MOVE_START_OF_LINE,
KeyCode.MOVE_END_OF_LINE -> handleArrow(keyData.code)
KeyCode.CLIPBOARD_CUT -> activeEditorInstance.performClipboardCut()
KeyCode.CLIPBOARD_COPY -> activeEditorInstance.performClipboardCopy()
KeyCode.CLIPBOARD_PASTE -> {
@@ -668,7 +715,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
smartbarView?.resetClipboardSuggestion()
}
KeyCode.CLIPBOARD_SELECT -> handleClipboardSelect()
KeyCode.CLIPBOARD_SELECT_ALL -> handleClipboardSelectAll()
KeyCode.CLIPBOARD_SELECT_ALL -> activeEditorInstance.performClipboardSelectAll()
KeyCode.DELETE -> {
handleDelete()
smartbarView?.resetClipboardSuggestion()
@@ -680,14 +727,11 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
KeyCode.LANGUAGE_SWITCH -> handleLanguageSwitch()
KeyCode.SETTINGS -> florisboard.launchSettings()
KeyCode.SHIFT -> handleShift()
KeyCode.SHOW_INPUT_METHOD_PICKER -> {
val im =
florisboard.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
im.showInputMethodPicker()
}
KeyCode.SHOW_INPUT_METHOD_PICKER -> florisboard.imeManager?.showInputMethodPicker()
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)
@@ -725,9 +769,9 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
hasCapsRecentlyChanged = false
hasSpaceRecentlyPressed = false
var text = keyData.code.toChar().toString()
text = when (caps) {
text = when (caps && activeKeyboardMode == KeyboardMode.CHARACTERS) {
true -> text.toUpperCase(florisboard.activeSubtype.locale)
false -> text.toLowerCase(florisboard.activeSubtype.locale)
false -> text
}
activeEditorInstance.commitText(text)
}

View File

@@ -80,8 +80,8 @@ class EditingKeyView : AppCompatImageButton, ThemeManager.OnThemeUpdatedListener
R.id.clipboard_copy -> KeyCode.CLIPBOARD_COPY
R.id.clipboard_cut -> KeyCode.CLIPBOARD_CUT
R.id.clipboard_paste -> KeyCode.CLIPBOARD_PASTE
R.id.move_home -> KeyCode.MOVE_HOME
R.id.move_end -> KeyCode.MOVE_END
R.id.move_start_of_line -> KeyCode.MOVE_START_OF_LINE
R.id.move_end_of_line -> KeyCode.MOVE_END_OF_LINE
R.id.select -> KeyCode.CLIPBOARD_SELECT
R.id.select_all -> KeyCode.CLIPBOARD_SELECT_ALL
else -> 0

View File

@@ -34,6 +34,8 @@ enum class SwipeAction {
MOVE_CURSOR_RIGHT,
MOVE_CURSOR_START_OF_LINE,
MOVE_CURSOR_END_OF_LINE,
MOVE_CURSOR_START_OF_PAGE,
MOVE_CURSOR_END_OF_PAGE,
SHIFT,
SHOW_INPUT_METHOD_PICKER,
SWITCH_TO_PREV_SUBTYPE,

View File

@@ -19,8 +19,9 @@ package dev.patrickgold.florisboard.ime.text.gestures
import android.content.Context
import android.view.MotionEvent
import dev.patrickgold.florisboard.R
import java.lang.Exception
import kotlin.math.*
import kotlin.math.PI
import kotlin.math.abs
import kotlin.math.atan
/**
* Wrapper class which holds all enums, interfaces and classes for detecting a swipe gesture.

View File

@@ -40,8 +40,10 @@ object KeyCode {
const val ARROW_RIGHT = -21
const val ARROW_UP = -22
const val ARROW_DOWN = -23
const val MOVE_HOME = -24
const val MOVE_END = -25
const val MOVE_START_OF_PAGE = -24
const val MOVE_END_OF_PAGE = -25
const val MOVE_START_OF_LINE = -26
const val MOVE_END_OF_LINE = -27
const val SETTINGS = -100
const val CANCEL = -3
@@ -83,7 +85,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

@@ -17,6 +17,7 @@
package dev.patrickgold.florisboard.ime.text.key
import dev.patrickgold.florisboard.ime.popup.PopupSet
import dev.patrickgold.florisboard.ime.text.key.FlorisKeyData.Companion.GROUP_DEFAULT
/**
* Data class which describes a single key and its attributes.

View File

@@ -16,7 +16,6 @@
package dev.patrickgold.florisboard.ime.text.key
import android.annotation.SuppressLint
import com.squareup.moshi.FromJson
import java.util.*

View File

@@ -112,11 +112,22 @@ class KeyView(
layoutParams = FlexboxLayout.LayoutParams(
FlexboxLayout.LayoutParams.WRAP_CONTENT, FlexboxLayout.LayoutParams.WRAP_CONTENT
).apply {
val keyMarginH: Int
val keyMarginV: Int
if (keyboardView.isSmartbarKeyboardView){
keyMarginH = resources.getDimension(R.dimen.key_marginH).toInt()
keyMarginV = resources.getDimension(R.dimen.key_marginV).toInt()
}else {
keyMarginV = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingVertical, context).toInt()
keyMarginH = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingHorizontal, context).toInt()
}
setMargins(
resources.getDimension((R.dimen.key_marginH)).toInt(),
resources.getDimension(R.dimen.key_marginV).toInt(),
resources.getDimension((R.dimen.key_marginH)).toInt(),
resources.getDimension(R.dimen.key_marginV).toInt()
keyMarginH,
keyMarginV,
keyMarginH,
keyMarginV
)
flexShrink = when (keyboardView.computedLayout?.mode) {
KeyboardMode.NUMERIC,
@@ -175,7 +186,7 @@ class KeyView(
*/
fun getComputedLetter(
keyData: KeyData = data,
caps: Boolean = florisboard?.textInputManager?.caps ?: false,
caps: Boolean = florisboard?.textInputManager?.caps ?: false && florisboard?.textInputManager?.getActiveKeyboardMode() == KeyboardMode.CHARACTERS,
subtype: Subtype = florisboard?.activeSubtype ?: Subtype.DEFAULT
): String {
return when (data.code) {
@@ -185,7 +196,7 @@ class KeyView(
if (caps) {
labelText.toUpperCase(subtype.locale)
} else {
labelText.toLowerCase(subtype.locale)
labelText
}
}
}
@@ -218,7 +229,6 @@ class KeyView(
fun onFlorisTouchEvent(event: MotionEvent?): Boolean {
if (event == null || !isEnabled) return false
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)) {
@@ -343,7 +353,7 @@ class KeyView(
SwipeGesture.Type.TOUCH_MOVE -> when (prefs.gestures.deleteKeySwipeLeft) {
SwipeAction.DELETE_CHARACTERS_PRECISELY -> {
florisboard.activeEditorInstance.apply {
setSelection(
selection.updateAndNotify(
(selection.end + event.absUnitCountX).coerceIn(0, selection.end),
selection.end
)
@@ -389,8 +399,8 @@ class KeyView(
SwipeGesture.Direction.LEFT -> {
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)
val s = (initSelectionEnd + event.absUnitCountX).coerceIn(0, florisboard.activeEditorInstance.cachedInput.expectedMaxLength)
florisboard.activeEditorInstance.selection.updateAndNotify(s, s)
} else {
for (n in 0 until abs(event.relUnitCountX)) {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeLeft)
@@ -406,8 +416,8 @@ class KeyView(
SwipeGesture.Direction.RIGHT -> {
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)
val s = (initSelectionEnd + event.absUnitCountX).coerceIn(0, florisboard.activeEditorInstance.cachedInput.expectedMaxLength)
florisboard.activeEditorInstance.selection.updateAndNotify(s, s)
} else {
for (n in 0 until abs(event.relUnitCountX)) {
florisboard.executeSwipeAction(prefs.gestures.spaceBarSwipeRight)
@@ -435,6 +445,25 @@ class KeyView(
* by Devunwired
*/
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val keyMarginH: Int
val keyMarginV: Int
if (keyboardView.isSmartbarKeyboardView){
keyMarginH = resources.getDimension(R.dimen.key_marginH).toInt()
keyMarginV = resources.getDimension(R.dimen.key_marginV).toInt()
}else {
keyMarginV = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingVertical, context).toInt()
keyMarginH = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingHorizontal, context).toInt()
}
(layoutParams as ViewGroup.MarginLayoutParams).setMargins(
keyMarginH,
keyMarginV,
keyMarginH,
keyMarginV
)
desiredWidth = (keyboardView.desiredKeyWidth * when (keyboardView.computedLayout?.mode) {
KeyboardMode.NUMERIC,
KeyboardMode.PHONE,
@@ -523,7 +552,7 @@ class KeyView(
KeyCode.CLIPBOARD_COPY,
KeyCode.CLIPBOARD_CUT -> (florisboard != null
&& florisboard.activeEditorInstance.selection.isSelectionMode
&& florisboard.activeEditorInstance.isRawInputEditor)
&& !florisboard.activeEditorInstance.isRawInputEditor)
KeyCode.CLIPBOARD_PASTE -> florisboard?.clipboardManager?.hasPrimaryClip() == true
KeyCode.CLIPBOARD_SELECT_ALL -> {
florisboard?.activeEditorInstance?.isRawInputEditor == false
@@ -609,8 +638,17 @@ class KeyView(
touchHitBox.set(-1, -1, -1, -1)
} else {
val parent = parent as ViewGroup
val keyMarginH = resources.getDimension((R.dimen.key_marginH)).toInt()
val keyMarginV = resources.getDimension((R.dimen.key_marginV)).toInt()
val keyMarginH: Int
val keyMarginV: Int
if (keyboardView.isSmartbarKeyboardView){
keyMarginH = resources.getDimension(R.dimen.key_marginH).toInt()
keyMarginV = resources.getDimension(R.dimen.key_marginV).toInt()
}else {
keyMarginV = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingVertical, context).toInt()
keyMarginH = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingHorizontal, context).toInt()
}
touchHitBox.apply {
left = when (this@KeyView) {
@@ -872,8 +910,8 @@ class KeyView(
data.code != KeyCode.SPACE -> {
val cachedTextSize = setTextSizeFor(
labelPaint,
desiredWidth - (2.6f * drawablePaddingH),
desiredHeight - (3.4f * drawablePaddingV),
measuredWidth - (2.6f * drawablePaddingH),
measuredHeight - (3.4f * drawablePaddingV),
// 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...

View File

@@ -23,17 +23,25 @@ import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexboxLayout
import com.google.android.flexbox.JustifyContent
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.ime.core.PrefHelper
import dev.patrickgold.florisboard.util.ViewLayoutUtils
/**
* This class' sole purpose is to manage the layout within a row of [KeyboardView]. No logic is
* handled in this class.
*/
class KeyboardRowView(context: Context) : FlexboxLayout(context) {
class KeyboardRowView(context: Context, val keyboardView: KeyboardView) : FlexboxLayout(context) {
init {
val prefs: PrefHelper = PrefHelper.getDefaultInstance(context)
val keyMarginH = if (keyboardView.isSmartbarKeyboardView){
resources.getDimension(R.dimen.key_marginH).toInt()
}else{
ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingHorizontal, context).toInt()
}
layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT).apply {
setMargins(
resources.getDimension(R.dimen.keyboard_row_marginH).toInt(), 0,
resources.getDimension(R.dimen.keyboard_row_marginH).toInt(), 0
keyMarginH, 0,
keyMarginH, 0
)
}
flexDirection = FlexDirection.ROW
@@ -49,4 +57,19 @@ class KeyboardRowView(context: Context) : FlexboxLayout(context) {
override fun onTouchEvent(event: MotionEvent?): Boolean {
return false
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val prefs: PrefHelper = PrefHelper.getDefaultInstance(context)
val keyMarginH = if (keyboardView.isSmartbarKeyboardView){
resources.getDimension(R.dimen.key_marginH).toInt()
}else{
ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingHorizontal, context).toInt()
}
(layoutParams as MarginLayoutParams).setMargins(
keyMarginH, 0,
keyMarginH, 0
)
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
}
}

View File

@@ -30,12 +30,13 @@ import dev.patrickgold.florisboard.ime.core.FlorisBoard
import dev.patrickgold.florisboard.ime.core.PrefHelper
import dev.patrickgold.florisboard.ime.popup.PopupManager
import dev.patrickgold.florisboard.ime.text.gestures.SwipeAction
import dev.patrickgold.florisboard.ime.text.key.KeyView
import dev.patrickgold.florisboard.ime.text.layout.ComputedLayoutData
import dev.patrickgold.florisboard.ime.text.gestures.SwipeGesture
import dev.patrickgold.florisboard.ime.text.key.KeyCode
import dev.patrickgold.florisboard.ime.text.key.KeyView
import dev.patrickgold.florisboard.ime.text.layout.ComputedLayoutData
import dev.patrickgold.florisboard.ime.theme.Theme
import dev.patrickgold.florisboard.ime.theme.ThemeManager
import dev.patrickgold.florisboard.util.ViewLayoutUtils
import kotlin.math.roundToInt
/**
@@ -97,7 +98,7 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
destroyLayout()
val computedLayout = computedLayout ?: return
for (row in computedLayout.arrangement) {
val rowView = KeyboardRowView(context)
val rowView = KeyboardRowView(context, this)
for (key in row) {
val keyView = KeyView(this, key, florisboard)
rowView.addView(keyView)
@@ -331,8 +332,16 @@ class KeyboardView : LinearLayout, FlorisBoard.EventListener, SwipeGesture.Liste
* The desired key heights/widths are being calculated here.
*/
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val keyMarginH = resources.getDimension((R.dimen.key_marginH)).toInt()
val keyMarginV = resources.getDimension((R.dimen.key_marginV)).toInt()
val keyMarginH: Int
val keyMarginV: Int
if (isSmartbarKeyboardView){
keyMarginH = resources.getDimension(R.dimen.key_marginH).toInt()
keyMarginV = resources.getDimension(R.dimen.key_marginV).toInt()
}else {
keyMarginV = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingVertical, context).toInt()
keyMarginH = ViewLayoutUtils.convertDpToPixel(prefs.keyboard.keySpacingHorizontal, context).toInt()
}
val desiredWidth = MeasureSpec.getSize(widthMeasureSpec).toFloat()
desiredKeyWidth = if (isSmartbarKeyboardView) {

View File

@@ -18,7 +18,6 @@ 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

View File

@@ -17,7 +17,6 @@
package dev.patrickgold.florisboard.ime.text.layout
import android.content.Context
import com.github.michaelbull.result.getOr
import com.github.michaelbull.result.onSuccess
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
@@ -164,7 +163,8 @@ class LayoutManager(private val context: Context) : CoroutineScope by MainScope(
}
// Add popup to keys
if (keyboardMode == KeyboardMode.CHARACTERS) {
if (keyboardMode == KeyboardMode.CHARACTERS || keyboardMode == KeyboardMode.NUMERIC_ADVANCED ||
keyboardMode == KeyboardMode.SYMBOLS || keyboardMode == KeyboardMode.SYMBOLS2) {
val extendedPopupsDefault = loadExtendedPopups()
val extendedPopups = loadExtendedPopups(subtype)
for (row in computedArrangement) {

View File

@@ -53,6 +53,7 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
private val themeManager = ThemeManager.default()
private var eventListener: WeakReference<EventListener?>? = null
private val mainScope = MainScope()
private var lastSuggestionInitDate: Long = 0
private var cachedActionStartAreaVisible: Boolean = false
@IdRes private var cachedActionStartAreaId: Int? = null
@@ -121,6 +122,22 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
}
}
binding.candidate0.setOnClickListener {
if (it is Button) {
eventListener?.get()?.onSmartbarCandidatePressed(it.text.toString())
}
}
binding.candidate1.setOnClickListener {
if (it is Button) {
eventListener?.get()?.onSmartbarCandidatePressed(it.text.toString())
}
}
binding.candidate2.setOnClickListener {
if (it is Button) {
eventListener?.get()?.onSmartbarCandidatePressed(it.text.toString())
}
}
binding.clipboardSuggestion.setOnClickListener {
florisboard?.activeEditorInstance?.performClipboardPaste()
shouldSuggestClipboardContents = false
@@ -306,6 +323,28 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
updateSmartbarState()
}
fun setCandidateSuggestionWords(suggestionInitDate: Long, suggestions: List<String>) {
if (suggestionInitDate > lastSuggestionInitDate) {
lastSuggestionInitDate = suggestionInitDate
binding.candidate1.text = suggestions.getOrNull(0) ?: ""
binding.candidate0.text = suggestions.getOrNull(1) ?: ""
binding.candidate2.text = suggestions.getOrNull(2) ?: ""
}
}
fun updateCandidateSuggestionCapsState() {
val tim = florisboard?.textInputManager ?: return
if (tim.capsLock) {
binding.candidate0.text = binding.candidate0.text.toString().toUpperCase(florisboard.activeSubtype.locale)
binding.candidate1.text = binding.candidate1.text.toString().toUpperCase(florisboard.activeSubtype.locale)
binding.candidate2.text = binding.candidate2.text.toString().toUpperCase(florisboard.activeSubtype.locale)
} else {
binding.candidate0.text = binding.candidate0.text.toString().toLowerCase(florisboard.activeSubtype.locale)
binding.candidate1.text = binding.candidate1.text.toString().toLowerCase(florisboard.activeSubtype.locale)
binding.candidate2.text = binding.candidate2.text.toString().toLowerCase(florisboard.activeSubtype.locale)
}
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val heightMode = MeasureSpec.getMode(heightMeasureSpec)
val heightSize = MeasureSpec.getSize(heightMeasureSpec).toFloat()
@@ -348,7 +387,7 @@ class SmartbarView : ConstraintLayout, ThemeManager.OnThemeUpdatedListener {
*/
interface EventListener {
fun onSmartbarBackButtonPressed() {}
//fun onSmartbarCandidatePressed() {}
fun onSmartbarCandidatePressed(word: String) {}
//fun onSmartbarCandidateLongPressed() {}
fun onSmartbarPrivateModeButtonClicked() {}
fun onSmartbarQuickActionPressed(@IdRes quickActionId: Int) {}

View File

@@ -170,7 +170,7 @@ class ThemeManager private constructor(
ThemeValue.SolidColor(a.getColor(1, defColor))
}
else -> {
null
remoteColorPrimary
}
}
remoteColorPrimaryVariant = when {
@@ -184,7 +184,7 @@ class ThemeManager private constructor(
ThemeValue.SolidColor(a.getColor(4, defColor))
}
else -> {
null
remoteColorPrimaryVariant
}
}
remoteColorSecondary = when {
@@ -198,7 +198,7 @@ class ThemeManager private constructor(
ThemeValue.SolidColor(a.getColor(7, defColor))
}
else -> {
null
remoteColorSecondary
}
}
a.recycle()
@@ -216,6 +216,7 @@ class ThemeManager private constructor(
remoteColorSecondary?.let {
remoteColorSecondary = ThemeValue.SolidColor(it.color or Color.BLACK)
}
notifyCallbackReceivers()
}
/**

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

@@ -22,6 +22,8 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.SeekBar
import androidx.preference.Preference
import androidx.preference.Preference.OnPreferenceChangeListener
import androidx.preference.Preference.OnPreferenceClickListener
import androidx.preference.PreferenceManager
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.databinding.SeekBarDialogBinding
@@ -161,4 +163,4 @@ class DialogSeekBarPreference : Preference {
private fun seekBarProgressToActualValue(progress: Int): Int {
return (progress * step) + min
}
}
}

View File

@@ -22,6 +22,7 @@ import android.content.Intent
import android.content.SharedPreferences
import android.util.AttributeSet
import androidx.preference.Preference
import androidx.preference.Preference.OnPreferenceClickListener
import androidx.preference.PreferenceManager
import com.github.michaelbull.result.onSuccess
import dev.patrickgold.florisboard.R
@@ -104,4 +105,4 @@ class ThemeSelectorPreference : Preference, SharedPreferences.OnSharedPreference
i.putExtra(ThemeManagerActivity.EXTRA_DEFAULT_VALUE, defaultValue)
context.startActivity(i)
}
}
}

View File

@@ -20,6 +20,8 @@ import android.app.TimePickerDialog
import android.content.Context
import android.util.AttributeSet
import androidx.preference.Preference
import androidx.preference.Preference.OnPreferenceChangeListener
import androidx.preference.Preference.OnPreferenceClickListener
import androidx.preference.PreferenceManager
import dev.patrickgold.florisboard.R
import dev.patrickgold.florisboard.util.TimeUtil
@@ -82,4 +84,4 @@ class TimePickerDialogPreference : Preference {
}, time.hour, time.minute, true)
timePickerDialog.show()
}
}
}

View File

@@ -22,7 +22,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import dev.patrickgold.florisboard.databinding.SetupFragmentFinishBinding
import dev.patrickgold.florisboard.ime.theme.Theme
class FinishFragment : Fragment() {
private lateinit var binding: SetupFragmentFinishBinding

View File

@@ -18,7 +18,6 @@ package dev.patrickgold.florisboard.util
import android.content.Context
import dev.patrickgold.florisboard.ime.core.PrefHelper
import java.lang.Exception
object AppVersionUtils {
fun getRawVersionName(context: Context): String {

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="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

@@ -15,7 +15,7 @@
app:layout_constraintHeight_percent="0.75"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toTopOf="@+id/move_home"
app:layout_constraintBottom_toTopOf="@+id/move_start_of_line"
android:src="@drawable/ic_keyboard_arrow_left"/>
<dev.patrickgold.florisboard.ime.text.editing.EditingKeyView
@@ -51,12 +51,12 @@
app:layout_constraintWidth_percent="0.2"
app:layout_constraintHeight_percent="0.75"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/move_end"
app:layout_constraintBottom_toTopOf="@+id/move_end_of_line"
app:layout_constraintLeft_toRightOf="@+id/select"
android:src="@drawable/ic_keyboard_arrow_right"/>
<dev.patrickgold.florisboard.ime.text.editing.EditingKeyView
android:id="@+id/move_home"
android:id="@+id/move_start_of_line"
style="@style/TextEditingButton"
app:layout_constraintWidth_percent="0.35"
app:layout_constraintHeight_percent="0.25"
@@ -65,11 +65,11 @@
android:src="@drawable/ic_first_page"/>
<dev.patrickgold.florisboard.ime.text.editing.EditingKeyView
android:id="@+id/move_end"
android:id="@+id/move_end_of_line"
style="@style/TextEditingButton"
app:layout_constraintWidth_percent="0.35"
app:layout_constraintHeight_percent="0.25"
app:layout_constraintLeft_toRightOf="@+id/move_home"
app:layout_constraintLeft_toRightOf="@+id/move_start_of_line"
app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/ic_last_page"/>
@@ -131,7 +131,7 @@
app:layout_constraintHeight_percent="0.25"
app:layout_constraintTop_toBottomOf="@+id/clipboard_paste"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/move_end"
app:layout_constraintLeft_toRightOf="@+id/move_end_of_line"
app:layout_constraintRight_toRightOf="parent"
android:src="@drawable/ic_backspace"/>

View File

@@ -39,6 +39,16 @@
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
style="@style/SettingsCardView">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This version includes experimental support for composing suggestions, currently regardless of your selected subtype the language is English (US). Note that currently only suggestions are displayed if at least one character of a word is typed in. Next-word suggestions are planned for the next version. If you want to give feedback on this feature, you can do so on the GitHub repository, feedback is always highly appreciated :)"/>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
style="@style/SettingsCardView">

View File

@@ -45,22 +45,19 @@
<Button
android:id="@+id/candidate0"
style="@style/SmartbarCandidate"
android:text="suggestions"/>
style="@style/SmartbarCandidate"/>
<View style="@style/SmartbarDivider"/>
<Button
android:id="@+id/candidate1"
style="@style/SmartbarCandidate"
android:text="not yet"/>
style="@style/SmartbarCandidate"/>
<View style="@style/SmartbarDivider"/>
<Button
android:id="@+id/candidate2"
style="@style/SmartbarCandidate"
android:text="implemented"/>
style="@style/SmartbarCandidate"/>
</LinearLayout>
@@ -110,12 +107,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

@@ -151,12 +151,6 @@
<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>

View File

@@ -5,91 +5,91 @@
<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__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__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__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_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__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__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">Езици &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__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_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__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__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__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__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__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>
@@ -105,63 +105,69 @@
<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_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">Прозорец &amp; Система</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" 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_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_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_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_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__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__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__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>
@@ -171,74 +177,74 @@
<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__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__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__key_spacing_vertical__label" comment="Preference title">Разстояние между клавиши (вертикално)</string>
<string name="pref__keyboard__key_spacing_horizontal__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__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__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">Жестове &amp; Писане чрез плъзгане</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__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__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__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__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__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__move_cursor_start_of_page" comment="Preference value for swipe action">Преместване курсора в началото на страницата</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_page" 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_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__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>
@@ -250,7 +256,7 @@
<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>
<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>
@@ -267,11 +273,11 @@
<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__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__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>
@@ -287,27 +293,27 @@
<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__outro" comment="Paragraph in Welcome fragment in Setup">За да стартирате настройката, щракнете върху <i>НАПРЕД</i>.</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>Език &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__enable_ime__text_button_language_and_input" comment="Label of language and input button in Enable IME fragment">Отваряне на настройките за Език &amp; Въвеждане</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">Отваряне на настройките за Език и въвеждане</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_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>
<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__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_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>

View File

@@ -1,16 +1,186 @@
<?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">Pauza</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Čekaj</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Ikonica sa tri tačke. Ako je prikazana, znači da se dodatna slova mogu upisati dugim pritiskom na dugme.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">Odaberi mod za jednu ruku.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">Pomjeri tastaturu lijevo.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">Pomjeri tastaturu desno.</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Privatni modus</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">Emoji</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Emotikon</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">Smajliji</string>
<string name="emoji__category__people_body" comment="Emoji category name">Ljudi &amp; Tijelo</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Životinje &amp; Priroda</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Hrana &amp; Piće</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Putovanje &amp; Mjesta</string>
<string name="emoji__category__activities" comment="Emoji category name">Aktivnosti</string>
<string name="emoji__category__objects" comment="Emoji category name">Objekti</string>
<string name="emoji__category__symbols" comment="Emoji category name">Simboli</string>
<string name="emoji__category__flags" comment="Emoji category name">Zastave</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">Izađi iz panela za uređenje teksta.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Otvori podešavanja.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Podešavanja</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Više opcija</string>
<string name="settings__help" comment="General label for help buttons in Settings">Pomoć</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Dom</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Tastatura</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Tipkanje</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Tema</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">Standardno</string>
<string name="settings__home__title" comment="Title of the Home fragment">Dobrodošli u %s</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Dodaj</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Dodaj pod-tip</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">Primjeni</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">Odustani</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">Obriši</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Raspored tastature</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Nedefinisano</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Uvijek dan</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Uvijek noć</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Prati sistem</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Prati vrijeme</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Vrijeme izlaska sunca</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Vrijeme zalaska sunca</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Dnevna tema</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Noćna tema</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Odabrana tema</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Adaptiraj boje prema aplikaciji</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Interna memorija</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Kreiraj praznu temu</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Kreiraj od odabrane teme</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Nova tema</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Uredi temu</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Ime</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Tip</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Dodaj grupu</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Uredi grupu</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Dodaj atribut</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Uredi atribut</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Referenca</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Grupa</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Atribut</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Drugo</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Tekst</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Molimo unesite ime teme.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Molimo unesite ime grupe.</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Tastatura</string>
<string name="settings__theme__group_key" comment="Theme group label">Taster</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Taster (%s)</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Privatni modus</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Boja pozadine</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Boja pozadine (aktivan)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Boja pozadine (pritisnut)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Boja teksta</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Boja teksta (alternativno)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Boja teksta (pritisnut)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Prikaži okvir</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Primarna boja</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Primarna boja (tamna)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Boja akcenta</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Boja trake za navigaciju</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Boja teksta</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Tasteri</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Red sa brojevima</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Onemogućeno</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Prebaci na Emoji</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Promijeni jezik</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Promijeni tastaturu</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Raspored</string>
<string name="pref__keyboard__one_handed_mode__label" comment="Preference value">Mod za jednu ruku</string>
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Isključeno</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Mod za desnu ruku</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Mod za lijevu ruku</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Nikad ne prikaži</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Uvijek prikaži</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Prikaži dinamički</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Visina tastature</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Ekstra-kratko</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Kratko</string>
<string name="pref__keyboard__height_factor__mid_short" comment="Preference value">Srednje-kratko</string>
<string name="pref__keyboard__height_factor__normal" comment="Preference value">Normalno</string>
<string name="pref__keyboard__height_factor__mid_tall" comment="Preference value">Srednje-visoko</string>
<string name="pref__keyboard__height_factor__tall" comment="Preference value">Visoko</string>
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Ekstra-visoko</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Pritisak tastera</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Zvuk na dodir tastera</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Jačina zvuka na dodir tastera</string>
<string name="pref__keyboard__vibration_enabled__label" comment="Preference title">Vibracija na dodir tastera</string>
<string name="pref__smartbar__enabled__label" comment="Preference title">Uključi pametnu traku</string>
<string name="pref__suggestion__title" comment="Preference group title">Sugestije</string>
<string name="pref__correction__title" comment="Preference group title">Ispravke</string>
<string name="pref__correction__double_space_period__label" comment="Preference title">Tačka sa duplim razmakom</string>
<string name="pref__gestures__general_title" comment="Preference group title">Generalne gestikulacije</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Gestikulacije na razmaknici</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Bez akcije</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Obriši trenutnu riječ</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Sakrij tastaturu</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Unesi razmak</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Pomjeri kursor gore</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Pomjeri kursor dole</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Pomjeri kursor lijevo</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Pomjeri kursor desno</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Pomjeri kursor na početak reda</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Pomjeri kursor na kraj reda</string>
<string name="pref__gestures__swipe_right__label" comment="Preference title">Prevuci desno</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Vrlo sporo</string>
<string name="pref__gestures__swipe_velocity_threshold__slow" comment="Preference value for swipe velocity threshold">Sporo</string>
<string name="pref__gestures__swipe_velocity_threshold__normal" comment="Preference value for swipe velocity threshold">Normalno</string>
<string name="pref__gestures__swipe_velocity_threshold__fast" comment="Preference value for swipe velocity threshold">Brzo</string>
<string name="pref__gestures__swipe_velocity_threshold__very_fast" comment="Preference value for swipe velocity threshold">Vrlo brzo</string>
<string name="pref__gestures__swipe_distance_threshold__very_short" comment="Preference value for swipe distance threshold">Vrlo kratko</string>
<string name="pref__gestures__swipe_distance_threshold__short" comment="Preference value for swipe distance threshold">Kratko</string>
<string name="pref__gestures__swipe_distance_threshold__normal" comment="Preference value for swipe distance threshold">Normalno</string>
<string name="pref__gestures__swipe_distance_threshold__long" comment="Preference value for swipe distance threshold">Dugo</string>
<string name="pref__gestures__swipe_distance_threshold__very_long" comment="Preference value for swipe distance threshold">Vrlo dugo</string>
<string name="settings__advanced__title" comment="Title of Advanced settings activity">Napredno</string>
<string name="pref__advanced__settings_theme__label" comment="Label of Settings theme preference in Advanced">Tema za podešavanja</string>
<string name="pref__advanced__settings_theme__light" comment="Possible value of Settings theme preference in Advanced">Svijetlo</string>
<string name="pref__advanced__settings_theme__dark" comment="Possible value of Settings theme preference in Advanced">Tamno</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">Informacije o...</string>
<string name="about__app_icon_content_description" comment="Content description of app icon in About">Ikonica FlorisBoard aplikacije</string>
<string name="about__view_source_code" comment="Label of View source code button in About">Izvorni kod</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">Autor</item>
<item quantity="few">Autori</item>
<item quantity="other">Autori</item>
</plurals>
<string name="assets__file__name">Ime</string>
<string name="assets__file__source">Izvor</string>
<string name="assets__action__add">Dodaj</string>
<string name="assets__action__cancel">Odustani</string>
<string name="assets__action__cancel_confirm_title">Potvrdi odustajanje</string>
<string name="assets__action__delete">Obriši</string>
<string name="assets__action__delete_confirm_title">Potvrdi brisanje</string>
<string name="assets__action__delete_confirm_message">Jeste li sigurni da želite obrisati \"%s\"? Ova akcija se ne moze vratiti nakon izvršenja.</string>
<string name="assets__action__edit">Uredi</string>
<string name="assets__action__export">Izvezi</string>
<string name="assets__action__import">Uvezi</string>
<string name="assets__action__no">Ne</string>
<string name="assets__action__save">Spremi</string>
<string name="assets__action__yes">Da</string>
<!-- Setup UI strings -->
<string name="setup__cancel_button" comment="Label of Cancel button in Setup">Odustani</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)">Dalje</string>
<string name="setup__finish_button" comment="Label of Finish button in Setup">Završi</string>
<string name="setup__ok_button" comment="Label of OK button in Setup">OK</string>
<string name="setup__welcome__title" comment="Title of Welcome fragment in Setup">Dobrodošli!</string>
<string name="setup__enable_ime__title" comment="Title of Enable IME fragment in Setup">Omogući FlorisBoard</string>
<string name="setup__make_default__text_switch_button" comment="Label of switch button in Make IME default fragment">Promijeni tastaturu</string>
<!-- Crash Dialog strings -->
<string name="crash_dialog__copy_to_clipboard" comment="Label of Copy to clipboard button in crash dialog">Kopiraj u međuspremnik</string>
<string name="crash_dialog__close" comment="Label of Close button in crash dialog">Zatvori</string>
</resources>

View File

@@ -85,6 +85,22 @@
<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_manager__theme_new_title" comment="Title template for a new theme">Nou 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">Nom</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Tipus</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Afegir grup</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Editar grup</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Afegir un atribut</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Editar atribut</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Referència</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Grup</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Atribut</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Color sòlid</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Canvia</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Estat</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Altres</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Text</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>
@@ -134,6 +150,7 @@
<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>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Personalitzat</string>
<!-- About UI strings -->
<!-- Assets strings -->
<!-- Setup UI strings -->

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">ڕاگرتن</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>
@@ -121,6 +122,8 @@
<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>
@@ -161,6 +164,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>
@@ -171,6 +178,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_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>
@@ -183,12 +192,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">پیشاندانی بەشی سەرەوە (SmartBar)</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>

View File

@@ -8,6 +8,7 @@
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">Posunout klávesnici doleva.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">Posunout klávesnici doprava.</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Soukromý režim</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>
-->
@@ -32,10 +33,13 @@
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Otevřít nastavení.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Přepnout na editor textu.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Přepnout na vkládaní médií.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Undo tlačítko pro vrácení poslední akce</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Redo tlačítko pro obnovení poslední akce</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Nastavení</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Více možností</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Pomoc &amp; odezva</string>
<string name="settings__help" comment="General label for help buttons in Settings">Nápověda</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Domov</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Klávesnice</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Psaní</string>
@@ -94,11 +98,6 @@
<string name="pref__keyboard__long_press_delay__label" comment="Preference title">Dlouhé zpoždění stisknutí tlačítka</string>
<string name="settings__typing__title" comment="Title of Typing experience fragment">Psaní zkušenosti</string>
<string name="pref__suggestion__title" comment="Preference group title">Návrh</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] zobrazit návrhy při psaní</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Návrhy obsahu schránky</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Navrhněte obsah schránky, který chcete vložit, pokud byl dříve zkopírován</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] návrhy dalšího slova</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Použijte předchozí slova pro generování návrhů</string>
<string name="pref__correction__title" comment="Preference group title">Oprava</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Automatická kapitalizace</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Vydělávejte slova na základě aktuálního vstupního kontextu</string>
@@ -187,6 +186,6 @@
<string name="crash_notification_channel__title" comment="Title of crash notification channel">FlorisBoard chybové hlášení</string>
<string name="crash_once_notification__title" comment="Title of the notification for a single crash">FlorisBoard přestal fungovat…</string>
<string name="crash_once_notification__body" comment="Body of the notification for a single crash">Klepnutím zobrazíte podrobnosti o chybě</string>
<string name="crash_multiple_notification__title" comment="Title of the notification for consecutive crashes">Zdá se, že FlorisBoard přestane pracovat opakova</string>
<string name="crash_multiple_notification__body" comment="Body of the notification for consecutive crashes">Klesající zpět na předchozí klávesnici zastavit nekonečné crash loop. Klepnutím zobrazíte podrobnosti o chybě</string>
<string name="crash_multiple_notification__title" comment="Title of the notification for consecutive crashes">Zdá se, že FlorisBoard přestal opakovaně pracovat</string>
<string name="crash_multiple_notification__body" comment="Body of the notification for consecutive crashes">Vrácení zpět na předchozí klávesnici pro zastavení nekonečného crash loopu. Klepnutím zobrazíte podrobnosti o chybě</string>
</resources>

View File

@@ -87,12 +87,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Aktivér Smartbar</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Vil blive vist over tastaturet</string>
<string name="pref__suggestion__title" comment="Preference group title">Forslag</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Hvis forslag imens du skriver</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Vil blive vist i Smartbaren</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Udklipsholder indholdsforslag</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Forslå indsættelse af indhold i udklipsholderen hvis tidligere kopieret</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Forslå næste ord</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Brug forrige ord for at lave forslag</string>
<string name="pref__correction__title" comment="Preference group title">Rettelser</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Automatisk stort bogstav</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Gør bogstaver i ord store baseret på nuværende inputskontekst</string>

View File

@@ -19,7 +19,7 @@
<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">Smileys &amp; Emotionen</string>
<string name="emoji__category__people_body" comment="Emoji category name">Menschen</string>
<string name="emoji__category__people_body" comment="Emoji category name">Personen &amp; Körper</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Tiere &amp; Natur</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Essen &amp; Trinken</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Reisen &amp; Orte</string>
@@ -122,8 +122,8 @@
<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_smartbarButton" comment="Theme group label">Schnellzugriffsleiste Schalter</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Bearbeitungslayout extrahieren</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Aktionsschaltfläche extrahieren</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Querformat Vollbild Aussehen</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Querformat Vollbild Aktionsschaltfläche</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>
@@ -150,13 +150,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">Wechseltaste anzeigen</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Zeigt eine konfigurierbare Wechseltaste neben der Leertaste an</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Wechseltaste Aktion</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__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>
@@ -164,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Aus</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Rechtshändermodus</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Linkshändermodus</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Querformat Vollbild Eingabe</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Nie zeigen</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Immer zeigen</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Dynamisch zeigen</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Tastaturhöhe</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Sehr klein</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Klein</string>
@@ -188,12 +192,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Schnellzugriffsleiste einschalten</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Wird über der Tastatur angezeigt</string>
<string name="pref__suggestion__title" comment="Preference group title">Vorschläge</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Vorschläge während des Tippens anzeigen</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Wird die Schnellzugriffsleiste anzeigen</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Inhalt der Zwischenablage</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Inhalte der Zwischenablage einfügen, die zuvor kopiert wurden</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Vorschläge für nächstes Wort</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Vorschläge anhand der vorherigen Wörter machen</string>
<string name="pref__correction__title" comment="Preference group title">Korrekturen</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Autom. Groß-/Kleinschreibung</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Automatisches Großschreiben je nach aktuellem Kontext</string>

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">Βοήθεια &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>
@@ -77,6 +78,7 @@
<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="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>
@@ -100,12 +102,40 @@
<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_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>
@@ -116,6 +146,10 @@
<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_to_emojis" comment="Preference value">Εναλλαγή σε emoji</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">Δυναμικό: Εναλλαγή σε emojis / Εναλλαγή γλώσσας</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>
@@ -123,6 +157,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>
@@ -145,12 +183,6 @@
<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>
@@ -169,11 +201,15 @@
<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__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>
@@ -184,6 +220,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>
@@ -212,11 +249,16 @@
<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>

View File

@@ -4,6 +4,7 @@
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Atendi</string>
<!-- One-handed strings -->
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Privata reĝimo</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>
-->
@@ -26,6 +27,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>
@@ -42,18 +44,62 @@
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Redakti subspeco</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">Lokaĵaro</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Klavaro</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Ĉi tiu subtipo jam ekzistas!</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="pref__theme__mode__label" comment="Label of the theme mode preference">Etosa reĝimo</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__mode__follow_system" comment="Preference value for theme mode">Laŭ operaciumo</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Laŭ tempo</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__create_empty" comment="Label of the Create empty FAB action">Krei malplenan etoson</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Krei el elektita etoso</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Propra (bazita sur %s)</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__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">Aldoni grupon</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Redakti grupon</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Aldoni atributon</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Redakti atributon</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Referenco</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_on_off" comment="Theme value type">Baskuli</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Stato</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__theme__group_custom" comment="Theme group label (%s is custom group name)">Propra grubo (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Fona koloro</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Fona koloro (aktiva)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Malfona koloro</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Malfona koloro (alternativa)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Montri konturon</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Ĉefa koloro</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Ĉefa koloro (malluma)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Akcenta koloro</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Teksta koloro</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Propra atributo (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Klavaro agordoj</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Klavoj</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Malŝaltita</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Baskuli lingvon</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Ŝalti klavara aplikaĵo</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Aranĝo</string>
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Malvalidigita</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Neniam montri</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Ĉiam montri</string>
<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>
@@ -69,7 +115,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>
@@ -87,6 +133,22 @@
<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 -->
<plurals name="assets__file__authors">
<item quantity="one">Aŭtoro</item>
<item quantity="other">Aŭtoroj</item>
</plurals>
<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__export">Elporti</string>
<string name="assets__action__import">Enporti</string>
<string name="assets__action__no">Ne</string>
<string name="assets__action__save">Konsvervi</string>
<string name="assets__action__yes">Jes</string>
<string name="assets__error__invalid">Nevalida</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>
@@ -96,6 +158,7 @@
<string name="setup__ok_button" comment="Label of OK button in Setup">Bone</string>
<string name="setup__welcome__title" comment="Title of Welcome fragment in Setup">Bonvenon!</string>
<string name="setup__enable_ime__title" comment="Title of Enable IME fragment in Setup">Aktivigi FlorisBoard</string>
<string name="setup__enable_ime__text_button_language_and_input" comment="Label of language and input button in Enable IME fragment">Malfermi Lingvajn &amp; Enigajn agordojn</string>
<string name="setup__make_default__text_switch_button" comment="Label of switch button in Make IME default fragment">Ŝalti klavaro</string>
<!-- Crash Dialog strings -->
<string name="crash_dialog__copy_to_clipboard" comment="Label of Copy to clipboard button in crash dialog">Kopii al tondejo</string>

View File

@@ -1,6 +1,7 @@
<?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="app_name">FlorisBoard</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 -->
@@ -17,11 +18,11 @@
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Emoticonos</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">Emoticonos y emociones</string>
<string name="emoji__category__people_body" comment="Emoji category name">Personas y cuerpo</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Animales y naturaleza</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Comida y bebida</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Viajes y lugares</string>
<string name="emoji__category__smileys_emotion" comment="Emoji category name">Emojis &amp; Emociones</string>
<string name="emoji__category__people_body" comment="Emoji category name">Personas &amp; Cuerpo</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Animales &amp; Naturaleza</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Comida &amp; Bebida</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Viajar &amp; Lugares</string>
<string name="emoji__category__activities" comment="Emoji category name">Actividades</string>
<string name="emoji__category__objects" comment="Emoji category name">Objetos</string>
<string name="emoji__category__symbols" comment="Emoji category name">Símbolos</string>
@@ -34,12 +35,13 @@
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Cambiar al panel de edición de texto.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Cambiar a la vista de entrada de multimedia.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Botón de deshacer para revertir la última acción</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Botón de rehacer para revertir el último deshacer</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Botón de rehacer para revertir la último acción</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">Si está visible, indica que el modo privado está activo. Cuando se hace clic, muestra información sobre el modo privado.</string>
<!-- Settings UI strings -->
<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__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Ayuda &amp; 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,21 +66,94 @@
<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="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 claro</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Siempre oscuro</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__sunrise_time__label" comment="Label of the sunrise time preference">Amanecer</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">Almacenamiento 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_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_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_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_colorAccent" comment="Theme attribute label">Color principal</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>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Mostrar el número de filas sobre la distribución de los caracteres</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Número de filas sugeridos</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Fila de números</string>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Mostrar fila de números sobre la distribución de los caracteres</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Fila de números sugeridos</string>
<string name="pref__keyboard__hinted_symbols_mode__label" comment="Preference title">Símbolos sugeridos</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Deshabilitado</string>
<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_enabled__label" comment="Preference title">Mostrar teclas de utilidad</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Muestra una tecla de utilidad configurable junto a la barra espaciadora</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Acción de tecla de utilidad</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>
@@ -86,6 +161,9 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Apagado</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Modo para diestros</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Modo para zurdos</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">No mostrar nunca</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Mostrar siempre</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Mostrar dinámicamente</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Altura del teclado</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Muy bajo</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Bajo</string>
@@ -96,6 +174,7 @@
<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_portrait__label" comment="Preference title">Desplazamiento inferior</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>
@@ -108,12 +187,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Habilitar barra inteligente</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Se mostrará en la parte superior del teclado</string>
<string name="pref__suggestion__title" comment="Preference group title">Sugerencias</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Mostrar sugerencias mientras se escribe</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Se mostrará en la barra inteligente</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Sugerencias sobre el contenido del portapapeles</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Sugerir el contenido del portapapeles para pegar si se ha copiado previamente</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Sugerencias de la siguiente palabra</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Usar palabras anteriores para mejorar las sugerencias</string>
<string name="pref__correction__title" comment="Preference group title">Correcciones</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Mayúsculas automáticas</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Poner en mayúsculas las palabras según el contexto de entrada actual</string>
@@ -127,16 +200,23 @@
<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 generales</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Gestos en la barra espaciadora</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__shift" comment="Preference value for swipe action">Shift</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Mover cursor hacia la izquierda</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Mover cursor hacia la derecha</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Mover cursor al inicio de la línea</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Mover cursor al final de la línea</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Mayúsculas</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Mostrar selector de método de entrada</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>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Cambiar al subtipo siguiente</string>
@@ -147,6 +227,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>
@@ -164,7 +245,7 @@
<string name="pref__advanced__settings_theme__label" comment="Label of Settings theme preference in Advanced">Tema de los ajustes</string>
<string name="pref__advanced__settings_theme__light" comment="Possible value of Settings theme preference in Advanced">Claro</string>
<string name="pref__advanced__settings_theme__dark" comment="Possible value of Settings theme preference in Advanced">Oscuro</string>
<string name="pref__advanced__show_app_icon__label" comment="Label of Show app icon preference in Advanced">Mostrar aplicación en el launcher</string>
<string name="pref__advanced__show_app_icon__label" comment="Label of Show app icon preference in Advanced">Mostrar icono de la aplicación en el launcher</string>
<string name="pref__advanced__force_private_mode__label" comment="Label of Force private mode preference in Advanced">Forzar el modo privado</string>
<string name="pref__advanced__force_private_mode__summary" comment="Summary of Force private mode preference in Advanced">Desactivará cualquier característica que tenga que trabajar temporalmente con sus datos de entrada</string>
<!-- About UI strings -->
@@ -175,6 +256,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

@@ -98,6 +98,8 @@
<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>
@@ -120,8 +122,8 @@
<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_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>
@@ -162,6 +164,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>
@@ -174,6 +180,8 @@
<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__key_spacing_vertical__label" comment="Preference title">فاصله گذاری کلید (عمودی)</string>
<string name="pref__keyboard__key_spacing_horizontal__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>
@@ -186,12 +194,6 @@
<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>
@@ -220,6 +222,8 @@
<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__move_cursor_start_of_page" comment="Preference value for swipe action">انتقال اشاره‌گر به اول صفحه</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_page" 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>
@@ -270,10 +274,10 @@
<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__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__delete_confirm_message">آیا مطمعنید که می خواهید \"%s\" را حذف کنید؟ این عمل دز صورت اجرا، غیرقابل بازگشت خواهد بود.</string>
<string name="assets__action__edit">ویرایش</string>
<string name="assets__action__export">استخراج</string>
<string name="assets__action__import">واردکردن</string>

View File

@@ -94,11 +94,6 @@
<string name="pref__keyboard__long_press_delay__label" comment="Preference title">Pitkän painalluksen viive</string>
<string name="settings__typing__title" comment="Title of Typing experience fragment">Kirjoituskokemus</string>
<string name="pref__suggestion__title" comment="Preference group title">Ehdotukset</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[EVS] Näytä ehdotukset kirjoittaessa</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Leikepöydän sisällön ehdotukset</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Ehdota leikepöydän sisältöä liittämään, jos se on aiemmin kopioitu</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[EVS] Sanaehdotukset</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Käytä edellisiä sanoja ehdotuksiin</string>
<string name="pref__correction__title" comment="Preference group title">Korjaukset</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Automaattiset isot kirjaimet</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Automaattinen iso kirjain syöttökontekstin perusteella</string>

View File

@@ -44,7 +44,7 @@
<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>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Saisie</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Thème</string>
<string name="settings__navigation__gestures" comment="Long-press hint of bottom nav item Gestures in Settings">Gestes</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">Par défaut</string>
@@ -122,7 +122,8 @@
<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_smartbarButton" comment="Theme group label">Bouton de la barre intelligente</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Extraire la disposition d\'édition</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Disposition horizontale plein écran</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Bouton d\'action horizontal plein écran</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>
@@ -141,9 +142,9 @@
<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>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Afficher la rangée de numéros au dessus de la disposition des caractères</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Rangée de numéros subtile</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Rangée de chiffres</string>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Afficher la rangée de chiffres au dessus de la disposition des caractères</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Rangée de chiffres subtile</string>
<string name="pref__keyboard__hinted_symbols_mode__label" comment="Preference title">Symboles subtiles</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Désactivé</string>
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Activé (priorité à l\'indice)</string>
@@ -163,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Désactivé</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Mode droitier</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Mode gaucher</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Insertion horizontale en plein écran</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Ne jamais afficher</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Toujours afficher</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Affichage dynamique</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Hauteur du clavier</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Très court</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Court</string>
@@ -173,6 +178,8 @@
<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_portrait__label" comment="Preference title">Écart en bas (portrait)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Écart en bas (paysage)</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>
@@ -185,12 +192,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Activer la Smartbar</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">S\'affichera en haut du clavier</string>
<string name="pref__suggestion__title" comment="Preference group title">Suggestions</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Afficher les suggestions lorsque que vous tapez</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Sera affiché dans la Smartbar</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Suggestions pour le contenu du presse-papiers</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Suggérer le contenu du presse-papiers à coller s\'il a déjà été copié</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Suggestions de mots suivants</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Utilisez les mots précédents pour faire des suggestions</string>
<string name="pref__correction__title" comment="Preference group title">Corrections</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Auto-capitalisation</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Capitaliser les mots en fonction du contexte de saisie actuel</string>

View File

@@ -122,8 +122,8 @@
<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_smartbarButton" comment="Theme group label">Okossáv gomb</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Szerkesztőelrendezés kibontása</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Kibontás akciógomb</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Teljes képernyős fekvő elrendezés</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Teljes képernyős fekvő elrendezés gombja</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>
@@ -164,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Ki</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Jobbkezes mód</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Balkezes mód</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Teljes képernyős fekvő elrendezés bemenet</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Soha ne jelenjen meg</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Mindig jelenjen meg</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Dinamikus megjelenítés</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Billentyűzet magassága</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Nagyon alacsony</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Alacsony</string>
@@ -188,12 +192,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Okossáv engedélyezése</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">A billentyűzet tetején fog megjelenni</string>
<string name="pref__suggestion__title" comment="Preference group title">Javaslatok</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] A javaslatok megjelenítése gépelés közben</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Az okossávban fog megjelenni</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Vágólap tartalom javaslatok</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">A vágólap tartalmának beillesztése, ha korábban ki lett másolva</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Javaslatok a következő szóra</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Használja az előző szavakat a javaslatok generálásához</string>
<string name="pref__correction__title" comment="Preference group title">Javítások</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Automatikusan nagy kezdőbetű</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Kezdje nagybetűvel a szavakat a bemeneti környezet alapján</string>

View File

@@ -1,10 +1,11 @@
<?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">Attendi</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Icona a tre puntini.Se visibile, indica che è possibile utilizzare più lettere se premuto a lungo.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">Chiudi modalità mano singola.</string>
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">Chiudi modalità con una mano.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">Muovi tastiera a sinistra.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">Muovi tastiera a destra.</string>
<!-- Private mode info dialog strings -->
@@ -27,9 +28,9 @@
<string name="emoji__category__symbols" comment="Emoji category name">Simboli</string>
<string name="emoji__category__flags" comment="Emoji category name">Bandiere</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Attiva / disattiva azione rapida. Se premuto, alterna i suggerimenti di parole ed i pulsanti di azione rapida.</string>
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Attiva/disattiva azione rapida. Se premuto, alterna i suggerimenti di parole ed i pulsanti di azione rapida.</string>
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">Pannello di modifica del testo.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Attiva / disattiva la modalità a una mano.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Attiva/disattiva la modalità con una mano.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Apri Impostazioni.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Vai a pannello di modifica del testo.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Passa alla visualizzazione dei media.</string>
@@ -40,6 +41,7 @@
<string name="settings__title" comment="Title of Settings">Impostazioni</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Altre opzioni</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Aiuto &amp; feedback</string>
<string name="settings__help" comment="General label for help buttons in Settings">Aiuto</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Home</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Tastiera</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Digitazione</string>
@@ -48,9 +50,9 @@
<string name="settings__default" comment="General string which is used when a preference has the default value set">Predefinito</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">Predefinito di sistema</string>
<string name="settings__home__title" comment="Title of the Home fragment">Benvenuto in %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 non è abilitato nel sistema e quindi non sarà disponibile come metodo di immissione.Clicca quì per risolvere questo problema.</string>
<string name="settings__home__ime_not_enabled" comment="Error message shown in Home fragment when FlorisBoard is not enabled in the system">FlorisBoard non è abilitato nel sistema e quindi non sarà disponibile come metodo di immissione. Clicca quì per risolvere il 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 non è la tastiera predefinita. Clicca quì per risolvere questo problema.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Grazie per aver provato FlorisBoard! Questo progetto è ancora in fase alfa e quindi manca di alcune funzionalità. Se trovate qualche bug o volete dare un suggerimento, date un\'occhiata al repo su GitHub e segnalate un problema. Questo aiuta a rendere FlorisBoard migliore. Grazie!</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Grazie per aver provato FlorisBoard! Questo progetto è ancora in fase alfa e quindi manca di alcune funzionalità. Se trovate qualche bug o volete dare un suggerimento, date un\'occhiata alla repo su GitHub e segnalate un problema. Questo aiuta a rendere FlorisBoard migliore. Grazie!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Lingue &amp; Layout della tastiera</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Sembra che tu non abbia configurato nessuno stile di input personalizzato. Come ripiego verrà utilizzato lo stile input English/QWERTY!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Aggiungi</string>
@@ -64,11 +66,80 @@
<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="pref__theme__mode__label" comment="Label of the theme mode preference">Modalità tema</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Sempre giorno</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Sempre notte</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Seguire il sistema</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Seguire il tempo</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Ora dell\'alba</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Ora del tramonto</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Tema giorno</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Tema notte</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Tema selezionato</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Adatta i colori all\'app</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">I colori del tema seguono quelli dell\'app, se lo sopporta.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">Risorse dell\'app FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Memoria interna</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Provider esterno</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Gestore Tema (Giorno)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Gestore Tema (Notte)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Crea tema vuoto</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Crea dal tema selezionato</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Personalizzato (basato su %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Nuovo tema</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Modifica tema</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nome</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">Aggiungi gruppo</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Modifica gruppo</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Aggiungi attributo</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Modifica attributo</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Referenze</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Gruppo</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Attributo</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Colore</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Gradiente lineare</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Gradiente radiale</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Interruttore</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Stato</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Altro</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Testo</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Anteprima del tema</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Inserisci un nome per il tema.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Inserire un nome al gruppo che contenga solo lettere (az e/o AZ), due punti (:) per il sottogruppo oppure numeri (09), tilde (~) e sottolineature (_) per la chiave etichetta.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Inserisci il nome del gruppo.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Esiste già un gruppo con questo nome nel tema. Per favore scegline un altro.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Si prega d\'inserire un nome dell\'attributo che contiene solo le lettere az e/o AZ.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Inserisci il nome dell\'attributo.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Esiste già un gruppo con questo nome nel tema. Per favore scegline un altro.</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_specific" comment="Theme group label (%s is specific modifier)">Tasto (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Contesto multimediale</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">Ad una mano</string>
<string name="settings__theme__group_popup" comment="Theme group label">Popup</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Modalità privata</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Smartbar</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Pulsante smartbar</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Layout a schermo intero orizzontale</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Pulsante d\'azione a schermo intero orizzontale</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Gruppo personalizzato (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Colore di sfondo</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Colore di sfondo (attivo)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Colore di sfondo (premuto)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Colore di testo</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Colore di testo (alternativo)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Colore di testo (premuto)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Mostra bordi</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Colore principale</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Colore principale (scuro)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Colore in rilievo</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Colore della barra di navigazione</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Colore scuro di primo piano della barra di navigazione</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Colore semi-trasparente</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Colore del testo</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Attributo personalizzato (%s)</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>
@@ -79,6 +150,13 @@
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Abilitato (Priorità ai suggerimenti)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Abilitato (Priorità agli accenti)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Abilitato (Priorità intelligente)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Mostra tasto funzionalità</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Mostra un tasto funzionalità configurabile vicino alla barra spaziatrice</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Azione del tasto di strumenti</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Passare agli emoji</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Cambia lingua</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Cambia app di tastiera</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Dinamico: Passa agli emoji / Cambia lingua</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Moltiplicatore della dimensione del testo (ritratto)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Moltiplicatore della dimensione del testo (panorama)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Layout</string>
@@ -86,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Off</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Modalità destrimano</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Modalità mancino</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Inserimento a schermo intero orizzontale</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Non mostrare</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Mostra sempre</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Mostra dinamicamente</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Altezza tastiera</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Cortissimo</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Corto</string>
@@ -96,6 +178,8 @@
<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_portrait__label" comment="Preference title">Distanza inferiore (verticale)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Distanza inferiore (orizzontale)</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>
@@ -108,12 +192,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Abilità Smartbar</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Verrà mostrato in cima alla tastiera</string>
<string name="pref__suggestion__title" comment="Preference group title">Suggerimenti</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">Visualizza suggerimenti mentre digiti</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Verrà mostrato nella Smartbar</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Suggerimenti sui contenuti degli appunti</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Suggerisci contenuti degli appunti copiati in precedenza da incollare</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">Suggerimenti per la parola successiva</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Utilizzare le parole precedenti per generare suggerimenti</string>
<string name="pref__correction__title" comment="Preference group title">Correzioni</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Auto-maiuscolo</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Rendi maiuscole le parole in base al contesto attuale</string>
@@ -127,16 +205,23 @@
<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 generali</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Gesti della barra di spazio</string>
<string name="pref__gestures__other_title" comment="Preference group title">Altri gesti / Sogli dei 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>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Cancella parole con precisione</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Nascondi tastiera</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Inserisci spario</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Muovi cursore su</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Muovi cursore giù</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Muovi cursore a sinistra</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Muovi cursore a destra</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Spazia il cursore all\'inizio della linea</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Spazia il cursore alla fine della linea</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">Mostra il selettore del metodo di digitazione</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Passa alla tastiera precedente</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Vai allo stile di input precedente</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Vai allo stile di input successivo</string>
@@ -144,8 +229,10 @@
<string name="pref__gestures__swipe_down__label" comment="Preference title">Swipe giù</string>
<string name="pref__gestures__swipe_left__label" comment="Preference title">Swipe a sinistra</string>
<string name="pref__gestures__swipe_right__label" comment="Preference title">Swipe a destra</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Swipe della barra di spazio in alto</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Swipe a sinistra sulla barra spaziatrice</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Swipe a destra sulla barra spaziatrice</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Pressione prolungata sulla barra di spazio</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Swipe a sinistra sul tasto di cancellazione all\'indietro</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Soglia di velocità dello swipe</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Molto lenta</string>
@@ -164,6 +251,8 @@
<string name="pref__advanced__settings_theme__light" comment="Possible value of Settings theme preference in Advanced">Chiaro</string>
<string name="pref__advanced__settings_theme__dark" comment="Possible value of Settings theme preference in Advanced">Scuro</string>
<string name="pref__advanced__show_app_icon__label" comment="Label of Show app icon preference in Advanced">Mostra icona nel launcher</string>
<string name="pref__advanced__force_private_mode__label" comment="Label of Force private mode preference in Advanced">Forza la modalità privata</string>
<string name="pref__advanced__force_private_mode__summary" comment="Summary of Force private mode preference in Advanced">Disabiliterà tutte le funzionalità che temporanemaente funzionano con i tuoi dati</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">Informazioni su</string>
<string name="about__app_icon_content_description" comment="Content description of app icon in About">Icona dell\'app FlorisBoard</string>
@@ -172,6 +261,26 @@
<string name="about__view_source_code" comment="Label of View source code button in About">Codice sorgente</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Licenze open source</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="one">Autore</item>
<item quantity="other">Autori</item>
</plurals>
<string name="assets__file__name">Nome</string>
<string name="assets__file__source">Fonte</string>
<string name="assets__action__add">Aggiungi</string>
<string name="assets__action__cancel">Annulla</string>
<string name="assets__action__cancel_confirm_title">Conferma anulla</string>
<string name="assets__action__cancel_confirm_message">Sei sicuro di volere cancellare gli cambiamenti non salvati? Questo non può essere annullato.</string>
<string name="assets__action__delete">Elimina</string>
<string name="assets__action__delete_confirm_title">Conferma eliminazione</string>
<string name="assets__action__delete_confirm_message">Sei sicuro di volere eliminare \"%s\"? Questo non può essere annullato.</string>
<string name="assets__action__edit">Modifica</string>
<string name="assets__action__export">Esporta</string>
<string name="assets__action__import">Importa</string>
<string name="assets__action__no">No</string>
<string name="assets__action__save">Salva</string>
<string name="assets__action__yes"></string>
<string name="assets__error__invalid">Invalido</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Configurazione</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)">Precedente</string>

View File

@@ -121,8 +121,6 @@
<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>
@@ -185,12 +183,6 @@
<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>

View File

@@ -0,0 +1,322 @@
<?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">Apturēt</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Uzgaidīt</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Trīspunkte. Ja redzama, norāda, ka vairāk rakstzīmju var tikt izmantotas, ja nospiež ilgāk.</string>
<!-- One-handed strings -->
<string name="one_handed__close_btn_content_description" comment="Content description for the one-handed close button">Aizvērt vienrocīgo ievadi.</string>
<string name="one_handed__move_start_btn_content_description" comment="Content description for the one-handed move to left button">Pārvietot tastatūru uz kreiso pusi.</string>
<string name="one_handed__move_end_btn_content_description" comment="Content description for the one-handed move to right button">Pārvietot tastatūru uz labo pusi.</string>
<!-- Private mode info dialog strings -->
<string name="private_mode_dialog__title" comment="Title of the private mode dialog">Slepenais stāvoklis</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">Emoji rakstzīmes</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Sajūtu rakstzīmes</string>
<string name="media__tab__kaomoji" comment="Tab description for kaomoji in the media UI">Japāņu sajūtu zīmes (Kaomoji)</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion" comment="Emoji category name">Smaidiņi un sajūtu rakstzīmes</string>
<string name="emoji__category__people_body" comment="Emoji category name">Cilvēki un ķermenis</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Dzīvnieki un daba</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Pārtika un dzērieni</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Ceļošana un vietas</string>
<string name="emoji__category__activities" comment="Emoji category name">Darbības</string>
<string name="emoji__category__objects" comment="Emoji category name">Priekšmeti</string>
<string name="emoji__category__symbols" comment="Emoji category name">Zīmes</string>
<string name="emoji__category__flags" comment="Emoji category name">Karogi</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Ātro darbību pārslēgs. Kad nospiests, pārslēdzas starp vārdu ieteikumiem un ātro darbību pogām.</string>
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">Iziet no teksta labošanas.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Pārslēgt vienrocīgās ievades stāvokli.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Atvērt iestatījumus.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Pārslēgties uz teksta labošanu.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Pārslēgties uz informācijas nesēju ievades skatu.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Atsaukšanas poga, lai atceltu pēdējo darbību</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Atatsaukšanas poga, lai atcelto pēdējo atsaukšanu</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">Ja redzams, norāda, ka slepenais stāvoklis ir iespējots. Uzspiežot var aplūkot informāciju par slepeno stāvokli.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Iestatījumi</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Vairāk iespēju</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Palīdzība un atsauksmes</string>
<string name="settings__help" comment="General label for help buttons in Settings">Palīdzība</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Sākums</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Tastatūra</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Rakstīšana</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Izskats</string>
<string name="settings__navigation__gestures" comment="Long-press hint of bottom nav item Gestures in Settings">Žesti</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">Noklusējums</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">Sistēmas noklusējums</string>
<string name="settings__home__title" comment="Title of the Home fragment">Laipni lūgts %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 nav iespējots sistēmas iestatījumos, tādēļ tā nebūs pieejama kā ievades avots atlasītājā. Klikšķināt šeit, lai atrisinātu to.</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 nav izvēlēts kā noklusējuma ievades veids. Klikšķināt šeit, lai to novērstu.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Paldies par FlorisBoard izmēģināšanu! Lietotne joprojām ir izstrādē, tādēļ var trūkt atsevišķas iespējas. Ja tiek atrastas nepilnības vai ir kāds ierosinājums, lūgums apskatīt GitHub glabātavu un iesniegt tur pieteikumu. Tas palīdzēs padarīt FlorisBoard labāku. Paldies!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Valodas un tastatūras izkārtojumi</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Izskatās, ka nav iestatīts neviens apakšveids. Tādēļ tiks izmantots Angļu/QWERTY apakšveids!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Pievienot</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Pievienot apakšveidu</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">Pielietot</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">Atcelt</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">Dzēst</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Labot apakšveidu</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">Lokalizācija</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Tastatūras izkārtojums</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Šis apakšveids jau pastāv!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Tastatūras izskats</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Nenoteikts</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Izskata veids</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Vienmēr diena</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Vienmēr nakts</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Pielāgot sistēmai</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Pielāgot laikam</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Saullēkta laikā</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Saulrieta laikā</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Dienas izskats</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Nakts izskats</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Izvēlētais izskats</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Pielāgot krāsas lietotnei</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Izskats tiek pielāgotas pašreizējās lietotnes krāsām, ja tā to atbalsta.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">FlorisBoard lietotnes līdzekļi</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Iekšējā krātuve</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Ārējs avots</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Izskata pārvaldnieks (Diena)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Izskata pārvaldnieks (Nakts)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Izveidot tukšu izskatu</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Izveidot no izvēlētā izskata</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Pielāgots (no %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Jauns izskats</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Labot izskatu</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nosaukums</string>
<string name="settings__theme_editor__type_label" comment="Label of type input">Veids</string>
<string name="settings__theme_editor__add_group_dialog_title" comment="Title of the add group dialog in the theme editor">Pievienot kopu</string>
<string name="settings__theme_editor__edit_group_dialog_title" comment="Title of the edit group dialog in the theme editor">Labot kopu</string>
<string name="settings__theme_editor__add_attr_dialog_title" comment="Title of the add attribute dialog in the theme editor">Pievienot pazīmi</string>
<string name="settings__theme_editor__edit_attr_dialog_title" comment="Title of the edit attribute dialog in the theme editor">Labot pazīmi</string>
<string name="settings__theme_editor__value_type_reference" comment="Theme value type">Saikne</string>
<string name="settings__theme_editor__value_type_reference_group" comment="Theme value type sub-field">Kopa</string>
<string name="settings__theme_editor__value_type_reference_attr" comment="Theme value type sub-field">Pazīme</string>
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Tīrtoņa krāsa</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Vienvirziena krāsu pāreja</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Apļveida krāsu pāreja</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Slēdzis</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Stāvoklis</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Cits</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Teksts</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Priekšskatīt izskata vērtību</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Lūgums ievadīt izskata nosaukumu.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Jāievada kopas nosaukums, kas satur tikai burtus (az un/vai AZ), kols (:) apakškopām vai papildus ciparus (09), tildi (~) un apakšsvītras (_) taustiņa apzīmējumam.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Lūgums ievadīt kopas nosaukumu.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Šāds kopas nosaukums jau pastāv šajā izskatā. Lūgums izvēlēties citu.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Lūgums ievadīt pazīmes nosaukumu, kas satur tikai burtus a-z un/vai A-Z.</string>
<string name="settings__theme_editor__error_attr_name_empty" comment="Error text for an empty attribute name">Lūgums ievadīt pazīmes nosaukumu.</string>
<string name="settings__theme_editor__error_attr_name_already_exists" comment="Error text for a duplicate attribute name">Šāds pazīmes nosaukums šajā kopā jau pastāv. Lūgums norādīt citu.</string>
<string name="settings__theme__group_window" comment="Theme group label">Logs un sistēma</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">Tastatūra</string>
<string name="settings__theme__group_key" comment="Theme group label">Taustiņš</string>
<string name="settings__theme__group_key_specific" comment="Theme group label (%s is specific modifier)">Taustiņš (%s)</string>
<string name="settings__theme__group_media" comment="Theme group label">Informācijas nesēju kopums</string>
<string name="settings__theme__group_oneHanded" comment="Theme group label">Vienrocīgs</string>
<string name="settings__theme__group_popup" comment="Theme group label">Uznirstošais lodziņš</string>
<string name="settings__theme__group_privateMode" comment="Theme group label">Slepenais stāvoklis</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Viedjosla</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Viedjoslas poga</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Līmeniska pilnekrāna izkārtojums</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Līmeniska pilnekrāna izkārtojuma darbības poga</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Pielāgota kopa (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Fona krāsa</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Fona krāsa (izmantots)</string>
<string name="settings__theme__attr_backgroundPressed" comment="Theme attribute label">Fona krāsa (piespiests)</string>
<string name="settings__theme__attr_foreground" comment="Theme attribute label">Priekšplāna krāsa</string>
<string name="settings__theme__attr_foregroundAlt" comment="Theme attribute label">Fonta izmēra reizinātājs (statenisks novietojums)</string>
<string name="settings__theme__attr_foregroundPressed" comment="Theme attribute label">Priekšplāna krāsa (piespiests)</string>
<string name="settings__theme__attr_showBorder" comment="Theme attribute label">Rādīt malu</string>
<string name="settings__theme__attr_colorPrimary" comment="Theme attribute label">Pamatkrāsa</string>
<string name="settings__theme__attr_colorPrimaryDark" comment="Theme attribute label">Pamatkrāsa (tumšs)</string>
<string name="settings__theme__attr_colorAccent" comment="Theme attribute label">Uzsvara krāsa</string>
<string name="settings__theme__attr_navBarColor" comment="Theme attribute label">Pārlūkošanas joslas krāsa</string>
<string name="settings__theme__attr_navBarLight" comment="Theme attribute label">Pārlūkošanas joslas tumšs priekšplāns</string>
<string name="settings__theme__attr_semiTransparentColor" comment="Theme attribute label">Puscaurspīdīga krāsa</string>
<string name="settings__theme__attr_textColor" comment="Theme attribute label">Teksta krāsa</string>
<string name="settings__theme__attr_custom" comment="Theme attribute label (%s is custom attribute name)">Pielāgota pazīme (%s)</string>
<string name="settings__keyboard__title" comment="Title of Keyboard preferences fragment">Tastatūras uzstādījumi</string>
<string name="pref__keyboard__group_keys__label" comment="Preference group title">Taustiņi</string>
<string name="pref__keyboard__number_row__label" comment="Preference title">Ciparu rinda</string>
<string name="pref__keyboard__number_row__summary" comment="Preference summary">Rādīt ciparu rindu virs rakstzīmju izkārtojuma</string>
<string name="pref__keyboard__hinted_number_row_mode__label" comment="Preference title">Slēpta ciparu rinda</string>
<string name="pref__keyboard__hinted_symbols_mode__label" comment="Preference title">Slēptas rakstzīmes</string>
<string name="pref__keyboard__hint_mode__disabled" comment="Preference value">Atspējots</string>
<string name="pref__keyboard__hint_mode__enabled_hint_priority" comment="Preference value">Iespējots (slēpšanai ir priekšroka)</string>
<string name="pref__keyboard__hint_mode__enabled_accent_priority" comment="Preference value">Iespējots (uzsvaram ir priekšroka)</string>
<string name="pref__keyboard__hint_mode__enabled_smart_priority" comment="Preference value">Iespējots (viedā priekšrokas noteikšana)</string>
<string name="pref__keyboard__utility_key_enabled__label" comment="Preference title">Rādīt rīkpogu</string>
<string name="pref__keyboard__utility_key_enabled__summary" comment="Preference summary">Tiek rādīta pielāgojama rīkpoga blakus atstarpes taustiņam</string>
<string name="pref__keyboard__utility_key_action__label" comment="Preference title">Rīktaustiņa darbība</string>
<string name="pref__keyboard__utility_key_action__switch_to_emojis" comment="Preference value">Pārslēgties uz sajūtu zīmēm</string>
<string name="pref__keyboard__utility_key_action__switch_language" comment="Preference value">Mainīt valodu</string>
<string name="pref__keyboard__utility_key_action__switch_keyboard_app" comment="Preference value">Mainīt tastatūras lietotni</string>
<string name="pref__keyboard__utility_key_action__dynamic_switch_language_emojis" comment="Preference value">Mainīgs: pārslēgties uz sajūtu zīmēm (emoji) / pārslēgt valodu</string>
<string name="pref__keyboard__font_size_multiplier_portrait__label" comment="Preference title">Fonta izmēra reizinātājs (statenisks novietojums)</string>
<string name="pref__keyboard__font_size_multiplier_landscape__label" comment="Preference title">Fonta izmēra reizinātājs (līmenisks novietojums)</string>
<string name="pref__keyboard__group_layout__label" comment="Preference group title">Izkārtojums</string>
<string name="pref__keyboard__one_handed_mode__label" comment="Preference value">Vienrocīga ievade</string>
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Izslēgts</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Ievade ar labo roku</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Ievade ar kreiso roku</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Līmeniska pilnekrāna ievade</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Nekad nerādīt</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Vienmēr rādīt</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Rādīt pielāgojoties</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Tastatūras augstums</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Ļoti īss</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Īss</string>
<string name="pref__keyboard__height_factor__mid_short" comment="Preference value">Vidēji īss</string>
<string name="pref__keyboard__height_factor__normal" comment="Preference value">Vispārpieņemts</string>
<string name="pref__keyboard__height_factor__mid_tall" comment="Preference value">Vidēji augsts</string>
<string name="pref__keyboard__height_factor__tall" comment="Preference value">Augsts</string>
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Ļoti augsts</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Pielāgots</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Pielāgota tastatūras augstuma vērtība</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Apakšējā nobīde (statenisks novietojums)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Apakšējā nobīde (līmenisks novietojums)</string>
<string name="pref__keyboard__key_spacing_vertical__label" comment="Preference title">Taustiņu atstatums (statenisks)</string>
<string name="pref__keyboard__key_spacing_horizontal__label" comment="Preference title">Taustiņu atstatums (līmenisks)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Taustiņa piespiešana</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Taustiņa piespiešanas skaņa</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Taustiņa piespiešanas skaņas skaļums</string>
<string name="pref__keyboard__vibration_enabled__label" comment="Preference title">Trīcēt, kad tiek nospiesta poga</string>
<string name="pref__keyboard__vibration_strength__label" comment="Preference title">Trīcēšanas stiprums, kad tiek nospiesta poga</string>
<string name="pref__keyboard__popup_visible__label" comment="Preference title">Uznirstošā lodziņa redzamība</string>
<string name="pref__keyboard__popup_visible__summary" comment="Preference summary">Rādīt uznirstošo lodziņu, kad tiek nospiests taustiņš</string>
<string name="pref__keyboard__long_press_delay__label" comment="Preference title">Ilgas taustiņa piespiešanas aizture</string>
<string name="settings__typing__title" comment="Title of Typing experience fragment">Rakstīšanas pieredze</string>
<string name="pref__smartbar__enabled__label" comment="Preference title">Iespējot viedjoslu</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Tiks rādīta tastatūras augšpusē</string>
<string name="pref__suggestion__title" comment="Preference group title">Ieteikumi</string>
<string name="pref__correction__title" comment="Preference group title">Labojumi</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Sākumburta pārveidošana par lielo</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Pārveidot vārdu sākumburtus par lielajiem, balstoties uz pašreizējo ievades kopumu</string>
<string name="pref__correction__remember_caps_lock_state__label" comment="Preference title">Atcerēties burtslēga stāvokli</string>
<string name="pref__correction__remember_caps_lock_state__summary" comment="Preference summary">Burtslēgs paliks ieslēgts pēc pārvietošanās uz citu ievades lauku</string>
<string name="pref__correction__double_space_period__label" comment="Preference title">Divkāršas atstarpes punkts</string>
<string name="pref__correction__double_space_period__summary" comment="Preference summary">Divreiz piesitot atstarpes taustiņam, tiks ievietots punkts un atstarpe</string>
<string name="settings__gestures__title" comment="Title of Gestures fragment">Kustību un slīdošā rakstīšana</string>
<string name="pref__glide__title" comment="Preference group title">Slīdošā rakstīšana</string>
<string name="pref__glide__enabled__label" comment="Preference title">[NYI] Iespējot slīdošo rakstīšanu</string>
<string name="pref__glide__enabled__summary" comment="Preference summary">Rakstīt vārdu, slidinot pirkstu pa burtiem, kas to veido</string>
<string name="pref__glide__show_trail__label" comment="Preference title">[NYI] Rādīt slīdēšanas pēdas</string>
<string name="pref__glide__show_trail__summary" comment="Preference summary">Izzudīs pēc katra vārda</string>
<string name="pref__gestures__general_title" comment="Preference group title">Vispārējas kustības</string>
<string name="pref__gestures__space_bar_title" comment="Preference group title">Atstarpes taustiņa kustības</string>
<string name="pref__gestures__other_title" comment="Preference group title">Citas kustības / Kustību sliekšņi</string>
<string name="pref__gestures__swipe_action__no_action" comment="Preference value for swipe action">Nav darbības</string>
<string name="pref__gestures__swipe_action__delete_characters_precisely" comment="Preference value for swipe action">Dzēst rakstzīmes rūpīgi</string>
<string name="pref__gestures__swipe_action__delete_word" comment="Preference value for swipe action">Dzēst pašreizējo vārdu</string>
<string name="pref__gestures__swipe_action__delete_words_precisely" comment="Preference value for swipe action">Dzēst vārdus rūpīgi</string>
<string name="pref__gestures__swipe_action__hide_keyboard" comment="Preference value for swipe action">Paslēpt tastatūru</string>
<string name="pref__gestures__swipe_action__insert_space" comment="Preference value for swipe action">Ievietot atstarpi</string>
<string name="pref__gestures__swipe_action__move_cursor_up" comment="Preference value for swipe action">Pārvietot rādītāju uz augšu</string>
<string name="pref__gestures__swipe_action__move_cursor_down" comment="Preference value for swipe action">Pārvietot rādītāju uz leju</string>
<string name="pref__gestures__swipe_action__move_cursor_left" comment="Preference value for swipe action">Pārvietot rādītāju pa kreisi</string>
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Pārvietot rādītāju pa labi</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Pārvietot rādītāju uz līnijas sākumu</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Pārvietot rādītāju uz līnijas beigām</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_page" comment="Preference value for swipe action">Pārvietot rādītāju uz lapas sākumu</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_page" comment="Preference value for swipe action">Pārvietot rādītāju uz lapas beigām</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Pārslēgšanās taustiņš</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Rādīt ievades veida atlasītāju</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Pārslēgties uz iepriekšējo tastatūru</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Pārslēgties uz iepriekšējo apakšveidu</string>
<string name="pref__gestures__swipe_action__switch_to_next_subtype" comment="Preference value for swipe action">Pārslēgties uz nākamo apakšveidu</string>
<string name="pref__gestures__swipe_up__label" comment="Preference title">Pavilkt uz augšu</string>
<string name="pref__gestures__swipe_down__label" comment="Preference title">Pavilkt uz leju</string>
<string name="pref__gestures__swipe_left__label" comment="Preference title">Pavilkt pa kreisi</string>
<string name="pref__gestures__swipe_right__label" comment="Preference title">Pavilkt pa labi</string>
<string name="pref__gestures__space_bar_swipe_up__label" comment="Preference title">Pavilkt no atstarpes taustiņa uz augšu</string>
<string name="pref__gestures__space_bar_swipe_left__label" comment="Preference title">Pavilkt no atstarpes taustiņa pa kreisi</string>
<string name="pref__gestures__space_bar_swipe_right__label" comment="Preference title">Pavilkt no atstarpes taustiņa pa labi</string>
<string name="pref__gestures__space_bar_long_press__label" comment="Preference title">Atstarpes taustiņa ilga piespiešana</string>
<string name="pref__gestures__delete_key_swipe_left__label" comment="Preference title">Pavilkt no dzēšanas taustiņa pa kreisi</string>
<string name="pref__gestures__swipe_velocity_threshold__label" comment="Preference title">Pavilkšanas ātruma slieksnis</string>
<string name="pref__gestures__swipe_velocity_threshold__very_slow" comment="Preference value for swipe velocity threshold">Ļoti lēns</string>
<string name="pref__gestures__swipe_velocity_threshold__slow" comment="Preference value for swipe velocity threshold">Lēns</string>
<string name="pref__gestures__swipe_velocity_threshold__normal" comment="Preference value for swipe velocity threshold">Vispārpieņemts</string>
<string name="pref__gestures__swipe_velocity_threshold__fast" comment="Preference value for swipe velocity threshold">Ātrs</string>
<string name="pref__gestures__swipe_velocity_threshold__very_fast" comment="Preference value for swipe velocity threshold">Ļoti ātrs</string>
<string name="pref__gestures__swipe_distance_threshold__label" comment="Preference title">Pavilkšanas attāluma slieksnis</string>
<string name="pref__gestures__swipe_distance_threshold__very_short" comment="Preference value for swipe distance threshold">Ļoti īss</string>
<string name="pref__gestures__swipe_distance_threshold__short" comment="Preference value for swipe distance threshold">Īss</string>
<string name="pref__gestures__swipe_distance_threshold__normal" comment="Preference value for swipe distance threshold">Vispārpieņemts</string>
<string name="pref__gestures__swipe_distance_threshold__long" comment="Preference value for swipe distance threshold">Garš</string>
<string name="pref__gestures__swipe_distance_threshold__very_long" comment="Preference value for swipe distance threshold">Ļoti garš</string>
<string name="settings__advanced__title" comment="Title of Advanced settings activity">Papildus</string>
<string name="pref__advanced__settings_theme__label" comment="Label of Settings theme preference in Advanced">Iestatījumu izskats</string>
<string name="pref__advanced__settings_theme__light" comment="Possible value of Settings theme preference in Advanced">Gaišs</string>
<string name="pref__advanced__settings_theme__dark" comment="Possible value of Settings theme preference in Advanced">Tumšs</string>
<string name="pref__advanced__show_app_icon__label" comment="Label of Show app icon preference in Advanced">Rādīt lietotnes ikonu palaidējā</string>
<string name="pref__advanced__force_private_mode__label" comment="Label of Force private mode preference in Advanced">Piespiest izmantot slepeno stāvokli</string>
<string name="pref__advanced__force_private_mode__summary" comment="Summary of Force private mode preference in Advanced">Tiks atspējotas visas iespējas, kam ir īslaicīgi jāapstrādā ievades dati</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">Par</string>
<string name="about__app_icon_content_description" comment="Content description of app icon in About">FlorisBoard lietotnes ikona</string>
<string name="about__view_licenses" comment="Label of View licenses button in About">Atvērtā pirmavota licences</string>
<string name="about__view_privacy_policy" comment="Label of View privacy policy button in About">Privātuma politika</string>
<string name="about__view_source_code" comment="Label of View source code button in About">Avota kods</string>
<string name="about__license__title" comment="Title of Open-source licenses dialog">Atvērtā pirmavota licences</string>
<!-- Assets strings -->
<plurals name="assets__file__authors">
<item quantity="zero">Autors</item>
<item quantity="one">Autors</item>
<item quantity="other">Autori</item>
</plurals>
<string name="assets__file__name">Nosaukums</string>
<string name="assets__file__source">Avots</string>
<string name="assets__action__add">Pievienot</string>
<string name="assets__action__cancel">Atcelt</string>
<string name="assets__action__cancel_confirm_title">Apstiprināt atcelšanu</string>
<string name="assets__action__cancel_confirm_message">Vai tiešām atmest nesaglabātās izmaiņas? Šī darbība pēc izpildīšanas vairs nevar tikt atsaukta.</string>
<string name="assets__action__delete">Dzēst</string>
<string name="assets__action__delete_confirm_title">Apstiprināt dzēšanu</string>
<string name="assets__action__delete_confirm_message">Vai tiešām dzēst \"%s\"? Šī darbība pēc izpildīšanas vairs nevar tikt atsaukta.</string>
<string name="assets__action__edit">Labot</string>
<string name="assets__action__export">Izdot</string>
<string name="assets__action__import">Iekļaut</string>
<string name="assets__action__no"></string>
<string name="assets__action__save">Saglabāt</string>
<string name="assets__action__yes"></string>
<string name="assets__error__invalid">Nederīgs</string>
<!-- Setup UI strings -->
<string name="setup__title" comment="Title of Setup">Iestatīšana</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)">Iepriekšējais</string>
<string name="setup__cancel_button" comment="Label of Cancel button in Setup">Atcelt</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)">Nākamais</string>
<string name="setup__finish_button" comment="Label of Finish button in Setup">Pabeigt</string>
<string name="setup__ok_button" comment="Label of OK button in Setup">Labi</string>
<string name="setup__welcome__title" comment="Title of Welcome fragment in Setup">Sveicināti!</string>
<string name="setup__welcome__intro" comment="Paragraph in Welcome fragment in Setup">Paldies par FlorisBoard izmēģnāšanu! Pirms to sākt izmantot, ir jāpaveic ierastais - jāiespējo sistēmas iestatījumos, jāuzstāda vēlamā valoda/izkārtojums utt… Satraukumam nav pamata - uzstādīšanas vednis vadīs cauri tam visam.</string>
<string name="setup__welcome__privacy" comment="Paragraph in Welcome fragment in Setup">FlorisBoard pilnībā ciena Tavu privātumu un nevāc nekādus lietotāja datus. Vairāk skatīt šeit:</string>
<string name="setup__welcome__trust" comment="Paragraph in Welcome fragment in Setup">FlorisBoard avota kods ir pieejams ikvienam, tāpēc katram ir iespēja pārskatīt, ko FlorisBoard dara fonā. Apskatīt zemāk esošo glabātuves saiti.</string>
<string name="setup__welcome__contribute" comment="Paragraph in Welcome fragment in Setup">Pēdējā lieta pirms uzstādīšanas sākšanas - ja tiek piedzīvotas kādas nepilnības/avārijas/sarežģījumi FlorisBoard vai ir kāds iespēju pieprasījums - jādodas uz GitHub glabātavu, kuras saite ir zemāk, un jāiesniedz pieteikums. Tas palīdz uzlabot visu lietotāju pieredzi.</string>
<string name="setup__welcome__outro" comment="Paragraph in Welcome fragment in Setup">Lai uzsāktu iestatīšanu, spied <i>NEXT</i>.</string>
<string name="setup__enable_ime__title" comment="Title of Enable IME fragment in Setup">Iespējot FlorisBoard</string>
<string name="setup__enable_ime__text_before_enabled" comment="Description of state in Enable IME fragment before user enabled">Android ir nepieciešams katru pielāgoto tastatūru pirms izmantošanas pašrocīgi iespējot. Spied pogu zemāk, lai dotos uz <i>Valodas un ievade</i> iestatījumiem, un tad jāpārliecinās, ka \'<i>FlorisBoard</i>\' ir atzīmēts.</string>
<string name="setup__enable_ime__text_after_enabled" comment="Description of state in Enable IME fragment after user enabled">FlorisBoard ir veiksmīgi iespējota. Klikšķināt <i>NEXT</i>, lai turpinātu!</string>
<string name="setup__enable_ime__text_button_language_and_input" comment="Label of language and input button in Enable IME fragment">Atvērt valodas un ievades iestatījumus</string>
<string name="setup__make_default__title" comment="Title of Make IME default fragment in Setup">Padarīt FlorisBoard par noklusējuma</string>
<string name="setup__make_default__text_before_switch" comment="Description of state in Make IME default fragment before user switched">FlorisBoard tagad ir iespējots sistēmā. Lai to izmantotu, jāpārslēdzas uz FlorisBoard, izvēloties to ievades izvēles logā.</string>
<string name="setup__make_default__text_after_switch" comment="Description of state in Make IME default fragment after user switched">Noklusējuma tastatūra ir veiksmīgi nomainīta uz FlorisBoard!</string>
<string name="setup__make_default__text_switch_button" comment="Label of switch button in Make IME default fragment">Pārslēgt tastatūru</string>
<string name="setup__finish__title" comment="Title of Setup finished fragment in Setup">Iestatīšana pabeigta!</string>
<!-- Crash Dialog strings -->
<string name="crash_dialog__title" comment="Title of crash dialog">FlorisBoard kļūdu ziņojums</string>
<string name="crash_dialog__description" comment="Description of crash dialog">Atvainojamies par neērtībām, bet FlorisBoard ir avarējis neparedzētas kļūdas dēļ.\n\nJa ir vēlme ziņot par šo kļūdu, jāspiež uz \"Ievietot starpliktuvē\", tad uz \"Atvērt nepilnību pieteikumu\" pogas. Jāaizpilda nepilnību pieteikums un jāielīmē starpliktuvē esošie žurnāla ieraksti. Tas palīdz padarīt FlorisBoard labāku un noturīgāku ikvienam. Paldies!</string>
<string name="crash_dialog__copy_to_clipboard" comment="Label of Copy to clipboard button in crash dialog">Ielikt starpliktuvē</string>
<string name="crash_dialog__open_bug_report_form" comment="Label of Open bug report button in crash dialog">Atvērt kļūdu ziņojuma veidni (github.com)</string>
<string name="crash_dialog__close" comment="Label of Close button in crash dialog">Aizvērt</string>
<string name="crash_notification_channel__title" comment="Title of crash notification channel">FlorisBoard kļūdu ziņojumi</string>
<string name="crash_once_notification__title" comment="Title of the notification for a single crash">FlorisBoard pārstāja darboties…</string>
<string name="crash_once_notification__body" comment="Body of the notification for a single crash">Pieskarties, lai apskatītu kļudu izklāstu</string>
<string name="crash_multiple_notification__title" comment="Title of the notification for consecutive crashes">Izskatās, ka FlorisBoard atkārtoti pārstāj darboties…</string>
<string name="crash_multiple_notification__body" comment="Body of the notification for consecutive crashes">Notiek atkāpšanāš uz iepriekšējo tastatūru, lai apturētu nebeidzamu avārijas cilpu. Piesist, lai apskatītu kļūdu izklāstu</string>
</resources>

View File

@@ -122,8 +122,8 @@
<string name="settings__theme__group_privateMode" comment="Theme group label">Privémodus</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Slimme Balk</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Knop voor Slimme Balk</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Bewerklayout uitpakken</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Actieknop uitpakken</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Landschapsmodus volledig scherm indeling</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Landschapsmodus volledig scherm functieknop</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Aangepaste groep (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Achtergrondkleur</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Achtergrondkleur (wanneer actief)</string>
@@ -174,6 +174,8 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Extra Hoog</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Aangepast</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Aangepaste hoogte van toetsenbord</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Bodem offset (portet)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Bodem offset (landschap)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Toetsdruk</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Geluid bij toetsdruk</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Geluidsvolume bij toetsdruk</string>
@@ -186,12 +188,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Schakel Slimme Balk in</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Word getoond boven het toetsenbord</string>
<string name="pref__suggestion__title" comment="Preference group title">Suggesties</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Toon suggesties terwijl u typt</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Wordt getoond in de Slimme Balk</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Suggesties voor de klembordinhoud</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Klembordinhoud suggereren om eerder gekopieerde inhoud te plakken</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Volgende-woordsuggesties</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Gebruik vorige woorden voor het genereren van suggesties</string>
<string name="pref__correction__title" comment="Preference group title">Verbeteringen</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Auto-kapitalisatie</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Woorden kapitaliseren op basis van de huidige invoercontext</string>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Wstrzymaj</string>
<string name="app_name">FlorisBoard</string>
<string name="key__phone_pause" comment="Label for the Pause key in the telephone keyboard layout">Pauza</string>
<string name="key__phone_wait" comment="Label for the Wait key in the telephone keyboard layout">Czekaj</string>
<string name="key_popup__threedots_alt" comment="Content description for the three-dots icon in a key popup">Ikona trzech kropek. Jeśli jest widoczna, to oznacza, że po dłuższym naciśnięciu można użyć więcej liter.</string>
<!-- One-handed strings -->
@@ -13,78 +14,78 @@
<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">Emotikony</string>
<string name="media__tab__emojis" comment="Tab description for emojis in the media UI">Emoji</string>
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Emotikony</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">Uśmieszki &amp; Emocje</string>
<string name="emoji__category__people_body" comment="Emoji category name">Osoby i opcje</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Zwierzęta &amp; Natura</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Żywność &amp; Napoje</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Podróże &amp; Miejsca</string>
<string name="emoji__category__smileys_emotion" comment="Emoji category name">Buźki i emocje</string>
<string name="emoji__category__people_body" comment="Emoji category name">Osoby i części ciała</string>
<string name="emoji__category__animals_nature" comment="Emoji category name">Zwierzęta i natura</string>
<string name="emoji__category__food_drink" comment="Emoji category name">Jedzenie i napoje</string>
<string name="emoji__category__travel_places" comment="Emoji category name">Podróże i miejsca</string>
<string name="emoji__category__activities" comment="Emoji category name">Aktywności</string>
<string name="emoji__category__objects" comment="Emoji category name">Obiekty</string>
<string name="emoji__category__objects" comment="Emoji category name">Przedmioty</string>
<string name="emoji__category__symbols" comment="Emoji category name">Symbole</string>
<string name="emoji__category__flags" comment="Emoji category name">Flagi</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Przełącznik szybkiej akcji. Jeśli zostanie naciśnięty, przełącza między sugestiami słów a przyciskami szybkiej akcji.</string>
<string name="smartbar__quick_action_toggle__alt" comment="Content description for the quick action toggle button in Smartbar">Przełącznik szybkich skrótów. Po naciśnięciu przełącza między podpowiedziami słów a przyciskami szybkich skrótów.</string>
<string name="smartbar__quick_action__exit_editing" comment="Content-description for the exit editing layout button in Smartbar">Wyjście z panelu edycji tekstu.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Przełącza stan trybu jednoręcznego.</string>
<string name="smartbar__quick_action__one_handed_mode" comment="Content-description for the one-handed quick action in Smartbar">Przełącznik trybu jednoręcznego.</string>
<string name="smartbar__quick_action__open_settings" comment="Content-description for the settings quick action in Smartbar">Otwórz ustawienia.</string>
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Przejdź do panelu edycji tekstu.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Przełącz na widok wprowadzania multimediów.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Przycisk Cofnij, aby cofnąć ostatnią akcję</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Przycisk Cofnij, aby cofnąć ostatnią akcję</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Cofnij ostatnią akcję</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Ponów ostatnio cofniętą akcję</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">Jeśli jest widoczny, wskazuje, że tryb prywatny jest aktywny. Po kliknięciu pokazuje informacje o trybie prywatnym.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Ustawienia</string>
<string name="settings__menu" comment="Hint of top-right three-dot icon in Settings">Więcej opcji</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Pomoc &amp; opinie</string>
<string name="settings__menu_help" comment="Three-dot menu entry for Help and Feedback web link">Pomoc i opinie</string>
<string name="settings__help" comment="General label for help buttons in Settings">Pomoc</string>
<string name="settings__navigation__home" comment="Long-press hint of bottom nav item Home in Settings">Strona główna</string>
<string name="settings__navigation__keyboard" comment="Long-press hint of bottom nav item Keyboard in Settings">Klawiatura</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Pisze</string>
<string name="settings__navigation__typing" comment="Long-press hint of bottom nav item Typing in Settings">Wpisywanie</string>
<string name="settings__navigation__theme" comment="Long-press hint of bottom nav item Theme in Settings">Motyw</string>
<string name="settings__navigation__gestures" comment="Long-press hint of bottom nav item Gestures in Settings">Gesty</string>
<string name="settings__default" comment="General string which is used when a preference has the default value set">Domyślne</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">Domyślnie systemu</string>
<string name="settings__system_default" comment="General string which is used when a preference has the system default value set">Domyślne systemowe</string>
<string name="settings__home__title" comment="Title of the Home fragment">Witaj w %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 nie jest włączony w systemie i dlatego nie będzie dostępny jako metoda wprowadzania danych w oknie wyboru. Kliknij tutaj, aby rozwiązać ten problem.</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 nie jest wybrany jako domyślna metoda wprowadzania danych. Kliknij tutaj, aby rozwiązać ten problem.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Dziękujemy za wypróbowanie FlorisBoard! Ten projekt jest wciąż w fazie alfa i dlatego brakuje w nim pewnych funkcji. Jeśli znajdziesz jakieś błędy lub chcesz coś zasugerować, sprawdź repo na GitHubie i zgłoś problem. To pomoże ulepszyć FlorisBoard. Dziękujemy!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Języki &amp; Układy klawiatury</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Wygląda na to, że nie skonfigurowałeś żadnych podtypów. Jako rozwiązanie awaryjne zostanie użyty podtyp English/QWERTY!</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Dziękujemy za wypróbowanie FlorisBoard! Ten projekt jest wciąż w fazie alfa i dlatego brakuje w nim pewnych funkcji. Jeśli znajdziesz jakieś błędy lub chcesz coś zaproponować, sprawdź repozytorium na GitHubie i zgłoś problem. To pomoże ulepszyć FlorisBoard. Dziękujemy!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Języki i układy klawiatury</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Wygląda na to, że nie skonfigurowałeś żadnego układu. Jako alternatywa zostanie użyty układ Angielski/QWERTY!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Dodaj</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Dodaj podtyp</string>
<string name="settings__localization__subtype_add_title" comment="Title of subtype dialog when adding a new subtype">Dodaj układ</string>
<string name="settings__localization__subtype_apply" comment="Subtype dialog apply button">Zastosuj</string>
<string name="settings__localization__subtype_cancel" comment="Subtype dialog cancel button">Anuluj</string>
<string name="settings__localization__subtype_delete" comment="Subtype dialog delete button">Usuń</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Edytuj podtyp</string>
<string name="settings__localization__subtype_edit_title" comment="Title of subtype dialog when editing an existing subtype">Edytuj układ</string>
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">Ustawienia regionalne</string>
<string name="settings__localization__subtype_layout" comment="Label for keyboard layout dropdown in subtype dialog">Układ klawiatury</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Ten podtyp już istnieje!</string>
<string name="settings__localization__subtype_error_already_exists" comment="Error message shown in subtype dialog when a subtype to add already exists">Ten układ już istnieje!</string>
<string name="settings__theme__title" comment="Title of the Theme fragment">Motyw klawiatury</string>
<string name="settings__theme__undefined" comment="General string for an undefined preference value">Niezdefiniowany</string>
<string name="pref__theme__mode__label" comment="Label of the theme mode preference">Tryb motywu</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Zawsze Dzień</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Zawsze Noc</string>
<string name="pref__theme__mode__always_day" comment="Preference value for theme mode">Zawsze dzienny</string>
<string name="pref__theme__mode__always_night" comment="Preference value for theme mode">Zawsze nocny</string>
<string name="pref__theme__mode__follow_system" comment="Preference value for theme mode">Zgodnie z systemem</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Zgodnie z czasem</string>
<string name="pref__theme__mode__follow_time" comment="Preference value for theme mode">Zgodnie z porą dnia</string>
<string name="pref__theme__sunrise_time__label" comment="Label of the sunrise time preference">Czas wschodu słońca</string>
<string name="pref__theme__sunset_time__label" comment="Label of the sunset time preference">Czas zachodu słońca</string>
<string name="pref__theme__day" comment="Label of the day group (day means light theme)">Tryb dzienny</string>
<string name="pref__theme__night" comment="Label of the night group (night means dark theme)">Tryb nocny</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Wybrany Motyw</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Dostosuj kolory do aplikacji</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Kolory motywu dostosowują się do tych w bieżącej aplikacji, jeśli aplikacja docelowa to obsługuje.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">Zasoby aplikacji FlorisBoard</string>
<string name="pref__theme__any_theme__label" comment="Label of the theme selector preference">Wybrany motyw</string>
<string name="pref__theme__any_theme_adapt_to_app__label" comment="Label of the theme adapt to app preference">Dopasuj kolory do aplikacji</string>
<string name="pref__theme__any_theme_adapt_to_app__summary" comment="Summary of the theme adapt to app preference">Kolory motywu dostosowują się do tych w bieżącej aplikacji, jeśli dana aplikacja to obsługuje.</string>
<string name="pref__theme__source_assets" comment="Label for the theme source field">Wbudowane w aplikację FlorisBoard</string>
<string name="pref__theme__source_internal" comment="Label for the theme source field">Pamięć wewnętrzna</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Dostawca zewnętrzny</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Menedżer motywu (dzień)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Menedżer motywu (noc)</string>
<string name="pref__theme__source_external" comment="Label for the theme source field">Zewnętrzny dostawca</string>
<string name="settings__theme_manager__title_day" comment="Title of the theme manager activity for day theme">Menedżer motywu (tryb dzienny)</string>
<string name="settings__theme_manager__title_night" comment="Title of the theme manager activity for night theme">Menedżer motywu (tryb nocny)</string>
<string name="settings__theme_manager__create_empty" comment="Label of the Create empty FAB action">Utwórz pusty motyw</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Tworzenie na podstawie wybranego motywu</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Niestandardowe (w oparciu o %s)</string>
<string name="settings__theme_manager__create_from_selected" comment="Label of the Create from selected FAB action">Utwórz na podstawie wybranego motywu</string>
<string name="settings__theme_manager__theme_custom_title" comment="Title template for a custom theme">Niestandardowy (w oparciu o %s)</string>
<string name="settings__theme_manager__theme_new_title" comment="Title template for a new theme">Nowy motyw</string>
<string name="settings__theme_editor__title" comment="Title of the edit theme activity">Edytuj motyw</string>
<string name="settings__theme_editor__name_label" comment="Label of name input">Nazwa</string>
@@ -99,13 +100,13 @@
<string name="settings__theme_editor__value_type_solid_color" comment="Theme value type">Jednolity kolor</string>
<string name="settings__theme_editor__value_type_lin_grad" comment="Theme value type">Gradient liniowy</string>
<string name="settings__theme_editor__value_type_rad_grad" comment="Theme value type">Gradient radialny</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Przełącz</string>
<string name="settings__theme_editor__value_type_on_off" comment="Theme value type">Przełącznik</string>
<string name="settings__theme_editor__value_type_on_off_state" comment="Theme value type sub-field">Stan</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Inne</string>
<string name="settings__theme_editor__value_type_other" comment="Theme value type">Inny</string>
<string name="settings__theme_editor__value_type_other_text" comment="Theme value type sub-field">Tekst</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Podgląd wartości tematu</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Wprowadź nazwę szablonu.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Proszę wprowadzić nazwę grupy, która zawiera tylko litery (a-z i/lub A-Z), dwukropki (:) dla podgrup lub dodatkowo cyfry (0-9), tyldę (~) i podkreślenia (_) dla etykiety klucza.</string>
<string name="settings__theme_editor__value_preview_content_description" comment="Theme value preview content description">Podgląd wartości motywu</string>
<string name="settings__theme_editor__error_theme_label_empty" comment="Error text for an empty theme label">Wprowadź nazwę motywu.</string>
<string name="settings__theme_editor__error_group_name" comment="Error text for an invalid group name">Proszę wprowadzić nazwę grupy, która zawiera tylko litery (a-z i/lub A-Z), dwukropki (:) dla podgrup lub dodatkowo cyfry (0-9), tyldę (~) i podkreślenia (_) dla etykiety klawisza.</string>
<string name="settings__theme_editor__error_group_name_empty" comment="Error text for an empty group name">Wpisz nazwę grupy.</string>
<string name="settings__theme_editor__error_group_name_already_exists" comment="Error text for a duplicate group name">Ta nazwa grupy już istnieje w tym motywie. Proszę wybrać inną.</string>
<string name="settings__theme_editor__error_attr_name" comment="Error text for an invalid attribute name">Proszę wpisać nazwę atrybutu, która zawiera tylko litery a-z i/lub A-Z.</string>
@@ -121,8 +122,8 @@
<string name="settings__theme__group_privateMode" comment="Theme group label">Tryb prywatny</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">SmartBar</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Przycisk Smartbar</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Wyciągnij, zmień układ</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Przycisk wyciągnięcia akcji</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Układ pełnoekranowy w trybie poziomym</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Przycisk akcji w trybie pełnoekranowym poziomym</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Grupa niestandardowa (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Kolor tła</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Kolor tła (aktywny)</string>
@@ -163,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Wyłącz</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Tryb praworęczny</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Tryb leworęczny</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Wprowadzanie pełnoekranowe w poziomie</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Nigdy nie pokazuj</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Zawsze pokazuj</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Pokazuj dynamicznie</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Wysokość klawiatury</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Bardzo krótki</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Krótki</string>
@@ -173,6 +178,8 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Bardzo wysoki</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Niestandardowe</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Niestandardowa wartość wysokości klawiatury</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Dolny odstęp (układ pionowy)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Dolny odstęp (układ poziomy)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Naciśnięcie klawisza</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Dźwięk po naciśnięciu klawisza</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Głośność dźwięku po naciśnięciu klawisza</string>
@@ -185,12 +192,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Włącz inteligentny pasek</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Pojawi się na górze klawiatury</string>
<string name="pref__suggestion__title" comment="Preference group title">Sugestie</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Wyświetlanie sugestii podczas pisania</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Pojawi się w Smartbarze</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Sugestie dotyczące zawartości schowka</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Sugeruj zawartość schowka do wklejenia, jeśli została wcześniej skopiowana</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Propozycje następnych słów</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Używaj poprzedniego wyrazu, aby polepszyć sugestię</string>
<string name="pref__correction__title" comment="Preference group title">Korekty</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Automatyczne wstawianie wielkich liter</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Pisz wielkie litery w słowach na podstawie bieżącego kontekstu</string>

View File

@@ -35,7 +35,7 @@
<string name="smartbar__quick_action__switch_to_editing_context" comment="Content-description for the editing quick action in Smartbar">Mudar para painel de edição de texto.</string>
<string name="smartbar__quick_action__switch_to_media_context" comment="Content-description for the media quick action in Smartbar">Mudar para visualização de entrada de mídia.</string>
<string name="smartbar__quick_action__undo" comment="Content-description for the undo quick action in Smartbar">Botão de desfazer para reverter a última ação</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Botão de refazer para reverter a ultima ação desfeita</string>
<string name="smartbar__quick_action__redo" comment="Content-description for the redo quick action in Smartbar">Botão de refazer para reverter a última ação desfeita</string>
<string name="smartbar__quick_action__private_mode" comment="Content-description for the private mode button in Smartbar">Se visível, indica que o modo privado está ativo. Quando clicado, mostra informações sobre o modo privado.</string>
<!-- Settings UI strings -->
<string name="settings__title" comment="Title of Settings">Configurações</string>
@@ -122,8 +122,8 @@
<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_smartbarButton" comment="Theme group label">Botão da barra inteligente</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Extrair layout de edição</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Extrair botão de ação</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Layout do modo paisagem em tela cheia</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Botão de ação do modo paisagem em tela cheia</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">Cor do plano de fundo</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Cor do plano de fundo (ativa)</string>
@@ -164,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Desligado</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Modo destro</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Modo canhoto</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Entrada do modo paisagem em tela cheia</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Nunca mostrar</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Sempre mostrar</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Mostrar dinamicamente</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Altura do teclado</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Muito baixo</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Baixo</string>
@@ -176,6 +180,8 @@
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Valor personalizado da altura do teclado</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Deslocamento inferior (retrato)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Deslocamento inferior (paisagem)</string>
<string name="pref__keyboard__key_spacing_vertical__label" comment="Preference title">Espaçamento das teclas (vertical)</string>
<string name="pref__keyboard__key_spacing_horizontal__label" comment="Preference title">Espaçamento das teclas (horizontal)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Pressionar tecla</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Som ao pressionar uma tecla</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Volume do som ao pressionar uma tecla</string>
@@ -188,12 +194,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Ativar barra inteligente</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Mostrar na parte superior do teclado</string>
<string name="pref__suggestion__title" comment="Preference group title">Sugestões</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Mostrar sugestões enquanto você digita</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Mostrar na barra inteligente</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Sugestões de conteúdo da área de transferência</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Sugerir conteúdo da área de transferência para colar se foi copiado anteriormente</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Sugestões de próxima palavra</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Usar palavras anteriores para gerar sugestões</string>
<string name="pref__correction__title" comment="Preference group title">Correções</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Capitalização automática</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Deixar palavras em maiúsculo com base no contexto de entrada atual</string>
@@ -222,6 +222,8 @@
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Mover cursor para direita</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Mover cursor para o início da linha</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Mover cursor para o fim da linha</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_page" comment="Preference value for swipe action">Mover cursor para o início da página</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_page" comment="Preference value for swipe action">Mover cursor para o fim da página</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">Mostrar alternador de teclado</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Mudar para teclado anterior</string>

View File

@@ -122,8 +122,8 @@
<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_smartbarButton" comment="Theme group label">Botão da barra inteligente</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Disposição do estrato de edição</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Botão do estrato de edição</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Disposição em ecrã completo (horizontal)</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Botão de ação na introdução em ecrã completo (horizontal)</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">Cor de fundo</string>
<string name="settings__theme__attr_backgroundActive" comment="Theme attribute label">Cor de fundo (ativo)</string>
@@ -164,6 +164,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Desligado</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Modo destro</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Modo esquerdino</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Introdução em ecrã completo (horizontal)</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Nunca mostrar</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Mostrar sempre</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Mostrar dinamicamente</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Altura do teclado</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Mínima</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Muito pequena</string>
@@ -174,6 +178,10 @@
<string name="pref__keyboard__height_factor__extra_tall" comment="Preference value">Enorme</string>
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Personalizada</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Valor para a altura do teclado</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Distância inferior (modo vertical)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Distância inferior (modo horizontal)</string>
<string name="pref__keyboard__key_spacing_vertical__label" comment="Preference title">Espaçamento de tecla (vertical)</string>
<string name="pref__keyboard__key_spacing_horizontal__label" comment="Preference title">Espaçamento de tecla (horizontal)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Pressão de teclas</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Som ao premir teclas</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Volume do som ao premir teclas</string>
@@ -186,12 +194,6 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Ativar barra inteligente</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Mostrar na parte superior do teclado</string>
<string name="pref__suggestion__title" comment="Preference group title">Sugestões</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Mostrar sugestões ao escrever</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Mostrar na barra inteligente</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Sugerir conteúdo da área de transferência</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Sugerir conteúdo existente na área de transferência</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Sugerir palavra seguinte</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Recorrer às palavras anteriores para sugerir as seguintes</string>
<string name="pref__correction__title" comment="Preference group title">Correções</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Maiúsculas automáticas</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Colocar letras maiúsculas tendo em conta o contexto das palavras</string>
@@ -220,6 +222,8 @@
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Mover cursor para a direita</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Mover cursor para o início da linha</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Mover cursor para o fim da linha</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_page" comment="Preference value for swipe action">Mover cursor para o início da página</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_page" comment="Preference value for swipe action">Mover cursor para o final da página</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Premir a tecla Shift</string>
<string name="pref__gestures__swipe_action__show_input_method_picker" comment="Preference value for swipe action">Mostrar seletor do método de introdução</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Trocar para o teclado anterior</string>

View File

@@ -5,7 +5,7 @@
<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__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 -->
@@ -23,24 +23,24 @@
<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__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_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__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">Помощь &amp; отзыв</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>
@@ -48,13 +48,13 @@
<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__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_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">Языки &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_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>
@@ -69,7 +69,7 @@
<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_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>
@@ -77,13 +77,13 @@
<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__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_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>
@@ -91,39 +91,39 @@
<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__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__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_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__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_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_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_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_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>
@@ -134,36 +134,40 @@
<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_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="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__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_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__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>
@@ -176,6 +180,8 @@
<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__key_spacing_vertical__label" comment="Preference title">Расстояние между клавишами (вертикально)</string>
<string name="pref__keyboard__key_spacing_horizontal__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>
@@ -188,12 +194,6 @@
<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>
@@ -209,13 +209,13 @@
<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__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__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>
@@ -223,17 +223,17 @@
<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__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__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>
@@ -242,9 +242,9 @@
<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__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>
@@ -254,7 +254,7 @@
<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>
<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>
@@ -287,22 +287,22 @@
<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__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__intro" comment="Paragraph in Welcome fragment in Setup">Спасибо, что попробовали FlorisBoard! Перед тем, как вы сможете начать использовать 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__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_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">Открыть настройки Языка и ввода</string>
<string name="setup__make_default__title" comment="Title of Make IME default fragment in Setup">Сделать FlorisBoard стандартным</string>
<string name="setup__enable_ime__text_button_language_and_input" comment="Label of language and input button in Enable IME fragment">Открыть настройки Языка и Ввода</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>

View File

@@ -48,7 +48,7 @@
<string name="settings__home__title" comment="Title of the Home fragment">Välkommen till %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 är inte aktiverad och kommer därför inte vara tillgänglig som inmatningsmetod i inmatningsväljaren. Tryck här för att lösa problemet.</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 är inte vald som standard inmatningsmetod. Tryck här för att lösa problemet.</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Tack för att du testar FlorisBoard! Detta projekt är fortfarande i alfa och saknar därför vissa funktioner. Om du hittar buggar eller vill lämna några förslag, kolla in arkivet på GitHub och rapportera ett problem. Tack för att du hjälper FlorisBoard bli bättre. Tack!</string>
<string name="settings__home__contribute" comment="Contributing message shown in Home fragment">Tack för att du testar FlorisBoard! Detta projekt är fortfarande i alfa och saknar därför vissa funktioner. Om du hittar buggar eller vill lämna några förslag, kolla in arkivet på GitHub och rapportera ett problem. Detta hjälper FlorisBoard bli bättre. Tack!</string>
<string name="settings__localization__title" comment="Title of languages and layout box in the Typing fragment">Språk &amp; Tangentbordslayouter</string>
<string name="settings__localization__subtype_no_subtypes_configured_warning" comment="Warning message that no subtype has been defined in the Typing fragment">Det verkar som du inte har konfigurerat några undertyper. Undertyp Engelska/QWERTY kommer då användas!</string>
<string name="settings__localization__subtype_add" comment="Subtype dialog add button">Lägg till</string>
@@ -147,7 +147,7 @@
<string name="pref__keyboard__height_factor__custom" comment="Preference value">Anpassat</string>
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Anpassad tangentbordshöjd värde</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Tangenttryck</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Ljud vis tangenttryck</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Ljud vid tangenttryck</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Volym vid tangenttryck</string>
<string name="pref__keyboard__vibration_enabled__label" comment="Preference title">Vibrera vid tangenttryck</string>
<string name="pref__keyboard__vibration_strength__label" comment="Preference title">Vibrationsstyrka vid tangentryck</string>
@@ -156,7 +156,6 @@
<string name="pref__keyboard__long_press_delay__label" comment="Preference title">Fördröjning vid långt tryck</string>
<string name="pref__smartbar__enabled__label" comment="Preference title">Aktivera smartremsa</string>
<string name="pref__suggestion__title" comment="Preference group title">Förslag</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Visas i smartremsa</string>
<string name="pref__gestures__swipe_action__shift" comment="Preference value for swipe action">Skift</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Byt till föregående tangentbord</string>
<string name="pref__gestures__swipe_action__switch_to_prev_subtype" comment="Preference value for swipe action">Byt till föregående undertyp</string>

View File

@@ -122,8 +122,8 @@
<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_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>
@@ -164,6 +164,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>
@@ -176,6 +180,8 @@
<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__key_spacing_vertical__label" comment="Preference title">Відстань між клавішами (вертикально)</string>
<string name="pref__keyboard__key_spacing_horizontal__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>
@@ -188,12 +194,6 @@
<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>

View File

@@ -29,8 +29,6 @@
<string name="settings__localization__subtype_locale" comment="Label for locale dropdown in subtype dialog">ⵜⵓⵜⵍⴰⵢⵜ</string>
<string name="settings__theme__group_keyboard" comment="Theme group label">ⴰⵏⴰⵙⵉⵡ</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__use_pref_words__label" comment="Preference title">[NYI] ⵉⵙⵓⵎⵔⵏ ⵜⴳⵓⵔⵉ ⵜⵓⴹⴼⵉⵕⵜ</string>
<!-- About UI strings -->
<string name="about__title" comment="Title of About activity">ⵅⴼ</string>
<!-- Assets strings -->

View File

@@ -34,6 +34,17 @@
<item>enabled_smart_priority</item>
</string-array>
<string-array name="pref__keyboard__landscape_input_ui_mode__entries">
<item>@string/pref__keyboard__landscape_input_ui_mode__never_show</item>
<item>@string/pref__keyboard__landscape_input_ui_mode__always_show</item>
<item>@string/pref__keyboard__landscape_input_ui_mode__dynamically_show</item>
</string-array>
<string-array name="pref__keyboard__landscape_input_ui_mode__values">
<item>never_show</item>
<item>always_show</item>
<item>dynamically_show</item>
</string-array>
<string-array name="pref__keyboard__one_handed_mode__entries">
<item>@string/pref__keyboard__one_handed_mode__off</item>
<item>@string/pref__keyboard__one_handed_mode__right</item>
@@ -80,6 +91,8 @@
<item>@string/pref__gestures__swipe_action__move_cursor_right</item>
<item>@string/pref__gestures__swipe_action__move_cursor_start_of_line</item>
<item>@string/pref__gestures__swipe_action__move_cursor_end_of_line</item>
<item>@string/pref__gestures__swipe_action__move_cursor_start_of_page</item>
<item>@string/pref__gestures__swipe_action__move_cursor_end_of_page</item>
<item>@string/pref__gestures__swipe_action__shift</item>
<item>@string/pref__gestures__swipe_action__show_input_method_picker</item>
<item>@string/pref__gestures__swipe_action__switch_to_prev_subtype</item>
@@ -97,6 +110,8 @@
<item>move_cursor_right</item>
<item>move_cursor_start_of_line</item>
<item>move_cursor_end_of_line</item>
<item>move_cursor_start_of_page</item>
<item>move_cursor_end_of_page</item>
<item>shift</item>
<item>show_input_method_picker</item>
<item>switch_to_prev_subtype</item>

View File

@@ -16,6 +16,7 @@
<dimen name="key_marginH">2dp</dimen>
<dimen name="key_marginV">5dp</dimen>
<dimen name="keyboard_row_marginH">@dimen/key_marginH</dimen>
<dimen name="keyboard_preview_margin">16dp</dimen>
<dimen name="key_borderRadius">6dp</dimen>
@@ -26,6 +27,12 @@
<dimen name="key_popup_textSize">21sp</dimen>
<dimen name="emoji_key_textSize">22sp</dimen>
<dimen name="landscapeInputUi_padding">8dp</dimen>
<dimen name="landscapeInputUi_actionButton_cornerRadius">6dp</dimen>
<dimen name="landscapeInputUi_editText_borderWidth">1dp</dimen>
<dimen name="landscapeInputUi_editText_cornerRadius">6dp</dimen>
<dimen name="landscapeInputUi_editText_padding">8dp</dimen>
<dimen name="media_bottom_button_width">60dp</dimen>
<dimen name="media_bottom_button_height">@dimen/key_height</dimen>
<dimen name="media_tab_indicator_height">4dp</dimen>

View File

@@ -136,8 +136,8 @@
<string name="settings__theme__group_privateMode" comment="Theme group label">Private mode</string>
<string name="settings__theme__group_smartbar" comment="Theme group label">Smartbar</string>
<string name="settings__theme__group_smartbarButton" comment="Theme group label">Smartbar button</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Extract edit layout</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Extract action button</string>
<string name="settings__theme__group_extractEditLayout" comment="Theme group label">Landscape fullscreen layout</string>
<string name="settings__theme__group_extractActionButton" comment="Theme group label">Landscape fullscreen action button</string>
<string name="settings__theme__group_custom" comment="Theme group label (%s is custom group name)">Custom group (%s)</string>
<string name="settings__theme__attr_background" comment="Theme attribute label">Background color</string>
@@ -180,6 +180,10 @@
<string name="pref__keyboard__one_handed_mode__off" comment="Preference value">Off</string>
<string name="pref__keyboard__one_handed_mode__right" comment="Preference value">Right-handed mode</string>
<string name="pref__keyboard__one_handed_mode__left" comment="Preference value">Left-handed mode</string>
<string name="pref__keyboard__landscape_input_ui_mode__label" comment="Preference value">Landscape fullscreen input</string>
<string name="pref__keyboard__landscape_input_ui_mode__never_show" comment="Preference value">Never show</string>
<string name="pref__keyboard__landscape_input_ui_mode__always_show" comment="Preference value">Always show</string>
<string name="pref__keyboard__landscape_input_ui_mode__dynamically_show" comment="Preference value">Dynamically show</string>
<string name="pref__keyboard__height_factor__label" comment="Preference title">Keyboard height</string>
<string name="pref__keyboard__height_factor__extra_short" comment="Preference value">Extra-short</string>
<string name="pref__keyboard__height_factor__short" comment="Preference value">Short</string>
@@ -192,6 +196,8 @@
<string name="pref__keyboard__height_factor_custom__label" comment="Preference title">Custom keyboard height value</string>
<string name="pref__keyboard__bottom_offset_portrait__label" comment="Preference title">Bottom offset (portrait)</string>
<string name="pref__keyboard__bottom_offset_landscape__label" comment="Preference title">Bottom offset (landscape)</string>
<string name="pref__keyboard__key_spacing_vertical__label" comment="Preference title">Key spacing (vertical)</string>
<string name="pref__keyboard__key_spacing_horizontal__label" comment="Preference title">Key spacing (horizontal)</string>
<string name="pref__keyboard__group_keypress__label" comment="Preference group title">Key press</string>
<string name="pref__keyboard__sound_enabled__label" comment="Preference title">Sound on key press</string>
<string name="pref__keyboard__sound_volume__label" comment="Preference title">Sound volume on key press</string>
@@ -205,12 +211,14 @@
<string name="pref__smartbar__enabled__label" comment="Preference title">Enable Smartbar</string>
<string name="pref__smartbar__enabled__summary" comment="Preference summary">Will show on top of the keyboard</string>
<string name="pref__suggestion__title" comment="Preference group title">Suggestions</string>
<string name="pref__suggestion__enabled__label" comment="Preference title">[NYI] Display suggestions while you type</string>
<string name="pref__suggestion__enabled__summary" comment="Preference summary">Will show in the Smartbar</string>
<string name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">Clipboard content suggestions</string>
<string name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Suggest clipboard content to paste if previously copied</string>
<string name="pref__suggestion__use_pref_words__label" comment="Preference title">[NYI] Next-word suggestions</string>
<string name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Use previous words for generating suggestions</string>
<string translatable="false" name="pref__suggestion__enabled__label" comment="Preference title">[EXPERIMENTAL] Display suggestions while you type</string>
<string translatable="false" name="pref__suggestion__enabled__summary" comment="Preference summary">Will show in the Smartbar, currently regardless of the selected subtype the dictionary language is English (US)</string>
<string translatable="false" name="pref__suggestion__use_pref_words__label" comment="Preference title">[NOT YET INCLUDED] Next-word suggestions</string>
<string translatable="false" name="pref__suggestion__use_pref_words__summary" comment="Preference summary">Use previous words for generating suggestions</string>
<string translatable="false" name="pref__suggestion__block_possibly_offensive__label" comment="Preference title">[EXPERIMENTAL] Block possibly offensive words</string>
<string translatable="false" name="pref__suggestion__block_possibly_offensive__summary" comment="Preference summary">Prevents possibly offensive words from being suggested while you type</string>
<string translatable="false" name="pref__suggestion__suggest_clipboard_content__label" comment="Preference title">[EXPERIMENTAL] Clipboard content suggestions</string>
<string translatable="false" name="pref__suggestion__suggest_clipboard_content__summary" comment="Preference summary">Suggest clipboard content to paste if previously copied</string>
<string name="pref__correction__title" comment="Preference group title">Corrections</string>
<string name="pref__correction__auto_capitalization__label" comment="Preference title">Auto-capitalization</string>
<string name="pref__correction__auto_capitalization__summary" comment="Preference summary">Capitalize words based on the current input context</string>
@@ -240,6 +248,8 @@
<string name="pref__gestures__swipe_action__move_cursor_right" comment="Preference value for swipe action">Move cursor right</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_line" comment="Preference value for swipe action">Move cursor to start of line</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_line" comment="Preference value for swipe action">Move cursor to end of line</string>
<string name="pref__gestures__swipe_action__move_cursor_start_of_page" comment="Preference value for swipe action">Move cursor to start of page</string>
<string name="pref__gestures__swipe_action__move_cursor_end_of_page" comment="Preference value for swipe action">Move cursor to end of page</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">Show input method picker</string>
<string name="pref__gestures__swipe_action__switch_to_prev_keyboard" comment="Preference value for swipe action">Switch to previous keyboard</string>

View File

@@ -84,6 +84,15 @@
app:title="@string/pref__keyboard__one_handed_mode__label"
app:useSimpleSummaryProvider="true"/>
<ListPreference
android:defaultValue="dynamically_show"
app:entries="@array/pref__keyboard__landscape_input_ui_mode__entries"
app:entryValues="@array/pref__keyboard__landscape_input_ui_mode__values"
app:key="keyboard__landscape_input_ui_mode"
app:iconSpaceReserved="false"
app:title="@string/pref__keyboard__landscape_input_ui_mode__label"
app:useSimpleSummaryProvider="true"/>
<ListPreference
android:defaultValue="normal"
app:entries="@array/pref__keyboard__height_factor__entries"
@@ -126,6 +135,28 @@
app:seekBarIncrement="1"
app:unit=" dp"/>
<dev.patrickgold.florisboard.settings.components.DialogSeekBarPreference
app:allowDividerAbove="false"
android:defaultValue="10"
app:key="keyboard__key_spacing_vertical"
app:min="0"
app:max="20"
app:iconSpaceReserved="false"
app:title="@string/pref__keyboard__key_spacing_vertical__label"
app:seekBarIncrement="1"
app:unit=" half dp"/>
<dev.patrickgold.florisboard.settings.components.DialogSeekBarPreference
app:allowDividerAbove="false"
android:defaultValue="4"
app:key="keyboard__key_spacing_horizontal"
app:min="0"
app:max="20"
app:iconSpaceReserved="false"
app:title="@string/pref__keyboard__key_spacing_horizontal__label"
app:seekBarIncrement="1"
app:unit=" half dp"/>
</PreferenceCategory>
<PreferenceCategory

View File

@@ -29,6 +29,14 @@
app:title="@string/pref__suggestion__use_pref_words__label"
app:summary="@string/pref__suggestion__use_pref_words__summary"/>
<SwitchPreferenceCompat
android:defaultValue="true"
app:dependency="suggestion__enabled"
app:key="suggestion__block_possibly_offensive"
app:iconSpaceReserved="false"
app:title="@string/pref__suggestion__block_possibly_offensive__label"
app:summary="@string/pref__suggestion__block_possibly_offensive__summary"/>
<SwitchPreferenceCompat
android:defaultValue="true"
app:dependency="suggestion__enabled"

View File

@@ -1,6 +1,6 @@
package dev.patrickgold.florisboard.ime.core
import org.hamcrest.CoreMatchers.*
import org.hamcrest.CoreMatchers.`is`
import org.hamcrest.MatcherAssert.assertThat
import org.junit.Test
import java.util.*

View File

@@ -2,7 +2,8 @@ package dev.patrickgold.florisboard.ime.core
import android.content.Context
import android.content.SharedPreferences
import org.mockito.Mockito.*
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock
/**
* Helper class which automatically sets up all mocks for the different pref categories.

View File

@@ -1,6 +1,6 @@
package dev.patrickgold.florisboard.ime.text.layout
import org.hamcrest.CoreMatchers.*
import org.hamcrest.CoreMatchers.`is`
import org.hamcrest.MatcherAssert.assertThat
import org.junit.Test

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