Compare commits
51 Commits
v0.5.0-bet
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| e2b361ac3d | |||
|
|
5562d49546 | ||
|
|
5891c53cf6 | ||
|
|
5466d00037 | ||
|
|
8a06d764bb | ||
|
|
a800c7b230 | ||
|
|
67e99aeca3 | ||
|
|
ac14d92192 | ||
|
|
3392f8f212 | ||
|
|
8c7cafad61 | ||
|
|
721b25c349 | ||
|
|
96e3af9c16 | ||
|
|
fa79fa3849 | ||
|
|
f646825e9c | ||
|
|
0a299e1b04 | ||
|
|
6417cf5958 | ||
|
|
234580fd48 | ||
|
|
fe015c549c | ||
|
|
253ee969eb | ||
|
|
8fa986ca76 | ||
|
|
640a1c56cc | ||
|
|
059d2fd4bf | ||
|
|
1275650ca5 | ||
|
|
8359a6cd6c | ||
|
|
31730348b9 | ||
|
|
f12170543f | ||
|
|
37f9266ba3 | ||
|
|
ad47e51f0d | ||
|
|
6ccfb579b0 | ||
|
|
59e32a3a28 | ||
|
|
cee3da97f0 | ||
|
|
afad229273 | ||
|
|
b23496afa4 | ||
|
|
2dd37439ca | ||
|
|
75f774d5e2 | ||
|
|
38d91718ac | ||
|
|
8d9bacbefd | ||
|
|
a1031acd8e | ||
|
|
7a3af3eb54 | ||
|
|
7a433e9860 | ||
|
|
f687873cc5 | ||
|
|
c6a84fd324 | ||
|
|
dcc490cc9d | ||
|
|
d7b52cd489 | ||
|
|
fc7700395c | ||
|
|
9f07702852 | ||
|
|
f111544d81 | ||
|
|
fc09bb74c0 | ||
|
|
674bdccc40 | ||
|
|
3e69dddaa9 | ||
|
|
3c175bc60d |
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -44,7 +44,8 @@ body:
|
||||
label: Install Source
|
||||
options:
|
||||
- Google PlayStore
|
||||
- F-Droid
|
||||
- F-Droid (F-Droid Main)
|
||||
- F-Droid (IzzyOnDroid)
|
||||
- GitHub
|
||||
validations:
|
||||
required: true
|
||||
|
||||
39
Android.bp
Normal file
39
Android.bp
Normal file
@@ -0,0 +1,39 @@
|
||||
android_app {
|
||||
name: "FlorisBoard",
|
||||
srcs: [
|
||||
"app/src/main/kotlin/**/*.kt",
|
||||
"app/src/main/java/**/*.java",
|
||||
],
|
||||
resource_dirs: ["app/src/main/res"],
|
||||
manifest: "app/src/main/AndroidManifest.xml",
|
||||
certificate: "platform",
|
||||
system_ext_specific: true,
|
||||
platform_apis: true,
|
||||
optimize: {
|
||||
enabled: true,
|
||||
},
|
||||
overrides: ["FlorisBoard"],
|
||||
static_libs: [
|
||||
"androidx.core_core",
|
||||
"androidx.emoji2_emoji2",
|
||||
"androidx.emoji2_emoji2-views",
|
||||
"androidx.startup_startup",
|
||||
"androidx.appcompat_appcompat",
|
||||
"androidx.preference_preference",
|
||||
"androidx.recyclerview_recyclerview",
|
||||
"androidx.constraintlayout_constraintlayout",
|
||||
],
|
||||
required: ["android.permission.VIBRATE"],
|
||||
optional: ["android.permission.POST_NOTIFICATIONS"],
|
||||
allow_backup: true,
|
||||
backup_config: "res/xml/backup_rules.xml",
|
||||
full_backup_content: "res/xml/backup_rules.xml",
|
||||
enable_on_back_invoked_callback: true,
|
||||
profileable: true,
|
||||
package: "dev.patrickgold.florisboard",
|
||||
privileged: false,
|
||||
dex_preopt: {
|
||||
enabled: false,
|
||||
},
|
||||
asset_dirs: ["app/src/main/assets"],
|
||||
}
|
||||
@@ -10,7 +10,7 @@ The FlorisBoard community is international, as such we require all contributions
|
||||
|
||||
### Translations
|
||||
|
||||
To make FlorisBoard accessible in as many languages as possible, the platform [Crowdin](https://crowdin.florisboard.patrickgold.dev) is used to crowdsource and manage translations. The list of languages in Crowdin covers a good range of languages, but feel free to email [florisboard@patrickgold.dev](mailto:florisboard@patrickgold.dev) to request a new language.
|
||||
To make FlorisBoard accessible in as many languages as possible, the platform [Crowdin](https://crowdin.florisboard.org) is used to crowdsource and manage translations. The list of languages in Crowdin covers a good range of languages, but feel free to email [florisboard@patrickgold.dev](mailto:florisboard@patrickgold.dev) to request a new language.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> This is the only source of translations - **PRs that add/update translations are not accepted.**
|
||||
|
||||
31
README.md
31
README.md
@@ -1,11 +1,11 @@
|
||||
<img align="left" width="80" height="80"
|
||||
src=".github/repo_icon.png" alt="App icon">
|
||||
|
||||
# FlorisBoard [](https://crowdin.florisboard.patrickgold.dev) [](https://matrix.to/#/#florisboard:matrix.org) [](CODE_OF_CONDUCT.md) [](https://github.com/florisboard/florisboard/actions/workflows/android.yml)
|
||||
# FlorisBoard [](https://crowdin.florisboard.org) [](https://matrix.to/#/#florisboard:matrix.org) [](CODE_OF_CONDUCT.md) [](https://github.com/florisboard/florisboard/actions/workflows/android.yml)
|
||||
|
||||
**FlorisBoard** is a free and open-source keyboard for Android 7.0+
|
||||
**FlorisBoard** is a free and open-source keyboard for Android 8.0+
|
||||
devices. It aims at being modern, user-friendly and customizable while
|
||||
fully respecting your privacy. Currently in early-beta state.
|
||||
fully respecting your privacy. Currently in beta state.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
@@ -26,10 +26,13 @@ fully respecting your privacy. Currently in early-beta state.
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<p><a href="https://f-droid.org/packages/dev.patrickgold.florisboard"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="64" alt="F-Droid badge"></a></p>
|
||||
<p>
|
||||
<a href="https://apt.izzysoft.de/fdroid/index/apk/dev.patrickgold.florisboard"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" height="64" alt="IzzySoft repo badge"></a>
|
||||
<a href="https://f-droid.org/packages/dev.patrickgold.florisboard"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="64" alt="F-Droid badge"></a>
|
||||
</p>
|
||||
<p>
|
||||
|
||||
**Google Play**: Join the [FlorisBoard Test Group](https://groups.google.com/g/florisboard-public-alpha-test), then visit the [testing page](https://play.google.com/apps/testing/dev.patrickgold.florisboard). Once joined and installed, updates will be delivered like for any other app. ([Store entry](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard))
|
||||
**Google Play**: Join the [FlorisBoard Test Group](https://groups.google.com/g/florisboard-closed-beta-test), then visit the [testing page](https://play.google.com/apps/testing/dev.patrickgold.florisboard). Once joined and installed, updates will be delivered like for any other app. ([Store entry](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard))
|
||||
|
||||
</p>
|
||||
<p>
|
||||
@@ -47,7 +50,7 @@ fully respecting your privacy. Currently in early-beta state.
|
||||
<p><a href="https://apt.izzysoft.de/fdroid/index/apk/dev.patrickgold.florisboard.beta"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" height="64" alt="IzzySoft repo badge"></a></p>
|
||||
<p>
|
||||
|
||||
**Google Play**: Join the [FlorisBoard Test Group](https://groups.google.com/g/florisboard-public-alpha-test), then visit the [preview testing page](https://play.google.com/apps/testing/dev.patrickgold.florisboard.beta). Once joined and installed, updates will be delivered like for any other app. ([Store entry](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard.beta))
|
||||
**Google Play**: Join the [FlorisBoard Test Group](https://groups.google.com/g/florisboard-closed-beta-test), then visit the [preview testing page](https://play.google.com/apps/testing/dev.patrickgold.florisboard.beta). Once joined and installed, updates will be delivered like for any other app. ([Store entry](https://play.google.com/store/apps/details?id=dev.patrickgold.florisboard.beta))
|
||||
|
||||
</p>
|
||||
<p>
|
||||
@@ -96,6 +99,22 @@ Many thanks to Ali ([@4H1R](https://github.com/4H1R)) for implementing the store
|
||||
Please refer to this [page](https://github.com/florisboard/florisboard/wiki/List-of-permissions-FlorisBoard-requests)
|
||||
to get more information on this topic.
|
||||
|
||||
## APK signing certificate hashes
|
||||
|
||||
The package names and SHA-256 hashes of the signature certificate are listed below, so you can verify both FlorisBoard variants with apksigner by using `apksigner verify --print-certs florisboard-<version>-<track>.apk` when you download the APK.
|
||||
If you have [AppVerifier](https://github.com/soupslurpr/AppVerifier) installed, you can alternatively copy both the package name and the hash of the corresponding track and share them to AppVerifier.
|
||||
|
||||
##### Stable track:
|
||||
|
||||
dev.patrickgold.florisboard<br>
|
||||
0B:80:71:64:50:8E:AF:EB:1F:BB:81:5B:E7:A2:3C:77:FE:68:9D:94:B1:43:75:C9:9B:DA:A9:B6:57:7F:D6:D6
|
||||
|
||||
##### Preview track:
|
||||
|
||||
dev.patrickgold.florisboard.beta<br>
|
||||
0B:80:71:64:50:8E:AF:EB:1F:BB:81:5B:E7:A2:3C:77:FE:68:9D:94:B1:43:75:C9:9B:DA:A9:B6:57:7F:D6:D6
|
||||
|
||||
|
||||
## Used libraries, components and icons
|
||||
* [AndroidX libraries](https://github.com/androidx/androidx) by
|
||||
[Android Jetpack](https://github.com/androidx)
|
||||
|
||||
@@ -9,13 +9,11 @@ Each major milestone has associated alpha/beta releases, so if you are intereste
|
||||
> [!NOTE]
|
||||
> The milestone 0.5 was split, thus the word suggestions now come with version 0.6. The old version 0.6 has been moved down and is now 0.7. The time it takes to implement word suggestions will not change, but we can now release the new theme editor earlier, which would otherwise lie dormant.
|
||||
|
||||
- [ ] Theme rework part II / Snygg v2
|
||||
- [x] Theme rework part II / Snygg v2
|
||||
- [x] See https://github.com/florisboard/florisboard/pull/2855
|
||||
- [x] Spaces in URI bug (See https://github.com/florisboard/florisboard/issues/2898)
|
||||
- [ ] Rework cache manager (See https://github.com/florisboard/florisboard/issues/2870)
|
||||
- [x] Re-add time based theme switching (See https://github.com/florisboard/florisboard/pull/2977)
|
||||
- [ ] Add support for any remaining new features introduced with Android 13 / 14
|
||||
- [ ] Proper physical keyboard support (See https://github.com/florisboard/florisboard/issues/2815)
|
||||
- [x] Add support for any remaining new features introduced with Android 13 / 14
|
||||
- [x] Raise minimum required Android version from Android 7 (SDK level 24) to Android 8 (SDK level 26)
|
||||
|
||||
## 0.6
|
||||
@@ -24,6 +22,8 @@ Each major milestone has associated alpha/beta releases, so if you are intereste
|
||||
- [ ] Add new extension type: Language Pack
|
||||
- Basically groups all locale-relevant data (predictive base model, emoji suggestion data, ...)
|
||||
in a dynamically importable extension file
|
||||
- [ ] Proper physical keyboard support (See https://github.com/florisboard/florisboard/issues/1972)
|
||||
- [ ] Rework cache manager (See https://github.com/florisboard/florisboard/issues/2870)
|
||||
|
||||
## k3lp
|
||||
|
||||
@@ -62,7 +62,6 @@ Each major milestone has associated alpha/beta releases, so if you are intereste
|
||||
- Text translation
|
||||
- Stickers/GIFs
|
||||
- Kaomoji panel implementation
|
||||
- FlorisBoard landing web page for presentation
|
||||
- Implementing additional layouts
|
||||
- Support for Tasker/Automate/MacroDroid plugins
|
||||
- Support for WearOS/Smartwatches
|
||||
|
||||
@@ -157,6 +157,13 @@
|
||||
"direction": "ltr",
|
||||
"modifier": "org.florisboard.layouts:dvorak"
|
||||
},
|
||||
{
|
||||
"id": "dvorak_se",
|
||||
"label": "Dvorak (SE)",
|
||||
"authors": [ "iceaway" ],
|
||||
"direction": "ltr",
|
||||
"modifier": "org.florisboard.layouts:dvorak_se"
|
||||
},
|
||||
{
|
||||
"id": "esperanto",
|
||||
"label": "Esperanto",
|
||||
@@ -267,6 +274,12 @@
|
||||
"authors": [ "patrickgold", "Hayleia" ],
|
||||
"direction": "ltr"
|
||||
},
|
||||
{
|
||||
"id": "korean_phonetic",
|
||||
"label": "South Korean Phonetic",
|
||||
"authors": [ "Shunnuo" ],
|
||||
"direction": "ltr"
|
||||
},
|
||||
{
|
||||
"id": "kurdish",
|
||||
"label": "کوردی (قوەرتی نوێ)",
|
||||
@@ -510,6 +523,12 @@
|
||||
"authors": [ "msrd0" ],
|
||||
"direction": "ltr"
|
||||
},
|
||||
{
|
||||
"id": "dvorak_se",
|
||||
"label": "Dvorak (SE)",
|
||||
"authors": [ "iceaway" ],
|
||||
"direction": "ltr"
|
||||
},
|
||||
{
|
||||
"id": "hebrew",
|
||||
"label": "עברית",
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
[
|
||||
[
|
||||
{ "$": "auto_text_key", "code": 229, "label": "å" },
|
||||
{ "$": "auto_text_key", "code": 228, "label": "ä" },
|
||||
{ "$": "auto_text_key", "code": 246, "label": "ö" },
|
||||
{ "$": "auto_text_key", "code": 112, "label": "p" },
|
||||
{ "$": "auto_text_key", "code": 121, "label": "y" },
|
||||
{ "$": "auto_text_key", "code": 102, "label": "f" },
|
||||
{ "$": "auto_text_key", "code": 103, "label": "g" },
|
||||
{ "$": "auto_text_key", "code": 99, "label": "c" },
|
||||
{ "$": "auto_text_key", "code": 114, "label": "r" },
|
||||
{ "$": "auto_text_key", "code": 108, "label": "l" }
|
||||
],
|
||||
[
|
||||
{ "$": "auto_text_key", "code": 97, "label": "a" },
|
||||
{ "$": "auto_text_key", "code": 111, "label": "o" },
|
||||
{ "$": "auto_text_key", "code": 101, "label": "e" },
|
||||
{ "$": "auto_text_key", "code": 117, "label": "u" },
|
||||
{ "$": "auto_text_key", "code": 105, "label": "i" },
|
||||
{ "$": "auto_text_key", "code": 100, "label": "d" },
|
||||
{ "$": "auto_text_key", "code": 104, "label": "h" },
|
||||
{ "$": "auto_text_key", "code": 116, "label": "t" },
|
||||
{ "$": "auto_text_key", "code": 110, "label": "n" },
|
||||
{ "$": "auto_text_key", "code": 115, "label": "s" }
|
||||
],
|
||||
[
|
||||
{ "$": "auto_text_key", "code": 113, "label": "q" },
|
||||
{ "$": "auto_text_key", "code": 106, "label": "j" },
|
||||
{ "$": "auto_text_key", "code": 107, "label": "k" },
|
||||
{ "$": "auto_text_key", "code": 120, "label": "x" },
|
||||
{ "$": "auto_text_key", "code": 98, "label": "b" },
|
||||
{ "$": "auto_text_key", "code": 109, "label": "m" },
|
||||
{ "$": "auto_text_key", "code": 119, "label": "w" },
|
||||
{ "$": "auto_text_key", "code": 118, "label": "v" },
|
||||
{ "$": "auto_text_key", "code": 122, "label": "z" }
|
||||
]
|
||||
]
|
||||
@@ -0,0 +1,55 @@
|
||||
[
|
||||
[
|
||||
{ "$": "auto_text_key", "code": 12615, "label": "ㅇ"},
|
||||
{ "$": "auto_text_key", "code": 12641, "label": "ㅡ"},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12628, "label": "ㅔ" },
|
||||
"upper": { "code": 12630, "label": "ㅖ" }
|
||||
},
|
||||
{ "$": "auto_text_key", "code": 12601, "label": "ㄹ"},
|
||||
{ "$": "auto_text_key", "code": 12620, "label": "ㅌ"},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12624, "label": "ㅐ" },
|
||||
"upper": { "code": 12626, "label": "ㅒ" }
|
||||
},
|
||||
{ "$": "auto_text_key", "code": 12636, "label": "ㅜ"},
|
||||
{ "$": "auto_text_key", "code": 12643, "label": "ㅣ"},
|
||||
{ "$": "auto_text_key", "code": 12631, "label": "ㅗ"},
|
||||
{ "$": "auto_text_key", "code": 12621, "label": "ㅍ"}
|
||||
],
|
||||
[
|
||||
{ "$": "auto_text_key", "code": 12623, "label": "ㅏ"},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12613, "label": "ㅅ" },
|
||||
"upper": { "code": 12614, "label": "ㅆ" }
|
||||
},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12599, "label": "ㄷ" },
|
||||
"upper": { "code": 12600, "label": "ㄸ" }
|
||||
},
|
||||
{ "$": "auto_text_key", "code": 12625, "label": "ㅑ"},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12593, "label": "ㄱ" },
|
||||
"upper": { "code": 12594, "label": "ㄲ" }
|
||||
},
|
||||
{ "$": "auto_text_key", "code": 12622, "label": "ㅎ"},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12616, "label": "ㅈ" },
|
||||
"upper": { "code": 12617, "label": "ㅉ" }
|
||||
},
|
||||
{ "$": "auto_text_key", "code": 12619, "label": "ㅋ"},
|
||||
{ "$": "auto_text_key", "code": 12635, "label": "ㅛ"}
|
||||
],
|
||||
[
|
||||
{ "$": "auto_text_key", "code": 12629, "label": "ㅕ"},
|
||||
{ "$": "auto_text_key", "code": 12640, "label": "ㅠ"},
|
||||
{ "$": "auto_text_key", "code": 12618, "label": "ㅊ"},
|
||||
{ "$": "auto_text_key", "code": 12627, "label": "ㅓ"},
|
||||
{ "$": "case_selector",
|
||||
"lower": { "code": 12610, "label": "ㅂ" },
|
||||
"upper": { "code": 12611, "label": "ㅃ" }
|
||||
},
|
||||
{ "$": "auto_text_key", "code": 12596, "label": "ㄴ"},
|
||||
{ "$": "auto_text_key", "code": 12609, "label": "ㅁ"}
|
||||
]
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
[
|
||||
[
|
||||
{ "code": -11, "label": "shift", "type": "modifier" },
|
||||
{ "code": 0, "type": "placeholder" },
|
||||
{ "code": -7, "label": "delete", "type": "enter_editing" }
|
||||
],
|
||||
[
|
||||
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
|
||||
{ "$": "auto_text_key", "code": 44, "label": "," },
|
||||
{ "code": -227, "label": "language_switch", "type": "system_gui" },
|
||||
{ "code": -212, "label": "ime_ui_mode_media", "type": "system_gui" },
|
||||
{ "code": 32, "label": "space" },
|
||||
{ "$": "auto_text_key", "code": 46, "label": "." },
|
||||
{ "code": 10, "label": "enter", "groupId": 3, "type": "enter_editing" }
|
||||
]
|
||||
]
|
||||
@@ -23,13 +23,17 @@
|
||||
{ "code": 45, "label": "-", "popup": {
|
||||
"main": { "code": 95, "label": "_" },
|
||||
"relevant": [
|
||||
{ "code": 8315, "label": "⁻" },
|
||||
{ "code": 8212, "label": "—" },
|
||||
{ "code": 8211, "label": "–" },
|
||||
{ "code": 183, "label": "·" }
|
||||
]
|
||||
} },
|
||||
{ "code": 43, "label": "+", "popup": {
|
||||
"main": { "code": 177, "label": "±" }
|
||||
"main": { "code": 177, "label": "±" },
|
||||
"relevant": [
|
||||
{ "code": 8314, "label": "⁺" }
|
||||
]
|
||||
} },
|
||||
{ "$": "layout_direction_selector",
|
||||
"ltr": { "code": 40, "label": "(", "popup": {
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
{ "id": "ja-JP-jis", "authors": [ "waelwindows" ] },
|
||||
{ "id": "kab", "authors": [ "yanis867" ] },
|
||||
{ "id": "ko", "authors": [ "patrickgold", "Hayleia" ] },
|
||||
{ "id": "ko-KR", "authors": [ "Shunnuo" ] },
|
||||
{ "id": "ku", "authors": [ "GoRaN" ] },
|
||||
{ "id": "lt", "authors": [ "patrickgold" ] },
|
||||
{ "id": "lv", "authors": [ "patrickgold", "eandersons" ] },
|
||||
@@ -606,6 +607,15 @@
|
||||
"characters": "org.florisboard.layouts:korean"
|
||||
}
|
||||
},
|
||||
{
|
||||
"languageTag": "ko-KR",
|
||||
"composer": "org.florisboard.composers:hangul-unicode",
|
||||
"currencySet": "org.florisboard.currencysets:south_korean_won",
|
||||
"popupMapping": "org.florisboard.localization:ko",
|
||||
"preferred": {
|
||||
"characters": "org.florisboard.layouts:korean_phonetic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"languageTag": "lt-LT",
|
||||
"composer": "org.florisboard.composers:appender",
|
||||
|
||||
@@ -70,8 +70,9 @@
|
||||
]
|
||||
},
|
||||
"~right": {
|
||||
"main": { "code": 1611, "label": "ً" },
|
||||
"main": { "code": 1567, "label": "؟" },
|
||||
"relevant": [
|
||||
{ "code": 1611, "label": "ً" },
|
||||
{ "code": 1622, "label": "ٖ" },
|
||||
{ "code": 1648, "label": "ٰ" },
|
||||
{ "code": 1619, "label": "ٓ" },
|
||||
|
||||
@@ -113,19 +113,19 @@ import dev.patrickgold.florisboard.lib.util.debugSummarize
|
||||
import dev.patrickgold.florisboard.lib.util.launchActivity
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import java.lang.ref.WeakReference
|
||||
import kotlinx.coroutines.flow.update
|
||||
import org.florisboard.lib.android.AndroidInternalR
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.android.isOrientationLandscape
|
||||
import org.florisboard.lib.android.isOrientationPortrait
|
||||
import org.florisboard.lib.android.showShortToast
|
||||
import org.florisboard.lib.android.showShortToastSync
|
||||
import org.florisboard.lib.android.systemServiceOrNull
|
||||
import org.florisboard.lib.compose.ProvideLocalizedResources
|
||||
import org.florisboard.lib.kotlin.collectLatestIn
|
||||
import org.florisboard.lib.kotlin.collectIn
|
||||
import org.florisboard.lib.snygg.ui.SnyggBox
|
||||
import org.florisboard.lib.snygg.ui.SnyggButton
|
||||
import org.florisboard.lib.snygg.ui.SnyggRow
|
||||
import org.florisboard.lib.snygg.ui.SnyggSurfaceView
|
||||
import org.florisboard.lib.snygg.ui.SnyggText
|
||||
import org.florisboard.lib.snygg.ui.rememberSnyggThemeQuery
|
||||
|
||||
@@ -334,6 +334,11 @@ class FlorisImeService : LifecycleInputMethodService() {
|
||||
return defaultExtractView
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
themeManager.configurationChangeCounter.update { it + 1 }
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
unregisterReceiver(wallpaperChangeReceiver)
|
||||
@@ -355,7 +360,9 @@ class FlorisImeService : LifecycleInputMethodService() {
|
||||
if (info == null) return
|
||||
val editorInfo = FlorisEditorInfo.wrap(info)
|
||||
activeState.batchEdit {
|
||||
activeState.imeUiMode = ImeUiMode.TEXT
|
||||
if (activeState.imeUiMode != ImeUiMode.CLIPBOARD || prefs.clipboard.historyHideOnNextTextField.get()) {
|
||||
activeState.imeUiMode = ImeUiMode.TEXT
|
||||
}
|
||||
activeState.isSelectionMode = editorInfo.initialSelection.isSelectionMode
|
||||
editorInstance.handleStartInputView(editorInfo, isRestart = restarting)
|
||||
}
|
||||
@@ -423,6 +430,7 @@ class FlorisImeService : LifecycleInputMethodService() {
|
||||
}
|
||||
isWindowShown = false
|
||||
activeState.batchEdit {
|
||||
activeState.imeUiMode = ImeUiMode.TEXT
|
||||
activeState.isActionsOverflowVisible = false
|
||||
activeState.isActionsEditorVisible = false
|
||||
}
|
||||
@@ -621,9 +629,19 @@ class FlorisImeService : LifecycleInputMethodService() {
|
||||
clickAndSemanticsModifier = Modifier
|
||||
// Do not remove below line or touch input may get stuck
|
||||
.pointerInteropFilter { false },
|
||||
supportsBackgroundImage = true,
|
||||
supportsBackgroundImage = !AndroidVersion.ATLEAST_API30_R,
|
||||
allowClip = false,
|
||||
) {
|
||||
// The SurfaceView is used to render the background image under inline-autofill chips. These are only
|
||||
// available on Android >=11, and SurfaceView causes trouble on Android 8/9, thus we render the image
|
||||
// in the SurfaceView for Android >=11, and in the Compose View Tree for Android <=10.
|
||||
if (AndroidVersion.ATLEAST_API30_R) {
|
||||
SnyggSurfaceView(
|
||||
elementName = FlorisImeUi.Window.elementName,
|
||||
attributes = attributes,
|
||||
modifier = Modifier.matchParentSize(),
|
||||
)
|
||||
}
|
||||
val configuration = LocalConfiguration.current
|
||||
val bottomOffset by if (configuration.isOrientationPortrait()) {
|
||||
prefs.keyboard.bottomOffsetPortrait
|
||||
@@ -675,10 +693,13 @@ class FlorisImeService : LifecycleInputMethodService() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean =
|
||||
if (keyboardManager.onHardwareKeyDown(keyCode, event)) true
|
||||
else super.onKeyDown(keyCode, event)
|
||||
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return keyboardManager.onHardwareKeyDown(keyCode, event) || super.onKeyDown(keyCode, event)
|
||||
}
|
||||
|
||||
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
return keyboardManager.onHardwareKeyUp(keyCode, event) || super.onKeyUp(keyCode, event)
|
||||
}
|
||||
|
||||
private inner class ComposeInputView : AbstractComposeView(this) {
|
||||
init {
|
||||
|
||||
@@ -25,6 +25,7 @@ import dev.patrickgold.florisboard.app.settings.theme.DisplayKbdAfterDialogs
|
||||
import dev.patrickgold.florisboard.app.settings.theme.SnyggLevel
|
||||
import dev.patrickgold.florisboard.app.setup.NotificationPermissionState
|
||||
import dev.patrickgold.florisboard.ime.clipboard.CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO
|
||||
import dev.patrickgold.florisboard.ime.clipboard.ClipboardSyncBehavior
|
||||
import dev.patrickgold.florisboard.ime.core.DisplayLanguageNamesIn
|
||||
import dev.patrickgold.florisboard.ime.core.Subtype
|
||||
import dev.patrickgold.florisboard.ime.input.CapitalizationBehavior
|
||||
@@ -63,6 +64,7 @@ import dev.patrickgold.jetpref.datastore.model.LocalTime
|
||||
import dev.patrickgold.jetpref.datastore.model.PreferenceData
|
||||
import dev.patrickgold.jetpref.datastore.model.PreferenceMigrationEntry
|
||||
import dev.patrickgold.jetpref.datastore.model.PreferenceModel
|
||||
import dev.patrickgold.jetpref.datastore.model.PreferenceType
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import dev.patrickgold.jetpref.material.ui.ColorRepresentation
|
||||
import kotlinx.serialization.json.Json
|
||||
@@ -84,62 +86,13 @@ abstract class FlorisPreferenceModel : PreferenceModel() {
|
||||
key = "clipboard__use_internal_clipboard",
|
||||
default = false,
|
||||
)
|
||||
val syncToFloris = boolean(
|
||||
val syncToFloris = enum(
|
||||
key = "clipboard__sync_to_floris",
|
||||
default = true,
|
||||
default = ClipboardSyncBehavior.ALL_EVENTS,
|
||||
)
|
||||
val syncToSystem = boolean(
|
||||
val syncToSystem = enum(
|
||||
key = "clipboard__sync_to_system",
|
||||
default = false,
|
||||
)
|
||||
val historyEnabled = boolean(
|
||||
key = "clipboard__history_enabled",
|
||||
default = false,
|
||||
)
|
||||
val numHistoryGridColumnsPortrait = int(
|
||||
key = "clipboard__num_history_grid_columns_portrait",
|
||||
default = CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO,
|
||||
)
|
||||
val numHistoryGridColumnsLandscape = int(
|
||||
key = "clipboard__num_history_grid_columns_landscape",
|
||||
default = CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO,
|
||||
)
|
||||
@Composable
|
||||
fun numHistoryGridColumns(): PreferenceData<Int> {
|
||||
val configuration = LocalConfiguration.current
|
||||
return if (configuration.isOrientationPortrait()) {
|
||||
numHistoryGridColumnsPortrait
|
||||
} else {
|
||||
numHistoryGridColumnsLandscape
|
||||
}
|
||||
}
|
||||
val cleanUpOld = boolean(
|
||||
key = "clipboard__clean_up_old",
|
||||
default = false,
|
||||
)
|
||||
val cleanUpAfter = int(
|
||||
key = "clipboard__clean_up_after",
|
||||
default = 20,
|
||||
)
|
||||
val autoCleanSensitive = boolean(
|
||||
key = "clipboard__auto_clean_sensitive",
|
||||
default = false,
|
||||
)
|
||||
val autoCleanSensitiveAfter = int(
|
||||
key = "clipboard__auto_clean_sensitive_after",
|
||||
default = 20,
|
||||
)
|
||||
val limitHistorySize = boolean(
|
||||
key = "clipboard__limit_history_size",
|
||||
default = true,
|
||||
)
|
||||
val maxHistorySize = int(
|
||||
key = "clipboard__max_history_size",
|
||||
default = 20,
|
||||
)
|
||||
val clearPrimaryClipDeletesLastItem = boolean(
|
||||
key = "clipboard__clear_primary_clip_deletes_last_item",
|
||||
default = true,
|
||||
default = ClipboardSyncBehavior.NO_EVENTS,
|
||||
)
|
||||
val suggestionEnabled = boolean(
|
||||
key = "clipboard__suggestion_enabled",
|
||||
@@ -149,6 +102,63 @@ abstract class FlorisPreferenceModel : PreferenceModel() {
|
||||
key = "clipboard__suggestion_timeout",
|
||||
default = 60,
|
||||
)
|
||||
val historyEnabled = boolean(
|
||||
key = "clipboard__history_enabled",
|
||||
default = false,
|
||||
)
|
||||
val historyNumGridColumnsPortrait = int(
|
||||
key = "clipboard__history_num_grid_columns_portrait",
|
||||
default = CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO,
|
||||
)
|
||||
val historyNumGridColumnsLandscape = int(
|
||||
key = "clipboard__history_num_grid_columns_landscape",
|
||||
default = CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO,
|
||||
)
|
||||
@Composable
|
||||
fun historyNumGridColumns(): PreferenceData<Int> {
|
||||
val configuration = LocalConfiguration.current
|
||||
return if (configuration.isOrientationPortrait()) {
|
||||
historyNumGridColumnsPortrait
|
||||
} else {
|
||||
historyNumGridColumnsLandscape
|
||||
}
|
||||
}
|
||||
val historyAutoCleanOldEnabled = boolean(
|
||||
key = "clipboard__history_auto_clean_old_enabled",
|
||||
default = false,
|
||||
)
|
||||
val historyAutoCleanOldAfter = int(
|
||||
key = "clipboard__history_auto_clean_old_after",
|
||||
default = 20,
|
||||
)
|
||||
val historyAutoCleanSensitiveEnabled = boolean(
|
||||
key = "clipboard__history_auto_clean_sensitive_enabled",
|
||||
default = false,
|
||||
)
|
||||
val historyAutoCleanSensitiveAfter = int(
|
||||
key = "clipboard__history_auto_clean_sensitive_after",
|
||||
default = 20,
|
||||
)
|
||||
val historySizeLimitEnabled = boolean(
|
||||
key = "clipboard__history_size_limit_enabled",
|
||||
default = true,
|
||||
)
|
||||
val historySizeLimit = int(
|
||||
key = "clipboard__history_size_limit",
|
||||
default = 20,
|
||||
)
|
||||
val historyHideOnPaste = boolean(
|
||||
key = "clipboard__history_hide_on_paste",
|
||||
default = false,
|
||||
)
|
||||
val historyHideOnNextTextField = boolean(
|
||||
key = "clipboard__history_hide_on_next_text_field",
|
||||
default = true,
|
||||
)
|
||||
val clearPrimaryClipAffectsHistoryIfUnpinned = boolean(
|
||||
key = "clipboard__clear_primary_clip_affects_history_if_unpinned",
|
||||
default = true,
|
||||
)
|
||||
}
|
||||
|
||||
val correction = Correction()
|
||||
@@ -860,6 +870,11 @@ abstract class FlorisPreferenceModel : PreferenceModel() {
|
||||
dynamicActions = newArrangement.dynamicActions.plus(QuickAction.InsertKey(TextKeyData.LANGUAGE_SWITCH))
|
||||
)
|
||||
}
|
||||
if (QuickAction.InsertKey(TextKeyData.FORWARD_DELETE) !in newArrangement) {
|
||||
newArrangement = newArrangement.copy(
|
||||
dynamicActions = newArrangement.dynamicActions.plus(QuickAction.InsertKey(TextKeyData.FORWARD_DELETE))
|
||||
)
|
||||
}
|
||||
val json = QuickActionJsonConfig.encodeToString(newArrangement.distinct())
|
||||
entry.transform(rawValue = json)
|
||||
}
|
||||
@@ -877,6 +892,44 @@ abstract class FlorisPreferenceModel : PreferenceModel() {
|
||||
)
|
||||
}
|
||||
|
||||
// Migrate clipboard history pref names
|
||||
// Keep migration rules until: 0.7 dev cycle
|
||||
"clipboard__sync_to_floris", "clipboard__sync_to_system" -> {
|
||||
entry.transform(
|
||||
type = PreferenceType.string(),
|
||||
rawValue = when (entry.rawValue) {
|
||||
"true" -> ClipboardSyncBehavior.ALL_EVENTS
|
||||
else -> ClipboardSyncBehavior.NO_EVENTS
|
||||
}.name,
|
||||
)
|
||||
}
|
||||
"clipboard__num_history_grid_columns_portrait" -> {
|
||||
entry.transform(key = "clipboard__history_num_grid_columns_portrait")
|
||||
}
|
||||
"clipboard__num_history_grid_columns_landscape" -> {
|
||||
entry.transform(key = "clipboard__history_num_grid_columns_landscape")
|
||||
}
|
||||
"clipboard__clean_up_old" -> {
|
||||
entry.transform(key = "clipboard__history_auto_clean_old_enabled")
|
||||
}
|
||||
"clipboard__clean_up_after" -> {
|
||||
entry.transform(key = "clipboard__history_auto_clean_old_after")
|
||||
}
|
||||
"clipboard__auto_clean_sensitive" -> {
|
||||
entry.transform(key = "clipboard__history_auto_clean_sensitive_enabled")
|
||||
}
|
||||
"clipboard__auto_clean_sensitive_after" -> {
|
||||
entry.transform(key = "clipboard__history_auto_clean_sensitive_after")
|
||||
}
|
||||
"clipboard__limit_history_size" -> {
|
||||
entry.transform(key = "clipboard__history_size_limit_enabled")
|
||||
}
|
||||
"clipboard__max_history_size" -> {
|
||||
entry.transform(key = "clipboard__history_size_limit")
|
||||
}
|
||||
"clipboard__clear_primary_clip_deletes_last_item" -> {
|
||||
entry.transform(key = "clipboard__clear_primary_clip_affects_history_if_unpinned")
|
||||
}
|
||||
|
||||
// Default: keep entry
|
||||
else -> entry.keepAsIs()
|
||||
|
||||
@@ -20,6 +20,7 @@ import androidx.compose.runtime.Composable
|
||||
import dev.patrickgold.florisboard.R
|
||||
import dev.patrickgold.florisboard.app.settings.theme.DisplayKbdAfterDialogs
|
||||
import dev.patrickgold.florisboard.app.settings.theme.SnyggLevel
|
||||
import dev.patrickgold.florisboard.ime.clipboard.ClipboardSyncBehavior
|
||||
import dev.patrickgold.florisboard.ime.core.DisplayLanguageNamesIn
|
||||
import dev.patrickgold.florisboard.ime.input.CapitalizationBehavior
|
||||
import dev.patrickgold.florisboard.ime.input.HapticVibrationMode
|
||||
@@ -104,6 +105,30 @@ private val ENUM_DISPLAY_ENTRIES = mapOf<Pair<KClass<*>, String>, @Composable ()
|
||||
)
|
||||
}
|
||||
},
|
||||
ClipboardSyncBehavior::class to DEFAULT to {
|
||||
listPrefEntries {
|
||||
entry(
|
||||
key = ClipboardSyncBehavior.NO_EVENTS,
|
||||
label = stringRes(R.string.enum__clipboard_sync_behavior__no_events),
|
||||
description = stringRes(R.string.enum__clipboard_sync_behavior__no_events__description),
|
||||
)
|
||||
entry(
|
||||
key = ClipboardSyncBehavior.ONLY_CLEAR_EVENTS,
|
||||
label = stringRes(R.string.enum__clipboard_sync_behavior__only_clear_events),
|
||||
description = stringRes(R.string.enum__clipboard_sync_behavior__only_clear_events__description),
|
||||
)
|
||||
entry(
|
||||
key = ClipboardSyncBehavior.ONLY_SET_EVENTS,
|
||||
label = stringRes(R.string.enum__clipboard_sync_behavior__only_set_events),
|
||||
description = stringRes(R.string.enum__clipboard_sync_behavior__only_set_events__description),
|
||||
)
|
||||
entry(
|
||||
key = ClipboardSyncBehavior.ALL_EVENTS,
|
||||
label = stringRes(R.string.enum__clipboard_sync_behavior__all_events),
|
||||
description = stringRes(R.string.enum__clipboard_sync_behavior__all_events__description),
|
||||
)
|
||||
}
|
||||
},
|
||||
ColorRepresentation::class to DEFAULT to {
|
||||
listPrefEntries {
|
||||
entry(
|
||||
|
||||
@@ -40,6 +40,7 @@ import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import dev.patrickgold.florisboard.app.FlorisPreferenceStore
|
||||
import dev.patrickgold.florisboard.appContext
|
||||
import dev.patrickgold.florisboard.clipboardManager
|
||||
import dev.patrickgold.florisboard.editorInstance
|
||||
import dev.patrickgold.florisboard.ime.keyboard.CachedLayout
|
||||
@@ -52,10 +53,10 @@ import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||
import dev.patrickgold.florisboard.nlpManager
|
||||
import dev.patrickgold.florisboard.themeManager
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.snygg.SnyggMissingSchemaException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.snygg.SnyggMissingSchemaException
|
||||
|
||||
private val CardBackground = Color.Black.copy(0.6f)
|
||||
private val DateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss", FlorisLocale.default().base)
|
||||
@@ -64,6 +65,7 @@ private val DateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss", FlorisLocale.
|
||||
fun DevtoolsOverlay(modifier: Modifier = Modifier) {
|
||||
val context = LocalContext.current
|
||||
val prefs by FlorisPreferenceStore
|
||||
val appContext by context.appContext()
|
||||
val keyboardManager by context.keyboardManager()
|
||||
val themeManager by context.themeManager()
|
||||
|
||||
@@ -72,6 +74,7 @@ fun DevtoolsOverlay(modifier: Modifier = Modifier) {
|
||||
val showInputStateOverlay by prefs.devtools.showInputStateOverlay.observeAsState()
|
||||
val showSpellingOverlay by prefs.devtools.showSpellingOverlay.observeAsState()
|
||||
val showInlineAutofillOverlay by prefs.devtools.showInlineAutofillOverlay.observeAsState()
|
||||
val prefsLoaded by appContext.preferenceStoreLoaded.collectAsState()
|
||||
|
||||
val debugLayoutResult by keyboardManager.layoutManager.debugLayoutComputationResultFlow.collectAsState()
|
||||
val themeInfo by themeManager.activeThemeInfo.collectAsState()
|
||||
@@ -97,7 +100,7 @@ fun DevtoolsOverlay(modifier: Modifier = Modifier) {
|
||||
DevtoolsInlineAutofillOverlay()
|
||||
}
|
||||
val loadFailure = themeInfo.loadFailure
|
||||
if (loadFailure != null) {
|
||||
if (loadFailure != null && prefsLoaded) {
|
||||
DevtoolsStylesheetFailedToLoadOverlay(loadFailure)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -628,7 +628,7 @@ private fun <T : ExtensionComponent> CreateComponentScreen(
|
||||
for (theme in editor.themes) {
|
||||
put(ExtensionComponentName(extId, theme.id), theme)
|
||||
}
|
||||
for ((componentName, theme) in themeManager.indexedThemeConfigs.value ?: emptyMap()) {
|
||||
for ((componentName, theme) in themeManager.indexedThemeConfigs.value.first) {
|
||||
if (componentName.extensionId != extId) {
|
||||
put(componentName, theme)
|
||||
}
|
||||
@@ -710,7 +710,7 @@ private fun <T : ExtensionComponent> CreateComponentScreen(
|
||||
}
|
||||
editor.themes.add(componentEditor)
|
||||
} else {
|
||||
val component = themeManager.indexedThemeConfigs.value?.get(componentName) ?: return
|
||||
val component = themeManager.indexedThemeConfigs.value.first.get(componentName) ?: return
|
||||
val componentEditor = (component as? ThemeExtensionComponentImpl)?.edit() ?: return
|
||||
componentEditor.id = componentId
|
||||
componentEditor.stylesheetPath = ""
|
||||
|
||||
@@ -194,7 +194,8 @@ fun BackupScreen() = FlorisScreen {
|
||||
}
|
||||
|
||||
if (backupFilesSelector.provideClipboardItems()) {
|
||||
val clipboardHistory = context.clipboardManager().value.history().all
|
||||
val clipboardManager by context.clipboardManager()
|
||||
val clipboardHistory = clipboardManager.currentHistory.all
|
||||
val clipboardFilesDir = workspace.inputDir.subDir("clipboard")
|
||||
clipboardFilesDir.mkdir()
|
||||
if (backupFilesSelector.clipboardTextItems) {
|
||||
|
||||
@@ -148,11 +148,13 @@ fun RestoreScreen() = FlorisScreen {
|
||||
val workspace = restoreWorkspace!!
|
||||
val shouldReset = importStrategy == ImportStrategy.Erase
|
||||
if (restoreFilesSelector.jetprefDatastore) {
|
||||
val fileBasedStorage = workspace.outputDir
|
||||
val file = workspace.outputDir
|
||||
.subDir(AndroidAppDataStorage.JETPREF_DIR_NAME)
|
||||
.subFile("${FlorisPreferenceModel.NAME}.${AndroidAppDataStorage.JETPREF_FILE_EXT}")
|
||||
.let { FileBasedStorage(it.path) }
|
||||
FlorisPreferenceStore.import(importStrategy, fileBasedStorage).getOrThrow()
|
||||
if (file.exists()) {
|
||||
val fileBasedStorage = FileBasedStorage(file.path)
|
||||
FlorisPreferenceStore.import(importStrategy, fileBasedStorage).getOrThrow()
|
||||
}
|
||||
}
|
||||
val workspaceFilesDir = workspace.outputDir.subDir("files")
|
||||
if (restoreFilesSelector.imeKeyboard) {
|
||||
|
||||
@@ -18,10 +18,13 @@ package dev.patrickgold.florisboard.app.settings.clipboard
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import dev.patrickgold.florisboard.R
|
||||
import dev.patrickgold.florisboard.app.enumDisplayEntriesOf
|
||||
import dev.patrickgold.florisboard.ime.clipboard.CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO
|
||||
import dev.patrickgold.florisboard.ime.clipboard.ClipboardSyncBehavior
|
||||
import dev.patrickgold.florisboard.lib.compose.FlorisScreen
|
||||
import dev.patrickgold.jetpref.datastore.ui.DialogSliderPreference
|
||||
import dev.patrickgold.jetpref.datastore.ui.ExperimentalJetPrefDatastoreUi
|
||||
import dev.patrickgold.jetpref.datastore.ui.ListPreference
|
||||
import dev.patrickgold.jetpref.datastore.ui.PreferenceGroup
|
||||
import dev.patrickgold.jetpref.datastore.ui.SwitchPreference
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
@@ -40,16 +43,16 @@ fun ClipboardScreen() = FlorisScreen {
|
||||
title = stringRes(R.string.pref__clipboard__use_internal_clipboard__label),
|
||||
summary = stringRes(R.string.pref__clipboard__use_internal_clipboard__summary),
|
||||
)
|
||||
SwitchPreference(
|
||||
ListPreference(
|
||||
prefs.clipboard.syncToFloris,
|
||||
title = stringRes(R.string.pref__clipboard__sync_from_system_clipboard__label),
|
||||
summary = stringRes(R.string.pref__clipboard__sync_from_system_clipboard__summary),
|
||||
entries = enumDisplayEntriesOf(ClipboardSyncBehavior::class),
|
||||
enabledIf = { prefs.clipboard.useInternalClipboard isEqualTo true },
|
||||
)
|
||||
SwitchPreference(
|
||||
ListPreference(
|
||||
prefs.clipboard.syncToSystem,
|
||||
title = stringRes(R.string.pref__clipboard__sync_to_system_clipboard__label),
|
||||
summary = stringRes(R.string.pref__clipboard__sync_to_system_clipboard__summary),
|
||||
entries = enumDisplayEntriesOf(ClipboardSyncBehavior::class),
|
||||
enabledIf = { prefs.clipboard.useInternalClipboard isEqualTo true },
|
||||
)
|
||||
|
||||
@@ -77,8 +80,8 @@ fun ClipboardScreen() = FlorisScreen {
|
||||
summary = stringRes(R.string.pref__clipboard__enable_clipboard_history__summary),
|
||||
)
|
||||
DialogSliderPreference(
|
||||
primaryPref = prefs.clipboard.numHistoryGridColumnsPortrait,
|
||||
secondaryPref = prefs.clipboard.numHistoryGridColumnsLandscape,
|
||||
primaryPref = prefs.clipboard.historyNumGridColumnsPortrait,
|
||||
secondaryPref = prefs.clipboard.historyNumGridColumnsLandscape,
|
||||
title = stringRes(R.string.pref__clipboard__num_history_grid_columns__label),
|
||||
primaryLabel = stringRes(R.string.screen_orientation__portrait),
|
||||
secondaryLabel = stringRes(R.string.screen_orientation__landscape),
|
||||
@@ -95,53 +98,65 @@ fun ClipboardScreen() = FlorisScreen {
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true },
|
||||
)
|
||||
SwitchPreference(
|
||||
prefs.clipboard.cleanUpOld,
|
||||
prefs.clipboard.historyAutoCleanOldEnabled,
|
||||
title = stringRes(R.string.pref__clipboard__clean_up_old__label),
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true },
|
||||
)
|
||||
DialogSliderPreference(
|
||||
prefs.clipboard.cleanUpAfter,
|
||||
prefs.clipboard.historyAutoCleanOldAfter,
|
||||
title = stringRes(R.string.pref__clipboard__clean_up_after__label),
|
||||
valueLabel = { pluralsRes(R.plurals.unit__minutes__written, it, "v" to it) },
|
||||
min = 0,
|
||||
max = 120,
|
||||
stepIncrement = 5,
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true && prefs.clipboard.cleanUpOld isEqualTo true },
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true && prefs.clipboard.historyAutoCleanOldEnabled isEqualTo true },
|
||||
)
|
||||
SwitchPreference(
|
||||
prefs.clipboard.autoCleanSensitive,
|
||||
prefs.clipboard.historyAutoCleanSensitiveEnabled,
|
||||
title = stringRes(R.string.pref__clipboard__auto_clean_sensitive__label),
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true },
|
||||
visibleIf = { AndroidVersion.ATLEAST_API33_T },
|
||||
)
|
||||
DialogSliderPreference(
|
||||
prefs.clipboard.autoCleanSensitiveAfter,
|
||||
prefs.clipboard.historyAutoCleanSensitiveAfter,
|
||||
title = stringRes(R.string.pref__clipboard__auto_clean_sensitive_after__label),
|
||||
valueLabel = { pluralsRes(R.plurals.unit__seconds__written, it, "v" to it) },
|
||||
min = 0,
|
||||
max = 300,
|
||||
stepIncrement = 10,
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true && prefs.clipboard.autoCleanSensitive isEqualTo true },
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true && prefs.clipboard.historyAutoCleanSensitiveEnabled isEqualTo true },
|
||||
visibleIf = { AndroidVersion.ATLEAST_API33_T },
|
||||
)
|
||||
SwitchPreference(
|
||||
prefs.clipboard.limitHistorySize,
|
||||
prefs.clipboard.historySizeLimitEnabled,
|
||||
title = stringRes(R.string.pref__clipboard__limit_history_size__label),
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true },
|
||||
)
|
||||
DialogSliderPreference(
|
||||
prefs.clipboard.maxHistorySize,
|
||||
prefs.clipboard.historySizeLimit,
|
||||
title = stringRes(R.string.pref__clipboard__max_history_size__label),
|
||||
valueLabel = { pluralsRes(R.plurals.unit__items__written, it, "v" to it) },
|
||||
min = 5,
|
||||
max = 100,
|
||||
stepIncrement = 5,
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true && prefs.clipboard.limitHistorySize isEqualTo true },
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true && prefs.clipboard.historySizeLimitEnabled isEqualTo true },
|
||||
)
|
||||
|
||||
SwitchPreference(
|
||||
prefs.clipboard.historyHideOnPaste,
|
||||
title = stringRes(R.string.pref__clipboard__history_hide_on_paste__label),
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true }
|
||||
)
|
||||
SwitchPreference(
|
||||
prefs.clipboard.clearPrimaryClipDeletesLastItem,
|
||||
title = stringRes(R.string.pref__clipboard__clear_primary_clip_deletes_last_item__label),
|
||||
summary = stringRes(R.string.pref__clipboard__clear_primary_clip_deletes_last_item__summary),
|
||||
prefs.clipboard.historyHideOnNextTextField,
|
||||
title = stringRes(R.string.pref__clipboard__history_hide_on_next_text_field__label),
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true }
|
||||
)
|
||||
|
||||
SwitchPreference(
|
||||
prefs.clipboard.clearPrimaryClipAffectsHistoryIfUnpinned,
|
||||
title = stringRes(R.string.pref__clipboard__clear_primary_clip_affects_history_if_unpinned__label),
|
||||
summary = stringRes(R.string.pref__clipboard__clear_primary_clip_affects_history_if_unpinned__summary),
|
||||
enabledIf = { prefs.clipboard.historyEnabled isEqualTo true },
|
||||
)
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ fun ThemeScreen() = FlorisScreen {
|
||||
@Composable
|
||||
fun ThemeManager.getThemeLabel(id: ExtensionComponentName): String {
|
||||
val configs by indexedThemeConfigs.collectAsState()
|
||||
configs[id]?.let { return it.label }
|
||||
configs.first[id]?.let { return it.label }
|
||||
return id.toString()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2025 The FlorisBoard Contributors
|
||||
*
|
||||
* 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.clipboard
|
||||
|
||||
import dev.patrickgold.florisboard.ime.clipboard.provider.ClipboardItem
|
||||
|
||||
data class ClipboardHistory(val all: List<ClipboardItem>) {
|
||||
companion object {
|
||||
private const val RECENT_TIMESPAN_MS = 300_000 // 300 sec = 5 min
|
||||
|
||||
val EMPTY = ClipboardHistory(emptyList())
|
||||
}
|
||||
|
||||
private val now = System.currentTimeMillis()
|
||||
|
||||
val pinned = all.filter { it.isPinned }
|
||||
val unpinned = all.filter { !it.isPinned }
|
||||
val recent = unpinned.filter { (now - it.creationTimestampMs) < RECENT_TIMESPAN_MS }
|
||||
val other = unpinned.filter { (now - it.creationTimestampMs) >= RECENT_TIMESPAN_MS }
|
||||
}
|
||||
@@ -63,13 +63,14 @@ import androidx.compose.material.icons.filled.TextFields
|
||||
import androidx.compose.material.icons.filled.ToggleOff
|
||||
import androidx.compose.material.icons.filled.ToggleOn
|
||||
import androidx.compose.material.icons.filled.Videocam
|
||||
import androidx.compose.material.icons.outlined.ContentPaste
|
||||
import androidx.compose.material.icons.outlined.ContentPasteGo
|
||||
import androidx.compose.material.icons.outlined.Email
|
||||
import androidx.compose.material.icons.outlined.PushPin
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.ripple
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.mutableStateSetOf
|
||||
@@ -102,7 +103,6 @@ import dev.patrickgold.florisboard.ime.smartbar.VerticalExitTransition
|
||||
import dev.patrickgold.florisboard.ime.text.keyboard.TextKeyData
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.observeAsNonNullState
|
||||
import dev.patrickgold.florisboard.lib.observeAsTransformingState
|
||||
import dev.patrickgold.florisboard.lib.util.NetworkUtils
|
||||
import dev.patrickgold.jetpref.datastore.model.observeAsState
|
||||
@@ -111,7 +111,6 @@ import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import org.florisboard.lib.android.AndroidKeyguardManager
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.android.showShortToast
|
||||
import org.florisboard.lib.android.showShortToastSync
|
||||
import org.florisboard.lib.android.systemService
|
||||
import org.florisboard.lib.compose.LocalLocalizedDateTimeFormatter
|
||||
@@ -148,23 +147,23 @@ fun ClipboardInputLayout(
|
||||
|
||||
val deviceLocked = androidKeyguardManager.let { it.isDeviceLocked || it.isKeyguardLocked }
|
||||
val historyEnabled by prefs.clipboard.historyEnabled.observeAsState()
|
||||
val unfilteredHistory by clipboardManager.history.observeAsNonNullState()
|
||||
|
||||
var isFilterRowShown by remember { mutableStateOf(false) }
|
||||
val activeFilterTypes = remember { mutableStateSetOf<ItemType>() }
|
||||
|
||||
val history = remember(unfilteredHistory, activeFilterTypes.toSet()) {
|
||||
val unfilteredHistory by clipboardManager.historyFlow.collectAsState()
|
||||
val filteredHistory = remember(unfilteredHistory, activeFilterTypes.toSet()) {
|
||||
if (activeFilterTypes.isEmpty()) {
|
||||
unfilteredHistory
|
||||
} else {
|
||||
unfilteredHistory.all
|
||||
.filter { activeFilterTypes.contains(it.type) }
|
||||
.let { ClipboardManager.ClipboardHistory(it) }
|
||||
.let { ClipboardHistory(it) }
|
||||
}
|
||||
}
|
||||
|
||||
val gridState = rememberLazyStaggeredGridState()
|
||||
var popupItem by remember(history) { mutableStateOf<ClipboardItem?>(null) }
|
||||
var popupItem by remember(filteredHistory) { mutableStateOf<ClipboardItem?>(null) }
|
||||
var showClearAllHistory by remember { mutableStateOf(false) }
|
||||
|
||||
fun isPopupSurfaceActive() = popupItem != null || showClearAllHistory
|
||||
@@ -223,7 +222,7 @@ fun ClipboardInputLayout(
|
||||
elementName = FlorisImeUi.ClipboardHeaderButton.elementName,
|
||||
onClick = { showClearAllHistory = true },
|
||||
modifier = sizeModifier.autoMirrorForRtl(),
|
||||
enabled = !deviceLocked && historyEnabled && unfilteredHistory.all.isNotEmpty() && !isPopupSurfaceActive(),
|
||||
enabled = !deviceLocked && historyEnabled && filteredHistory.all.isNotEmpty() && !isPopupSurfaceActive(),
|
||||
) {
|
||||
SnyggIcon(
|
||||
imageVector = Icons.Default.DeleteSweep,
|
||||
@@ -371,7 +370,7 @@ fun ClipboardInputLayout(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
val historyAlpha by animateFloatAsState(targetValue = if (isPopupSurfaceActive()) 0.12f else 1f)
|
||||
val staggeredGridCells by prefs.clipboard.numHistoryGridColumns()
|
||||
val staggeredGridCells by prefs.clipboard.historyNumGridColumns()
|
||||
.observeAsTransformingState { numGridColumns ->
|
||||
if (numGridColumns == CLIPBOARD_HISTORY_NUM_GRID_COLUMNS_AUTO) {
|
||||
StaggeredGridCells.Adaptive(160.dp)
|
||||
@@ -468,17 +467,17 @@ fun ClipboardInputLayout(
|
||||
columns = staggeredGridCells,
|
||||
) {
|
||||
clipboardItems(
|
||||
items = history.pinned,
|
||||
items = filteredHistory.pinned,
|
||||
key = "pinned-header",
|
||||
title = R.string.clipboard__group_pinned,
|
||||
)
|
||||
clipboardItems(
|
||||
items = history.recent,
|
||||
items = filteredHistory.recent,
|
||||
key = "recent-header",
|
||||
title = R.string.clipboard__group_recent,
|
||||
)
|
||||
clipboardItems(
|
||||
items = history.other,
|
||||
items = filteredHistory.other,
|
||||
key = "other-header",
|
||||
title = R.string.clipboard__group_other,
|
||||
)
|
||||
@@ -499,7 +498,9 @@ fun ClipboardInputLayout(
|
||||
SnyggColumn(modifier = Modifier.weight(0.5f)) {
|
||||
ClipItemView(
|
||||
elementName = FlorisImeUi.ClipboardItemPopup.elementName,
|
||||
modifier = Modifier.widthIn(max = ItemWidth),
|
||||
modifier = Modifier
|
||||
.widthIn(max = ItemWidth)
|
||||
.weight(1f, fill = false),
|
||||
item = popupItem!!,
|
||||
contentScrollInsteadOfClip = true,
|
||||
)
|
||||
@@ -532,11 +533,11 @@ fun ClipboardInputLayout(
|
||||
icon = Icons.Default.Delete,
|
||||
text = stringRes(R.string.clip__delete_item),
|
||||
) {
|
||||
clipboardManager.deleteClip(popupItem!!)
|
||||
clipboardManager.deleteClip(popupItem!!, onlyIfUnpinned = false)
|
||||
popupItem = null
|
||||
}
|
||||
PopupAction(
|
||||
icon = Icons.Outlined.ContentPaste,
|
||||
icon = Icons.Outlined.ContentPasteGo,
|
||||
text = stringRes(R.string.clip__paste_item),
|
||||
) {
|
||||
clipboardManager.pasteItem(popupItem!!)
|
||||
@@ -567,7 +568,13 @@ fun ClipboardInputLayout(
|
||||
) {
|
||||
SnyggText(
|
||||
elementName = FlorisImeUi.ClipboardClearAllDialogMessage.elementName,
|
||||
text = stringRes(R.string.clipboard__confirm_clear_history__message),
|
||||
text = stringRes(
|
||||
if (isFilterRowShown) {
|
||||
R.string.clipboard__confirm_clear_filtered_history__message
|
||||
} else {
|
||||
R.string.clipboard__confirm_clear_unfiltered_history__message
|
||||
}
|
||||
),
|
||||
)
|
||||
SnyggRow(FlorisImeUi.ClipboardClearAllDialogButtons.elementName) {
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
@@ -586,10 +593,9 @@ fun ClipboardInputLayout(
|
||||
elementName = FlorisImeUi.ClipboardClearAllDialogButton.elementName,
|
||||
attributes = mapOf("action" to "yes"),
|
||||
onClick = {
|
||||
clipboardManager.clearHistory()
|
||||
clipboardManager.clearExactHistory(filteredHistory.unpinned)
|
||||
context.showShortToastSync(R.string.clipboard__cleared_history)
|
||||
showClearAllHistory = false
|
||||
isFilterRowShown = false
|
||||
},
|
||||
) {
|
||||
SnyggText(
|
||||
@@ -670,7 +676,7 @@ fun ClipboardInputLayout(
|
||||
HistoryLockedView()
|
||||
} else {
|
||||
if (historyEnabled) {
|
||||
if (history.all.isNotEmpty() || !activeFilterTypes.isEmpty()) {
|
||||
if (filteredHistory.all.isNotEmpty() || !activeFilterTypes.isEmpty()) {
|
||||
HistoryMainView()
|
||||
} else {
|
||||
HistoryEmptyView()
|
||||
|
||||
@@ -18,8 +18,6 @@ package dev.patrickgold.florisboard.ime.clipboard
|
||||
|
||||
import android.content.ClipData
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import dev.patrickgold.florisboard.app.FlorisPreferenceStore
|
||||
import dev.patrickgold.florisboard.appContext
|
||||
import dev.patrickgold.florisboard.editorInstance
|
||||
@@ -41,8 +39,8 @@ import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.florisboard.lib.android.AndroidClipboardManager
|
||||
import org.florisboard.lib.android.AndroidClipboardManager_OnPrimaryClipChangedListener
|
||||
import org.florisboard.lib.android.clearPrimaryClipAnyApi
|
||||
import org.florisboard.lib.android.setOrClearPrimaryClip
|
||||
import org.florisboard.lib.android.showShortToast
|
||||
import org.florisboard.lib.android.showShortToastSync
|
||||
import org.florisboard.lib.android.systemService
|
||||
import org.florisboard.lib.kotlin.tryOrNull
|
||||
@@ -62,7 +60,6 @@ class ClipboardManager(
|
||||
companion object {
|
||||
// 1 minute
|
||||
private const val INTERVAL = 60 * 1000L
|
||||
private const val RECENT_TIMESPAN_MS = 300_000 // 300 sec = 5 min
|
||||
|
||||
/**
|
||||
* Taken from ClipboardDescription.java from the AOSP
|
||||
@@ -101,8 +98,10 @@ class ClipboardManager(
|
||||
private var clipHistoryDb: ClipboardHistoryDatabase? = null
|
||||
private val clipHistoryDao: ClipboardHistoryDao? get() = clipHistoryDb?.clipboardItemDao()
|
||||
|
||||
private val _history = MutableLiveData(ClipboardHistory.Empty)
|
||||
val history: LiveData<ClipboardHistory> get() = _history
|
||||
private val _historyFlow = MutableStateFlow(ClipboardHistory.EMPTY)
|
||||
val historyFlow = _historyFlow.asStateFlow()
|
||||
val currentHistory: ClipboardHistory
|
||||
get() = historyFlow.value
|
||||
|
||||
private val primaryClipLastFromCallbackGuard = Mutex(locked = false)
|
||||
private var primaryClipLastFromCallback: ClipData? = null
|
||||
@@ -119,7 +118,7 @@ class ClipboardManager(
|
||||
cleanUpJob = ioScope.launch {
|
||||
while (isActive) {
|
||||
delay(INTERVAL)
|
||||
enforceExpiryDate(history())
|
||||
enforceExpiryDate(currentHistory)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -141,20 +140,21 @@ class ClipboardManager(
|
||||
val itemsSorted = items.sortedByDescending { it.creationTimestampMs }
|
||||
val clipHistory = ClipboardHistory(itemsSorted)
|
||||
enforceHistoryLimit(clipHistory)
|
||||
_history.postValue(clipHistory)
|
||||
_historyFlow.value = clipHistory
|
||||
}
|
||||
|
||||
fun history(): ClipboardHistory = history.value!!
|
||||
|
||||
/**
|
||||
* Sets the current primary clip without updating the internal clipboard history.
|
||||
*/
|
||||
fun updatePrimaryClip(item: ClipboardItem?) {
|
||||
primaryClip = item
|
||||
if (prefs.clipboard.useInternalClipboard.get()) {
|
||||
// Purposely do not sync to system if disabled in prefs
|
||||
if (prefs.clipboard.syncToSystem.get()) {
|
||||
systemClipboardManager.setOrClearPrimaryClip(item?.toClipData(appContext))
|
||||
val syncBehavior = prefs.clipboard.syncToSystem.get()
|
||||
val clipData = item?.toClipData(appContext)
|
||||
if (clipData != null && syncBehavior.shouldSyncSet) {
|
||||
systemClipboardManager.setPrimaryClip(clipData)
|
||||
} else if (clipData == null && syncBehavior.shouldSyncClear) {
|
||||
systemClipboardManager.clearPrimaryClipAnyApi()
|
||||
}
|
||||
} else {
|
||||
systemClipboardManager.setOrClearPrimaryClip(item?.toClipData(appContext))
|
||||
@@ -165,7 +165,8 @@ class ClipboardManager(
|
||||
* Called by system clipboard when the system primary clip has changed.
|
||||
*/
|
||||
override fun onPrimaryClipChanged() {
|
||||
if (!prefs.clipboard.useInternalClipboard.get() || prefs.clipboard.syncToFloris.get()) {
|
||||
val syncBehavior = prefs.clipboard.syncToFloris.get()
|
||||
if (!prefs.clipboard.useInternalClipboard.get() || syncBehavior != ClipboardSyncBehavior.NO_EVENTS) {
|
||||
val systemPrimaryClip = systemClipboardManager.primaryClip
|
||||
ioScope.launch {
|
||||
val isDuplicate: Boolean
|
||||
@@ -173,7 +174,7 @@ class ClipboardManager(
|
||||
val a = primaryClipLastFromCallback?.getItemAt(0)
|
||||
val b = systemPrimaryClip?.getItemAt(0)
|
||||
isDuplicate = when {
|
||||
a === b || a == null && b == null -> true
|
||||
a === b -> true
|
||||
a == null || b == null -> false
|
||||
else -> a.text == b.text && a.uri == b.uri
|
||||
}
|
||||
@@ -184,12 +185,20 @@ class ClipboardManager(
|
||||
val internalPrimaryClip = primaryClip
|
||||
|
||||
if (systemPrimaryClip == null) {
|
||||
primaryClip = null
|
||||
if (syncBehavior.shouldSyncClear) {
|
||||
primaryClip = null
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
|
||||
if (systemPrimaryClip.getItemAt(0).let { it.text == null && it.uri == null }) {
|
||||
primaryClip = null
|
||||
if (syncBehavior.shouldSyncClear) {
|
||||
primaryClip = null
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
|
||||
if (!syncBehavior.shouldSyncSet) {
|
||||
return@launch
|
||||
}
|
||||
|
||||
@@ -224,7 +233,7 @@ class ClipboardManager(
|
||||
*/
|
||||
private fun insertOrMoveBeginning(newItem: ClipboardItem) {
|
||||
if (prefs.clipboard.historyEnabled.get()) {
|
||||
val historyElement = history().all.firstOrNull { it.type == ItemType.TEXT && it.text == newItem.text }
|
||||
val historyElement = currentHistory.all.firstOrNull { it.type == ItemType.TEXT && it.text == newItem.text }
|
||||
if (historyElement != null) {
|
||||
moveToTheBeginning(
|
||||
oldItem = historyElement,
|
||||
@@ -241,9 +250,9 @@ class ClipboardManager(
|
||||
}
|
||||
|
||||
private fun enforceHistoryLimit(clipHistory: ClipboardHistory) {
|
||||
if (prefs.clipboard.limitHistorySize.get()) {
|
||||
if (prefs.clipboard.historySizeLimitEnabled.get()) {
|
||||
val nonPinnedItems = clipHistory.recent + clipHistory.other
|
||||
val nToRemove = nonPinnedItems.size - prefs.clipboard.maxHistorySize.get()
|
||||
val nToRemove = nonPinnedItems.size - prefs.clipboard.historySizeLimit.get()
|
||||
if (nToRemove > 0) {
|
||||
val itemsToRemove = nonPinnedItems.asReversed().filterIndexed { n, _ -> n < nToRemove }
|
||||
ioScope.launch {
|
||||
@@ -255,14 +264,14 @@ class ClipboardManager(
|
||||
|
||||
private fun enforceExpiryDate(clipHistory: ClipboardHistory) {
|
||||
val itemsToRemove = mutableSetOf<ClipboardItem>()
|
||||
if (prefs.clipboard.cleanUpOld.get()) {
|
||||
if (prefs.clipboard.historyAutoCleanOldEnabled.get()) {
|
||||
val nonPinnedItems = clipHistory.recent + clipHistory.other
|
||||
val expiryTime = System.currentTimeMillis() - (prefs.clipboard.cleanUpAfter.get() * 60 * 1000)
|
||||
val expiryTime = System.currentTimeMillis() - (prefs.clipboard.historyAutoCleanOldAfter.get() * 60 * 1000)
|
||||
itemsToRemove.addAll(nonPinnedItems.filter { it.creationTimestampMs < expiryTime })
|
||||
}
|
||||
if (prefs.clipboard.autoCleanSensitive.get()) {
|
||||
if (prefs.clipboard.historyAutoCleanSensitiveEnabled.get()) {
|
||||
val sensitiveData = clipHistory.all.filter { it.isSensitive }
|
||||
val expiryTime = System.currentTimeMillis() - (prefs.clipboard.autoCleanSensitiveAfter.get() * 1000)
|
||||
val expiryTime = System.currentTimeMillis() - (prefs.clipboard.historyAutoCleanSensitiveAfter.get() * 1000)
|
||||
itemsToRemove.addAll(sensitiveData.filter { it.creationTimestampMs < expiryTime })
|
||||
}
|
||||
if (itemsToRemove.isNotEmpty()) {
|
||||
@@ -274,7 +283,7 @@ class ClipboardManager(
|
||||
|
||||
private fun moveToTheBeginning(oldItem: ClipboardItem, newItem: ClipboardItem) {
|
||||
ioScope.launch {
|
||||
clipHistoryDao?.delete(oldItem)
|
||||
clipHistoryDao?.delete(oldItem.id)
|
||||
clipHistoryDao?.insert(newItem)
|
||||
}
|
||||
}
|
||||
@@ -286,12 +295,21 @@ class ClipboardManager(
|
||||
}
|
||||
}
|
||||
|
||||
fun clearExactHistory(items: List<ClipboardItem>) {
|
||||
ioScope.launch {
|
||||
for (item in items) {
|
||||
item.close(appContext)
|
||||
}
|
||||
clipHistoryDao?.delete(items)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all unpinned items from the clipboard history
|
||||
*/
|
||||
fun clearHistory() {
|
||||
ioScope.launch {
|
||||
for (item in history().all) {
|
||||
for (item in currentHistory.all) {
|
||||
item.close(appContext)
|
||||
}
|
||||
clipHistoryDao?.deleteAllUnpinned()
|
||||
@@ -303,7 +321,7 @@ class ClipboardManager(
|
||||
*/
|
||||
fun clearFullHistory() {
|
||||
ioScope.launch {
|
||||
for (item in history().all) {
|
||||
for (item in currentHistory.all) {
|
||||
item.close(appContext)
|
||||
}
|
||||
clipHistoryDao?.deleteAll()
|
||||
@@ -318,18 +336,22 @@ class ClipboardManager(
|
||||
*/
|
||||
fun restoreHistory(items: List<ClipboardItem>) {
|
||||
ioScope.launch {
|
||||
val currentHistory = this@ClipboardManager.history().all
|
||||
val currentHistory = currentHistory.all
|
||||
for (item in items) {
|
||||
if (!currentHistory.map { it.copy(id = 0) }.contains(item.copy(id = 0))) {
|
||||
this@ClipboardManager.insertClip(item.copy(id = 0))
|
||||
insertClip(item.copy(id = 0))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteClip(item: ClipboardItem) {
|
||||
fun deleteClip(item: ClipboardItem, onlyIfUnpinned: Boolean) {
|
||||
ioScope.launch {
|
||||
clipHistoryDao?.delete(item)
|
||||
if (onlyIfUnpinned) {
|
||||
clipHistoryDao?.deleteIfUnpinned(item.id)
|
||||
} else {
|
||||
clipHistoryDao?.delete(item.id)
|
||||
}
|
||||
tryOrNull {
|
||||
val uri = item.uri
|
||||
if (uri != null) {
|
||||
@@ -382,16 +404,4 @@ class ClipboardManager(
|
||||
systemClipboardManager.removePrimaryClipChangedListener(this)
|
||||
cleanUpJob.cancel()
|
||||
}
|
||||
|
||||
class ClipboardHistory(val all: List<ClipboardItem>) {
|
||||
companion object {
|
||||
val Empty = ClipboardHistory(emptyList())
|
||||
}
|
||||
|
||||
private val now = System.currentTimeMillis()
|
||||
|
||||
val pinned = all.filter { it.isPinned }
|
||||
val recent = all.filter { !it.isPinned && (now - it.creationTimestampMs < RECENT_TIMESPAN_MS) }
|
||||
val other = all.filter { !it.isPinned && (now - it.creationTimestampMs >= RECENT_TIMESPAN_MS) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (C) 2025 The FlorisBoard Contributors
|
||||
*
|
||||
* 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.clipboard
|
||||
|
||||
enum class ClipboardSyncBehavior(val shouldSyncSet: Boolean, val shouldSyncClear: Boolean) {
|
||||
NO_EVENTS(shouldSyncSet = false, shouldSyncClear = false),
|
||||
ONLY_CLEAR_EVENTS(shouldSyncSet = false, shouldSyncClear = true),
|
||||
ONLY_SET_EVENTS(shouldSyncSet = true, shouldSyncClear = false),
|
||||
ALL_EVENTS(shouldSyncSet = true, shouldSyncClear = true);
|
||||
}
|
||||
@@ -55,6 +55,7 @@ import org.florisboard.lib.android.UriSerializer
|
||||
import org.florisboard.lib.android.query
|
||||
import org.florisboard.lib.android.stringRes
|
||||
import org.florisboard.lib.kotlin.tryOrNull
|
||||
import androidx.core.net.toUri
|
||||
|
||||
private const val CLIPBOARD_HISTORY_TABLE = "clipboard_history"
|
||||
private const val CLIPBOARD_FILES_TABLE = "clipboard_files"
|
||||
@@ -89,7 +90,7 @@ data class ClipboardItem @OptIn(ExperimentalSerializationApi::class) constructor
|
||||
val uri: Uri?,
|
||||
val creationTimestampMs: Long,
|
||||
val isPinned: Boolean,
|
||||
val mimeTypes: Array<String>,
|
||||
val mimeTypes: List<String>,
|
||||
@EncodeDefault
|
||||
@ColumnInfo(name = "is_sensitive", defaultValue = "0")
|
||||
val isSensitive: Boolean = false,
|
||||
@@ -101,7 +102,7 @@ data class ClipboardItem @OptIn(ExperimentalSerializationApi::class) constructor
|
||||
/**
|
||||
* So that every item doesn't have to allocate its own array.
|
||||
*/
|
||||
private val TEXT_PLAIN = arrayOf("text/plain")
|
||||
private val TEXT_PLAIN = listOf("text/plain")
|
||||
private val MEDIA_PROJECTION = arrayOf(OpenableColumns.DISPLAY_NAME)
|
||||
|
||||
const val FLORIS_CLIP_LABEL = "florisboard/clipboard_item"
|
||||
@@ -177,7 +178,7 @@ data class ClipboardItem @OptIn(ExperimentalSerializationApi::class) constructor
|
||||
val mimeTypes = when (type) {
|
||||
ItemType.TEXT -> TEXT_PLAIN
|
||||
ItemType.IMAGE, ItemType.VIDEO -> {
|
||||
Array(data.description.mimeTypeCount) { data.description.getMimeType(it) }
|
||||
List(data.description.mimeTypeCount) { data.description.getMimeType(it) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,34 +231,6 @@ data class ClipboardItem @OptIn(ExperimentalSerializationApi::class) constructor
|
||||
}
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
other as ClipboardItem
|
||||
|
||||
if (id != other.id) return false
|
||||
if (type != other.type) return false
|
||||
if (text != other.text) return false
|
||||
if (uri != other.uri) return false
|
||||
if (creationTimestampMs != other.creationTimestampMs) return false
|
||||
if (!mimeTypes.contentEquals(other.mimeTypes)) return false
|
||||
if (isSensitive != other.isSensitive) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = id.hashCode()
|
||||
result = 31 * result + type.hashCode()
|
||||
result = 31 * result + (text?.hashCode() ?: 0)
|
||||
result = 31 * result + (uri?.hashCode() ?: 0)
|
||||
result = 31 * result + creationTimestampMs.hashCode()
|
||||
result = 31 * result + mimeTypes.contentHashCode()
|
||||
result = 31 * result + isSensitive.hashCode()
|
||||
return result
|
||||
}
|
||||
|
||||
fun stringRepresentation(): String {
|
||||
return when {
|
||||
text != null -> text
|
||||
@@ -270,7 +243,7 @@ data class ClipboardItem @OptIn(ExperimentalSerializationApi::class) constructor
|
||||
class Converters {
|
||||
@TypeConverter
|
||||
fun uriFromString(value: String?): Uri? {
|
||||
return Uri.parse(value)
|
||||
return value?.toUri()
|
||||
}
|
||||
|
||||
@TypeConverter
|
||||
@@ -293,13 +266,13 @@ class Converters {
|
||||
* DOES NOT USE A GENERALIZED FORMAT.
|
||||
*/
|
||||
@TypeConverter
|
||||
fun mimeTypesToString(mimeTypes: Array<String>): String {
|
||||
fun mimeTypesToString(mimeTypes: List<String>): String {
|
||||
return mimeTypes.joinToString(",")
|
||||
}
|
||||
|
||||
@TypeConverter
|
||||
fun stringToMimeTypes(value: String): Array<String> {
|
||||
return value.split(",").toTypedArray()
|
||||
fun stringToMimeTypes(value: String): List<String> {
|
||||
return value.split(",")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,12 +293,12 @@ interface ClipboardHistoryDao {
|
||||
@Update
|
||||
fun update(items: List<ClipboardItem>)
|
||||
|
||||
@Delete
|
||||
fun delete(item: ClipboardItem)
|
||||
|
||||
@Query("DELETE FROM $CLIPBOARD_HISTORY_TABLE WHERE ${BaseColumns._ID} = :id")
|
||||
fun delete(id: Long)
|
||||
|
||||
@Query("DELETE FROM $CLIPBOARD_HISTORY_TABLE WHERE ${BaseColumns._ID} = :id AND not isPinned ")
|
||||
fun deleteIfUnpinned(id: Long)
|
||||
|
||||
@Delete
|
||||
fun delete(items: List<ClipboardItem>)
|
||||
|
||||
@@ -382,30 +355,8 @@ data class ClipboardFileInfo(
|
||||
@ColumnInfo(name=OpenableColumns.DISPLAY_NAME) val displayName: String,
|
||||
@ColumnInfo(name=OpenableColumns.SIZE) val size: Long,
|
||||
@ColumnInfo(name=Media.ORIENTATION) val orientation: Int,
|
||||
val mimeTypes: Array<String>,
|
||||
) {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
other as ClipboardFileInfo
|
||||
|
||||
if (id != other.id) return false
|
||||
if (displayName != other.displayName) return false
|
||||
if (size != other.size) return false
|
||||
if (!mimeTypes.contentEquals(other.mimeTypes)) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = id.hashCode()
|
||||
result = 31 * result + displayName.hashCode()
|
||||
result = 31 * result + size.hashCode()
|
||||
result = 31 * result + mimeTypes.contentHashCode()
|
||||
return result
|
||||
}
|
||||
}
|
||||
val mimeTypes: List<String>,
|
||||
)
|
||||
|
||||
@Dao
|
||||
interface ClipboardFilesDao {
|
||||
|
||||
@@ -35,6 +35,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.launch
|
||||
import org.florisboard.lib.kotlin.tryOrNull
|
||||
import androidx.core.net.toUri
|
||||
|
||||
/**
|
||||
* Allows apps to access images and videos on the clipboard.
|
||||
@@ -49,8 +50,8 @@ class ClipboardMediaProvider : ContentProvider() {
|
||||
|
||||
companion object {
|
||||
const val AUTHORITY = "${BuildConfig.APPLICATION_ID}.provider.clipboard"
|
||||
val IMAGE_CLIPS_URI: Uri = Uri.parse("content://$AUTHORITY/clips/images")
|
||||
val VIDEO_CLIPS_URI: Uri = Uri.parse("content://$AUTHORITY/clips/videos")
|
||||
val IMAGE_CLIPS_URI: Uri = "content://$AUTHORITY/clips/images".toUri()
|
||||
val VIDEO_CLIPS_URI: Uri = "content://$AUTHORITY/clips/videos".toUri()
|
||||
|
||||
private const val IMAGE_CLIP_ITEM = 0
|
||||
private const val IMAGE_CLIPS_TABLE = 1
|
||||
@@ -118,7 +119,7 @@ class ClipboardMediaProvider : ContentProvider() {
|
||||
override fun getStreamTypes(uri: Uri, mimeTypeFilter: String): Array<String>? {
|
||||
return when (Matcher.match(uri)) {
|
||||
IMAGE_CLIP_ITEM, VIDEO_CLIP_ITEM -> {
|
||||
cachedFileInfos.getOrDefault(ContentUris.parseId(uri), null)?.mimeTypes
|
||||
cachedFileInfos.getOrDefault(ContentUris.parseId(uri), null)?.mimeTypes?.toTypedArray()
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
@@ -152,7 +153,7 @@ class ClipboardMediaProvider : ContentProvider() {
|
||||
}
|
||||
val id = ClipboardFileStorage.cloneUri(context!!, mediaUri)
|
||||
val size = ClipboardFileStorage.getFileForId(context!!, id).length()
|
||||
val mimeTypes = values.getAsString(Columns.MimeTypes).split(",").toTypedArray()
|
||||
val mimeTypes = values.getAsString(Columns.MimeTypes).split(",")
|
||||
val displayName = values.getAsString(OpenableColumns.DISPLAY_NAME)
|
||||
val fileInfo = ClipboardFileInfo(id, displayName, size, rotation, mimeTypes)
|
||||
cachedFileInfos[id] = fileInfo
|
||||
|
||||
@@ -40,6 +40,16 @@ import org.florisboard.lib.kotlin.guardedByLock
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
enum class OperationUnit {
|
||||
CHARACTERS,
|
||||
WORDS;
|
||||
}
|
||||
|
||||
enum class OperationScope {
|
||||
BEFORE_CURSOR,
|
||||
AFTER_CURSOR;
|
||||
}
|
||||
|
||||
@Suppress("BlockingMethodInNonBlockingContext")
|
||||
abstract class AbstractEditorInstance(context: Context) {
|
||||
companion object {
|
||||
@@ -428,41 +438,69 @@ abstract class AbstractEditorInstance(context: Context) {
|
||||
return true
|
||||
}
|
||||
|
||||
protected fun deleteBeforeCursor(type: TextType, n: Int): Boolean {
|
||||
protected suspend fun deleteAroundCursor(unit: OperationUnit, scope: OperationScope, n: Int = 0): Boolean {
|
||||
val ic = currentInputConnection()
|
||||
if (ic == null || n < 1) return false
|
||||
val content = activeContent
|
||||
// Cannot perform below check due to editors which lie about their correct selection
|
||||
//if (content.selection.isValid && content.selection.start == 0) return true
|
||||
val oldTextBeforeSelection = content.textBeforeSelection
|
||||
return (if (activeInfo.isRawInputEditor || oldTextBeforeSelection.isEmpty()) {
|
||||
val scopeText = when (scope) {
|
||||
OperationScope.BEFORE_CURSOR -> content.textBeforeSelection
|
||||
OperationScope.AFTER_CURSOR -> content.textAfterSelection
|
||||
}
|
||||
return (if (activeInfo.isRawInputEditor || scopeText.isEmpty()) {
|
||||
// If editor is rich and text before selection is empty we seem to have an invalid state here, so we fall
|
||||
// back to emulating a hardware backspace.
|
||||
when (type) {
|
||||
TextType.CHARACTERS -> sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL, count = n)
|
||||
TextType.WORDS -> sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL, meta(ctrl = true), count = n)
|
||||
// back to emulating a hardware backspace/forward delete.
|
||||
val keyEventCode = when (scope) {
|
||||
OperationScope.BEFORE_CURSOR -> KeyEvent.KEYCODE_DEL
|
||||
OperationScope.AFTER_CURSOR -> KeyEvent.KEYCODE_FORWARD_DEL
|
||||
}
|
||||
val metaState = when (unit) {
|
||||
OperationUnit.CHARACTERS -> meta()
|
||||
OperationUnit.WORDS -> meta(ctrl = true)
|
||||
}
|
||||
sendDownUpKeyEvent(keyEventCode, metaState, count = n)
|
||||
} else {
|
||||
runBlocking {
|
||||
val locale = subtypeManager.activeSubtype.primaryLocale
|
||||
val length = when (type) {
|
||||
TextType.CHARACTERS -> breakIterators.measureLastUChars(oldTextBeforeSelection, n, locale)
|
||||
TextType.WORDS -> breakIterators.measureLastUWords(oldTextBeforeSelection, n, locale)
|
||||
val locale = subtypeManager.activeSubtype.primaryLocale
|
||||
when (scope) {
|
||||
OperationScope.BEFORE_CURSOR -> {
|
||||
val length = when (unit) {
|
||||
OperationUnit.CHARACTERS -> breakIterators.measureLastUChars(scopeText, n, locale)
|
||||
OperationUnit.WORDS -> breakIterators.measureLastUWords(scopeText, n, locale)
|
||||
}
|
||||
val selection = content.selection
|
||||
val newSelection = selection.translatedBy(-length)
|
||||
val newContent = content.generateCopy(
|
||||
selection = newSelection,
|
||||
textBeforeSelection = scopeText.dropLast(length),
|
||||
)
|
||||
expectedContentQueue.push(newContent)
|
||||
ic.beginBatchEdit()
|
||||
ic.finishComposingText()
|
||||
ic.deleteSurroundingText(length, 0)
|
||||
ic.setComposingRegion(newContent.composing)
|
||||
ic.endBatchEdit()
|
||||
}
|
||||
OperationScope.AFTER_CURSOR -> {
|
||||
val length = when (unit) {
|
||||
OperationUnit.CHARACTERS -> breakIterators.measureUChars(scopeText, n, locale)
|
||||
OperationUnit.WORDS -> breakIterators.measureUWords(scopeText, n, locale)
|
||||
}
|
||||
val selection = content.selection
|
||||
val newSelection = selection.translatedBy(length)
|
||||
val newContent = content.generateCopy(
|
||||
selection = newSelection,
|
||||
textAfterSelection = scopeText.drop(length),
|
||||
)
|
||||
expectedContentQueue.push(newContent)
|
||||
ic.beginBatchEdit()
|
||||
ic.finishComposingText()
|
||||
ic.deleteSurroundingText(0, length)
|
||||
ic.setComposingRegion(newContent.composing)
|
||||
ic.endBatchEdit()
|
||||
}
|
||||
val selection = content.selection
|
||||
val newSelection = selection.translatedBy(-length)
|
||||
val newContent = content.generateCopy(
|
||||
selection = newSelection,
|
||||
textBeforeSelection = oldTextBeforeSelection.dropLast(length),
|
||||
)
|
||||
expectedContentQueue.push(newContent)
|
||||
ic.beginBatchEdit()
|
||||
ic.finishComposingText()
|
||||
ic.deleteSurroundingText(length, 0)
|
||||
ic.setComposingRegion(newContent.composing)
|
||||
ic.endBatchEdit()
|
||||
true
|
||||
}
|
||||
true
|
||||
}).also {
|
||||
deleteMoveLastCommitPosition()
|
||||
}
|
||||
@@ -623,11 +661,6 @@ abstract class AbstractEditorInstance(context: Context) {
|
||||
return true
|
||||
}
|
||||
|
||||
protected enum class TextType {
|
||||
CHARACTERS,
|
||||
WORDS;
|
||||
}
|
||||
|
||||
private class ExpectedContentQueue {
|
||||
private val list = guardedByLock { mutableListOf<EditorContent>() }
|
||||
|
||||
|
||||
@@ -91,6 +91,9 @@ data class EditorContent(
|
||||
val currentWordText: String
|
||||
get() = if (localCurrentWord.isValid) text.safeSubstring(localCurrentWord.start, localCurrentWord.end) else ""
|
||||
|
||||
val safeEditorBounds: EditorRange
|
||||
get() = if (offset >= 0) EditorRange(0, offset + text.length) else EditorRange(0, 0)
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* Default editor content which indicates an unspecified content. This is used for raw editors or if there is
|
||||
|
||||
@@ -26,6 +26,7 @@ import dev.patrickgold.florisboard.FlorisImeService
|
||||
import dev.patrickgold.florisboard.app.FlorisPreferenceStore
|
||||
import dev.patrickgold.florisboard.appContext
|
||||
import dev.patrickgold.florisboard.clipboardManager
|
||||
import dev.patrickgold.florisboard.ime.ImeUiMode
|
||||
import dev.patrickgold.florisboard.ime.clipboard.provider.ClipboardFileStorage
|
||||
import dev.patrickgold.florisboard.ime.clipboard.provider.ClipboardItem
|
||||
import dev.patrickgold.florisboard.ime.clipboard.provider.ItemType
|
||||
@@ -42,7 +43,6 @@ import dev.patrickgold.florisboard.nlpManager
|
||||
import dev.patrickgold.florisboard.subtypeManager
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.florisboard.lib.android.showShortToast
|
||||
import org.florisboard.lib.android.showShortToastSync
|
||||
|
||||
class EditorInstance(context: Context) : AbstractEditorInstance(context) {
|
||||
@@ -318,7 +318,7 @@ class EditorInstance(context: Context) : AbstractEditorInstance(context) {
|
||||
if (!file.exists()) return false
|
||||
val inputContentInfo = InputContentInfoCompat(
|
||||
item.uri,
|
||||
ClipDescription("clipboard media file", mimeTypes),
|
||||
ClipDescription("clipboard media file", mimeTypes.toTypedArray()),
|
||||
null,
|
||||
)
|
||||
val ic = currentInputConnection() ?: return false
|
||||
@@ -326,6 +326,10 @@ class EditorInstance(context: Context) : AbstractEditorInstance(context) {
|
||||
val flags = InputConnectionCompat.INPUT_CONTENT_GRANT_READ_URI_PERMISSION
|
||||
InputConnectionCompat.commitContent(ic, activeInfo.base, inputContentInfo, flags, null)
|
||||
}
|
||||
}.also {
|
||||
if (prefs.clipboard.historyHideOnPaste.get()) {
|
||||
keyboardManager.activeState.imeUiMode = ImeUiMode.TEXT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -336,49 +340,75 @@ class EditorInstance(context: Context) : AbstractEditorInstance(context) {
|
||||
*
|
||||
* @return True on success, false if an error occurred or the input connection is invalid.
|
||||
*/
|
||||
fun deleteBackwards(): Boolean {
|
||||
fun deleteBackwards(unit: OperationUnit): Boolean {
|
||||
val content = activeContent
|
||||
if (phantomSpace.isActive && content.currentWord.isValid && prefs.glide.immediateBackspaceDeletesWord.get()) {
|
||||
return deleteWordBackwards()
|
||||
if (unit == OperationUnit.CHARACTERS) {
|
||||
if (phantomSpace.isActive && content.currentWord.isValid && prefs.glide.immediateBackspaceDeletesWord.get()) {
|
||||
return deleteBackwards(OperationUnit.WORDS)
|
||||
}
|
||||
}
|
||||
autoSpace.setInactive()
|
||||
phantomSpace.setInactive()
|
||||
return if (content.selection.isSelectionMode) {
|
||||
commitText("")
|
||||
} else {
|
||||
deleteBeforeCursor(TextType.CHARACTERS, 1)
|
||||
} else runBlocking {
|
||||
deleteAroundCursor(unit, OperationScope.BEFORE_CURSOR, n = 1)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a backward delete on this editor's text. If a text selection is active, all
|
||||
* characters inside this selection will be removed, else only the left-most word from
|
||||
* characters inside this selection will be removed, else only the left-most character from
|
||||
* the cursor's position.
|
||||
*
|
||||
* @return True on success, false if an error occurred or the input connection is invalid.
|
||||
*/
|
||||
fun deleteWordBackwards(): Boolean {
|
||||
fun deleteForwards(unit: OperationUnit): Boolean {
|
||||
val content = activeContent
|
||||
autoSpace.setInactive()
|
||||
phantomSpace.setInactive()
|
||||
return if (activeContent.selection.isSelectionMode) {
|
||||
return if (content.selection.isSelectionMode) {
|
||||
commitText("")
|
||||
} else {
|
||||
deleteBeforeCursor(TextType.WORDS, 1)
|
||||
} else runBlocking {
|
||||
deleteAroundCursor(unit, OperationScope.AFTER_CURSOR, n = 1)
|
||||
}
|
||||
}
|
||||
|
||||
fun selectionSetNWordsLeft(n: Int): Boolean {
|
||||
fun setSelectionSurrounding(n: Int, unit: OperationUnit, scope: OperationScope): Boolean {
|
||||
autoSpace.setInactive()
|
||||
phantomSpace.setInactive()
|
||||
val content = activeContent
|
||||
val selection = content.selection
|
||||
val safeEditorBounds = content.safeEditorBounds
|
||||
if (selection.isNotValid) return false
|
||||
if (n <= 0) {
|
||||
return setSelection(selection.end, selection.end)
|
||||
when (scope) {
|
||||
OperationScope.BEFORE_CURSOR -> {
|
||||
if (n <= 0) {
|
||||
return setSelection(selection.end, selection.end)
|
||||
}
|
||||
val textToAnalyze = content.text.substring(0, content.localSelection.end)
|
||||
val length = runBlocking {
|
||||
when (unit) {
|
||||
OperationUnit.CHARACTERS -> breakIterators.measureLastUChars(textToAnalyze, n)
|
||||
OperationUnit.WORDS -> breakIterators.measureLastUWords(textToAnalyze, n)
|
||||
}
|
||||
}
|
||||
return setSelection((selection.end - length).coerceAtLeast(safeEditorBounds.start), selection.end)
|
||||
}
|
||||
OperationScope.AFTER_CURSOR -> {
|
||||
if (n <= 0) {
|
||||
return setSelection(selection.start, selection.start)
|
||||
}
|
||||
val textToAnalyze = content.text.substring(content.localSelection.start)
|
||||
val length = runBlocking {
|
||||
when (unit) {
|
||||
OperationUnit.CHARACTERS -> breakIterators.measureUChars(textToAnalyze, n)
|
||||
OperationUnit.WORDS -> breakIterators.measureUWords(textToAnalyze, n)
|
||||
}
|
||||
}
|
||||
return setSelection(selection.start, (selection.start + length).coerceAtMost(safeEditorBounds.end))
|
||||
}
|
||||
}
|
||||
val textToAnalyze = content.text.substring(0, content.localSelection.end)
|
||||
val length = runBlocking { breakIterators.measureLastUWords(textToAnalyze, n) }
|
||||
return setSelection((selection.end - length).coerceAtLeast(0), selection.end)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -396,7 +426,7 @@ class EditorInstance(context: Context) : AbstractEditorInstance(context) {
|
||||
} else {
|
||||
appContext.showShortToastSync("Failed to retrieve selected text requested to cut: Eiter selection state is invalid or an error occurred within the input connection.")
|
||||
}
|
||||
return deleteBackwards()
|
||||
return deleteBackwards(OperationUnit.CHARACTERS)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,7 +30,7 @@ import androidx.compose.material.icons.automirrored.outlined.Backspace
|
||||
import androidx.compose.material.icons.filled.Close
|
||||
import androidx.compose.material.icons.filled.ContentCopy
|
||||
import androidx.compose.material.icons.filled.ContentCut
|
||||
import androidx.compose.material.icons.filled.ContentPaste
|
||||
import androidx.compose.material.icons.filled.ContentPasteGo
|
||||
import androidx.compose.material.icons.filled.DeleteSweep
|
||||
import androidx.compose.material.icons.filled.Done
|
||||
import androidx.compose.material.icons.filled.FontDownload
|
||||
@@ -56,6 +56,7 @@ import dev.patrickgold.florisboard.ime.text.key.KeyCode
|
||||
import dev.patrickgold.florisboard.ime.text.key.KeyType
|
||||
import dev.patrickgold.florisboard.lib.FlorisLocale
|
||||
import dev.patrickgold.florisboard.lib.compose.vectorResource
|
||||
import org.florisboard.lib.compose.icons.ForwardDelete
|
||||
|
||||
interface ComputingEvaluator {
|
||||
val version: Int
|
||||
@@ -197,7 +198,7 @@ fun ComputingEvaluator.computeImageVector(data: KeyData): ImageVector? {
|
||||
Icons.Default.ContentCut
|
||||
}
|
||||
KeyCode.CLIPBOARD_PASTE -> {
|
||||
Icons.Default.ContentPaste
|
||||
Icons.Default.ContentPasteGo
|
||||
}
|
||||
KeyCode.CLIPBOARD_SELECT_ALL -> {
|
||||
Icons.Default.SelectAll
|
||||
@@ -234,6 +235,9 @@ fun ComputingEvaluator.computeImageVector(data: KeyData): ImageVector? {
|
||||
}
|
||||
}
|
||||
}
|
||||
KeyCode.FORWARD_DELETE -> {
|
||||
Icons.AutoMirrored.Default.ForwardDelete
|
||||
}
|
||||
KeyCode.IME_UI_MODE_MEDIA -> {
|
||||
Icons.Default.SentimentSatisfiedAlt
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import dev.patrickgold.florisboard.ime.editor.EditorContent
|
||||
import dev.patrickgold.florisboard.ime.editor.FlorisEditorInfo
|
||||
import dev.patrickgold.florisboard.ime.editor.ImeOptions
|
||||
import dev.patrickgold.florisboard.ime.editor.InputAttributes
|
||||
import dev.patrickgold.florisboard.ime.editor.OperationUnit
|
||||
import dev.patrickgold.florisboard.ime.input.CapitalizationBehavior
|
||||
import dev.patrickgold.florisboard.ime.input.InputEventDispatcher
|
||||
import dev.patrickgold.florisboard.ime.input.InputKeyEventReceiver
|
||||
@@ -75,7 +76,6 @@ import kotlinx.coroutines.sync.withLock
|
||||
import org.florisboard.lib.android.AndroidKeyguardManager
|
||||
import org.florisboard.lib.android.showLongToast
|
||||
import org.florisboard.lib.android.showLongToastSync
|
||||
import org.florisboard.lib.android.showShortToast
|
||||
import org.florisboard.lib.android.showShortToastSync
|
||||
import org.florisboard.lib.android.systemService
|
||||
import org.florisboard.lib.kotlin.collectIn
|
||||
@@ -417,27 +417,30 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
/**
|
||||
* Handles a [KeyCode.DELETE] event.
|
||||
*/
|
||||
private fun handleDelete() {
|
||||
private fun handleBackwardDelete(unit: OperationUnit) {
|
||||
if (inputEventDispatcher.isPressed(KeyCode.SHIFT)) {
|
||||
return handleForwardDelete(unit)
|
||||
}
|
||||
activeState.batchEdit {
|
||||
it.isManualSelectionMode = false
|
||||
it.isManualSelectionModeStart = false
|
||||
it.isManualSelectionModeEnd = false
|
||||
}
|
||||
revertPreviouslyAcceptedCandidate()
|
||||
editorInstance.deleteBackwards()
|
||||
editorInstance.deleteBackwards(unit)
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles a [KeyCode.DELETE_WORD] event.
|
||||
* Handles a [KeyCode.FORWARD_DELETE] event.
|
||||
*/
|
||||
private fun handleDeleteWord() {
|
||||
private fun handleForwardDelete(unit: OperationUnit) {
|
||||
activeState.batchEdit {
|
||||
it.isManualSelectionMode = false
|
||||
it.isManualSelectionModeStart = false
|
||||
it.isManualSelectionModeEnd = false
|
||||
}
|
||||
revertPreviouslyAcceptedCandidate()
|
||||
editorInstance.deleteWordBackwards()
|
||||
editorInstance.deleteForwards(unit)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -566,7 +569,7 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
if (inputEventDispatcher.isConsecutiveUp(data)) {
|
||||
val text = editorInstance.run { activeContent.getTextBeforeCursor(2) }
|
||||
if (text.length == 2 && DoubleSpacePeriodMatcher.matches(text)) {
|
||||
editorInstance.deleteBackwards()
|
||||
editorInstance.deleteBackwards(OperationUnit.CHARACTERS)
|
||||
editorInstance.commitText(". ")
|
||||
return
|
||||
}
|
||||
@@ -714,8 +717,8 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
KeyCode.CLIPBOARD_CLEAR_HISTORY -> clipboardManager.clearHistory()
|
||||
KeyCode.CLIPBOARD_CLEAR_FULL_HISTORY -> clipboardManager.clearFullHistory()
|
||||
KeyCode.CLIPBOARD_CLEAR_PRIMARY_CLIP -> {
|
||||
if (prefs.clipboard.clearPrimaryClipDeletesLastItem.get()) {
|
||||
clipboardManager.primaryClip?.let { clipboardManager.deleteClip(it) }
|
||||
if (prefs.clipboard.clearPrimaryClipAffectsHistoryIfUnpinned.get()) {
|
||||
clipboardManager.primaryClip?.let { clipboardManager.deleteClip(it, onlyIfUnpinned = true) }
|
||||
}
|
||||
clipboardManager.updatePrimaryClip(null)
|
||||
appContext.showShortToastSync(R.string.clipboard__cleared_primary_clip)
|
||||
@@ -729,9 +732,11 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
prefs.keyboard.oneHandedMode.set(OneHandedMode.END)
|
||||
toggleOneHandedMode()
|
||||
}
|
||||
KeyCode.DELETE -> handleDelete()
|
||||
KeyCode.DELETE_WORD -> handleDeleteWord()
|
||||
KeyCode.DELETE -> handleBackwardDelete(OperationUnit.CHARACTERS)
|
||||
KeyCode.DELETE_WORD -> handleBackwardDelete(OperationUnit.WORDS)
|
||||
KeyCode.ENTER -> handleEnter()
|
||||
KeyCode.FORWARD_DELETE -> handleForwardDelete(OperationUnit.CHARACTERS)
|
||||
KeyCode.FORWARD_DELETE_WORD -> handleForwardDelete(OperationUnit.WORDS)
|
||||
KeyCode.IME_SHOW_UI -> FlorisImeService.showUi()
|
||||
KeyCode.IME_HIDE_UI -> FlorisImeService.hideUi()
|
||||
KeyCode.IME_PREV_SUBTYPE -> subtypeManager.switchToPrevSubtype()
|
||||
@@ -866,6 +871,20 @@ class KeyboardManager(context: Context) : InputKeyEventReceiver {
|
||||
handleEnter()
|
||||
return true
|
||||
}
|
||||
KeyEvent.KEYCODE_SHIFT_LEFT, KeyEvent.KEYCODE_SHIFT_RIGHT -> {
|
||||
inputEventDispatcher.sendDown(TextKeyData.SHIFT)
|
||||
return true
|
||||
}
|
||||
else -> return false
|
||||
}
|
||||
}
|
||||
|
||||
fun onHardwareKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
when (keyCode) {
|
||||
KeyEvent.KEYCODE_SHIFT_LEFT, KeyEvent.KEYCODE_SHIFT_RIGHT -> {
|
||||
inputEventDispatcher.sendUp(TextKeyData.SHIFT)
|
||||
return true
|
||||
}
|
||||
else -> return false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,12 +70,17 @@ class EmojiSuggestionProvider(private val context: Context) : SuggestionProvider
|
||||
val emojis = cachedEmojiMappings.get(subtype.primaryLocale)?.get(preferredSkinTone) ?: emptyList()
|
||||
val candidates = withContext(Dispatchers.Default) {
|
||||
emojis.parallelStream()
|
||||
.filter { emoji ->
|
||||
emoji.name.contains(query, ignoreCase = true) &&
|
||||
emoji.keywords.any { it.contains(query, ignoreCase = true) }
|
||||
}
|
||||
.limit(maxCandidateCount.toLong())
|
||||
.map { emoji ->
|
||||
val nameWeight = emoji.name.containsWeighted(query, ignoreCase = true)
|
||||
val keywordWeight = emoji.keywords
|
||||
.any { it.contains(query, ignoreCase = true) }
|
||||
.let { if (it) 1.0 else 0.0 }
|
||||
emoji to (nameWeight * 0.7 + keywordWeight * 0.3)
|
||||
}
|
||||
.sorted { (_, a), (_, b) -> b.compareTo(a) }
|
||||
.limit(maxCandidateCount.toLong())
|
||||
.filter { (_, a) -> a > 0 }
|
||||
.map { (emoji, _) ->
|
||||
EmojiSuggestionCandidate(
|
||||
emoji = emoji,
|
||||
showName = showName,
|
||||
@@ -128,3 +133,11 @@ class EmojiSuggestionProvider(private val context: Context) : SuggestionProvider
|
||||
return emojiPartialName
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.containsWeighted(other: String, ignoreCase: Boolean = false): Double = let { str ->
|
||||
if (str.contains(other, ignoreCase = ignoreCase)) {
|
||||
other.length.toDouble() / str.length.toDouble()
|
||||
} else {
|
||||
0.0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,15 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.MoreHoriz
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import dev.patrickgold.florisboard.ime.keyboard.Key
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import org.florisboard.lib.snygg.SnyggQueryAttributes
|
||||
import org.florisboard.lib.snygg.SnyggSelector
|
||||
import org.florisboard.lib.snygg.ui.SnyggBox
|
||||
@@ -38,6 +41,8 @@ import org.florisboard.lib.snygg.ui.SnyggIcon
|
||||
import org.florisboard.lib.snygg.ui.SnyggRow
|
||||
import org.florisboard.lib.snygg.ui.SnyggText
|
||||
|
||||
val GlobalStateNumPopupsShowing = MutableStateFlow(0)
|
||||
|
||||
@Composable
|
||||
fun PopupBaseBox(
|
||||
modifier: Modifier = Modifier,
|
||||
@@ -45,6 +50,13 @@ fun PopupBaseBox(
|
||||
key: Key,
|
||||
shouldIndicateExtendedPopups: Boolean,
|
||||
): Unit = with(LocalDensity.current) {
|
||||
DisposableEffect(key) {
|
||||
GlobalStateNumPopupsShowing.update { it + 1 }
|
||||
onDispose {
|
||||
GlobalStateNumPopupsShowing.update { it - 1 }
|
||||
}
|
||||
}
|
||||
|
||||
SnyggBox(
|
||||
elementName = FlorisImeUi.KeyPopupBox.elementName,
|
||||
attributes = attributes,
|
||||
|
||||
@@ -17,12 +17,14 @@
|
||||
package dev.patrickgold.florisboard.ime.smartbar
|
||||
|
||||
import android.os.Build
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
@@ -33,6 +35,7 @@ import androidx.compose.ui.layout.positionInParent
|
||||
import androidx.compose.ui.unit.IntOffset
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
import dev.patrickgold.florisboard.ime.nlp.NlpInlineAutofillSuggestion
|
||||
import dev.patrickgold.florisboard.ime.popup.GlobalStateNumPopupsShowing
|
||||
import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.lib.toIntOffset
|
||||
import org.florisboard.lib.compose.florisHorizontalScroll
|
||||
@@ -56,7 +59,8 @@ fun InlineSuggestionsUi(
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val scrollState = rememberScrollState()
|
||||
val almostEmptyRect = remember { android.graphics.Rect(0, 0, 1, 1) }
|
||||
val numPopupsShowing by GlobalStateNumPopupsShowing.collectAsState()
|
||||
val isZOrderedOnTop = numPopupsShowing == 0
|
||||
|
||||
Row(
|
||||
modifier
|
||||
@@ -77,19 +81,14 @@ fun InlineSuggestionsUi(
|
||||
modifier = Modifier.onGloballyPositioned { chipPos = it.positionInParent().toIntOffset() },
|
||||
factory = { inlineSuggestion.view },
|
||||
update = { view ->
|
||||
view.isZOrderedOnTop = isZOrderedOnTop
|
||||
view.clipBounds = android.graphics.Rect(
|
||||
(xMin - chipPos.x).coerceAtLeast(0),
|
||||
0,
|
||||
(xMax - chipPos.x).coerceAtMost(view.width),
|
||||
view.height,
|
||||
)
|
||||
// The empty rect is a workaround for a bug (I suppose) where an empty rect causes
|
||||
// no clipping, but we actually want to completely hide the view.
|
||||
// Thus we just show the topmost pixel of the view, which due to the round shape
|
||||
// of the theme should be transparent anyways.
|
||||
if (view.clipBounds.isEmpty) {
|
||||
view.clipBounds = almostEmptyRect
|
||||
}
|
||||
view.visibility = if (view.clipBounds.isEmpty) View.INVISIBLE else View.VISIBLE
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -87,6 +87,7 @@ fun QuickAction.computeDisplayName(evaluator: ComputingEvaluator): String {
|
||||
KeyCode.CLIPBOARD_CUT -> R.string.quick_action__clipboard_cut
|
||||
KeyCode.CLIPBOARD_PASTE -> R.string.quick_action__clipboard_paste
|
||||
KeyCode.CLIPBOARD_SELECT_ALL -> R.string.quick_action__clipboard_select_all
|
||||
KeyCode.FORWARD_DELETE -> R.string.quick_action__forward_delete
|
||||
KeyCode.IME_UI_MODE_CLIPBOARD -> R.string.quick_action__ime_ui_mode_clipboard
|
||||
KeyCode.IME_UI_MODE_MEDIA -> R.string.quick_action__ime_ui_mode_media
|
||||
KeyCode.LANGUAGE_SWITCH -> R.string.quick_action__language_switch
|
||||
|
||||
@@ -86,6 +86,7 @@ data class QuickActionArrangement(
|
||||
QuickAction.InsertKey(TextKeyData.CLIPBOARD_PASTE),
|
||||
QuickAction.InsertKey(TextKeyData.CLIPBOARD_SELECT_ALL),
|
||||
QuickAction.InsertKey(TextKeyData.LANGUAGE_SWITCH),
|
||||
QuickAction.InsertKey(TextKeyData.FORWARD_DELETE),
|
||||
),
|
||||
hiddenActions = listOf(
|
||||
),
|
||||
|
||||
@@ -39,7 +39,6 @@ import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.toMutableStateList
|
||||
import androidx.compose.ui.Alignment
|
||||
@@ -60,7 +59,7 @@ import dev.patrickgold.florisboard.ime.theme.FlorisImeUi
|
||||
import dev.patrickgold.florisboard.keyboardManager
|
||||
import dev.patrickgold.florisboard.lib.toIntOffset
|
||||
import org.florisboard.lib.compose.stringRes
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.florisboard.lib.snygg.ui.SnyggBox
|
||||
import org.florisboard.lib.snygg.ui.SnyggColumn
|
||||
import org.florisboard.lib.snygg.ui.SnyggIcon
|
||||
@@ -76,7 +75,6 @@ private val DragMarkerAction = QuickAction.InsertKey(TextKeyData(code = KeyCode.
|
||||
fun QuickActionsEditorPanel() {
|
||||
val prefs by FlorisPreferenceStore
|
||||
val context = LocalContext.current
|
||||
val scope = rememberCoroutineScope()
|
||||
val keyboardManager by context.keyboardManager()
|
||||
|
||||
// We get the current arrangement once and do not observe on purpose
|
||||
@@ -236,7 +234,7 @@ fun QuickActionsEditorPanel() {
|
||||
dynamicActions.filter { it != NoopAction && it != DragMarkerAction },
|
||||
hiddenActions.filter { it != NoopAction && it != DragMarkerAction },
|
||||
)
|
||||
scope.launch {
|
||||
runBlocking {
|
||||
prefs.smartbar.actionArrangement.set(newActionArrangement)
|
||||
}
|
||||
if (keyboardManager.activeState.isActionsEditorVisible) {
|
||||
|
||||
@@ -59,6 +59,8 @@ import dev.patrickgold.florisboard.FlorisImeService
|
||||
import dev.patrickgold.florisboard.app.FlorisPreferenceStore
|
||||
import dev.patrickgold.florisboard.editorInstance
|
||||
import dev.patrickgold.florisboard.glideTypingManager
|
||||
import dev.patrickgold.florisboard.ime.editor.OperationScope
|
||||
import dev.patrickgold.florisboard.ime.editor.OperationUnit
|
||||
import dev.patrickgold.florisboard.ime.input.InputEventDispatcher
|
||||
import dev.patrickgold.florisboard.ime.keyboard.ComputingEvaluator
|
||||
import dev.patrickgold.florisboard.ime.keyboard.FlorisImeSizing
|
||||
@@ -498,7 +500,7 @@ private class TextKeyboardLayoutController(
|
||||
if (pointer.hasTriggeredGestureMove && pointer.initialKey?.computedData?.code == KeyCode.DELETE) {
|
||||
val selection = editorInstance.activeContent.selection
|
||||
if (selection.isSelectionMode) {
|
||||
editorInstance.deleteBackwards()
|
||||
editorInstance.deleteBackwards(OperationUnit.CHARACTERS)
|
||||
}
|
||||
}
|
||||
onTouchCancelInternal(event, pointer)
|
||||
@@ -521,7 +523,7 @@ private class TextKeyboardLayoutController(
|
||||
prefs.gestures.deleteKeySwipeLeft.get() != SwipeAction.SELECT_WORDS_PRECISELY) {
|
||||
val selection = editorInstance.activeContent.selection
|
||||
if (selection.isSelectionMode) {
|
||||
editorInstance.deleteBackwards()
|
||||
editorInstance.deleteBackwards(OperationUnit.CHARACTERS)
|
||||
}
|
||||
}
|
||||
onTouchCancelInternal(event, pointer)
|
||||
@@ -765,10 +767,21 @@ private class TextKeyboardLayoutController(
|
||||
}
|
||||
val activeSelection = editorInstance.activeContent.selection
|
||||
if (activeSelection.isValid) {
|
||||
editorInstance.setSelection(
|
||||
(activeSelection.end + event.absUnitCountX + 1).coerceIn(0, activeSelection.end),
|
||||
activeSelection.end,
|
||||
)
|
||||
if (!inputEventDispatcher.isPressed(KeyCode.SHIFT)) {
|
||||
// Backward select
|
||||
editorInstance.setSelectionSurrounding(
|
||||
n = -event.absUnitCountX - 1,
|
||||
unit = OperationUnit.CHARACTERS,
|
||||
scope = OperationScope.BEFORE_CURSOR,
|
||||
)
|
||||
} else {
|
||||
// Forward select
|
||||
editorInstance.setSelectionSurrounding(
|
||||
n = -event.absUnitCountX - 1,
|
||||
unit = OperationUnit.CHARACTERS,
|
||||
scope = OperationScope.AFTER_CURSOR,
|
||||
)
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
@@ -777,8 +790,22 @@ private class TextKeyboardLayoutController(
|
||||
inputFeedbackController?.gestureMovingSwipe(TextKeyData.DELETE)
|
||||
}
|
||||
val activeSelection = editorInstance.activeContent.selection
|
||||
if (activeSelection.isValid && event.absUnitCountX <= 0) {
|
||||
editorInstance.selectionSetNWordsLeft(abs(event.absUnitCountX / 2) - 1)
|
||||
if (activeSelection.isValid) {
|
||||
if (!inputEventDispatcher.isPressed(KeyCode.SHIFT)) {
|
||||
// Backward select
|
||||
editorInstance.setSelectionSurrounding(
|
||||
n = -event.absUnitCountX / 2 - 1,
|
||||
unit = OperationUnit.WORDS,
|
||||
scope = OperationScope.BEFORE_CURSOR,
|
||||
)
|
||||
} else {
|
||||
// Forward select
|
||||
editorInstance.setSelectionSurrounding(
|
||||
n = -event.absUnitCountX / 2 - 1,
|
||||
unit = OperationUnit.WORDS,
|
||||
scope = OperationScope.AFTER_CURSOR,
|
||||
)
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
@@ -50,6 +50,8 @@ import dev.patrickgold.florisboard.lib.ext.ExtensionMeta
|
||||
import dev.patrickgold.florisboard.lib.io.ZipUtils
|
||||
import dev.patrickgold.florisboard.lib.util.TimeUtils.javaLocalTime
|
||||
import dev.patrickgold.florisboard.lib.util.ViewUtils
|
||||
import java.time.LocalTime
|
||||
import java.util.*
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@@ -65,8 +67,7 @@ import org.florisboard.lib.kotlin.io.subDir
|
||||
import org.florisboard.lib.kotlin.io.subFile
|
||||
import org.florisboard.lib.snygg.SnyggStylesheet
|
||||
import org.florisboard.lib.snygg.value.SnyggStaticColorValue
|
||||
import java.time.LocalTime
|
||||
import java.util.*
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
||||
/**
|
||||
* Core class which manages the keyboard theme. Note, that this does not affect the UI theme of the
|
||||
@@ -79,11 +80,13 @@ class ThemeManager(context: Context) {
|
||||
|
||||
private val scope = CoroutineScope(Dispatchers.Default + SupervisorJob())
|
||||
|
||||
private val _indexedThemeConfigs = MutableStateFlow(mapOf<ExtensionComponentName, ThemeExtensionComponent>())
|
||||
private val _indexedThemeConfigs = MutableStateFlow(mapOf<ExtensionComponentName, ThemeExtensionComponent>() to 0)
|
||||
val indexedThemeConfigs get() = _indexedThemeConfigs.asStateFlow()
|
||||
private val indexedThemeConfigVersion = AtomicInteger(0)
|
||||
|
||||
val previewThemeId = MutableStateFlow<ExtensionComponentName?>(null)
|
||||
val previewThemeInfo = MutableStateFlow<ThemeInfo?>(null)
|
||||
val wallpaperChangedCounter = MutableStateFlow(0)
|
||||
val configurationChangeCounter = MutableStateFlow(0)
|
||||
|
||||
private val cachedThemeInfos = mutableListOf<ThemeInfo>()
|
||||
private val activeThemeGuard = Mutex(locked = false)
|
||||
@@ -92,13 +95,14 @@ class ThemeManager(context: Context) {
|
||||
|
||||
init {
|
||||
extensionManager.themes.observeForever { themeExtensions ->
|
||||
val version = indexedThemeConfigVersion.incrementAndGet()
|
||||
_indexedThemeConfigs.value = buildMap {
|
||||
for (themeExtension in themeExtensions) {
|
||||
for (themeComponent in themeExtension.themes) {
|
||||
put(ExtensionComponentName(themeExtension.meta.id, themeComponent.id), themeComponent)
|
||||
}
|
||||
}
|
||||
}
|
||||
} to version
|
||||
}
|
||||
indexedThemeConfigs.collectIn(scope) {
|
||||
updateActiveTheme { cachedThemeInfos.clear() }
|
||||
@@ -109,7 +113,7 @@ class ThemeManager(context: Context) {
|
||||
prefs.theme.nightThemeId.asFlow(),
|
||||
previewThemeId,
|
||||
previewThemeInfo,
|
||||
wallpaperChangedCounter,
|
||||
configurationChangeCounter,
|
||||
) {}.collectIn(scope) {
|
||||
updateActiveTheme()
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class WallpaperChangeReceiver : BroadcastReceiver() {
|
||||
if (intent.action == Intent.ACTION_WALLPAPER_CHANGED) {
|
||||
flogDebug { "Wallpaper changed" }
|
||||
val themeManager by context.themeManager()
|
||||
themeManager.wallpaperChangedCounter.update { it + 1 }
|
||||
themeManager.configurationChangeCounter.update { it + 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">مثبّت</string>
|
||||
<string name="emoji__history__recent">الحديثة</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">سهم للأعلى</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">سهم للأعلى</string>
|
||||
<string name="quick_action__arrow_up__tooltip">تنفيذ السهم للأعلى</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">سهم للاسفل</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">سهم للاسفل</string>
|
||||
<string name="quick_action__arrow_down__tooltip">تنفيذ السهم للأسفل</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">سهم لليسار</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">سهم لليسار</string>
|
||||
<string name="quick_action__arrow_left__tooltip">تنفيذ السهم لليسار</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">سهم لليمين</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">سهم لليمين</string>
|
||||
<string name="quick_action__arrow_right__tooltip">تنفيذ السهم لليمين</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">مسح الحافظة</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">مسح الحافظة</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">تنفيذ مسح للحافظة الأساسية</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">نسخ</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">نسخ</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">تنفيذ نسخ للحافظة</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">قص</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">قص</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">تنفيذ قص للحافظة</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">لصق</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">لصق</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">تنفيذ لصق للحافظة</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">تحديد الكل</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">تحديد الكل</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">تنفيذ تحديد الكل للحافظة</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">الحافظة</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">الحافظة</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">فتح سجل الحافظة</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">رمز تعبيري</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">رمز تعبيري</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">فتح نافذة الرموز التعبيرية</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">تبديل اللغة</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">تبديل اللغة</string>
|
||||
<string name="quick_action__language_switch__tooltip">تنفيذ تبديل اللغة</string>
|
||||
<string name="quick_action__settings" maxLength="12">الإعدادات</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">الإعدادات</string>
|
||||
<string name="quick_action__settings__tooltip">فتح الإعدادات</string>
|
||||
<string name="quick_action__undo" maxLength="12">تراجع</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">تراجع</string>
|
||||
<string name="quick_action__undo__tooltip">التراجع عن الإدخال الأخير</string>
|
||||
<string name="quick_action__redo" maxLength="12">إرجاع</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">إرجاع</string>
|
||||
<string name="quick_action__redo__tooltip">إرجاع الإدخال الأخير</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">خيارات أخرى</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">خيارات أخرى</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">عرض او إخفاء إجراءات إضافية</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">متخفي</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">متخفي</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">تشغيل وضع التخفي</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">تصحيح تلقائي</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">تصحيح تلقائي</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">تمكين التصحيح التلقائي</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">إدخال الصوت</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">إدخال الصوت</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">افتح موفر خدمة الإدخال الصوتي</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">اليد الواحدة</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">اليد الواحدة</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">تفعيل وضع اليد الواحدة</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">سحب التمييز</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">سحب التمييز</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">موضع علامة السحب الحالي</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">لا شَيْء</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">لا شَيْء</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">لا توجد عمليات</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">إعادة ترتيب المهام</string>
|
||||
<string name="quick_actions_editor__header">تخصيص ترتيب المهام</string>
|
||||
|
||||
@@ -27,23 +27,23 @@
|
||||
<string name="emoji__category__symbols" comment="Emoji category name">Símbolos</string>
|
||||
<string name="emoji__category__flags" comment="Emoji category name">Banderes</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">سهم لأعلى</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">سهم لأعلى</string>
|
||||
<string name="quick_action__arrow_up__tooltip">أداء السهم لأعلى</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">سهم لأسفل</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">سهم لأسفل</string>
|
||||
<string name="quick_action__arrow_down__tooltip">تنفيذ السهم لأسفل</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Flecha esq.</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Flecha der.</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copiar</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Cortar</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Apegar</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Cartafueyu</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Flecha esq.</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Flecha der.</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copiar</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Cortar</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Apegar</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Cartafueyu</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Abrir l\'historial de fustaxes</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Abrir el panel de fustaxes</string>
|
||||
<string name="quick_action__settings" maxLength="12">Opciones</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Opciones</string>
|
||||
<string name="quick_action__settings__tooltip">Abrir la configuración</string>
|
||||
<string name="quick_action__undo" maxLength="12">Desfacer</string>
|
||||
<string name="quick_action__redo" maxLength="12">Refacer</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Más aiciones</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Desfacer</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Refacer</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Más aiciones</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Alternar el correutor automáticu</string>
|
||||
<string name="quick_actions_editor__subheader_dynamic_actions">Aiciones dinámiques ({n})</string>
|
||||
<string name="quick_actions_editor__subheader_hidden_actions">Aiciones anubríes ({n})</string>
|
||||
|
||||
@@ -50,49 +50,50 @@
|
||||
<string name="emoji__history__pinned">Закачени</string>
|
||||
<string name="emoji__history__recent">Последни</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Нагоре</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Нагоре</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Извършва стрелка нагоре</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Надолу</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Надолу</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Извършва стрелка надолу</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Наляво</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Наляво</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Извършва стрелка наляво</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Надясно</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Надясно</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Извършва стрелка надясно</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Изпр. буфера</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Изпр. буфера</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Изчиства последното копирано от междинната памет</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Копиране</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Копиране</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Извършва копиране в междинната памет</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Изрязване</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Изрязване</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Изрязва в междинната памет</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Поставяне</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Поставяне</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Поставя от междинната памет</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Избор всички</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Избор всички</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Избира всичко</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Буфер</string>
|
||||
<string name="quick_action__forward_delete" comment="Please mind the limited available space for the quick action strings">Премахване →</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Буфер</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Хронология на междинната памет</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Емоции</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Емоции</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Отваря панела с емоции</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Превкл. език</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Превкл. език</string>
|
||||
<string name="quick_action__language_switch__tooltip">Изпълнява превключване на езика</string>
|
||||
<string name="quick_action__settings" maxLength="12">Настройки</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Настройки</string>
|
||||
<string name="quick_action__settings__tooltip">Отваря настройките</string>
|
||||
<string name="quick_action__undo" maxLength="12">Отменяне</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Отменяне</string>
|
||||
<string name="quick_action__undo__tooltip">Отменя последното въведено</string>
|
||||
<string name="quick_action__redo" maxLength="12">Възстанов.</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Възстанов.</string>
|
||||
<string name="quick_action__redo__tooltip">Възстановява последното въведено</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Още действия</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Още действия</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Превключва допълнителните действия</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Инкогнито</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Инкогнито</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Превключва режим инкогнито</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Поправки</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Поправки</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Превключва автоматичните поправки</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Въвежд. глас</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Въвежд. глас</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Отваря доставчика на гласово въеждане</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">С една ръка</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">С една ръка</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Превключва режима за работа с една ръка</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Манипулатор</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Манипулатор</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Позиция на влачения елемент</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Липсва</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Липсва</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Без действие</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Подреждане на действията</string>
|
||||
<string name="quick_actions_editor__header">Промяна на подредбата на действията</string>
|
||||
@@ -634,7 +635,8 @@
|
||||
<string name="clipboard__cleared_primary_clip">Текущото съдържание на междинната памет е изчистено</string>
|
||||
<string name="clipboard__cleared_history">Историята е изчистена</string>
|
||||
<string name="clipboard__cleared_full_history">Цялата история е изчистена</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Желаете ли историята на междинната памет да бъде изчистена? Всички елементи, с изключение на закачените ще бъдат премахнати без значение на използвания филтър.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Потвърждавате ли изчистване на междинната памет? Всички филтрирани елементи без закачените ще бъдат премахнати.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">Потвърждавате ли изчистване на междинната памет? Всички елементи без закачените ще бъдат премахнати.</string>
|
||||
<string name="settings__clipboard__title">Междинна памет</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Междинна памет на приложението</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Използва се междинната памет на приложението вместо системната</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">Fixats</string>
|
||||
<string name="emoji__history__recent">Recents</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Amunt</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Amunt</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Ves amunt</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Avall</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Avall</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Ves avall</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Esquerra</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Esquerra</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Cap a l\'esquerra</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Dreta</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Dreta</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Cap a la dreta</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Buidar clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Buidar clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Suprimeix l\'entrada del porta-retalls principal</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copia</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copia</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Copia el contingut al porta-retalls</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Retalla</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Retalla</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Retalla i desa al porta-retalls</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Enganxa</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Enganxa</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Enganxa del porta-retalls</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Escull tot</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Escull tot</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Selecciona-ho tot i desa-ho al porta-retalls</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Porta-retall</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Porta-retall</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Obre l\'historial del porta-retalls</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Obre el tauler d\'emojis</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Canvi idioma</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Canvi idioma</string>
|
||||
<string name="quick_action__language_switch__tooltip">Canvia l\'idioma</string>
|
||||
<string name="quick_action__settings" maxLength="12">Paràmetres</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Paràmetres</string>
|
||||
<string name="quick_action__settings__tooltip">Obre la configuració</string>
|
||||
<string name="quick_action__undo" maxLength="12">Desfés</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Desfés</string>
|
||||
<string name="quick_action__undo__tooltip">Desfà la darrera acció</string>
|
||||
<string name="quick_action__redo" maxLength="12">Refés</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Refés</string>
|
||||
<string name="quick_action__redo__tooltip">Refà la darrera acció</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Més accions</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Més accions</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Mostra o amaga les accions addicionals</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incògnit</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incògnit</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Passa al mode incògnit</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Correc. auto</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Correc. auto</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Habilita la correcció automàtica</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Entrada veu</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Entrada veu</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Obre el proveïdor d\'entrada de veu</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Amb una mà</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Amb una mà</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Passa al mode d\'Amb una mà</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Arrossega</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Arrossega</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Posició actual del cursor</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Cap</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Cap</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Cap operació</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Reorganitza les accions</string>
|
||||
<string name="quick_actions_editor__header">Personalitza l\'ordre de les accions</string>
|
||||
|
||||
@@ -41,49 +41,49 @@
|
||||
<string name="emoji__history__pinned">جێگیرکراو</string>
|
||||
<string name="emoji__history__recent">دوایین</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">چونە سەرەوە</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">چونە سەرەوە</string>
|
||||
<string name="quick_action__arrow_up__tooltip">چوونە سەرەتای دێڕ</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">چونە خوارەوە</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">چونە خوارەوە</string>
|
||||
<string name="quick_action__arrow_down__tooltip">چوونە کۆتایی دێڕ</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">چونە لای چەپ</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">چونە لای چەپ</string>
|
||||
<string name="quick_action__arrow_left__tooltip">چوونە لای چەپی نووسین</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">چونەلای ڕاست</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">چونەلای ڕاست</string>
|
||||
<string name="quick_action__arrow_right__tooltip">چوونە لای ڕاستی نووسین</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">لابردنی گشتی</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">لابردنی گشتی</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">سڕینەوەی سەرجەم لەبەرگیراوەکان</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">لەبەرگرتنەوە</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">لەبەرگرتنەوە</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">لەبەرگرتنەوەی شتەکان</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">بڕین</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">بڕین</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">برینی شتەکان</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">دانان</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">دانان</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">دانانی لەبەرگیراوە</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">دیاریکردن</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">دیاریکردن</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">دیاریکردنی تەواوی نووسین</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">کۆپیکراوەکان</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">کۆپیکراوەکان</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">پیشاندانی لەبەرگیراوەکان</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">ئیمۆجی</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">ئیمۆجی</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">کردنەوەی لیستی ئیمۆجیەکان</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">گۆڕینی زمان</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">گۆڕینی زمان</string>
|
||||
<string name="quick_action__language_switch__tooltip">گۆڕینی زمانی تەختەکلیل</string>
|
||||
<string name="quick_action__settings" maxLength="12">ڕێکخستنەکان</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">ڕێکخستنەکان</string>
|
||||
<string name="quick_action__settings__tooltip">کردنەوەی ڕێکخستنەکان</string>
|
||||
<string name="quick_action__undo" maxLength="12">دواتر</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">دواتر</string>
|
||||
<string name="quick_action__undo__tooltip">گێڕانەوەی دوایین هەنگاو</string>
|
||||
<string name="quick_action__redo" maxLength="12">پێشتر</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">پێشتر</string>
|
||||
<string name="quick_action__redo__tooltip">هێنانەوەی هەنگاوی پێشتر</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">فرمانی زیاتر</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">فرمانی زیاتر</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">پیشاندانی ئامرازی زیاتر</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">دۆخی نادیار</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">دۆخی نادیار</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">چالاککردنی دۆخی نادیار</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">ڕاستکردنەوە</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">ڕاستکردنەوە</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">چالاککردنی ڕاستکردنەوەی نووسین</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">گەڕانی دەنگی</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">گەڕانی دەنگی</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">کردنەوەی تایبەتمەندی گەڕانی دەنگی</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">دۆخی یەکدەست</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">دۆخی یەکدەست</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">چالاککردنی بەکارهێنان بەیەکدەست</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">شوێنی ئامراز</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">شوێنی ئامراز</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">شوێنی ئامرازەکانی ئێستا</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">هیچ نییە</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">هیچ نییە</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">هیچ فرمانێک</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">گۆڕینی شوێن</string>
|
||||
<string name="quick_actions_editor__header">دەستکاریکردنی شوێنی دوگمەکان</string>
|
||||
|
||||
@@ -50,47 +50,48 @@
|
||||
<string name="emoji__history__pinned">Připnuté</string>
|
||||
<string name="emoji__history__recent">Nedávné</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Šipka nahoru</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Šipka nahoru</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Vykonat šipku nahoru</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Šipka dolů</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Šipka dolů</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Vykonat šipku dolů</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Šipka vlevo</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Šipka vlevo</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Vykonat šipku vlevo</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Šipka vpravo</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Šipka vpravo</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Vykonat šipku vpravo</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Vykonat vymazání primární položky schránky</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopírovat</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopírovat</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Vykonat kopírování do schránky</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Vyjmout</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Vyjmout</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Vykonat vyjmutí do schránky</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Vložit</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Vložit</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Vykonat vložení schránky</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Vybrat vše</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Vybrat vše</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Vykonat vybrání všeho do schránky</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Schránka</string>
|
||||
<string name="quick_action__forward_delete" comment="Please mind the limited available space for the quick action strings">Smazat za</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Schránka</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Otevřít historii schránky</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emotikony</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emotikony</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Otevřít panel emotikonů</string>
|
||||
<string name="quick_action__language_switch__tooltip">Provést přepnutí jazyku</string>
|
||||
<string name="quick_action__settings" maxLength="12">Nastavení</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Nastavení</string>
|
||||
<string name="quick_action__settings__tooltip">Otevřít nastavení</string>
|
||||
<string name="quick_action__undo" maxLength="12">Vrátit zpět</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Vrátit zpět</string>
|
||||
<string name="quick_action__undo__tooltip">Vrátit zpět poslední vstup</string>
|
||||
<string name="quick_action__redo" maxLength="12">Znovu</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Znovu</string>
|
||||
<string name="quick_action__redo__tooltip">Provést znovu poslední vstup</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Další akce</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Další akce</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Zobrazit nebo skrýt další akce</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Anonymní</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Anonymní</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Přepnout anonymní režim</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Auto-oprava</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Auto-oprava</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Přepnout automatickou opravu</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Hlas. vstup</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Hlas. vstup</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Otevřít poskytovatele hlasového zadávání</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Jedna ruka</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Jedna ruka</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Přepnout režim jedné ruky</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Značka přes.</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Značka přes.</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Aktuální pozice značky přesouvání</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Žádné</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Žádné</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Žádná operace</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Změnit pořadí akcí</string>
|
||||
<string name="quick_actions_editor__header">Přizpůsobit pořadí akcí</string>
|
||||
@@ -636,7 +637,8 @@
|
||||
<string name="clipboard__cleared_primary_clip">Primární zkopírovaná položka vymazána</string>
|
||||
<string name="clipboard__cleared_history">Historie vymazána</string>
|
||||
<string name="clipboard__cleared_full_history">Celá historie vymazána</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Opravdu chcete vymazat historii schránky? Smažete tím všechny položky kromě připnutých, nezávisle na aktivních filtrech.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Opravdu chcete vymazat celou vaší historii schránky? Toto ovlivní všechny položky, kromě připnutých.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">Opravdu chcete vymazat vaší historii schránky? Toto ovlivní všechny aktuálně vyfiltrované položky, kromě připnutých.</string>
|
||||
<string name="settings__clipboard__title">Schránka</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Použít interní schránku</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Použít interní schránku místo systémové schránky</string>
|
||||
|
||||
@@ -50,43 +50,43 @@
|
||||
<string name="emoji__history__pinned">Fastgjorte</string>
|
||||
<string name="emoji__history__recent">Seneste</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Pil op</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Pil op</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Udfør pil op</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Pil ned</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Pil ned</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Udfør pil ned</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Pil venstre</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Pil venstre</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Udfør pil venstre</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Pil højre</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Pil højre</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Udfør pil højre</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Udfør ryd primær udklipsholder</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopiér</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopiér</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Udfør udklipsholder kopiering</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Klip</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Klip</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Udfør udklipsholder klip</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Indsæt</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Indsæt</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Udfør udklipsholder indsæt</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Vælg alle</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Vælg alle</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Udfør udklipsholder marker alt</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Åben udklipsholder historik</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Åbn emoji-panel</string>
|
||||
<string name="quick_action__settings__tooltip">Åbn indstillinger</string>
|
||||
<string name="quick_action__undo" maxLength="12">Fortryd</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Fortryd</string>
|
||||
<string name="quick_action__undo__tooltip">Fortryd sidste indtastning</string>
|
||||
<string name="quick_action__redo" maxLength="12">Gentag</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Gentag</string>
|
||||
<string name="quick_action__redo__tooltip">Gentag sidste indtastning</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Vis eller skjul flere handlinger</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Inkognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Inkognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Slå inkognito-tilstand til/fra</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Stavekontrol</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Stavekontrol</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Slå stavekontrol til og fra</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Stemmeinput</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Stemmeinput</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Åbn stemmeinput-udbyder</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Enhåndet</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Enhåndet</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Skift enhåndstilstand</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Træk markør</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Træk markør</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Nuværende træk-markør position</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ingen</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ingen</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ingen handling</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Tilpas handlinger</string>
|
||||
<string name="quick_actions_editor__header">Tilpas handlingsrækkefølge</string>
|
||||
|
||||
@@ -50,48 +50,48 @@
|
||||
<string name="emoji__history__pinned">Angepinnt</string>
|
||||
<string name="emoji__history__recent">Kürzlich</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Pfeil hoch</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Pfeil hoch</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Pfeil nach oben ausführen</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Pfeil unten</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Pfeil unten</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Pfeil nach unten ausführen</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Pfeil links</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Pfeil links</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Pfeil nach links ausführen</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Pfeil rechts</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Pfeil rechts</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Pfeil nach rechts ausführen</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Clip löschen</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Clip löschen</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Hauptclip von der Zwischenablage löschen</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopieren</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopieren</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Zur Zwischenablage kopieren</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Ausschneiden</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Ausschneiden</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Zur Zwischenablage ausschneiden</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Einfügen</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Einfügen</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Einfügen aus der Zwischenablage</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Alles ausw.</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Alles ausw.</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Alles auswählen in der Zwischenablage</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Zwischenab.</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Zwischenab.</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Zwischenablage Verlauf öffnen</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Öffne Emoji-Panel</string>
|
||||
<string name="quick_action__language_switch__tooltip">Sprachwechsel ausführen</string>
|
||||
<string name="quick_action__settings" maxLength="12">Einstellung</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Einstellung</string>
|
||||
<string name="quick_action__settings__tooltip">Einstellungen öffnen</string>
|
||||
<string name="quick_action__undo" maxLength="12">Rückgängig</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Rückgängig</string>
|
||||
<string name="quick_action__undo__tooltip">Letzte Aktion rückgängig machen</string>
|
||||
<string name="quick_action__redo" maxLength="12">Wiederholen</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Wiederholen</string>
|
||||
<string name="quick_action__redo__tooltip">Letzte rückgängig gemachte Aktion wiederholen</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Mehr</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Mehr</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Zusätzliche Aktionen anzeigen oder verstecken</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Inkognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Inkognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Inkognitomodus umschalten</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autokorrekt.</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autokorrekt.</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Autokorrektur umschalten</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Spracheinga.</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Spracheinga.</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Öffne Anbieter für Spracheingabe</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Einhändig</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Einhändig</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Einhandmodus umschalten</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Zug-Marker</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Zug-Marker</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Aktuelle Marker-Position</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Keine</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Keine</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Keine Operation</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Aktionen neu ordnen</string>
|
||||
<string name="quick_actions_editor__header">Passe Reihenfolge der Aktionen an</string>
|
||||
@@ -162,11 +162,13 @@
|
||||
<string name="settings__theme_manager__title_night" comment="Title of the theme manager screen for night theme selection">Nacht-Design auswählen</string>
|
||||
<string name="settings__theme_editor__fine_tune__title">Editoreinstellungen</string>
|
||||
<string name="settings__theme_editor__fine_tune__level">Bearbeitungsmodus</string>
|
||||
<string name="settings__theme_editor__fine_tune__color_representation">Farbdarstellung</string>
|
||||
<string name="settings__theme_editor__fine_tune__display_kbd_after_dialogs">Zeige Tastatur nach Dialogen</string>
|
||||
<string name="settings__theme_editor__add_rule">Regel hinzufügen</string>
|
||||
<string name="settings__theme_editor__edit_rule">Regel bearbeiten</string>
|
||||
<string name="settings__theme_editor__no_rules_defined">Für das Stylesheet sind keine Regeln definiert. Füge eine Regel hinzu, um dieses Stylesheet anzupassen.</string>
|
||||
<string name="settings__theme_editor__rule_already_exists">Diese Stylesheetregel ist schon definiert.</string>
|
||||
<string name="settings__theme_editor__rule_name">Element / Anmerkung</string>
|
||||
<string name="settings__theme_editor__rule_codes">Ziel-Codes</string>
|
||||
<string name="settings__theme_editor__rule_groups">Gruppen</string>
|
||||
<string name="settings__theme_editor__rule_selectors">Selektoren</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">Alpinglitaj</string>
|
||||
<string name="emoji__history__recent">Lastaj</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Supren</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Supren</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Movi la kursoron al la supra linio</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Suben</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Suben</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Movi la kursoron al la malsupra linio</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Maldekstren</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Maldekstren</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Movi la kursoron maldekstren</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Dekstren</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Dekstren</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Movi la kursoron dekstren</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Viŝi lastan</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Viŝi lastan</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Viŝi lastan tondujan eron</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopii</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopii</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Kopii al la tondujo</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Eltondi</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Eltondi</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Eltondi al la tondujo</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Alglui</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Alglui</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Alglui el la tondujo</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Elekti ĉion</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Elekti ĉion</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Elekti ĉion por kopii aŭ eltondi</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Tondujo</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Tondujo</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Malfermi tondujan historion</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoĝioj</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoĝioj</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Malfermi emoĝian panelon</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Lingva ŝanĝo</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Lingva ŝanĝo</string>
|
||||
<string name="quick_action__language_switch__tooltip">Baskuligi lingvon</string>
|
||||
<string name="quick_action__settings" maxLength="12">Agordoj</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Agordoj</string>
|
||||
<string name="quick_action__settings__tooltip">Malfermi agordojn</string>
|
||||
<string name="quick_action__undo" maxLength="12">Malfari</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Malfari</string>
|
||||
<string name="quick_action__undo__tooltip">Malfari la lastan enigon</string>
|
||||
<string name="quick_action__redo" maxLength="12">Refari</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Refari</string>
|
||||
<string name="quick_action__redo__tooltip">Refari la lastan enigon</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Pliaj agoj</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Pliaj agoj</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Montri aŭ kaŝi pliajn agojn</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Inkognita</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Inkognita</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Aktivigi/Malaktivigi Inkognitan moduson</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Aŭtokorekt.</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Aŭtokorekt.</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">(Mal)aktivigi aŭtokorektadon</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Voĉa enigo</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Voĉa enigo</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Malfermi provizanton de voĉa enigo</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Unu-mana</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Unu-mana</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Aktivigi/Malaktivigi unu-manan moduson</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Kursoro</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Kursoro</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Nuna kursora pozicio</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Neniu</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Neniu</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nenia operacio</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Reordigi agojn</string>
|
||||
<string name="quick_actions_editor__header">Agordi agojn ordon</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">Fijado</string>
|
||||
<string name="emoji__history__recent">Reciente</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Arriba</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Arriba</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Realizar flecha hacia arriba</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Abajo</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Abajo</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Realizar flecha hacia abajo</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Izquierda</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Izquierda</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Realizar flecha hacia la izquierda</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Derecha</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Derecha</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Realizar flecha hacia la derecha</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Borrar clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Borrar clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Realizar limpiar portapapeles principal</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copiar</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copiar</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Realizar copia del portapapeles</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Cortar</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Cortar</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Cortar al portapapeles</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Pegar</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Pegar</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Pegar del portapapeles</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Marcar todo</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Marcar todo</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Seleccionar todo en el portapapeles</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Portapapeles</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Portapapeles</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Abrir historial del portapapeles</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Abrir el panel de emojis</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Mudar idioma</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Mudar idioma</string>
|
||||
<string name="quick_action__language_switch__tooltip">Realizar el cambio del idioma</string>
|
||||
<string name="quick_action__settings" maxLength="12">Ajustes</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Ajustes</string>
|
||||
<string name="quick_action__settings__tooltip">Abrir ajustes</string>
|
||||
<string name="quick_action__undo" maxLength="12">Deshacer</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Deshacer</string>
|
||||
<string name="quick_action__undo__tooltip">Deshacer la última entrada</string>
|
||||
<string name="quick_action__redo" maxLength="12">Rehacer</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Rehacer</string>
|
||||
<string name="quick_action__redo__tooltip">Rehacer la última entrada</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Más acciones</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Más acciones</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Mostrar u ocultar las operaciones adicionales</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incógnito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incógnito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Activar el modo incógnito</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autocorregir</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autocorregir</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Activar la autocorrección</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Entrada voz</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Entrada voz</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Abrir proveedor de entrada de voz</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Con una mano</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Con una mano</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Activar el modo de una mano</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Arrastrar</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Arrastrar</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Posición actual del cursor</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ninguno</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ninguno</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ninguna operación</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Reorganizar operaciones</string>
|
||||
<string name="quick_actions_editor__header">Personalizar el orden de las operaciones</string>
|
||||
@@ -631,7 +631,8 @@
|
||||
<string name="clipboard__cleared_primary_clip">Clip principal borrado</string>
|
||||
<string name="clipboard__cleared_history">Historial borrado</string>
|
||||
<string name="clipboard__cleared_full_history">Historial completo borrado</string>
|
||||
<string name="clipboard__confirm_clear_history__message">¿Estás seguro de que quieres limpiar el historial del portapapeles? Esto limpiará todos los ítems excepto los fijados, sin tener en cuenta los filtros activos.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">¿Estás seguro de que quieres borrar todo el historial del portapapeles? Esto afectará a todos los elementos, excepto los fijados.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">¿Estás seguro de que quieres borrar el historial del portapapeles? Esto afectará a todos los elementos filtrados actualmente, excepto los fijados.</string>
|
||||
<string name="settings__clipboard__title">Portapapeles</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Usar portapapeles interno</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Usar portapapeles interno en vez del portapapeles del sistema</string>
|
||||
|
||||
@@ -50,32 +50,32 @@
|
||||
<string name="emoji__history__pinned">Kinnitatud</string>
|
||||
<string name="emoji__history__recent">Hiljutine</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Nool üles</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Nool üles</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Soorita nool üles</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Nool alla</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Nool alla</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Soorita nool alla</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Soorita nool vasakule</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Soorita nool paremale</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Soorita põhilõikelaua tühjendus</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopeeri</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopeeri</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Soorita lõikelaual kopeeri</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Lõika</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Lõika</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Soorita lõikelaual lõika</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Kleebi</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Kleebi</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Soorita lõikelaual kleebi</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Vali kõik</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Vali kõik</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Soorita lõikelaual vali kõik</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Lõikelaud</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Lõikelaud</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Ava lõikelaua ajalugu</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Ava emojide paneel</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Vaheta keelt</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Vaheta keelt</string>
|
||||
<string name="quick_action__language_switch__tooltip">Soorita keelevahetus</string>
|
||||
<string name="quick_action__settings" maxLength="12">Sätted</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Sätted</string>
|
||||
<string name="quick_action__settings__tooltip">Ava sätted</string>
|
||||
<string name="quick_action__undo" maxLength="12">Võta tagasi</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Võta tagasi</string>
|
||||
<string name="quick_action__undo__tooltip">Võta viimane sisestus tagasi</string>
|
||||
<string name="quick_action__redo" maxLength="12">Tee uuesti</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Tee uuesti</string>
|
||||
<string name="quick_action__redo__tooltip">Tee viimane sisestus uuesti</string>
|
||||
<!-- Incognito mode strings -->
|
||||
<!-- Settings UI strings -->
|
||||
|
||||
@@ -26,34 +26,34 @@
|
||||
<string name="emoji__category__symbols" comment="Emoji category name">نمادها</string>
|
||||
<string name="emoji__category__flags" comment="Emoji category name">پرچم ها</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">فلش بالا</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">فلش بالا</string>
|
||||
<string name="quick_action__arrow_up__tooltip">فلش به سمت بالا</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">فلش پایین</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">فلش پایین</string>
|
||||
<string name="quick_action__arrow_down__tooltip">فلش به سمت پایین</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">فلش چپ</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">فلش چپ</string>
|
||||
<string name="quick_action__arrow_left__tooltip">فلش به سمت چپ</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">فلش راست</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">جابه جایی</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">برش</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">فلش راست</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">جابه جایی</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">برش</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">برش کلیپ بورد را انجام دهید</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">جای گذاری</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">جای گذاری</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">چسباندن کلیپ بورد را انجام دهید</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">انتخاب همه</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">کلیپبورد</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">انتخاب همه</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">کلیپبورد</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">باز کردن تاریخچه کلیپ بورد</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">شکلک</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">شکلک</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">باز کردن پنل شکلک ها</string>
|
||||
<string name="quick_action__settings" maxLength="12">تنظیمات</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">تنظیمات</string>
|
||||
<string name="quick_action__settings__tooltip">باز کردن تنظیمات</string>
|
||||
<string name="quick_action__undo" maxLength="12">بازگرد</string>
|
||||
<string name="quick_action__redo" maxLength="12">انجام مجدد</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">ناشناس</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">بازگرد</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">انجام مجدد</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">ناشناس</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">غیر فعال کردن حالت ناشناس</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">تصحیح خودکار</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">تصحیح خودکار</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">غیر فعال کردن تصحیح خودکار</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">ورودی صدا</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">یک دستی</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">هیچ کدام</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">ورودی صدا</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">یک دستی</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">هیچ کدام</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">هیچ عملی</string>
|
||||
<!-- Incognito mode strings -->
|
||||
<!-- Settings UI strings -->
|
||||
|
||||
@@ -50,48 +50,48 @@
|
||||
<string name="emoji__history__pinned">Épinglé</string>
|
||||
<string name="emoji__history__recent">Récent</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Flèche haut</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Flèche haut</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Appui sur la flèche haut</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Flèche bas</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Flèche bas</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Appui sur la flèche bas</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Gauche</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Gauche</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Appui sur la flèche gauche</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Droite</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Droite</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Appui sur la flèche droite</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Effacer clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Effacer clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Effacer l\'élément du presse-papiers principal</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copier</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copier</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Copie vers le presse-papier</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Couper</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Couper</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Coupe vers le presse-papier</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Coller</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Coller</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Coller depuis le presse-papier</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Tout sélect.</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Tout sélect.</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Tout sélectionner dans le presse-papiers</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Pressepapier</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Pressepapier</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Ouvrir l\'historique du presse-papier</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Émoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Émoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Ouvrir le panneau émoji</string>
|
||||
<string name="quick_action__language_switch__tooltip">Effectuer un changement de langue</string>
|
||||
<string name="quick_action__settings" maxLength="12">Paramètres</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Paramètres</string>
|
||||
<string name="quick_action__settings__tooltip">Accède aux paramètres</string>
|
||||
<string name="quick_action__undo" maxLength="12">Annuler</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Annuler</string>
|
||||
<string name="quick_action__undo__tooltip">Annule l\'action précédente</string>
|
||||
<string name="quick_action__redo" maxLength="12">Rétablir</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Rétablir</string>
|
||||
<string name="quick_action__redo__tooltip">Rétablit l\'action précédente</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Additionnel</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Additionnel</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Affiche ou cache les actions supplémentaires</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Active ou désactive le mode incognito</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Correcteur</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Correcteur</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Active ou désactive la correction automatique</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Saisie voc.</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Saisie voc.</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Ouvre le fournisseur de saisie vocale</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">À une main</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">À une main</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Active ou désactive le mode une seule main</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Curseur</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Curseur</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Position actuelle du curseur</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Aucun</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Aucun</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Aucune opération</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Réorganiser les actions</string>
|
||||
<string name="quick_actions_editor__header">Personnaliser l\'ordre des actions</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">Kitűzött</string>
|
||||
<string name="emoji__history__recent">Legutóbbi</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Felfele nyíl</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Felfele nyíl</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Felfelé nyíl végrehajtása</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Lefele nyíl</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Lefele nyíl</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Lefelé nyíl végrehajtása</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Balra nyíl</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Balra nyíl</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Balra nyíl végrehajtása</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Jobbra nyíl</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Jobbra nyíl</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Jobbra nyíl végrehajtása</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Vágólapürítő</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Vágólapürítő</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Elsődleges vágólap ürítésének végrehajtása</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Másolás</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Másolás</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Vágólapra másolás végrehajtása</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Kivágás</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Kivágás</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Vágólapra kivágás végrehajtása</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Beillesztés</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Beillesztés</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Vágólapról beillesztés végrehajtása</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Mind kijelöl</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Mind kijelöl</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Összes kijelölése vágólapra végrehajtása</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Vágólap</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Vágólap</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Vágólap-előzmények megnyitása</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emodzsi</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emodzsi</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Emodzsi panel megnyitása</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Nyelv</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Nyelv</string>
|
||||
<string name="quick_action__language_switch__tooltip">Nyelvváltás végrehajtása</string>
|
||||
<string name="quick_action__settings" maxLength="12">Beállítások</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Beállítások</string>
|
||||
<string name="quick_action__settings__tooltip">Beállítások megnyitása</string>
|
||||
<string name="quick_action__undo" maxLength="12">Visszavonás</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Visszavonás</string>
|
||||
<string name="quick_action__undo__tooltip">Utolsó bemenet visszavonása</string>
|
||||
<string name="quick_action__redo" maxLength="12">Újra</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Újra</string>
|
||||
<string name="quick_action__redo__tooltip">Utolsó bemenet újbóli beírása</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Továbbiak</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Továbbiak</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">További műveletek megjelenítése vagy elrejtése</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Inkognitó</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Inkognitó</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Inkognitó mód bekapcsolása</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Auto-korrekt</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Auto-korrekt</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Automatikus javítás be/ki</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Hangbevitel</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Hangbevitel</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Hangbevitel szolgáltatójának megnyitása</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Egykezes</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Egykezes</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Egykezes mód be/ki</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Húzásjelölő</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Húzásjelölő</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Jelenlegi húzásjelölő pozíciója</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Semmi</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Semmi</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nincs művelet</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Műveletek átrendezése</string>
|
||||
<string name="quick_actions_editor__header">Műveletek sorrendjének személyre szabása</string>
|
||||
@@ -633,7 +633,6 @@
|
||||
<string name="clipboard__cleared_primary_clip">Elsődleges vágólap törölve</string>
|
||||
<string name="clipboard__cleared_history">Előzmények törölve</string>
|
||||
<string name="clipboard__cleared_full_history">Az összes előzmény törölve</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Biztosan törölni szeretné a vágólap előzményeit? Ez az összes elemet törli, kivéve a kitűzötteket, függetlenül az aktív szűrőktől.</string>
|
||||
<string name="settings__clipboard__title">Vágólap</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Belső vágólap használata</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Belső vágólap használata a rendszer vágólapja helyett</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">Disematkan</string>
|
||||
<string name="emoji__history__recent">Terbaru</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Panah atas</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Panah atas</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Lakukan panah atas</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Panah bawah</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Panah bawah</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Lakukan panah bawah</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Panah kiri</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Panah kiri</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Lakukan panah kiri</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Panah kanan</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Panah kanan</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Lakukan panah kanan</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Hapus klip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Hapus klip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Lakukan penghapusan klip utama pada papan klip</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Salin</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Salin</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Lakukan salinan papan klip</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Potong</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Potong</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Lakukan potongan papan klip</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Tempelkan</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Tempelkan</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Lakukan penempelan papan klip</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Pilih semua</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Pilih semua</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Lakukan pemilihan semua papan klip</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Papan klip</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Papan klip</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Buka riwayat papan klip</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Buka panel emoji</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Ganti bahasa</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Ganti bahasa</string>
|
||||
<string name="quick_action__language_switch__tooltip">Ubah bahasa</string>
|
||||
<string name="quick_action__settings" maxLength="12">Pengaturan</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Pengaturan</string>
|
||||
<string name="quick_action__settings__tooltip">Buka pengaturan</string>
|
||||
<string name="quick_action__undo" maxLength="12">Urungkan</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Urungkan</string>
|
||||
<string name="quick_action__undo__tooltip">Urungkan masukan terakhir</string>
|
||||
<string name="quick_action__redo" maxLength="12">Ulangi</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Ulangi</string>
|
||||
<string name="quick_action__redo__tooltip">Ulangi masukan terakhir</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Tndkn. lain</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Tndkn. lain</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Tampilkan atau sembunyikan tindakan tambahan</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Penyamaran</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Penyamaran</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Alihkan mode penyamaran</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Koreksi oto.</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Koreksi oto.</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Alihkan koreksi otomatis</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Input suara</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Input suara</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Buka penyedia masukan suara</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Satu tangan</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Satu tangan</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Alih mode satu tangan</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Tarik marker</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Tarik marker</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Posisi penanda tarikan saat ini</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Tidak ada</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Tidak ada</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Tidak ada tindakan</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Urutkan ulang tindakan</string>
|
||||
<string name="quick_actions_editor__header">Ubah urutan tindakan</string>
|
||||
@@ -632,7 +632,6 @@ Klik di sini untuk menyelesaikan masalah ini.</string>
|
||||
<string name="clipboard__cleared_primary_clip">Klip utama dibersihkan</string>
|
||||
<string name="clipboard__cleared_history">Riwayat dibersihkan</string>
|
||||
<string name="clipboard__cleared_full_history">Seluruh riwayat dibersihkan</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Apakah Anda yakin ingin menghapus riwayat papan klip Anda? Ini akan menghapus semua item kecuali yang telah disematkan, terlepas dari filter yang aktif.</string>
|
||||
<string name="settings__clipboard__title">Papan klip</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Gunakan papan klip internal</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Gunakan papan klip internal daripada papan klip sistem</string>
|
||||
|
||||
@@ -50,48 +50,48 @@
|
||||
<string name="emoji__history__pinned">Selezionata</string>
|
||||
<string name="emoji__history__recent">Recente</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Freccia su</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Freccia su</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Eseguire freccia su</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Freccia giù</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Freccia giù</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Eseguire freccia giù</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Sinistra</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Sinistra</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Eseguire freccia sinistra</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Destra</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Destra</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Eseguire freccia destra</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Pulire clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Pulire clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Esegui sgombro degli appunti primari</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copia</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copia</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Esegui copia negli appunti</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Taglia</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Taglia</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Esegui taglia negli appunti</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Incolla</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Incolla</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Esegui incolla negli appunti</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Selez. tutto</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Selez. tutto</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Esegui seleziona tutti negli appunti</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Appunti</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Appunti</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Apri cronologia degli appunti</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Apri pannello degli emoji</string>
|
||||
<string name="quick_action__language_switch__tooltip">Esegui cambio lingua</string>
|
||||
<string name="quick_action__settings" maxLength="12">Impostazioni</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Impostazioni</string>
|
||||
<string name="quick_action__settings__tooltip">Apri impostazioni</string>
|
||||
<string name="quick_action__undo" maxLength="12">Annulla</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Annulla</string>
|
||||
<string name="quick_action__undo__tooltip">Annulla l\'ultima azione</string>
|
||||
<string name="quick_action__redo" maxLength="12">Ripristina</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Ripristina</string>
|
||||
<string name="quick_action__redo__tooltip">Ripristina l\'ultima azione</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Altre azioni</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Altre azioni</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Mostra o nascondi azioni aggiuntive</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Attiva o disattiva modalità in incognito</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Auto-correz.</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Auto-correz.</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Attiva o disattiva correzione automatica</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Input vocale</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Input vocale</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Apri fornitore d\'immissione di voce</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">A una mano</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">A una mano</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Attiva o disattiva modalità a una mano</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Trascina</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Trascina</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Posizione dell\'attuale marcatore di trascinamento</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nessuna</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nessuna</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nessuna operazione</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Riordina azioni</string>
|
||||
<string name="quick_actions_editor__header">Riordina ordine azioni</string>
|
||||
@@ -153,6 +153,7 @@
|
||||
<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 scuro</string>
|
||||
<string name="pref__theme__theme_accent_color__label" comment="Label of accent color preference in Theme"> Colore dell\'accentMateria</string>
|
||||
<string name="settings__theme_manager__title_manage" comment="Title of the theme manager screen for managing installed and custom themes">Gestisci temi installati</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>
|
||||
@@ -531,7 +532,7 @@
|
||||
<string name="clipboard__cleared_primary_clip">Clip principale cancellata</string>
|
||||
<string name="clipboard__cleared_history">Cronologia cancellata</string>
|
||||
<string name="clipboard__cleared_full_history">Tutta la cronologia cancellata</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Sei sicuro di voler cancellare la cronologia degli appunti? Questa azione cancellerà tutti gli appunti tranne quelli spuntati, indipendentemente dai filtri attivi.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Vuoi cancellare lo storico della clipboard? Questa azione cancellerà tutto lo storico tranne i messaggi con spunta.</string>
|
||||
<string name="settings__clipboard__title">Appunti</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Usa gli appunti integrati</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Usa gli appunti integrati invece degli appunti di sistema</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">הוצמד</string>
|
||||
<string name="emoji__history__recent">לאחרונה</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">חץ למעלה</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">חץ למעלה</string>
|
||||
<string name="quick_action__arrow_up__tooltip">ביצוע חץ למעלה</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">חץ למטה</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">חץ למטה</string>
|
||||
<string name="quick_action__arrow_down__tooltip">ביצוע חץ למטה</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">חץ שמאלי</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">חץ שמאלי</string>
|
||||
<string name="quick_action__arrow_left__tooltip">ביצוע חץ שמאלה</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">חץ ימינה</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">חץ ימינה</string>
|
||||
<string name="quick_action__arrow_right__tooltip">ביצוע חץ ימינה</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">נקה לוח ראשי</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">נקה לוח ראשי</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">בצע ניקוי לוח ראשי</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">העתק</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">העתק</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">בצע העתקה מהלוח</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">גזור</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">גזור</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">בצע גזירה מהלוח</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">הדבק</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">הדבק</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">בצע הדבקה מהלוח</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">בחר הכל</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">בחר הכל</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">בצע בחירה בהכל מהלוח</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">לוח הדבקה</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">לוח הדבקה</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">אפשר היסטוריה של הלוח</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">אמוג\'י</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">אמוג\'י</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">לפתוח אימוג\'י לוח</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">החלף שפה</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">החלף שפה</string>
|
||||
<string name="quick_action__language_switch__tooltip">בצע החלפת שפה</string>
|
||||
<string name="quick_action__settings" maxLength="12">הגדרות</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">הגדרות</string>
|
||||
<string name="quick_action__settings__tooltip">לפתוח הגדרות</string>
|
||||
<string name="quick_action__undo" maxLength="12">בטל</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">בטל</string>
|
||||
<string name="quick_action__undo__tooltip">בטל את השינוי האחרון</string>
|
||||
<string name="quick_action__redo" maxLength="12">בצע שוב</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">בצע שוב</string>
|
||||
<string name="quick_action__redo__tooltip">החזר את השינוי האחרון</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">עוד פעולות</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">עוד פעולות</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">להראות או להחביא פעולות נוספות</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">גלישה בסתר</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">גלישה בסתר</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">הפעל גלישה בסתר</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">תיקון אוטומט</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">תיקון אוטומט</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">מתג תיקון אוטומטי</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">קלט קולי</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">קלט קולי</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">לפתוח ספק קלט קולי</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">ביד אחת</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">ביד אחת</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">מתג מצב יד-אחת</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">סמן גרור</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">סמן גרור</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">מקום נוכחי של סמן גרירה</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">כלום</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">כלום</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">שום פעולה</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">סדר פעולות</string>
|
||||
<string name="quick_actions_editor__header">התאם אישית סדר פעולות</string>
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">ピン留め済み</string>
|
||||
<string name="emoji__history__recent">最近使用</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">上矢印</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">上矢印</string>
|
||||
<string name="quick_action__arrow_up__tooltip">上矢印を実行</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">下矢印</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">下矢印</string>
|
||||
<string name="quick_action__arrow_down__tooltip">下矢印を実行</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">左矢印</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">左矢印</string>
|
||||
<string name="quick_action__arrow_left__tooltip">左矢印を実行</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">右矢印</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">右矢印</string>
|
||||
<string name="quick_action__arrow_right__tooltip">右矢印を実行</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">メインクリップ消去</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">メインクリップ消去</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">メインクリップボードを空にする</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">コピー</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">コピー</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">クリップボードにコピー</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">切り取り</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">切り取り</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">クリップボードに切り取り</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">貼り付け</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">貼り付け</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">クリップボードから貼り付け</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">すべて選択</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">すべて選択</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">すべて選択</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">クリップボード</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">クリップボード</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">クリップボード履歴を開く</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">絵文字</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">絵文字</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">メディアパネルを開く</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">言語切替</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">言語切替</string>
|
||||
<string name="quick_action__language_switch__tooltip">言語を切り替える</string>
|
||||
<string name="quick_action__settings" maxLength="12">設定</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">設定</string>
|
||||
<string name="quick_action__settings__tooltip">設定を開く</string>
|
||||
<string name="quick_action__undo" maxLength="12">元に戻す</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">元に戻す</string>
|
||||
<string name="quick_action__undo__tooltip">直前の操作を元に戻す</string>
|
||||
<string name="quick_action__redo" maxLength="12">やり直し</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">やり直し</string>
|
||||
<string name="quick_action__redo__tooltip">直前の操作をやり直す</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">他の操作</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">他の操作</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">追加の操作を表示/非表示</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">シークレット</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">シークレット</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">シークレットモードの切り替え</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">自動修正</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">自動修正</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">自動修正の切り替え</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">音声入力</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">音声入力</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">音声入力プロバイダを開く</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">片手モード</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">片手モード</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">片手モードの切り替え</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">ドラッグマーカー</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">ドラッグマーカー</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Current drag marker position</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">操作なし</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">操作なし</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">No operation</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">アクションの並び替え</string>
|
||||
<string name="quick_actions_editor__header">アクションの順序をカスタマイズ</string>
|
||||
|
||||
@@ -45,47 +45,47 @@
|
||||
<string name="emoji__history__pinned">고정됨</string>
|
||||
<string name="emoji__history__recent">최근</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">화살표 위로</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">화살표 위로</string>
|
||||
<string name="quick_action__arrow_up__tooltip">위쪽 화살표 동작 실행</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">화살표 아래로</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">화살표 아래로</string>
|
||||
<string name="quick_action__arrow_down__tooltip">아래쪽 화살표 동작 실행</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">화살표 왼쪽으로</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">화살표 왼쪽으로</string>
|
||||
<string name="quick_action__arrow_left__tooltip">왼쪽 화살표 동작 실행</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">화살표 오른쪽으로</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">화살표 오른쪽으로</string>
|
||||
<string name="quick_action__arrow_right__tooltip">오른쪽 화살표 동작 실행</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">주 클립보드 비우기</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">주 클립보드 비우기</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">주 클립보드 내용 비우기 실행</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">복사</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">복사</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">클립보드에서 복사 실행</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">잘라내기</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">잘라내기</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">클립보드에서 잘라내기 실행</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">붙여넣기</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">붙여넣기</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">클립보드에서 붙여넣기 실행</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">모두 선택</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">모두 선택</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">클립보드에서 모두 선택 실행</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">클립보드</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">클립보드</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">클립보드 기록 열기</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">이모지</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">이모지</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">이모지 패널 열기</string>
|
||||
<string name="quick_action__settings" maxLength="12">설정</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">설정</string>
|
||||
<string name="quick_action__settings__tooltip">설정 열기</string>
|
||||
<string name="quick_action__undo" maxLength="12">실행 취소</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">실행 취소</string>
|
||||
<string name="quick_action__undo__tooltip">마지막 입력 실행 취소</string>
|
||||
<string name="quick_action__redo" maxLength="12">다시 실행</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">다시 실행</string>
|
||||
<string name="quick_action__redo__tooltip">마지막 입력 다시 실행</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">추가 동작</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">추가 동작</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">추가 동작 표시 / 숨기기</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">시크릿</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">시크릿</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">시크릿 모드 켜기 / 끄기</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">자동 수정</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">자동 수정</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">자동 수정 켜기 / 끄기</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">음성 입력</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">음성 입력</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">음성 입력 제공자 열기</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">한손</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">한손</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">한손 모드 켜기 / 끄기</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">드래그 마커</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">드래그 마커</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">현재 드래그 마커 위치</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">없음</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">없음</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">작업 없음</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">액션 재배치</string>
|
||||
<string name="quick_actions_editor__header">액션 순서 사용자 정의</string>
|
||||
|
||||
@@ -50,46 +50,46 @@
|
||||
<string name="emoji__history__pinned">Piesprausta</string>
|
||||
<string name="emoji__history__recent">Nesena</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Uz augšu</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Uz augšu</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Izpildīt bultu uz augšu</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Uz leju</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Uz leju</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Izpildīt bultu uz leju</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Pa kreisi</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Pa kreisi</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Izpildīt bultu pa kreisi</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Pa labi</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Pa labi</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Izpildīt bultu pa labi</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Izpildīt galvenā starliktuves vienuma notīrīšanu</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopēt</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopēt</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Izpildīt starpliktuves kopēšanu</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Izgriezt</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Izgriezt</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Izpildīt starpliktuves izgriešanu</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Ielīmēt</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Ielīmēt</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Izpildīt starpliktuves ielīmēšanu</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Iezīmēt visu</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Iezīmēt visu</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Veikt visu starpliktuves vienumu atlasīšanu</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Starpliktuve</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Starpliktuve</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Atvērt starpliktuves vēsturi</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emocijzīmes</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emocijzīmes</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Atvērt emocijzīmju izvēlni</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Mainīt val.</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Mainīt val.</string>
|
||||
<string name="quick_action__language_switch__tooltip">Veikt valodas nomainīšanu</string>
|
||||
<string name="quick_action__settings" maxLength="12">Iestatījumi</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Iestatījumi</string>
|
||||
<string name="quick_action__settings__tooltip">Atvērt iestatījumus</string>
|
||||
<string name="quick_action__undo" maxLength="12">Atsaukt</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Atsaukt</string>
|
||||
<string name="quick_action__undo__tooltip">Atsaukt pēdējo ievadi</string>
|
||||
<string name="quick_action__redo" maxLength="12">Atatsaukt</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Atatsaukt</string>
|
||||
<string name="quick_action__redo__tooltip">Atkārtoti veikt pēdējo ievadi</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Parādīt vai paslēpt papildu darbības</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Slepenība</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Slepenība</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Pārslēgt slepenību</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autolabošana</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autolabošana</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Pārslēgt automātisko labošanu</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Balss ievade</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Balss ievade</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Atvērt balss ievades nodrošinātāju</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Vienrocīgs</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Vienrocīgs</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Pārslēgt vienrocīgo ievadi</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Pašreizējā rādītāja vilkšanas atrašanās vieta</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nekas</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nekas</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nav darbības</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Mainīt darbības secību</string>
|
||||
<string name="quick_actions_editor__header">Pielāgot darbību secību</string>
|
||||
@@ -603,7 +603,8 @@
|
||||
<string name="clipboard__cleared_primary_clip">Galvenais vienums notīrīts</string>
|
||||
<string name="clipboard__cleared_history">Vēsture notīrīta</string>
|
||||
<string name="clipboard__cleared_full_history">Visa vēsture notīrīta</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Vai tiešām iztīrīt starpliktuves vēsturi? Tas notīrīs visus vienumus (izņemot piespraustos) neatkarīgi no spēkā esošajiem atlasītājiem.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Vai tiešām iztīrīt visu starpliktuves vēseturi? Tas ietekmēs visus vienums, izņemot piespraustos.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">Vai tiešām iztīrīt starpliktuves vēseturi? Tas ietekmēs visus pašreiz atsijātos vienumus, izņemot piespraustos.</string>
|
||||
<string name="settings__clipboard__title">Starpliktuve</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Izmantot iekšējo starpliktuvi</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Izmantot iekšējo, nevis sistēmas starpliktuvi</string>
|
||||
|
||||
@@ -50,48 +50,48 @@
|
||||
<string name="emoji__history__pinned">Vastgemaakt</string>
|
||||
<string name="emoji__history__recent">Recent</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Pijl omhoog</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Pijl omhoog</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Pijl omhoog uitvoeren</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Pijl omlaag</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Pijl omlaag</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Pijl omlaag uitvoeren</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Pijl links</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Pijl links</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Pijl naar links uitvoeren</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Pijl rechts</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Pijl rechts</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Pijl naar rechts uitvoeren</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Wis klembord</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Wis klembord</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Primaire klembord wissen</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopiëren</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopiëren</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Klembord kopiëren</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Knippen</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Knippen</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Klembord knippen uitvoeren</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Plakken</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Plakken</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Plakken van klembord uitvoeren</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Alles selec.</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Alles selec.</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Alles selecteren op klembord</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Klembord</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Klembord</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Klembordgeschiedenis openen</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Emoji-paneel openen</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Wijzig taal</string>
|
||||
<string name="quick_action__settings" maxLength="12">Instellingen</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Wijzig taal</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Instellingen</string>
|
||||
<string name="quick_action__settings__tooltip">Instellingen openen</string>
|
||||
<string name="quick_action__undo" maxLength="12">Annuleren</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Annuleren</string>
|
||||
<string name="quick_action__undo__tooltip">De laatste invoer ongedaan maken</string>
|
||||
<string name="quick_action__redo" maxLength="12">Opnieuw</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Opnieuw</string>
|
||||
<string name="quick_action__redo__tooltip">De laatste invoer opnieuw uitvoeren</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Meer acties</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Meer acties</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Extra acties tonen of verbergen</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Incognitomodus schakelen</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autocorrect.</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autocorrect.</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Autocorrectie schakelen</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Spraakinvoer</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Spraakinvoer</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Spraakinvoerprovider openen</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Met één hand</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Met één hand</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Bediening met één hand schakelen</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Sleepmarker</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Sleepmarker</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Huidige positie van de sleepmarkering</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Geen</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Geen</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Geen actie</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Acties opnieuw ordenen</string>
|
||||
<string name="quick_actions_editor__header">Volgorde van acties aanpassen</string>
|
||||
|
||||
@@ -26,47 +26,47 @@
|
||||
<string name="emoji__category__symbols" comment="Emoji category name">Symboler</string>
|
||||
<string name="emoji__category__flags" comment="Emoji category name">Flagg</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Pil opp</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Pil opp</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Gjør pil opp</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Pil ned</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Pil ned</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Gjør pil ned</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Venstrepil</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Venstrepil</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Gjør venstrepil</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Høgrepil</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Høgrepil</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Gjør høgrepil</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Fjern klipp</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Fjern klipp</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Slett primærklipp fra utklippstavle</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopier</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopier</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Gjør utklippstavlekopiering</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Klipp ut</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Klipp ut</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Gjør utklippstavleutklipp</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Lim inn</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Lim inn</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Gjør utklippstavleinnliming</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Merk alt</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Merk alt</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Gjør utklippstavleallmerking</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Utklipp</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Utklipp</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Åpne utklippstavlehistorikk</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Åpne emojipanel</string>
|
||||
<string name="quick_action__settings" maxLength="12">Valg</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Valg</string>
|
||||
<string name="quick_action__settings__tooltip">Åpne innstillinger</string>
|
||||
<string name="quick_action__undo" maxLength="12">Angre</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Angre</string>
|
||||
<string name="quick_action__undo__tooltip">Angre siste fôring</string>
|
||||
<string name="quick_action__redo" maxLength="12">Gjør om</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Gjør om</string>
|
||||
<string name="quick_action__redo__tooltip">Gjør om siste fôring</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Flere handl.</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Flere handl.</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Vis eller gjøm tilleggsgjerninger</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Privat modus</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Privat modus</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Skru av/på privat modus</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autoretting</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autoretting</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Skru av/på autoretting</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Talefôring</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Talefôring</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Åpne taleinndataleverandør</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Eihåndsmodus</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Eihåndsmodus</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Skru av/på eihåndsmodus</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Dra-markør</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Dra-markør</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Dra-markørens posisjon</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ingen</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ingen</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Ingen operasjon</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Omordne gjerninger</string>
|
||||
<string name="quick_actions_editor__header">Endre gjerningsrekkefølgen</string>
|
||||
|
||||
@@ -50,49 +50,50 @@
|
||||
<string name="emoji__history__pinned">Przypięte</string>
|
||||
<string name="emoji__history__recent">Ostatnie</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">W górę</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">W górę</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Wykonaj strzałkę w górę</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">W dół</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">W dół</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Wykonaj strzałkę w dół</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">W lewo</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">W lewo</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Wykonaj strzałkę w lewo</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">W prawo</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">W prawo</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Wykonaj strzałkę w prawo</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Czyść schow.</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Czyść schow.</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Powoduję wyczyszczenie głównego schowka</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopiuj</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopiuj</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Kopiuj do schowka</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Wytnij</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Wytnij</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Wytnij do schowka</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Wklej</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Wklej</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Wklej ze schowka</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Wszystko</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Wszystko</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Zaznacz wszystko</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Schowek</string>
|
||||
<string name="quick_action__forward_delete" comment="Please mind the limited available space for the quick action strings">Usuń w przód</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Schowek</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Otwórz historię schowka</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emotki</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emotki</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Otwórz panel emoji</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Zmień język</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Zmień język</string>
|
||||
<string name="quick_action__language_switch__tooltip">Przełączanie języka</string>
|
||||
<string name="quick_action__settings" maxLength="12">Ustawienia</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Ustawienia</string>
|
||||
<string name="quick_action__settings__tooltip">Otwórz ustawienia</string>
|
||||
<string name="quick_action__undo" maxLength="12">Cofnij</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Cofnij</string>
|
||||
<string name="quick_action__undo__tooltip">Cofnij ostatnią zmianę</string>
|
||||
<string name="quick_action__redo" maxLength="12">Powtórz</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Powtórz</string>
|
||||
<string name="quick_action__redo__tooltip">Przywróć ostatnią zmianę</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Więcej akcji</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Więcej akcji</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Pokaż lub schowaj dodatkowe działania</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Przełącz tryb incognito</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autokorekta</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autokorekta</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Przełącz autokorektę</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Wprow. głos</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Wprow. głos</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Otwórz dostawcę wprowadzania głosowego</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Jednoręczny</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Jednoręczny</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Przełącz tryb jednoręczny</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Znacznik</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Znacznik</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Obecna pozycja znacznika przeciągania</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Brak</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Brak</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Brak operacji</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Zmień kolejność działań</string>
|
||||
<string name="quick_actions_editor__header">Dostosuj kolejność działań</string>
|
||||
@@ -638,7 +639,8 @@
|
||||
<string name="clipboard__cleared_primary_clip">Wyczyść główny schowek</string>
|
||||
<string name="clipboard__cleared_history">Historia została usunięta</string>
|
||||
<string name="clipboard__cleared_full_history">Cała historia została usunięta</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Czy na pewno chcesz wyczyścić historię schowka? Spowoduje to wyczyszczenie wszystkich elementów z wyjątkiem przypiętych, niezależnie od aktywnych filtrów.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Czy na pewno chcesz wyczyścić całą historię schowka? Spowoduje to usunięcie wszystkich elementów z wyjątkiem przypiętych.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">Czy na pewno chcesz wyczyścić historię schowka? Spowoduje to usunięcie wszystkich obecnie filtrowanych elementów, z wyjątkiem przypiętych.</string>
|
||||
<string name="settings__clipboard__title">Schowek</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Użyj wewnętrznego schowka</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Użyj wewnętrznego schowka zamiast systemowego schowka</string>
|
||||
|
||||
@@ -49,48 +49,48 @@
|
||||
<string name="emoji__history__pinned">Fixados</string>
|
||||
<string name="emoji__history__recent">Recentes</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Cima</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Cima</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Execute a seta para cima</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Baixo</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Baixo</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Execute a seta para baixo</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Esquerda</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Esquerda</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Aplicar seta para a esquerda</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Direita</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Direita</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Aplicar seta para a direita</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Limpar</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Limpar</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Aplica limpeza de área de transferência primária</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copiar</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copiar</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Aplica cópia para área de transferência</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Cortar</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Cortar</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Execute o corte da área de transferência</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Colar</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Colar</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Executar colagem da área de transferência</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Selec. tudo</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Selec. tudo</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Executar seleção de tudo da área de transferência</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Área transf.</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Área transf.</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Abrir histórico da área de transferência</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Painel de emojis</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Mudar idioma</string>
|
||||
<string name="quick_action__settings" maxLength="12">Ajustes</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Mudar idioma</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Ajustes</string>
|
||||
<string name="quick_action__settings__tooltip">Abrir configurações</string>
|
||||
<string name="quick_action__undo" maxLength="12">Desfazer</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Desfazer</string>
|
||||
<string name="quick_action__undo__tooltip">Abrir a última entrada</string>
|
||||
<string name="quick_action__redo" maxLength="12">Refazer</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Refazer</string>
|
||||
<string name="quick_action__redo__tooltip">Refazer a última entrada</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Mais ações</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Mais ações</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Mostrar ou ocultar ações adicionais</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Anônimo</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Anônimo</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Ativar/desativar modo anônimo</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autocorreção</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autocorreção</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Alternar correção automática</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Etd. por voz</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Etd. por voz</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Abrir provedor de entrada de voz</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Modo uma mão</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Modo uma mão</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Ativar/desativar modo uma mão</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Arrastar</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Arrastar</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Posição atual do marcador de arrastar</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nenhum</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nenhum</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Nenhuma Operação</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Reordenar ações</string>
|
||||
<string name="quick_actions_editor__header">Personalizar ordem das ações</string>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<string name="emoji__category__symbols" comment="Emoji category name">Símbolos</string>
|
||||
<string name="emoji__category__flags" comment="Emoji category name">Bandeiras</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Seta p/ cima</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Seta p/ cima</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Aciona a seta para cima</string>
|
||||
<!-- Incognito mode strings -->
|
||||
<!-- Settings UI strings -->
|
||||
|
||||
@@ -50,49 +50,49 @@
|
||||
<string name="emoji__history__pinned">Закреплено</string>
|
||||
<string name="emoji__history__recent">Недавние</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Вверх</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Вверх</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Переместить курсор вверх</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Вниз</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Вниз</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Переместить курсор вниз</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Влево</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Влево</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Переместить курсор влево</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Вправо</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Вправо</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Переместить курсор вправо</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Очистить</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Очистить</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Выполнить очистку основного клипа буфера обмена</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Копировать</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Копировать</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Выполнить копирование из буфера обмена</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Вырезать</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Вырезать</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Выполнить вырезку из буфера обмена</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Вставить</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Вставить</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Выполнить вставку из буфера обмена</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Выбрать все</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Выбрать все</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Выполнить выделение всего буфера обмена</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Буфер обмена</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Буфер обмена</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Включить историю буфера обмена</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Эмодзи</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Эмодзи</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Открыть панель эмодзи</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Сменить язык</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Сменить язык</string>
|
||||
<string name="quick_action__language_switch__tooltip">Выполнить переключение языка</string>
|
||||
<string name="quick_action__settings" maxLength="12">Настройки</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Настройки</string>
|
||||
<string name="quick_action__settings__tooltip">Открыть настройки</string>
|
||||
<string name="quick_action__undo" maxLength="12">Отменить</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Отменить</string>
|
||||
<string name="quick_action__undo__tooltip">Отменить последний ввод</string>
|
||||
<string name="quick_action__redo" maxLength="12">Повторить</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Повторить</string>
|
||||
<string name="quick_action__redo__tooltip">Повторить последний ввод</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Ещё действия</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Ещё действия</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Показать или убрать дополнительные действия</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Инкогнито</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Инкогнито</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Включить режим инкогнито</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Автоисправ.</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Автоисправ.</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Включить автоисправление</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Голос. ввод</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Голос. ввод</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Открытый провайдер голосового ввода</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Одной рукой</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Одной рукой</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Включить режим управления одной рукой</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Курсор</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Курсор</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Текущее положение маркера перетаскивания</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Отсутствует</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Отсутствует</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Нет операции</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Изменить порядок действий</string>
|
||||
<string name="quick_actions_editor__header">Настроить порядок действий</string>
|
||||
@@ -643,6 +643,8 @@
|
||||
<string name="ext__editor__metadata__message_invalid">Неправильные метаданные для этого расширения, проверьте редактор метаданных для получения подробной информации!</string>
|
||||
<string name="ext__editor__dependencies__title">Управление зависимостями</string>
|
||||
<string name="ext__editor__files__title">Управление файлами архивов</string>
|
||||
<string name="ext__editor__files__type_fonts">Шрифты</string>
|
||||
<string name="ext__editor__files__type_images">Изображения</string>
|
||||
<string name="ext__editor__create_component__title">Создать компонент</string>
|
||||
<string name="ext__editor__create_component__title_theme">Создать тему</string>
|
||||
<string name="ext__editor__create_component__from_empty">Пустой</string>
|
||||
|
||||
@@ -48,40 +48,40 @@
|
||||
<string name="emoji__history__pinned">Pripnuté</string>
|
||||
<string name="emoji__history__recent">Nedávne</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Šípka nahor</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Šípka nahor</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Vykonať akciu šípky nahor</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Šípka nadol</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Šípka nadol</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Vykonať akciu šípky nadol</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Šípka vľavo</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Šípka vľavo</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Vykonať akciu šípky vľavo</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Šípka vpravo</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Šípka vpravo</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Vykonať akciu šípky vpravo</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Vymazať prvý výstrižok v schránke</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopírovať</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopírovať</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Kopírovať zo schránky</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Vystrihnúť</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Vystrihnúť</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Vystrihnúť zo schránky</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Prilepiť</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Prilepiť</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Prilepiť zo schránky</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Vybr. všetko</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Vybr. všetko</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Vybrať všetko do schránky</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Schránka</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Schránka</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Otvoriť históriu schránky</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emodži</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emodži</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Otvoriť panel s emodži</string>
|
||||
<string name="quick_action__settings" maxLength="12">Nastavenia</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Nastavenia</string>
|
||||
<string name="quick_action__settings__tooltip">Otvoriť nastavenia</string>
|
||||
<string name="quick_action__undo" maxLength="12">Späť</string>
|
||||
<string name="quick_action__redo" maxLength="12">Znovu</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Ďalšie akcie</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Späť</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Znovu</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Ďalšie akcie</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Zobraziť alebo skryť ďalšie akcie</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Inkognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Inkognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Zapnúť inkognito režim</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Aut. opravy</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Aut. opravy</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Zapnúť automatické opravy</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Hlas. vstup</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Hlas. vstup</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Otvoriť poskytovateľa hlasového vstupu</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Jednou rukou</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Jednou rukou</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Zapnúť režim písania jednou rukou</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Zmeniť poradie akcií</string>
|
||||
<string name="quick_actions_editor__header">Upraviť poradie akcií</string>
|
||||
|
||||
@@ -11,16 +11,16 @@
|
||||
<string name="media__tab__emoticons" comment="Tab description for emoticons in the media UI">Čustvenčki</string>
|
||||
<!-- Emoji strings -->
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Puščica gor</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Puščica dol</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Puščica levo</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopiraj</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Izreži</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Prilepi</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Označi vse</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Odložišče</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Čustvenčki</string>
|
||||
<string name="quick_action__settings" maxLength="12">Nastavitve</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Puščica gor</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Puščica dol</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Puščica levo</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopiraj</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Izreži</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Prilepi</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Označi vse</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Odložišče</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Čustvenčki</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Nastavitve</string>
|
||||
<string name="quick_action__settings__tooltip">Odpri nastavitve</string>
|
||||
<!-- Incognito mode strings -->
|
||||
<!-- Settings UI strings -->
|
||||
|
||||
@@ -26,38 +26,38 @@
|
||||
<string name="emoji__category__symbols" comment="Emoji category name">Simbole</string>
|
||||
<string name="emoji__category__flags" comment="Emoji category name">Flamuj</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Shigjet lart</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Shigjet lart</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Trego shigjetën lart</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Trego shigjetën poshtë</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Trego shigjetën majtas</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Trego shigjetën djathtas</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Trego pastro kapësen primare të clipboard</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopjo</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopjo</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Trego kopjo clipboard</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Prite</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Prite</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Trego prit clipboard</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Ngjite</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Clipboard</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Ngjite</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Clipboard</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Hap historikun e clipboard</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Hap panelin e emoji</string>
|
||||
<string name="quick_action__settings" maxLength="12">Konfigurimet</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Konfigurimet</string>
|
||||
<string name="quick_action__settings__tooltip">Hap konfigurimet</string>
|
||||
<string name="quick_action__undo" maxLength="12">Zhbëj</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Zhbëj</string>
|
||||
<string name="quick_action__undo__tooltip">Zhbëje hyrjen e fundit</string>
|
||||
<string name="quick_action__redo" maxLength="12">Ribëj</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Ribëj</string>
|
||||
<string name="quick_action__redo__tooltip">Ribëje hyrjen e fundit</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Tregoji ose fshihi veprimet e tjera</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Fshehurazi</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Fshehurazi</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Ndiz / Fik mënyrën fshehurazi</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autokorrigjo</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autokorrigjo</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Ndiz / Fik autokorrigjuesin</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Hyrja me zë</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Hyrja me zë</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Hap marrësin e hyrjes zanore</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Me një dorë</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Me një dorë</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Ndiz / Fik metodën e përdorimit me një dorë</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Pozicioni i tanishëm i shënjesuit me të tërhequr</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Asnjë</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Asnjë</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Asnjë operim</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Ri-organizo veprimet</string>
|
||||
<string name="quick_actions_editor__header">Ndrysho radhën e veprimeve</string>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<string name="emoji__category__flags" comment="Emoji category name">Flaggor</string>
|
||||
<string name="emoji__history__recent"></string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Pil upp</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Pil upp</string>
|
||||
<!-- Incognito mode strings -->
|
||||
<!-- Settings UI strings -->
|
||||
<string name="settings__title" comment="Title of Settings">Inställningar</string>
|
||||
|
||||
@@ -50,49 +50,50 @@
|
||||
<string name="emoji__history__pinned">Sabitlenmiş</string>
|
||||
<string name="emoji__history__recent">Son Kullanılan</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Yukarı ok</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Yukarı ok</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Yukarı ok eylemini gerçekleştir</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Aşağı ok</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Aşağı ok</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Aşağı ok eylemini gerçekleştir</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Sol ok</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Sol ok</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Sol ok eylemini gerçekleştir</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Sağ ok</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Sağ ok</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Sağ ok eylemini gerçekleştir</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Panoyu sil</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Panoyu sil</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Birincil pano temizleme eylemini gerçekleştir</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Kopyala</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Kopyala</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Panoya kopyala eylemini gerçekleştir</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Kes</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Kes</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Panoya kes eylemini gerçekleştir</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Yapıştır</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Yapıştır</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Panoyu yapıştır</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Tümünü seç</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Tümünü seç</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Tümünü seç eylemini gerçekleştir</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Pano</string>
|
||||
<string name="quick_action__forward_delete" comment="Please mind the limited available space for the quick action strings">İletiyi sil</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Pano</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Pano geçmişini aç</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Emoji panelini aç</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Dil değiştir</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Dil değiştir</string>
|
||||
<string name="quick_action__language_switch__tooltip">Dili değiştirme eylemini gerçekleştir</string>
|
||||
<string name="quick_action__settings" maxLength="12">Ayarlar</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Ayarlar</string>
|
||||
<string name="quick_action__settings__tooltip">Ayarları aç</string>
|
||||
<string name="quick_action__undo" maxLength="12">Geri al</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Geri al</string>
|
||||
<string name="quick_action__undo__tooltip">Son girişi geri al</string>
|
||||
<string name="quick_action__redo" maxLength="12">Yinele</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Yinele</string>
|
||||
<string name="quick_action__redo__tooltip">Son girişi yinele</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Daha fazla</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Daha fazla</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Ek eylemleri göster veya gizle</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Gizli Mod</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Gizli Mod</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Gizli modu aç/kapat</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Oto düzeltme</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Oto düzeltme</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Otomatik düzeltmeyi aç/kapat</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Sesli giriş</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Sesli giriş</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Sesli giriş sağlayıcısını aç</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Tek el modu</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Tek el modu</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Tek el modunu aç/kapat</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">İmleci oynat</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">İmleci oynat</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Mevcut sürükleme işareti konumu</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Yok</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Yok</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Eylem yok</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Eylemleri yeniden sırala</string>
|
||||
<string name="quick_actions_editor__header">Eylem sırasını özelleştir</string>
|
||||
@@ -635,7 +636,8 @@
|
||||
<string name="clipboard__cleared_primary_clip">Birincil klip temizlendi</string>
|
||||
<string name="clipboard__cleared_history">Geçmiş temizlendi</string>
|
||||
<string name="clipboard__cleared_full_history">Tüm geçmiş temizlendi</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Pano geçmişinizi temizlemek istediğinizden emin misiniz? Bu, aktif filtrelerden bağımsız olarak sabitlenmiş ögeler dışındaki tüm ögeleri temizleyecektir.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Tüm pano geçmişinizi temizlemek istediğinizden emin misiniz? Bu işlem, sabitlenmiş olanlar hariç tüm öğeleri etkileyecektir.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">Pano geçmişinizi temizlemek istediğinizden emin misiniz? Bu işlem, sabitlenmiş olanlar hariç, şu anda filtrelenmiş olan tüm öğeleri etkileyecektir.</string>
|
||||
<string name="settings__clipboard__title">Pano</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Dahili panoyu kullan</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Sistem panosu yerine dahili bir pano kullan</string>
|
||||
|
||||
@@ -50,48 +50,48 @@
|
||||
<string name="emoji__history__pinned">Закріплено</string>
|
||||
<string name="emoji__history__recent">Останні</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Курсор вгору</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Курсор вгору</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Перемістити курсор на початок</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Курсор униз</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Курсор униз</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Перемістити курсор в кінець</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Курсор вліво</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Курсор вліво</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Перемістити курсор вліво</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Вправо</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Вправо</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Перемістити курсор вправо</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Стерти буфер</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Стерти буфер</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Видалити останній копійований текст</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Копіювати</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Копіювати</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Копіювати</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Вирізати</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Вирізати</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Вирізати</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Вставити</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Вставити</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Вставити</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Обрати все</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Обрати все</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Виділити все</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Буфер обміну</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Буфер обміну</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Відкрити буфер обміну</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Емоджі</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Емоджі</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Відкрити панель емоджі</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Змінити мову</string>
|
||||
<string name="quick_action__settings" maxLength="12">Налаштування</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Змінити мову</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Налаштування</string>
|
||||
<string name="quick_action__settings__tooltip">Відкрити налаштування</string>
|
||||
<string name="quick_action__undo" maxLength="12">Скасувати</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Скасувати</string>
|
||||
<string name="quick_action__undo__tooltip">Скасувати останній ввід</string>
|
||||
<string name="quick_action__redo" maxLength="12">Повторити</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Повторити</string>
|
||||
<string name="quick_action__redo__tooltip">Відновити останній ввід</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">Більше дій</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">Більше дій</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Показати або приховати додаткові дії</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Інкогніто</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Інкогніто</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Увімкнути режим інкогніто</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Автокорекція</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Автокорекція</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Увімкнути автовиправлення</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Голос. Набір</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Голос. Набір</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Відкрити постачальника голосового введення</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">Однією рукою</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">Однією рукою</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Увімкнути режим роботи однією рукою</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Курсор</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Курсор</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Поточне положення курсора</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Нічого</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Нічого</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">Немає операцій</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Змінити упорядкування</string>
|
||||
<string name="quick_actions_editor__header">Налаштувати порядок дій</string>
|
||||
|
||||
27
app/src/main/res/values-ur-rPK/strings.xml
Normal file
27
app/src/main/res/values-ur-rPK/strings.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<!-- One-handed strings -->
|
||||
<!-- Media strings -->
|
||||
<!-- Emoji strings -->
|
||||
<!-- Quick action strings -->
|
||||
<!-- Incognito mode strings -->
|
||||
<!-- Settings UI strings -->
|
||||
<!-- Smartbar strings -->
|
||||
<!-- Typing strings -->
|
||||
<!-- About UI strings -->
|
||||
<!-- Setup UI strings -->
|
||||
<!-- Physical keyboard -->
|
||||
<!-- Back up & Restore -->
|
||||
<!-- Crash Dialog strings -->
|
||||
<!-- Clipboard strings -->
|
||||
<!-- Devtools strings -->
|
||||
<!-- Extension strings -->
|
||||
<!-- Action strings -->
|
||||
<!-- Error strings (generic) -->
|
||||
<!-- General strings -->
|
||||
<!-- Screen orientation strings -->
|
||||
<!-- State strings -->
|
||||
<!-- Enum label and description strings -->
|
||||
<!-- Unit strings (symbols) -->
|
||||
<!-- Unit strings (written words) -->
|
||||
</resources>
|
||||
@@ -50,47 +50,47 @@
|
||||
<string name="emoji__history__pinned">已置顶</string>
|
||||
<string name="emoji__history__recent">最近使用</string>
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">向上键</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">向上键</string>
|
||||
<string name="quick_action__arrow_up__tooltip">执行向上方向键</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">向下键</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">向下键</string>
|
||||
<string name="quick_action__arrow_down__tooltip">执行向下方向键</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">向左键</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">向左键</string>
|
||||
<string name="quick_action__arrow_left__tooltip">执行向左方向键</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">向右键</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">向右键</string>
|
||||
<string name="quick_action__arrow_right__tooltip">执行向右方向键</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">清除主要剪贴板条目</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">清除主要剪贴板条目</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">执行清除主要剪贴板条目</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">复制</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">复制</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">执行剪贴板复制</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">剪切</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">剪切</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">执行剪贴板剪切</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">粘贴</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">粘贴</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">执行剪贴板粘贴</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">全选</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">全选</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">执行剪贴板全选</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">剪贴板</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">剪贴板</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">打开剪贴板历史</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">表情符号</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">表情符号</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">打开表情符号面板</string>
|
||||
<string name="quick_action__settings" maxLength="12">设置</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">设置</string>
|
||||
<string name="quick_action__settings__tooltip">打开设置</string>
|
||||
<string name="quick_action__undo" maxLength="12">撤销</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">撤销</string>
|
||||
<string name="quick_action__undo__tooltip">撤销上次输入</string>
|
||||
<string name="quick_action__redo" maxLength="12">恢复</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">恢复</string>
|
||||
<string name="quick_action__redo__tooltip">恢复上次输入</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">更多操作</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">更多操作</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">显示或隐藏其他操作</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">无痕模式</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">无痕模式</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">无痕模式开关</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">自动更正</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">自动更正</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">自动更正开关</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">语音输入</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">语音输入</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">打开语音输入提供者</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">单手模式</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">单手模式</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">单手模式开关</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">拖动标记</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">拖动标记</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">当前拖动标记位置</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">无</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">无</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">无操作</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">重新排列操作</string>
|
||||
<string name="quick_actions_editor__header">自定义操作顺序</string>
|
||||
|
||||
@@ -54,49 +54,50 @@
|
||||
<string name="emoji__history__recent">Recent</string>
|
||||
|
||||
<!-- Quick action strings -->
|
||||
<string name="quick_action__arrow_up" maxLength="12">Arrow up</string>
|
||||
<string name="quick_action__arrow_up" comment="Please mind the limited available space for the quick action strings">Arrow up</string>
|
||||
<string name="quick_action__arrow_up__tooltip">Perform arrow up</string>
|
||||
<string name="quick_action__arrow_down" maxLength="12">Arrow down</string>
|
||||
<string name="quick_action__arrow_down" comment="Please mind the limited available space for the quick action strings">Arrow down</string>
|
||||
<string name="quick_action__arrow_down__tooltip">Perform arrow down</string>
|
||||
<string name="quick_action__arrow_left" maxLength="12">Arrow left</string>
|
||||
<string name="quick_action__arrow_left" comment="Please mind the limited available space for the quick action strings">Arrow left</string>
|
||||
<string name="quick_action__arrow_left__tooltip">Perform arrow left</string>
|
||||
<string name="quick_action__arrow_right" maxLength="12">Arrow right</string>
|
||||
<string name="quick_action__arrow_right" comment="Please mind the limited available space for the quick action strings">Arrow right</string>
|
||||
<string name="quick_action__arrow_right__tooltip">Perform arrow right</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" maxLength="12">Clear primary clipboard clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip" comment="Please mind the limited available space for the quick action strings">Clear primary clipboard clip</string>
|
||||
<string name="quick_action__clipboard_clear_primary_clip__tooltip">Perform clear primary clipboard clip</string>
|
||||
<string name="quick_action__clipboard_copy" maxLength="12">Copy</string>
|
||||
<string name="quick_action__clipboard_copy" comment="Please mind the limited available space for the quick action strings">Copy</string>
|
||||
<string name="quick_action__clipboard_copy__tooltip">Perform clipboard copy</string>
|
||||
<string name="quick_action__clipboard_cut" maxLength="12">Cut</string>
|
||||
<string name="quick_action__clipboard_cut" comment="Please mind the limited available space for the quick action strings">Cut</string>
|
||||
<string name="quick_action__clipboard_cut__tooltip">Perform clipboard cut</string>
|
||||
<string name="quick_action__clipboard_paste" maxLength="12">Paste</string>
|
||||
<string name="quick_action__clipboard_paste" comment="Please mind the limited available space for the quick action strings">Paste</string>
|
||||
<string name="quick_action__clipboard_paste__tooltip">Perform clipboard paste</string>
|
||||
<string name="quick_action__clipboard_select_all" maxLength="12">Select all</string>
|
||||
<string name="quick_action__clipboard_select_all" comment="Please mind the limited available space for the quick action strings">Select all</string>
|
||||
<string name="quick_action__clipboard_select_all__tooltip">Perform clipboard select all</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" maxLength="12">Clipboard</string>
|
||||
<string name="quick_action__forward_delete" comment="Please mind the limited available space for the quick action strings">Forward delete</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard" comment="Please mind the limited available space for the quick action strings">Clipboard</string>
|
||||
<string name="quick_action__ime_ui_mode_clipboard__tooltip">Open clipboard history</string>
|
||||
<string name="quick_action__ime_ui_mode_media" maxLength="12">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media" comment="Please mind the limited available space for the quick action strings">Emoji</string>
|
||||
<string name="quick_action__ime_ui_mode_media__tooltip">Open emoji panel</string>
|
||||
<string name="quick_action__language_switch" maxLength="12">Switch language</string>
|
||||
<string name="quick_action__language_switch" comment="Please mind the limited available space for the quick action strings">Switch language</string>
|
||||
<string name="quick_action__language_switch__tooltip">Perform language switch</string>
|
||||
<string name="quick_action__settings" maxLength="12">Settings</string>
|
||||
<string name="quick_action__settings" comment="Please mind the limited available space for the quick action strings">Settings</string>
|
||||
<string name="quick_action__settings__tooltip">Open settings</string>
|
||||
<string name="quick_action__undo" maxLength="12">Undo</string>
|
||||
<string name="quick_action__undo" comment="Please mind the limited available space for the quick action strings">Undo</string>
|
||||
<string name="quick_action__undo__tooltip">Undo the last input</string>
|
||||
<string name="quick_action__redo" maxLength="12">Redo</string>
|
||||
<string name="quick_action__redo" comment="Please mind the limited available space for the quick action strings">Redo</string>
|
||||
<string name="quick_action__redo__tooltip">Redo the last input</string>
|
||||
<string name="quick_action__toggle_actions_overflow" maxLength="12">More actions</string>
|
||||
<string name="quick_action__toggle_actions_overflow" comment="Please mind the limited available space for the quick action strings">More actions</string>
|
||||
<string name="quick_action__toggle_actions_overflow__tooltip">Show or hide additional actions</string>
|
||||
<string name="quick_action__toggle_incognito_mode" maxLength="12">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode" comment="Please mind the limited available space for the quick action strings">Incognito</string>
|
||||
<string name="quick_action__toggle_incognito_mode__tooltip">Toggle incognito mode</string>
|
||||
<string name="quick_action__toggle_autocorrect" maxLength="12">Autocorrect</string>
|
||||
<string name="quick_action__toggle_autocorrect" comment="Please mind the limited available space for the quick action strings">Autocorrect</string>
|
||||
<string name="quick_action__toggle_autocorrect__tooltip">Toggle autocorrect</string>
|
||||
<string name="quick_action__voice_input" maxLength="12">Voice input</string>
|
||||
<string name="quick_action__voice_input" comment="Please mind the limited available space for the quick action strings">Voice input</string>
|
||||
<string name="quick_action__voice_input__tooltip" comment="IME stands for Input Method Editor and is indirectly equivalent to 'keyboard'.">Open voice input provider</string>
|
||||
<string name="quick_action__one_handed_mode" maxLength="12">One-handed</string>
|
||||
<string name="quick_action__one_handed_mode" comment="Please mind the limited available space for the quick action strings">One-handed</string>
|
||||
<string name="quick_action__one_handed_mode__tooltip">Toggle one-handed mode</string>
|
||||
<string name="quick_action__drag_marker" maxLength="12" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Drag marker</string>
|
||||
<string name="quick_action__drag_marker" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Drag marker</string>
|
||||
<string name="quick_action__drag_marker__tooltip" comment="This action is only used as a placeholder in the actions editor drag and drop screen and only visible in debug mode">Current drag marker position</string>
|
||||
<string name="quick_action__noop" maxLength="12" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">None</string>
|
||||
<string name="quick_action__noop" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">None</string>
|
||||
<string name="quick_action__noop__tooltip" comment="Noop=no operation; this action is only used as a placeholder in the actions editor drag and drop screen">No operation</string>
|
||||
<string name="quick_actions_overflow__customize_actions_button">Reorder actions</string>
|
||||
<string name="quick_actions_editor__header">Customize action order</string>
|
||||
@@ -694,14 +695,13 @@
|
||||
<string name="clipboard__cleared_primary_clip">Cleared primary clip</string>
|
||||
<string name="clipboard__cleared_history">Cleared history</string>
|
||||
<string name="clipboard__cleared_full_history">Cleared full history</string>
|
||||
<string name="clipboard__confirm_clear_history__message">Are you sure you want to clear your clipboard history? This will clear all items except pinned ones, regardless of active filters.</string>
|
||||
<string name="clipboard__confirm_clear_unfiltered_history__message">Are you sure you want to clear your full clipboard history? This will affect all items, except pinned ones.</string>
|
||||
<string name="clipboard__confirm_clear_filtered_history__message">Are you sure you want to clear your clipboard history? This will affect all currently filtered items, except pinned ones.</string>
|
||||
<string name="settings__clipboard__title">Clipboard</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__label">Use internal clipboard</string>
|
||||
<string name="pref__clipboard__use_internal_clipboard__summary">Use an internal clipboard instead of the system clipboard</string>
|
||||
<string name="pref__clipboard__sync_from_system_clipboard__label">Sync from system clipboard</string>
|
||||
<string name="pref__clipboard__sync_from_system_clipboard__summary">System clipboard updates also update Floris clipboard</string>
|
||||
<string name="pref__clipboard__sync_to_system_clipboard__label">Sync to system clipboard</string>
|
||||
<string name="pref__clipboard__sync_to_system_clipboard__summary">Floris clipboard updates also update system clipboard</string>
|
||||
<string name="pref__clipboard__group_clipboard_suggestion__label">Clipboard suggestions</string>
|
||||
<string name="pref__clipboard__suggestion_enabled__label" comment="Preference title">Clipboard content suggestions</string>
|
||||
<string name="pref__clipboard__suggestion_enabled__summary" comment="Preference summary">Suggest previously copied clipboard content</string>
|
||||
@@ -717,8 +717,10 @@
|
||||
<string name="pref__clipboard__auto_clean_sensitive_after__label">Auto clean sensitive items after</string>
|
||||
<string name="pref__clipboard__limit_history_size__label">Limit history size</string>
|
||||
<string name="pref__clipboard__max_history_size__label">Max history size</string>
|
||||
<string name="pref__clipboard__clear_primary_clip_deletes_last_item__label">Clear primary clip affects history</string>
|
||||
<string name="pref__clipboard__clear_primary_clip_deletes_last_item__summary">Clearing the primary clip also deletes the latest history entry</string>
|
||||
<string name="pref__clipboard__history_hide_on_paste__label">Hide history on paste</string>
|
||||
<string name="pref__clipboard__history_hide_on_next_text_field__label">Hide history on next text field</string>
|
||||
<string name="pref__clipboard__clear_primary_clip_affects_history_if_unpinned__label">Clear primary clip affects history</string>
|
||||
<string name="pref__clipboard__clear_primary_clip_affects_history_if_unpinned__summary">Clearing the primary clip also removes it from the history, if not pinned</string>
|
||||
<string name="send_to_clipboard__unknown_error">An unknown error occurred. Please try again!</string>
|
||||
<string name="send_to_clipboard__type_not_supported_error">This media type is not supported.</string>
|
||||
<string name="send_to_clipboard__description__copied_image_to_clipboard">Copied below image to clipboard.</string>
|
||||
@@ -926,6 +928,15 @@
|
||||
<string name="enum__capitalization_behavior__capslock_by_double_tap" comment="Enum value label">Enable Capslock by double tapping shift</string>
|
||||
<string name="enum__capitalization_behavior__capslock_by_cycle" comment="Enum value label">Switch to the next capitalization step each time the shift key is pressed</string>
|
||||
|
||||
<string name="enum__clipboard_sync_behavior__no_events" comment="Enum value label">No events</string>
|
||||
<string name="enum__clipboard_sync_behavior__no_events__description" comment="Enum value description">No events are synced in this direction. In this mode, sync excludes text content.</string>
|
||||
<string name="enum__clipboard_sync_behavior__only_clear_events" comment="Enum value label">Only clear events</string>
|
||||
<string name="enum__clipboard_sync_behavior__only_clear_events__description" comment="Enum value description">Only events clearing clip data are synced in this direction. In this mode, sync excludes text content.</string>
|
||||
<string name="enum__clipboard_sync_behavior__only_set_events" comment="Enum value label">Only set events</string>
|
||||
<string name="enum__clipboard_sync_behavior__only_set_events__description" comment="Enum value description">Only events setting clip data are synced in this direction. In this mode, sync includes text content.</string>
|
||||
<string name="enum__clipboard_sync_behavior__all_events" comment="Enum value label">All events</string>
|
||||
<string name="enum__clipboard_sync_behavior__all_events__description" comment="Enum value description">Both events setting and clearing clip data are synced in this direction. In this mode, sync includes text content.</string>
|
||||
|
||||
<string name="enum__color_representation__hex" comment="Enum value label">Hexadecimal</string>
|
||||
<string name="enum__color_representation__rgb" comment="Enum value label">Red Green Blue</string>
|
||||
<string name="enum__color_representation__hsv" comment="Enum value label">Hue Saturation Value</string>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<p><i>FlorisBoard</i> is an open-source keyboard aimed at providing you with an easy way to type while respecting your privacy.</p>
|
||||
<p><b>Note:</b> This project is currently in early-beta stage. If you want to see a feature being implemented or want to report a bug, please visit this project's repository (linked in the end of the description) on GitHub and file an issue. This helps making FlorisBoard even better! Thank you!</p>
|
||||
<p><b>Note:</b> This project is currently in beta stage. If you want to see a feature being implemented or want to report a bug, please visit this project's repository (linked in the end of the description) on GitHub and file an issue. This helps making FlorisBoard even better! Thank you!</p>
|
||||
<p><b>Currently implemented and fully working features:</b></p>
|
||||
<ul>
|
||||
<li>Huge variety of Latin keyboard layouts</li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
An open-source keyboard which respects your privacy. Currently in early-beta.
|
||||
An open-source keyboard which respects your privacy. Currently in beta.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<p><i>FlorisBoard</i> is an open-source keyboard aimed at providing you with an easy way to type while respecting your privacy.</p>
|
||||
<p><b>Note:</b> This project is currently in early-beta stage. If you want to see a feature being implemented or want to report a bug, please visit this project's repository (linked in the end of the description) on GitHub and file an issue. This helps making FlorisBoard even better! Thank you!</p>
|
||||
<p><b>Note:</b> This project is currently in beta stage. If you want to see a feature being implemented or want to report a bug, please visit this project's repository (linked in the end of the description) on GitHub and file an issue. This helps making FlorisBoard even better! Thank you!</p>
|
||||
<p><b>Currently implemented and fully working features:</b></p>
|
||||
<ul>
|
||||
<li>Huge variety of Latin keyboard layouts</li>
|
||||
|
||||
@@ -11,5 +11,5 @@ projectMinSdk=26
|
||||
projectTargetSdk=35
|
||||
projectCompileSdk=35
|
||||
|
||||
projectVersionCode=111
|
||||
projectVersionName=0.5.0-beta03
|
||||
projectVersionCode=114
|
||||
projectVersionName=0.5.0-rc02
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright 2025 The Android Open Source Project
|
||||
*
|
||||
* 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 org.florisboard.lib.compose.icons
|
||||
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.materialIcon
|
||||
import androidx.compose.material.icons.materialPath
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
|
||||
// Adapted from original androidx.compose.material.icons.automirrored.filled Backspace icon
|
||||
// Changes: manually inverted path
|
||||
@Suppress("UnusedReceiverParameter")
|
||||
val Icons.AutoMirrored.Filled.ForwardDelete: ImageVector
|
||||
get() {
|
||||
if (_forwardDelete != null) {
|
||||
return _forwardDelete!!
|
||||
}
|
||||
_forwardDelete = materialIcon(name = "AutoMirrored.Filled.ForwardDelete", autoMirror = true) {
|
||||
materialPath {
|
||||
moveTo(2.0f, 3.0f)
|
||||
lineTo(17.0f, 3.0f)
|
||||
curveToRelative(0.69f, 0.0f, 1.23f, 0.35f, 1.59f, 0.88f)
|
||||
lineTo(24.0f, 12.0f)
|
||||
lineToRelative(-5.41f, 8.11f)
|
||||
curveToRelative(-0.36f, 0.53f, -0.9f, 0.89f, -1.59f, 0.89f)
|
||||
horizontalLineToRelative(-15.0f)
|
||||
curveToRelative(-1.1f, 0.0f, -2.0f, -0.9f, -2.0f, -2.0f)
|
||||
lineTo(0.0f, 5.0f)
|
||||
curveToRelative(0.0f, -1.1f, 0.9f, -2.0f, 2.0f, -2.0f)
|
||||
close()
|
||||
moveTo(5.0f, 15.59f)
|
||||
lineTo(6.41f, 17.0f)
|
||||
lineTo(10.0f, 13.41f)
|
||||
lineTo(13.59f, 17.0f)
|
||||
lineTo(15.0f, 15.59f)
|
||||
lineTo(11.41f, 12.0f)
|
||||
lineTo(15.0f, 8.41f)
|
||||
lineTo(13.59f, 7.0f)
|
||||
lineTo(10.0f, 10.59f)
|
||||
lineTo(6.41f, 7.0f)
|
||||
lineTo(5.0f, 8.41f)
|
||||
lineTo(8.59f, 12.0f)
|
||||
lineTo(5.0f, 15.59f)
|
||||
close()
|
||||
}
|
||||
}
|
||||
return _forwardDelete!!
|
||||
}
|
||||
|
||||
@Suppress("ObjectPropertyName")
|
||||
private var _forwardDelete: ImageVector? = null
|
||||
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* Copyright (C) 2025 The FlorisBoard Contributors
|
||||
*
|
||||
* 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 org.florisboard.lib.snygg.ui
|
||||
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.PixelFormat
|
||||
import android.graphics.drawable.Animatable
|
||||
import android.util.Log
|
||||
import android.view.SurfaceView
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.geometry.center
|
||||
import androidx.compose.ui.geometry.toRect
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.toAndroidRectF
|
||||
import androidx.compose.ui.graphics.toArgb
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.layout.times
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
import androidx.core.graphics.toRect
|
||||
import androidx.lifecycle.compose.LifecycleResumeEffect
|
||||
import coil3.Bitmap
|
||||
import coil3.BitmapImage
|
||||
import coil3.DrawableImage
|
||||
import coil3.Image
|
||||
import coil3.SingletonImageLoader
|
||||
import coil3.request.ImageRequest
|
||||
import coil3.request.SuccessResult
|
||||
import coil3.request.allowHardware
|
||||
import coil3.toBitmap
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import org.florisboard.lib.android.AndroidVersion
|
||||
import org.florisboard.lib.snygg.SnyggQueryAttributes
|
||||
import org.florisboard.lib.snygg.SnyggSelector
|
||||
|
||||
/**
|
||||
* Specialized layout composable rendering a background color/image to a [SurfaceView].
|
||||
*
|
||||
* This composable infers its style from the current [SnyggTheme][org.florisboard.lib.snygg.SnyggTheme], which is
|
||||
* required to be provided by [ProvideSnyggTheme].
|
||||
*
|
||||
* @param elementName The name of this element. If `null` the style will be inherited from the parent element.
|
||||
* @param attributes The attributes of the element used to refine the query.
|
||||
* @param selector A specific SnyggSelector to query the style for.
|
||||
* @param modifier The modifier to be applied to the layout.
|
||||
* @param backgroundImageDescription The content description of the background image.
|
||||
*
|
||||
* @since 0.5.0-beta04
|
||||
*
|
||||
* @see [Box]
|
||||
* @see [SurfaceView]
|
||||
*/
|
||||
@Composable
|
||||
fun SnyggSurfaceView(
|
||||
elementName: String? = null,
|
||||
attributes: SnyggQueryAttributes = emptyMap(),
|
||||
selector: SnyggSelector? = null,
|
||||
modifier: Modifier = Modifier,
|
||||
backgroundImageDescription: String? = null,
|
||||
) {
|
||||
ProvideSnyggStyle(elementName, attributes, selector) { style ->
|
||||
val assetResolver = LocalSnyggAssetResolver.current
|
||||
val context = LocalContext.current
|
||||
val imageLoader = SingletonImageLoader.get(context)
|
||||
|
||||
val backgroundColor = style.background(Color.Black)
|
||||
val imagePath = remember(style, assetResolver) {
|
||||
style.backgroundImage.uriOrNull()?.let { imageUri ->
|
||||
assetResolver.resolveAbsolutePath(imageUri).getOrNull()
|
||||
}
|
||||
}
|
||||
var loadedImage by remember { mutableStateOf<Image?>(null) }
|
||||
val contentScale = style.contentScale()
|
||||
|
||||
LaunchedEffect(imagePath) {
|
||||
if (imagePath == null) {
|
||||
loadedImage = null
|
||||
return@LaunchedEffect
|
||||
}
|
||||
val request = ImageRequest.Builder(context)
|
||||
.data(imagePath)
|
||||
.allowHardware(false)
|
||||
.build()
|
||||
val imageResult = imageLoader.execute(request)
|
||||
loadedImage = when (imageResult) {
|
||||
is SuccessResult -> when (val image = imageResult.image) {
|
||||
is BitmapImage -> image.also { it.bitmap.prepareToDraw() }
|
||||
is DrawableImage -> image
|
||||
else -> null
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
var showSurfaceView by remember { mutableStateOf(false) }
|
||||
LifecycleResumeEffect(Unit) {
|
||||
showSurfaceView = true
|
||||
onPauseOrDispose {
|
||||
showSurfaceView = false
|
||||
}
|
||||
}
|
||||
|
||||
if (showSurfaceView) {
|
||||
var surfaceView by remember { mutableStateOf<SurfaceView?>(null) }
|
||||
AndroidView(
|
||||
modifier = modifier,
|
||||
factory = { context ->
|
||||
Log.d("SnyggSurfaceView", "creating new instance")
|
||||
SurfaceView(context).apply {
|
||||
if (AndroidVersion.ATLEAST_API34_U) {
|
||||
setSurfaceLifecycle(SurfaceView.SURFACE_LIFECYCLE_FOLLOWS_ATTACHMENT)
|
||||
}
|
||||
setZOrderOnTop(false)
|
||||
holder.setFormat(PixelFormat.TRANSPARENT)
|
||||
}
|
||||
},
|
||||
update = { surfaceView = it },
|
||||
)
|
||||
surfaceView?.let { surfaceView ->
|
||||
LaunchedEffect(surfaceView, backgroundColor, loadedImage, contentScale) {
|
||||
val image = loadedImage
|
||||
if (image is DrawableImage && image.drawable is Animatable) {
|
||||
// Slow path, need animation
|
||||
val fps = 30L // TODO: read frame delays from drawable
|
||||
val animatedDrawable = image.drawable as Animatable
|
||||
try {
|
||||
animatedDrawable.start()
|
||||
while (isActive) {
|
||||
surfaceView.drawToSurface(backgroundColor, loadedImage, contentScale)
|
||||
delay(1000L / fps)
|
||||
}
|
||||
} finally {
|
||||
animatedDrawable.stop()
|
||||
}
|
||||
} else {
|
||||
// Fast path, render once and be done with it
|
||||
surfaceView.drawToSurface(backgroundColor, loadedImage, contentScale)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun SurfaceView.drawToSurface(
|
||||
color: Color,
|
||||
image: Image?,
|
||||
contentScale: ContentScale,
|
||||
) {
|
||||
Log.d("SnyggSurfaceView", "drawToSurface(color=$color, image=$image)")
|
||||
val surface = holder.surface
|
||||
if (!surface.isValid) {
|
||||
Log.w("SnyggSurfaceView", "drawToSurface: surface.isValid=false, may indicate state issue")
|
||||
return
|
||||
}
|
||||
val canvas = surface.lockCanvas(null)
|
||||
try {
|
||||
canvas.drawColor(color.toArgb())
|
||||
when (image) {
|
||||
is BitmapImage -> image.bitmap.drawToSurface(canvas, contentScale)
|
||||
is DrawableImage -> image.drawToSurface(canvas, contentScale)
|
||||
}
|
||||
} finally {
|
||||
surface.unlockCanvasAndPost(canvas)
|
||||
}
|
||||
}
|
||||
|
||||
private fun Bitmap.drawToSurface(canvas: Canvas, contentScale: ContentScale) {
|
||||
val bitmap = this
|
||||
val srcSize = Size(bitmap.width.toFloat(), bitmap.height.toFloat())
|
||||
val canvasSize = Size(canvas.width.toFloat(), canvas.height.toFloat())
|
||||
val scaleFactor = contentScale.computeScaleFactor(srcSize, canvasSize)
|
||||
Log.d("SnyggSurfaceView",
|
||||
"drawToSurface: srcSize=$srcSize, dstSize=$canvasSize, scaleFactor=$scaleFactor")
|
||||
val dstSize = srcSize.times(scaleFactor)
|
||||
val srcRect = srcSize.toRect().toAndroidRectF().toRect()
|
||||
val dstRect = dstSize.toRect().let {
|
||||
// Align center behavior
|
||||
it.translate(canvasSize.center - it.center)
|
||||
}.toAndroidRectF().toRect()
|
||||
canvas.drawBitmap(bitmap, srcRect, dstRect, null)
|
||||
}
|
||||
|
||||
private fun DrawableImage.drawToSurface(canvas: Canvas, contentScale: ContentScale) {
|
||||
this.toBitmap().drawToSurface(canvas, contentScale)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user