Compare commits

..

12 Commits

Author SHA1 Message Date
Patrick Goldinger
ab49fc5f29 Release v0.5.1 2025-09-09 22:22:23 +02:00
Patrick Goldinger
b8947f96e6 Merge branch 'main' into release/0.5 2025-09-09 22:21:41 +02:00
florisboard-bot
96e3af9c16 Update translations from Crowdin 2025-09-09 22:21:11 +02:00
Pelle
fa79fa3849 Add the swedish version of the dvorak layout (svorak) (#3080)
Signed-off-by: Pelle Windestam <pelle@windestam.se>
2025-09-09 21:32:56 +02:00
Ahmed Nagi
f646825e9c Add Arabic question mark to ~right popup mappings (#3088)
* Add Arabic question mark to ~right popup mappings

* Update ar.json

fix: add exclamation mark "!"

* Update ar.json

---------

Co-authored-by: Ahmed Nagi <144544047+Ahmed-Nagi1@users.noreply.github.com>
2025-09-09 21:22:24 +02:00
lnfinitesimal
0a299e1b04 Add superscript minus (⁻) and plus (⁺) symbols (#3039)
Complements superscript numbers. For mathematical and chemical notation (e.g., 10⁻³, Na⁺, Ca²⁺).
2025-09-09 21:15:39 +02:00
Patrick Goldinger
6417cf5958 Fix background not rendering on Android 8/9 (#3076) 2025-09-08 01:33:47 +02:00
Patrick Goldinger
234580fd48 Rework clipboard delete button to respect active filters (#3075) 2025-09-02 23:31:52 +02:00
Patrick Goldinger
fe015c549c Add IzzySoft badge for stable track to readme (#3073) 2025-09-02 17:23:33 +02:00
Patrick Goldinger
253ee969eb Update early-beta to beta (#3072) 2025-09-02 01:20:00 +02:00
Patrick Goldinger
8fa986ca76 Fix theme updates not properly propagating after save (#3052) 2025-08-19 22:34:03 +02:00
Lars Mühlbauer
640a1c56cc Update bug_report.yml (#3047)
* Update bug_report.yml

* Update .github/ISSUE_TEMPLATE/bug_report.yml

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>

---------

Co-authored-by: Patrick Goldinger <patrick@patrickgold.dev>
2025-08-18 12:36:16 +02:00
29 changed files with 178 additions and 45 deletions

View File

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

View File

@@ -5,7 +5,7 @@ src=".github/repo_icon.png" alt="App icon">
**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,7 +26,10 @@ 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-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))

View File

@@ -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",
@@ -510,6 +517,12 @@
"authors": [ "msrd0" ],
"direction": "ltr"
},
{
"id": "dvorak_se",
"label": "Dvorak (SE)",
"authors": [ "iceaway" ],
"direction": "ltr"
},
{
"id": "hebrew",
"label": "עברית",

View File

@@ -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" }
]
]

View File

@@ -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" }
]
]

View File

@@ -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": {

View File

@@ -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": "ٓ" },

View File

@@ -626,14 +626,19 @@ class FlorisImeService : LifecycleInputMethodService() {
clickAndSemanticsModifier = Modifier
// Do not remove below line or touch input may get stuck
.pointerInteropFilter { false },
supportsBackgroundImage = false,
supportsBackgroundImage = !AndroidVersion.ATLEAST_API30_R,
allowClip = false,
) {
SnyggSurfaceView(
elementName = FlorisImeUi.Window.elementName,
attributes = attributes,
modifier = Modifier.matchParentSize(),
)
// 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

View File

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

View File

@@ -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()
}

View File

@@ -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,12 +147,12 @@ 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.history.observeAsNonNullState()
val filteredHistory = remember(unfilteredHistory, activeFilterTypes.toSet()) {
if (activeFilterTypes.isEmpty()) {
unfilteredHistory
} else {
@@ -164,7 +163,7 @@ fun ClipboardInputLayout(
}
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,
@@ -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,
)
@@ -567,7 +566,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 +591,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 +674,7 @@ fun ClipboardInputLayout(
HistoryLockedView()
} else {
if (historyEnabled) {
if (history.all.isNotEmpty() || !activeFilterTypes.isEmpty()) {
if (filteredHistory.all.isNotEmpty() || !activeFilterTypes.isEmpty()) {
HistoryMainView()
} else {
HistoryEmptyView()

View File

@@ -286,6 +286,15 @@ 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
*/
@@ -391,7 +400,8 @@ class ClipboardManager(
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) }
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 }
}
}

View File

@@ -67,6 +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.util.concurrent.atomic.AtomicInteger
/**
* Core class which manages the keyboard theme. Note, that this does not affect the UI theme of the
@@ -79,8 +80,10 @@ 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 configurationChangeCounter = MutableStateFlow(0)
@@ -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() }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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>

View File

@@ -695,7 +695,8 @@
<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>

View File

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

View File

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

View File

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

View File

@@ -11,5 +11,5 @@ projectMinSdk=26
projectTargetSdk=35
projectCompileSdk=35
projectVersionCode=115
projectVersionName=0.5.0
projectVersionCode=116
projectVersionName=0.5.1