Compare commits
13 Commits
chore/flor
...
renovate/t
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b54de1bf7 | |||
| 8ddc11159b | |||
|
|
6736bae5ee | ||
|
|
21d1726d7a | ||
| 1e7ee5b98a | |||
| a82df3f6d0 | |||
| e0e3eb73b9 | |||
| 8a7a0af207 | |||
| 71a652ce3b | |||
| 5fa6eac1ad | |||
| a8aeae5f32 | |||
|
|
5771b603f2 | ||
|
|
5725989aff |
@@ -134,6 +134,7 @@ import de.jeanlucmakiola.floret.components.GroupedRow
|
|||||||
import de.jeanlucmakiola.calendula.ui.common.MILLIS_PER_DAY
|
import de.jeanlucmakiola.calendula.ui.common.MILLIS_PER_DAY
|
||||||
import de.jeanlucmakiola.floret.components.InlineTextField
|
import de.jeanlucmakiola.floret.components.InlineTextField
|
||||||
import de.jeanlucmakiola.floret.components.OptionCard
|
import de.jeanlucmakiola.floret.components.OptionCard
|
||||||
|
import de.jeanlucmakiola.floret.components.OptionPicker
|
||||||
import de.jeanlucmakiola.floret.components.Position
|
import de.jeanlucmakiola.floret.components.Position
|
||||||
import de.jeanlucmakiola.floret.components.positionOf
|
import de.jeanlucmakiola.floret.components.positionOf
|
||||||
import de.jeanlucmakiola.calendula.ui.common.REMINDER_PRESETS
|
import de.jeanlucmakiola.calendula.ui.common.REMINDER_PRESETS
|
||||||
@@ -345,29 +346,29 @@ private fun SaveConflictDialog(
|
|||||||
onDiscard: () -> Unit,
|
onDiscard: () -> Unit,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
) {
|
) {
|
||||||
AlertDialog(
|
FullScreenPicker(
|
||||||
onDismissRequest = onDismiss,
|
title = stringResource(R.string.event_edit_conflict_title),
|
||||||
title = { Text(stringResource(R.string.event_edit_conflict_title)) },
|
onDismiss = onDismiss,
|
||||||
text = {
|
) {
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
Text(
|
||||||
Text(stringResource(R.string.event_edit_conflict_body))
|
text = stringResource(R.string.event_edit_conflict_body),
|
||||||
Spacer(Modifier.height(4.dp))
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
OptionCard(
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
label = stringResource(R.string.event_edit_conflict_overwrite),
|
modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp),
|
||||||
supportingText = stringResource(R.string.event_edit_conflict_overwrite_hint),
|
)
|
||||||
|
GroupedRow(
|
||||||
|
title = stringResource(R.string.event_edit_conflict_overwrite),
|
||||||
|
summary = stringResource(R.string.event_edit_conflict_overwrite_hint),
|
||||||
|
position = positionOf(0, 2),
|
||||||
onClick = onOverwrite,
|
onClick = onOverwrite,
|
||||||
)
|
)
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(R.string.event_edit_conflict_discard),
|
title = stringResource(R.string.event_edit_conflict_discard),
|
||||||
supportingText = stringResource(R.string.event_edit_conflict_discard_hint),
|
summary = stringResource(R.string.event_edit_conflict_discard_hint),
|
||||||
|
position = positionOf(1, 2),
|
||||||
onClick = onDiscard,
|
onClick = onDiscard,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
TextButton(onClick = onDismiss) { Text(stringResource(R.string.dialog_cancel)) }
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1064,24 +1065,19 @@ private fun FieldPickerDialog(
|
|||||||
onSelect: (EventFormField) -> Unit,
|
onSelect: (EventFormField) -> Unit,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
) {
|
) {
|
||||||
AlertDialog(
|
FullScreenPicker(
|
||||||
onDismissRequest = onDismiss,
|
title = stringResource(R.string.event_edit_more_fields),
|
||||||
title = { Text(stringResource(R.string.event_edit_more_fields)) },
|
onDismiss = onDismiss,
|
||||||
text = {
|
) {
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
hiddenFields.forEachIndexed { index, field ->
|
||||||
hiddenFields.forEach { field ->
|
GroupedRow(
|
||||||
OptionCard(
|
title = stringResource(eventFormFieldLabel(field)),
|
||||||
label = stringResource(eventFormFieldLabel(field)),
|
position = positionOf(index, hiddenFields.size),
|
||||||
|
leading = { Icon(imageVector = eventFormFieldIcon(field), contentDescription = null) },
|
||||||
onClick = { onSelect(field) },
|
onClick = { onSelect(field) },
|
||||||
icon = eventFormFieldIcon(field),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
TextButton(onClick = onDismiss) { Text(stringResource(R.string.dialog_cancel)) }
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Quick-pick lead times offered as chips in the reminder dialog. */
|
/** Quick-pick lead times offered as chips in the reminder dialog. */
|
||||||
@@ -1106,26 +1102,39 @@ private fun ReminderPickerDialog(
|
|||||||
?.takeIf { it in 1..999 }
|
?.takeIf { it in 1..999 }
|
||||||
?.let { it * unit.minutesFactor }
|
?.let { it * unit.minutesFactor }
|
||||||
|
|
||||||
AlertDialog(
|
FullScreenPicker(
|
||||||
onDismissRequest = onDismiss,
|
title = stringResource(R.string.event_edit_add_reminder),
|
||||||
title = { Text(stringResource(R.string.event_edit_add_reminder)) },
|
onDismiss = onDismiss,
|
||||||
text = {
|
actions = {
|
||||||
|
// The quick-pick list adds on tap; only the custom step needs Add.
|
||||||
|
if (customMode) {
|
||||||
|
TextButton(
|
||||||
|
enabled = customMinutes != null && customMinutes !in alreadyChosen,
|
||||||
|
onClick = { customMinutes?.let(onSelect) },
|
||||||
|
) { Text(stringResource(R.string.event_edit_add)) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
) {
|
||||||
if (!customMode) {
|
if (!customMode) {
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
val presets = REMINDER_QUICK_PICKS.filterNot { it in alreadyChosen }
|
||||||
REMINDER_QUICK_PICKS.filterNot { it in alreadyChosen }.forEach { minutes ->
|
val rowCount = presets.size + 1
|
||||||
OptionCard(
|
presets.forEachIndexed { index, minutes ->
|
||||||
label = reminderLabel(minutes),
|
GroupedRow(
|
||||||
|
title = reminderLabel(minutes),
|
||||||
|
position = positionOf(index, rowCount),
|
||||||
onClick = { onSelect(minutes) },
|
onClick = { onSelect(minutes) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(R.string.event_edit_reminder_custom),
|
title = stringResource(R.string.event_edit_reminder_custom),
|
||||||
|
position = positionOf(rowCount - 1, rowCount),
|
||||||
onClick = { customMode = true },
|
onClick = { customMode = true },
|
||||||
labelColor = MaterialTheme.colorScheme.primary,
|
|
||||||
)
|
)
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp),
|
||||||
|
) {
|
||||||
DialogAmountField(
|
DialogAmountField(
|
||||||
value = amountText,
|
value = amountText,
|
||||||
onValueChange = { amountText = it },
|
onValueChange = { amountText = it },
|
||||||
@@ -1139,20 +1148,7 @@ private fun ReminderPickerDialog(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
// The quick-pick list adds on tap; only the custom step needs Add.
|
|
||||||
if (customMode) {
|
|
||||||
TextButton(
|
|
||||||
enabled = customMinutes != null && customMinutes !in alreadyChosen,
|
|
||||||
onClick = { customMinutes?.let(onSelect) },
|
|
||||||
) { Text(stringResource(R.string.event_edit_add)) }
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
dismissButton = {
|
|
||||||
TextButton(onClick = onDismiss) { Text(stringResource(R.string.dialog_cancel)) }
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** How a custom recurrence ends; mirrors [RecurrenceEnd] in saveable form. */
|
/** How a custom recurrence ends; mirrors [RecurrenceEnd] in saveable form. */
|
||||||
@@ -1222,33 +1218,46 @@ private fun RecurrencePickerDialog(
|
|||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
AlertDialog(
|
FullScreenPicker(
|
||||||
onDismissRequest = onDismiss,
|
title = stringResource(R.string.event_detail_recurrence),
|
||||||
title = { Text(stringResource(R.string.event_detail_recurrence)) },
|
onDismiss = onDismiss,
|
||||||
text = {
|
actions = {
|
||||||
|
// The preset list applies on tap; only the custom step needs OK.
|
||||||
|
if (customMode) {
|
||||||
|
TextButton(
|
||||||
|
enabled = customResult != null,
|
||||||
|
onClick = { customResult?.let(onSelect) },
|
||||||
|
) { Text(stringResource(R.string.dialog_ok)) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
) {
|
||||||
if (!customMode) {
|
if (!customMode) {
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
val rowCount = RecurrenceFreq.entries.size + 2
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(R.string.event_edit_recurrence_none),
|
title = stringResource(R.string.event_edit_recurrence_none),
|
||||||
onClick = { onSelect(null) },
|
position = positionOf(0, rowCount),
|
||||||
selected = current == null,
|
selected = current == null,
|
||||||
|
onClick = { onSelect(null) },
|
||||||
)
|
)
|
||||||
RecurrenceFreq.entries.forEach { entry ->
|
RecurrenceFreq.entries.forEachIndexed { index, entry ->
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(recurrencePresetLabel(entry)),
|
title = stringResource(recurrencePresetLabel(entry)),
|
||||||
onClick = { onSelect(SimpleRecurrence(entry).toRRule()) },
|
position = positionOf(index + 1, rowCount),
|
||||||
selected = isPlainPreset && parsed?.freq == entry,
|
selected = isPlainPreset && parsed?.freq == entry,
|
||||||
|
onClick = { onSelect(SimpleRecurrence(entry).toRRule()) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(R.string.event_edit_recurrence_custom),
|
title = stringResource(R.string.event_edit_recurrence_custom),
|
||||||
onClick = { customMode = true },
|
position = positionOf(rowCount - 1, rowCount),
|
||||||
selected = current != null && !isPlainPreset,
|
selected = current != null && !isPlainPreset,
|
||||||
labelColor = MaterialTheme.colorScheme.primary,
|
onClick = { customMode = true },
|
||||||
)
|
)
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
Column(
|
||||||
|
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
|
modifier = Modifier.padding(horizontal = 24.dp),
|
||||||
|
) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.event_edit_recurrence_every),
|
text = stringResource(R.string.event_edit_recurrence_every),
|
||||||
@@ -1270,45 +1279,50 @@ private fun RecurrencePickerDialog(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (freq == RecurrenceFreq.Weekly) {
|
if (freq == RecurrenceFreq.Weekly) {
|
||||||
Spacer(Modifier.height(4.dp))
|
|
||||||
WeekdayToggleRow(
|
WeekdayToggleRow(
|
||||||
selected = daysMask.toDaySet(),
|
selected = daysMask.toDaySet(),
|
||||||
onToggle = { day -> daysMask = daysMask xor day.toMaskBit() },
|
onToggle = { day -> daysMask = daysMask xor day.toMaskBit() },
|
||||||
locale = locale,
|
locale = locale,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Spacer(Modifier.height(4.dp))
|
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.event_edit_recurrence_ends),
|
text = stringResource(R.string.event_edit_recurrence_ends),
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
)
|
)
|
||||||
OptionCard(
|
}
|
||||||
label = stringResource(R.string.event_edit_recurrence_end_never),
|
GroupedRow(
|
||||||
onClick = { endMode = RecurrenceEndMode.Never },
|
title = stringResource(R.string.event_edit_recurrence_end_never),
|
||||||
|
position = positionOf(0, 3),
|
||||||
selected = endMode == RecurrenceEndMode.Never,
|
selected = endMode == RecurrenceEndMode.Never,
|
||||||
|
onClick = { endMode = RecurrenceEndMode.Never },
|
||||||
)
|
)
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(R.string.event_edit_recurrence_end_until),
|
title = stringResource(R.string.event_edit_recurrence_end_until),
|
||||||
onClick = {
|
summary = untilDate?.let {
|
||||||
endMode = RecurrenceEndMode.Until
|
|
||||||
showUntilPicker = true
|
|
||||||
},
|
|
||||||
supportingText = untilDate?.let {
|
|
||||||
remember(it, locale) {
|
remember(it, locale) {
|
||||||
DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
|
DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
|
||||||
.withLocale(locale).format(it.toJavaLocalDate())
|
.withLocale(locale).format(it.toJavaLocalDate())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
position = positionOf(1, 3),
|
||||||
selected = endMode == RecurrenceEndMode.Until,
|
selected = endMode == RecurrenceEndMode.Until,
|
||||||
|
onClick = {
|
||||||
|
endMode = RecurrenceEndMode.Until
|
||||||
|
showUntilPicker = true
|
||||||
|
},
|
||||||
)
|
)
|
||||||
OptionCard(
|
GroupedRow(
|
||||||
label = stringResource(R.string.event_edit_recurrence_end_count),
|
title = stringResource(R.string.event_edit_recurrence_end_count),
|
||||||
onClick = { endMode = RecurrenceEndMode.Count },
|
position = positionOf(2, 3),
|
||||||
selected = endMode == RecurrenceEndMode.Count,
|
selected = endMode == RecurrenceEndMode.Count,
|
||||||
|
onClick = { endMode = RecurrenceEndMode.Count },
|
||||||
)
|
)
|
||||||
if (endMode == RecurrenceEndMode.Count) {
|
if (endMode == RecurrenceEndMode.Count) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
modifier = Modifier.padding(horizontal = 24.dp, vertical = 4.dp),
|
||||||
|
) {
|
||||||
DialogAmountField(
|
DialogAmountField(
|
||||||
value = countText,
|
value = countText,
|
||||||
onValueChange = { countText = it },
|
onValueChange = { countText = it },
|
||||||
@@ -1323,20 +1337,6 @@ private fun RecurrencePickerDialog(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
// The preset list applies on tap; only the custom step needs OK.
|
|
||||||
if (customMode) {
|
|
||||||
TextButton(
|
|
||||||
enabled = customResult != null,
|
|
||||||
onClick = { customResult?.let(onSelect) },
|
|
||||||
) { Text(stringResource(R.string.dialog_ok)) }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dismissButton = {
|
|
||||||
TextButton(onClick = onDismiss) { Text(stringResource(R.string.dialog_cancel)) }
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
if (showUntilPicker) {
|
if (showUntilPicker) {
|
||||||
CalendarDatePickerDialog(
|
CalendarDatePickerDialog(
|
||||||
@@ -1701,24 +1701,14 @@ private fun VisibilityPickerDialog(
|
|||||||
onSelect: (AccessLevel) -> Unit,
|
onSelect: (AccessLevel) -> Unit,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
) {
|
) {
|
||||||
AlertDialog(
|
OptionPicker(
|
||||||
onDismissRequest = onDismiss,
|
title = stringResource(R.string.event_edit_visibility),
|
||||||
title = { Text(stringResource(R.string.event_edit_visibility)) },
|
options = AccessLevel.entries.toList(),
|
||||||
text = {
|
selected = selected,
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
label = { stringResource(accessLevelLabel(it)) },
|
||||||
AccessLevel.entries.forEach { level ->
|
onSelect = onSelect,
|
||||||
OptionCard(
|
onDismiss = onDismiss,
|
||||||
label = stringResource(accessLevelLabel(level)),
|
leading = { Icon(imageVector = accessLevelIcon(it), contentDescription = null) },
|
||||||
onClick = { onSelect(level) },
|
|
||||||
icon = accessLevelIcon(level),
|
|
||||||
selected = level == selected,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
TextButton(onClick = onDismiss) { Text(stringResource(R.string.dialog_cancel)) }
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1741,11 +1731,21 @@ private fun ColorPickerDialog(
|
|||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
) {
|
) {
|
||||||
val dark = isSystemInDarkTheme()
|
val dark = isSystemInDarkTheme()
|
||||||
AlertDialog(
|
FullScreenPicker(
|
||||||
onDismissRequest = onDismiss,
|
title = stringResource(R.string.event_edit_color),
|
||||||
title = { Text(stringResource(R.string.event_edit_color)) },
|
onDismiss = onDismiss,
|
||||||
text = {
|
actions = {
|
||||||
Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
|
if (hasExplicitColor) {
|
||||||
|
TextButton(onClick = onClear) {
|
||||||
|
Text(stringResource(R.string.event_edit_color_reset))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
verticalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
|
modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp),
|
||||||
|
) {
|
||||||
if (palette.isNotEmpty()) {
|
if (palette.isNotEmpty()) {
|
||||||
ColorSwatchRow(
|
ColorSwatchRow(
|
||||||
colors = palette.map { it.argb },
|
colors = palette.map { it.argb },
|
||||||
@@ -1772,20 +1772,7 @@ private fun ColorPickerDialog(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
TextButton(onClick = onDismiss) { Text(stringResource(R.string.dialog_cancel)) }
|
|
||||||
},
|
|
||||||
dismissButton = if (hasExplicitColor) {
|
|
||||||
{
|
|
||||||
TextButton(onClick = onClear) {
|
|
||||||
Text(stringResource(R.string.event_edit_color_reset))
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun accessLevelIcon(level: AccessLevel): ImageVector = when (level) {
|
private fun accessLevelIcon(level: AccessLevel): ImageVector = when (level) {
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ private enum class ChipAccent { Neutral, Primary, Tertiary }
|
|||||||
* Settings (M4), restructured in v2.3 into a category hub with sub-screens.
|
* Settings (M4), restructured in v2.3 into a category hub with sub-screens.
|
||||||
* Both the hub and the sub-screens use a collapsing [LargeTopAppBar] and the
|
* Both the hub and the sub-screens use a collapsing [LargeTopAppBar] and the
|
||||||
* grouped-row card system. Calendars opens the separate manager hoisted in
|
* grouped-row card system. Calendars opens the separate manager hoisted in
|
||||||
* [CalendarHost]; Language opens an inline OptionCard dialog; About is a card
|
* [CalendarHost]; Language opens a full-screen picker; About is a card
|
||||||
* at the top. A full-screen destination; [onBack] pops it.
|
* at the top. A full-screen destination; [onBack] pops it.
|
||||||
*/
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
@@ -220,7 +220,7 @@
|
|||||||
<string name="search_action">Suchen</string>
|
<string name="search_action">Suchen</string>
|
||||||
<string name="search_hint">Termine suchen</string>
|
<string name="search_hint">Termine suchen</string>
|
||||||
<string name="search_back">Zurück</string>
|
<string name="search_back">Zurück</string>
|
||||||
<string name="search_clear">Löschen</string>
|
<string name="search_clear">Leeren</string>
|
||||||
<string name="search_idle_hint">Durchsuche deine Termine nach Titel, Ort oder Notizen.</string>
|
<string name="search_idle_hint">Durchsuche deine Termine nach Titel, Ort oder Notizen.</string>
|
||||||
<string name="search_empty">Keine Termine passen zu „%1$s“.</string>
|
<string name="search_empty">Keine Termine passen zu „%1$s“.</string>
|
||||||
<!-- Startbildschirm-Widgets -->
|
<!-- Startbildschirm-Widgets -->
|
||||||
@@ -310,7 +310,7 @@
|
|||||||
<string name="settings_language">App-Sprache</string>
|
<string name="settings_language">App-Sprache</string>
|
||||||
<string name="settings_language_auto">Systemstandard</string>
|
<string name="settings_language_auto">Systemstandard</string>
|
||||||
<!-- Hub category subtitles -->
|
<!-- Hub category subtitles -->
|
||||||
<string name="settings_appearance_subtitle">Design, Standartansicht, Wochenstart</string>
|
<string name="settings_appearance_subtitle">Design, Standardansicht, Wochenstart</string>
|
||||||
<string name="settings_event_form_subtitle">Standardfelder für neue Termine</string>
|
<string name="settings_event_form_subtitle">Standardfelder für neue Termine</string>
|
||||||
<string name="settings_notifications_subtitle">Termin-Erinnerungen</string>
|
<string name="settings_notifications_subtitle">Termin-Erinnerungen</string>
|
||||||
<string name="settings_section_about">Über</string>
|
<string name="settings_section_about">Über</string>
|
||||||
@@ -330,7 +330,7 @@
|
|||||||
<string name="calendars_add">Kalender hinzufügen</string>
|
<string name="calendars_add">Kalender hinzufügen</string>
|
||||||
<string name="calendars_synced_header">Synchronisierte Kalender</string>
|
<string name="calendars_synced_header">Synchronisierte Kalender</string>
|
||||||
<string name="calendars_synced_hint">Diese stammen von Konten auf deinem Gerät. Erstelle und bearbeite sie in der jeweiligen App.</string>
|
<string name="calendars_synced_hint">Diese stammen von Konten auf deinem Gerät. Erstelle und bearbeite sie in der jeweiligen App.</string>
|
||||||
<string name="calendars_manage_in_app">Verwalten</string>
|
<string name="calendars_manage_in_app">In der App verwalten</string>
|
||||||
<string name="calendars_add_account">Konto hinzufügen</string>
|
<string name="calendars_add_account">Konto hinzufügen</string>
|
||||||
<string name="calendars_new_title">Neuer Kalender</string>
|
<string name="calendars_new_title">Neuer Kalender</string>
|
||||||
<string name="calendars_edit_title">Kalender bearbeiten</string>
|
<string name="calendars_edit_title">Kalender bearbeiten</string>
|
||||||
@@ -394,10 +394,10 @@
|
|||||||
<item quantity="other">%d Tage</item>
|
<item quantity="other">%d Tage</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="duration_weeks">
|
<plurals name="duration_weeks">
|
||||||
<item quantity="one">Woche</item>
|
<item quantity="one">%d Woche</item>
|
||||||
<item quantity="other">Wochen</item>
|
<item quantity="other">%d Wochen</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="settings_default_view">Standartansicht</string>
|
<string name="settings_default_view">Standardansicht</string>
|
||||||
<string name="settings_font_headings">Überschriften Schriftart</string>
|
<string name="settings_font_headings">Überschriften Schriftart</string>
|
||||||
<string name="settings_font_system">Systemstandard</string>
|
<string name="settings_font_system">Systemstandard</string>
|
||||||
<string name="font_jetbrains_mono">JetBrains Mono</string>
|
<string name="font_jetbrains_mono">JetBrains Mono</string>
|
||||||
@@ -411,4 +411,83 @@
|
|||||||
<string name="settings_past_events_hide">Ausblenden</string>
|
<string name="settings_past_events_hide">Ausblenden</string>
|
||||||
<string name="settings_agenda_header">Agenda</string>
|
<string name="settings_agenda_header">Agenda</string>
|
||||||
<string name="settings_special_dates_reminders">Erinnerungen</string>
|
<string name="settings_special_dates_reminders">Erinnerungen</string>
|
||||||
|
<string name="settings_font_body">Inhaltsschriftart</string>
|
||||||
|
<string name="font_atkinson_hyperlegible">Atkinson Hyperlegible</string>
|
||||||
|
<string name="font_lora">Lora</string>
|
||||||
|
<string name="settings_font_custom_selected">Benutzerdefinierte Schriftart</string>
|
||||||
|
<string name="settings_section_views">Ansichten</string>
|
||||||
|
<string name="settings_quick_switch_header">Schnellwechselknopf</string>
|
||||||
|
<string name="settings_quick_switch_hint">Wähle aus, durch welche Ansichten du mit dem Knopf oben rechts wechseln möchtest, und ziehe, um sie neu anzuordnen. Deaktivierte Ansichten bleiben über das Navigationsmenü erreichbar.</string>
|
||||||
|
<string name="settings_drawer_order_header">Navigationsmenü</string>
|
||||||
|
<string name="settings_drawer_order_hint">Ziehen, um die im Navigationsmenü aufgelisteten Ansichten neu anzuordnen.</string>
|
||||||
|
<string name="reorder_drag_handle">Zum Neuanordnen ziehen</string>
|
||||||
|
<string name="settings_calendar_reminders_title">Erinnerungen pro Kalender</string>
|
||||||
|
<string name="settings_translate">Hilf beim Übersetzen</string>
|
||||||
|
<string name="settings_translate_hint">Füge eine Sprache auf Weblate hinzu oder verbessere sie</string>
|
||||||
|
<string name="settings_views_subtitle">Schnellwechsellnopf und Menüreihenfolge</string>
|
||||||
|
<string name="settings_special_dates_subtitle">Kontakte-Geburtstage und Jubiläen</string>
|
||||||
|
<string name="settings_section_special_dates">Besondere Termine von Kontakten</string>
|
||||||
|
<string name="settings_special_dates_enable">Kontakttermine anzeigen</string>
|
||||||
|
<string name="settings_special_dates_enable_hint">Spiegle die Geburtstage und andere Termine deiner Kontakte in lokale Kalender. Liest nur Kontakte auf diesem Gerät – es wird nichts hochgeladen und Ihre Kontakte werden nie geändert.</string>
|
||||||
|
<string name="settings_special_dates_type_birthday">Geburtstage</string>
|
||||||
|
<string name="settings_special_dates_type_anniversary">Jahrestage</string>
|
||||||
|
<string name="settings_special_dates_type_custom">Andere Ereignisse</string>
|
||||||
|
<string name="settings_special_dates_template">Titelformat</string>
|
||||||
|
<string name="settings_special_dates_template_hint">Verwende {Name} für den Kontakt und {Jahr} für das Jahr (das Geburtsjahr oder das Anfangsjahr eines Jahrestages; versteckt, wenn unbekannt).</string>
|
||||||
|
<string name="settings_special_dates_show_year">Jahr anzeigen</string>
|
||||||
|
<string name="settings_special_dates_show_year_hint">{year} in Titel einfügen, wenn bekannt</string>
|
||||||
|
<string name="settings_special_dates_sync_now">Jetzt synchronisieren</string>
|
||||||
|
<string name="settings_special_dates_never_synced">Noch nicht synchronisiert</string>
|
||||||
|
<string name="settings_special_dates_last_synced">Zuletzt synchronisiert %1$s</string>
|
||||||
|
<string name="settings_special_dates_calendar_hint">Lege die Farbe und Sichtbarkeit jedes Kalenders in den Kalendereinstellungen fest.</string>
|
||||||
|
<string name="settings_special_dates_paused_title">Pausiert</string>
|
||||||
|
<string name="settings_calendar_reminders_managed_hint">In den besonderen Terminen der Kontakte setzen</string>
|
||||||
|
<string name="settings_special_dates_paused_hint">Calendula kann deine Kontakte nicht mehr lesen, daher werden diese Kalender nicht aktualisiert.</string>
|
||||||
|
<string name="settings_special_dates_disable_title">Kontakttermine deaktivieren?</string>
|
||||||
|
<string name="settings_special_dates_disable_all_message">Dadurch werden die Kontaktterminkalender und ihre Ereignisse gelöscht. Alle von dir hinzugefügten Erinnerungen oder Notizen gehen verloren.</string>
|
||||||
|
<string name="settings_special_dates_grant">Zugriff gewähren</string>
|
||||||
|
<string name="settings_special_dates_disable_type_message">Dadurch werden der Kalender „%1$s“ und seine Ereignisse gelöscht. Alle von dir hinzugefügten Erinnerungen oder Notizen gehen verloren.</string>
|
||||||
|
<string name="settings_special_dates_disable_confirm">Deaktivieren</string>
|
||||||
|
<string name="dialog_save">Speichern</string>
|
||||||
|
<string name="calendars_disable_hint">Deaktiviere einen Kalender, um ihn aus der App zu entfernen – seine Ereignisse, Filter und Auswahlmöglichkeiten. Es wird nichts gelöscht und du kannst ihn hier jederzeit wieder aktivieren.</string>
|
||||||
|
<string name="calendars_show_in_app_a11y">„%1$s“ in der App anzeigen</string>
|
||||||
|
<string name="calendars_account_menu_a11y">Weitere Optionen für %1$s</string>
|
||||||
|
<string name="calendars_enable_all">Alle aktivieren</string>
|
||||||
|
<string name="calendars_disable_all">Alle deaktivieren</string>
|
||||||
|
<string name="calendars_auto_backup">Automatische Sicherung</string>
|
||||||
|
<string name="calendars_auto_backup_hint">Exportiere deine lokalen Kalender regelmäßig als .ics-Datei in einen Ordner.</string>
|
||||||
|
<string name="calendars_auto_backup_folder">Sicherungsordner</string>
|
||||||
|
<string name="calendars_auto_backup_folder_unset">Tippe, um einen Ordner auszuwählen</string>
|
||||||
|
<string name="calendars_auto_backup_interval">Intervall</string>
|
||||||
|
<string name="calendars_auto_backup_every">Alle %1$s</string>
|
||||||
|
<string name="calendars_auto_backup_interval_min">Mindestens 30 Minuten.</string>
|
||||||
|
<string name="calendars_auto_backup_status_never">Noch keine automatische Sicherung</string>
|
||||||
|
<string name="calendars_auto_backup_status_ok">Letzte Sicherung: %1$s</string>
|
||||||
|
<string name="calendars_auto_backup_status_failed">Letzte Sicherung fehlgeschlagen: %1$s</string>
|
||||||
|
<string name="backup_channel_name">Sicherung</string>
|
||||||
|
<string name="backup_channel_description">Warnt, wenn automatische Sicherungen wiederholt fehlschlagen.</string>
|
||||||
|
<string name="backup_failed_title">Automatische Sicherung fehlgeschlagen</string>
|
||||||
|
<string name="backup_failed_text">Calendula konnte die Sicherungsdatei nicht schreiben. Überprüfe den Sicherungsordner in den Einstellungen.</string>
|
||||||
|
<string name="special_dates_calendar_birthday">Geburtstage</string>
|
||||||
|
<string name="special_dates_calendar_anniversary">Jahrestage</string>
|
||||||
|
<string name="special_dates_calendar_custom">Besondere Termine</string>
|
||||||
|
<string name="special_dates_default_title_birthday">Geburtstag von {name} ({year})</string>
|
||||||
|
<string name="special_dates_default_title_anniversary">Jahrestag von {name} ({year})</string>
|
||||||
|
<string name="special_dates_default_title_custom">{name}</string>
|
||||||
|
<string name="settings_week_numbers">Kalenderwochen</string>
|
||||||
|
<string name="settings_week_numbers_summary">Kalenderwochen der Monatsansicht anzeigen</string>
|
||||||
|
<string name="calendars_export_title">Kalender exportieren</string>
|
||||||
|
<string name="calendars_export_hint">Wähle aus, welche Kalender in die .ics-Datei aufgenommen werden sollen.</string>
|
||||||
|
<string name="calendars_export_action">Exportieren</string>
|
||||||
|
<string name="calendars_restore_header">Wiederherstellen</string>
|
||||||
|
<string name="calendars_restore_action">Aus .ics-Datei wiederherstellen</string>
|
||||||
|
<string name="calendars_restore_hint">Importiere Ereignisse aus einem Backup oder einer anderen Kalender-App.</string>
|
||||||
|
<string name="import_done_dedup_note">Bereits im Kalender vorhandene Ereignisse wurden übersprungen.</string>
|
||||||
|
<string name="import_done_added_label">Hinzugefügt</string>
|
||||||
|
<string name="import_done_skipped_label">Duplikate</string>
|
||||||
|
<string name="import_button">Importieren</string>
|
||||||
|
<plurals name="import_title_count">
|
||||||
|
<item quantity="one">%d Ereignis wird importiert</item>
|
||||||
|
<item quantity="other">%d Ereignisse werden importiert</item>
|
||||||
|
</plurals>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -16,17 +16,17 @@
|
|||||||
<string name="state_failure_no_calendars">Nessun calendario configurato.</string>
|
<string name="state_failure_no_calendars">Nessun calendario configurato.</string>
|
||||||
<string name="state_failure_no_calendars_action">Apri le impostazioni calendario di sistema</string>
|
<string name="state_failure_no_calendars_action">Apri le impostazioni calendario di sistema</string>
|
||||||
<string name="state_failure_provider">Errore nella lettura del calendario.</string>
|
<string name="state_failure_provider">Errore nella lettura del calendario.</string>
|
||||||
<string name="permission_rationale_title">Guarda tutti i tuoi eventi, magnificamente</string>
|
<string name="permission_rationale_title">Gestisci magnificamente tutti i tuoi eventi</string>
|
||||||
<string name="permission_rationale_body">Calendula ha bisogno di accedere al tuo calendario per mostrare e gestire gli eventi. È l\'unica cosa che ti chiederà.</string>
|
<string name="permission_rationale_body">Calendula ha bisogno di accedere al tuo calendario per mostrare e gestire gli eventi. È l\'unica cosa di cui ha bisogno e nessuna informazione lascerà mai il tuo dispositivo.</string>
|
||||||
<string name="permission_request_button">Concedi l\'accesso al calendario</string>
|
<string name="permission_request_button">Concedi l\'accesso al calendario</string>
|
||||||
<string name="permission_denied_title">Accesso al calendario negato</string>
|
<string name="permission_denied_title">Accesso al calendario negato</string>
|
||||||
<string name="permission_denied_body">Calendula non può mostrare gli eventi senza accesso al calendario. Puoi concederlo dalle impostazioni di sistema.</string>
|
<string name="permission_denied_body">Calendula non può mostrare gli eventi senza accesso al calendario. Puoi concederlo dalle impostazioni di sistema.</string>
|
||||||
<string name="permission_open_settings_button">Apri le impostazioni di sistema</string>
|
<string name="permission_open_settings_button">Apri le impostazioni di sistema</string>
|
||||||
<string name="permission_retry_button">Riprova</string>
|
<string name="permission_retry_button">Riprova</string>
|
||||||
<string name="permission_benefit_private_title">Rimane sul tuo dispositivo</string>
|
<string name="permission_benefit_private_title">Rimane sul tuo dispositivo</string>
|
||||||
<string name="permission_benefit_private_body">I tuoi calendari sono letti localmente e non lasciano mai il tuo telefono.</string>
|
<string name="permission_benefit_private_body">I tuoi calendari sono letti localmente e non lasciano mai il tuo dispositivo.</string>
|
||||||
<string name="permission_benefit_sync_title">Tutti i tuoi calendari, insieme</string>
|
<string name="permission_benefit_sync_title">Tutti i tuoi calendari, insieme</string>
|
||||||
<string name="permission_benefit_sync_body">Google, CalDAV, locali - qualsiasi calendario sincronizzato sul dispositivo semplicemente compare.</string>
|
<string name="permission_benefit_sync_body">Google, CalDAV, locali - qualsiasi calendario sincronizzato sul dispositivo, semplicemente, compare.</string>
|
||||||
<string name="permission_benefit_privacy_title">Nessun tracking, per sempre</string>
|
<string name="permission_benefit_privacy_title">Nessun tracking, per sempre</string>
|
||||||
<string name="permission_benefit_privacy_body">Zero telemetria, zero analytics, zero pubblicità.</string>
|
<string name="permission_benefit_privacy_body">Zero telemetria, zero analytics, zero pubblicità.</string>
|
||||||
<string name="permission_privacy_footnote">Rimane sul tuo dispositivo - nessun accesso a internet</string>
|
<string name="permission_privacy_footnote">Rimane sul tuo dispositivo - nessun accesso a internet</string>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<string name="month_action_settings">Impostazioni</string>
|
<string name="month_action_settings">Impostazioni</string>
|
||||||
<string name="month_a11y_today_prefix">Oggi</string>
|
<string name="month_a11y_today_prefix">Oggi</string>
|
||||||
<string name="week_today_action">Questa settimana</string>
|
<string name="week_today_action">Questa settimana</string>
|
||||||
<string name="week_number_label">Wk</string>
|
<string name="week_number_label">Sett.</string>
|
||||||
<string name="day_today_action">Oggi</string>
|
<string name="day_today_action">Oggi</string>
|
||||||
<string name="event_detail_back">Indietro</string>
|
<string name="event_detail_back">Indietro</string>
|
||||||
<string name="event_detail_edit">Modifica</string>
|
<string name="event_detail_edit">Modifica</string>
|
||||||
@@ -73,14 +73,14 @@
|
|||||||
<string name="event_edit_remove_reminder">Rimuovi promemoria</string>
|
<string name="event_edit_remove_reminder">Rimuovi promemoria</string>
|
||||||
<string name="event_edit_attendees">Partecipanti</string>
|
<string name="event_edit_attendees">Partecipanti</string>
|
||||||
<string name="event_edit_add_guest">Aggiungi partecipante</string>
|
<string name="event_edit_add_guest">Aggiungi partecipante</string>
|
||||||
<string name="event_edit_add_guest_hint">Aggiungi un partecipante via email…</string>
|
<string name="event_edit_add_guest_hint">Aggiungi un partecipante tramite indirizzo email…</string>
|
||||||
<string name="event_edit_add_guest_from_contacts">Aggiungi dai contatti</string>
|
<string name="event_edit_add_guest_from_contacts">Aggiungi dai contatti</string>
|
||||||
<string name="event_edit_location_from_contacts">Scegli un indirizzo dai contatti</string>
|
<string name="event_edit_location_from_contacts">Scegli un indirizzo dai contatti</string>
|
||||||
<string name="event_edit_remove_guest">Rimuovi partecipante</string>
|
<string name="event_edit_remove_guest">Rimuovi partecipante</string>
|
||||||
<string name="event_edit_attendee_required">Obbligatorio</string>
|
<string name="event_edit_attendee_required">Obbligatorio</string>
|
||||||
<string name="event_edit_attendee_optional">Facoltativo</string>
|
<string name="event_edit_attendee_optional">Facoltativo</string>
|
||||||
<string name="event_edit_attendees_note_synced">Calendula non manda gli inviti agli eventi. Il tuo account calendario potrà inviare le email ai partecipanti al momento della sincronizzazione.</string>
|
<string name="event_edit_attendees_note_synced">Calendula non manda gli inviti agli eventi. Il tuo account calendario potrà inviare le email ai partecipanti al momento della sincronizzazione.</string>
|
||||||
<string name="event_edit_attendees_note_local">Salvato sul dispositivo. Nessuno ha ricevuto notifiche.</string>
|
<string name="event_edit_attendees_note_local">Salvato sul dispositivo. Nessuno dei partecipanti ha ricevuto notifiche.</string>
|
||||||
<string name="event_edit_reminder_custom">Personalizza</string>
|
<string name="event_edit_reminder_custom">Personalizza</string>
|
||||||
<string name="reminder_unit_minutes">minuti</string>
|
<string name="reminder_unit_minutes">minuti</string>
|
||||||
<string name="reminder_unit_hours">ore</string>
|
<string name="reminder_unit_hours">ore</string>
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<string name="event_edit_availability">Disponibilità</string>
|
<string name="event_edit_availability">Disponibilità</string>
|
||||||
<string name="event_edit_visibility">Visibilità</string>
|
<string name="event_edit_visibility">Visibilità</string>
|
||||||
<string name="event_edit_color">Colore</string>
|
<string name="event_edit_color">Colore</string>
|
||||||
<string name="event_edit_color_default">Colore calendario</string>
|
<string name="event_edit_color_default">Colore del calendario</string>
|
||||||
<string name="event_edit_color_custom">Colore personalizzato</string>
|
<string name="event_edit_color_custom">Colore personalizzato</string>
|
||||||
<string name="event_edit_color_reset">Reset</string>
|
<string name="event_edit_color_reset">Reset</string>
|
||||||
<string name="event_edit_color_unsupported">Non disponibile per questo calendario</string>
|
<string name="event_edit_color_unsupported">Non disponibile per questo calendario</string>
|
||||||
@@ -99,13 +99,13 @@
|
|||||||
<string name="event_edit_conflict_body">Durante la modifica l\'evento è stato cambiato, tramite sincronizzazione o tramite altra app. Cosa fare con le modifiche in corso?</string>
|
<string name="event_edit_conflict_body">Durante la modifica l\'evento è stato cambiato, tramite sincronizzazione o tramite altra app. Cosa fare con le modifiche in corso?</string>
|
||||||
<string name="event_edit_conflict_overwrite">Salva le modifiche</string>
|
<string name="event_edit_conflict_overwrite">Salva le modifiche</string>
|
||||||
<string name="event_edit_conflict_overwrite_hint">Sovrascrivi solo i campi modificati</string>
|
<string name="event_edit_conflict_overwrite_hint">Sovrascrivi solo i campi modificati</string>
|
||||||
<string name="event_edit_conflict_discard">Annulla le mie modifiche</string>
|
<string name="event_edit_conflict_discard">Annulla le modifiche</string>
|
||||||
<string name="event_edit_conflict_discard_hint">Mantieni l\'evento com\'è ora</string>
|
<string name="event_edit_conflict_discard_hint">Lascia l\'evento invariato</string>
|
||||||
<string name="event_edit_gone_title">Evento eliminato</string>
|
<string name="event_edit_gone_title">Evento eliminato</string>
|
||||||
<string name="event_edit_gone_body">Nel frattempo, questo evento è stato eliminato, ad esempio su un altro dispositivo. Le modifiche non possono più essere salvate.</string>
|
<string name="event_edit_gone_body">Nel frattempo, questo evento è stato eliminato, ad esempio su un altro dispositivo. Le modifiche non possono più essere salvate.</string>
|
||||||
<string name="event_edit_recurrence_none">Non si ripete</string>
|
<string name="event_edit_recurrence_none">Non si ripete</string>
|
||||||
<string name="event_edit_recurrence_custom">Personalizza</string>
|
<string name="event_edit_recurrence_custom">Personalizza</string>
|
||||||
<string name="event_edit_recurrence_every">La serie</string>
|
<string name="event_edit_recurrence_every">Ogni</string>
|
||||||
<string name="recurrence_unit_days">giorni</string>
|
<string name="recurrence_unit_days">giorni</string>
|
||||||
<string name="recurrence_unit_weeks">settimane</string>
|
<string name="recurrence_unit_weeks">settimane</string>
|
||||||
<string name="recurrence_unit_months">mesi</string>
|
<string name="recurrence_unit_months">mesi</string>
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
<string name="event_edit_recurrence_ends">Fine</string>
|
<string name="event_edit_recurrence_ends">Fine</string>
|
||||||
<string name="event_edit_recurrence_end_never">Mai</string>
|
<string name="event_edit_recurrence_end_never">Mai</string>
|
||||||
<string name="event_edit_recurrence_end_until">Fino alla data</string>
|
<string name="event_edit_recurrence_end_until">Fino alla data</string>
|
||||||
<string name="event_edit_recurrence_end_count">Dopo un certo numero di occorrenze</string>
|
<string name="event_edit_recurrence_end_count">Numero di occorrenze</string>
|
||||||
<string name="event_edit_recurrence_times">occorrenze</string>
|
<string name="event_edit_recurrence_times">occorrenze</string>
|
||||||
<string name="event_edit_error_recurrence_ends_before_start">Fine antecedente l\'inizio</string>
|
<string name="event_edit_error_recurrence_ends_before_start">Fine antecedente l\'inizio</string>
|
||||||
<string name="event_availability_busy">Occupato</string>
|
<string name="event_availability_busy">Occupato</string>
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
<string name="event_detail_location">Luogo</string>
|
<string name="event_detail_location">Luogo</string>
|
||||||
<string name="event_detail_description">Descrizione</string>
|
<string name="event_detail_description">Descrizione</string>
|
||||||
<string name="event_detail_attendees">Partecipanti</string>
|
<string name="event_detail_attendees">Partecipanti</string>
|
||||||
<string name="recurrence_daily">Ogni giorni</string>
|
<string name="recurrence_daily">Ogni giorno</string>
|
||||||
<string name="recurrence_weekly">Ogni settimana</string>
|
<string name="recurrence_weekly">Ogni settimana</string>
|
||||||
<string name="recurrence_monthly">Ogni mese</string>
|
<string name="recurrence_monthly">Ogni mese</string>
|
||||||
<string name="recurrence_yearly">Ogni anno</string>
|
<string name="recurrence_yearly">Ogni anno</string>
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
<string name="reminder_benefit_reversible_body">Lo switch è nelle Impostazioni, sezione Notifiche.</string>
|
<string name="reminder_benefit_reversible_body">Lo switch è nelle Impostazioni, sezione Notifiche.</string>
|
||||||
<string name="reminder_onboarding_enable_button">Attiva i promemoria</string>
|
<string name="reminder_onboarding_enable_button">Attiva i promemoria</string>
|
||||||
<string name="reminder_onboarding_skip_button">Non ora</string>
|
<string name="reminder_onboarding_skip_button">Non ora</string>
|
||||||
<string name="reminder_action_snooze">Posponi</string>
|
<string name="reminder_action_snooze">Posticipa</string>
|
||||||
<string name="reminder_action_dismiss">Ignora</string>
|
<string name="reminder_action_dismiss">Ignora</string>
|
||||||
<string name="view_month">Mese</string>
|
<string name="view_month">Mese</string>
|
||||||
<string name="view_week">Settimana</string>
|
<string name="view_week">Settimana</string>
|
||||||
@@ -418,16 +418,16 @@
|
|||||||
<string name="settings_default_reminder">Promemoria standard</string>
|
<string name="settings_default_reminder">Promemoria standard</string>
|
||||||
<string name="settings_notifications_subtitle">Promemoria evento</string>
|
<string name="settings_notifications_subtitle">Promemoria evento</string>
|
||||||
<string name="shortcut_new_event_short">Nuovo evento</string>
|
<string name="shortcut_new_event_short">Nuovo evento</string>
|
||||||
<string name="event_edit_managed_hint">Gestito da “%1$s” - titolo, data e ripetizioni sono sincronizzate dai tuoi contatti. Promemoria e note sono modificabili dall\'utente</string>
|
<string name="event_edit_managed_hint">Gestito da “%1$s” - titolo, data e ripetizioni sono sincronizzate dai tuoi contatti. Promemoria e note sono modificabili dall\'utente.</string>
|
||||||
<string name="settings_font_headings">Carattere dell\'intestazione</string>
|
<string name="settings_font_headings">Carattere del titolo</string>
|
||||||
<string name="settings_font_body">Carattere del corpo</string>
|
<string name="settings_font_body">Carattere del corpo</string>
|
||||||
<string name="settings_font_system">Predefinito di sistema</string>
|
<string name="settings_font_system">Predefinito di sistema</string>
|
||||||
<string name="settings_font_choose_file">Scegli file…</string>
|
<string name="settings_font_choose_file">Scegli file…</string>
|
||||||
<string name="settings_font_custom_selected">Carattere personalizzato</string>
|
<string name="settings_font_custom_selected">Font personalizzato</string>
|
||||||
<string name="settings_font_import_failed">Impossibile leggere il file come font</string>
|
<string name="settings_font_import_failed">Impossibile leggere il file come font</string>
|
||||||
<string name="settings_section_views">Viste</string>
|
<string name="settings_section_views">Viste</string>
|
||||||
<string name="settings_quick_switch_header">Pulsante di cambio rapido</string>
|
<string name="settings_quick_switch_header">Pulsante di cambio rapido</string>
|
||||||
<string name="settings_quick_switch_hint">Scegli attraverso quali viste scorrere mediante il pulsante in alto a destra, trascinale per riordinarle. Le viste disattivate rimangono raggiungibili dal menù di navigazione.</string>
|
<string name="settings_quick_switch_hint">Scegli attraverso quali viste scorrere col pulsante in alto a destra, trascinale per riordinarle. Le viste disattivate rimangono raggiungibili dal menù di navigazione.</string>
|
||||||
<string name="settings_drawer_order_header">Menù di navigazione</string>
|
<string name="settings_drawer_order_header">Menù di navigazione</string>
|
||||||
<string name="settings_drawer_order_hint">Trascina per riordinare le viste elencate nel menù di navigazione.</string>
|
<string name="settings_drawer_order_hint">Trascina per riordinare le viste elencate nel menù di navigazione.</string>
|
||||||
<string name="reorder_drag_handle">Trascina per riordinare</string>
|
<string name="reorder_drag_handle">Trascina per riordinare</string>
|
||||||
@@ -456,4 +456,14 @@
|
|||||||
<string name="settings_special_dates_disable_type_message">Questo cancella il calendario “%1$s” ed i suoi eventi. Ogni promemoria o note che erano stati aggiunti saranno persi.</string>
|
<string name="settings_special_dates_disable_type_message">Questo cancella il calendario “%1$s” ed i suoi eventi. Ogni promemoria o note che erano stati aggiunti saranno persi.</string>
|
||||||
<string name="settings_special_dates_disable_confirm">Spegni</string>
|
<string name="settings_special_dates_disable_confirm">Spegni</string>
|
||||||
<string name="dialog_save">Salva</string>
|
<string name="dialog_save">Salva</string>
|
||||||
|
<string name="font_atkinson_hyperlegible">Atkinson Hyperlegible</string>
|
||||||
|
<string name="settings_calendar_reminders_managed_hint">Impostato nelle date speciali dei contatti</string>
|
||||||
|
<string name="special_dates_calendar_birthday">Compleanni</string>
|
||||||
|
<string name="special_dates_calendar_anniversary">Anniversari</string>
|
||||||
|
<string name="special_dates_calendar_custom">Date speciali</string>
|
||||||
|
<string name="special_dates_default_title_birthday">Compleanno di {name} ({year})</string>
|
||||||
|
<string name="special_dates_default_title_anniversary">Anniversario di {name} ({year})</string>
|
||||||
|
<string name="font_lora">Lora</string>
|
||||||
|
<string name="font_jetbrains_mono">JetBrains Mono</string>
|
||||||
|
<string name="special_dates_default_title_custom">{name}</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 198 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 192 KiB |
25
fastlane/metadata/android/es-ES/full_description.txt
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
Calendula es una aplicación de calendario moderna y de código abierto
|
||||||
|
para Android. Funciona directamente sobre el proveedor de calendario del
|
||||||
|
sistema: cualquier origen sincronizado en tu dispositivo — Nextcloud
|
||||||
|
mediante DAVx5, Google, calendarios locales, suscripciones WebCal —
|
||||||
|
aparece automáticamente, y los cambios que hagas se sincronizan de vuelta
|
||||||
|
del mismo modo.
|
||||||
|
|
||||||
|
Crea, edita y elimina eventos, incluidos los recurrentes con cambios
|
||||||
|
acotados (solo este evento / este y todos los siguientes / toda la serie)
|
||||||
|
y un sencillo selector de repetición. Calendula también entrega los
|
||||||
|
recordatorios de tus eventos como notificaciones: toca una y estarás en
|
||||||
|
el evento.
|
||||||
|
|
||||||
|
Si quieres, muestra en tu calendario los cumpleaños, aniversarios y otras
|
||||||
|
fechas especiales de tus contactos. Tú mismo lo activas; los contactos se
|
||||||
|
leen solo en tu dispositivo, nunca se suben y nunca se modifican —
|
||||||
|
Calendula solo refleja las fechas en calendarios locales que controlas
|
||||||
|
por completo.
|
||||||
|
|
||||||
|
El factor diferenciador es el diseño: auténtico Material 3 Expressive en
|
||||||
|
toda la aplicación, con Dynamic Color, movimiento expresivo y formas
|
||||||
|
expresivas.
|
||||||
|
|
||||||
|
Privacidad: cero telemetría, sin analíticas, sin acceso a la red — tus
|
||||||
|
datos nunca salen del dispositivo.
|
||||||
BIN
fastlane/metadata/android/es-ES/images/icon.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 147 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 207 KiB |
1
fastlane/metadata/android/es-ES/short_description.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Un calendario moderno con Material 3 Expressive para Android.
|
||||||
1
fastlane/metadata/android/es-ES/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Calendula
|
||||||
24
fastlane/metadata/android/it-IT/full_description.txt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
Calendula è un'app di calendario moderna e open source per Android.
|
||||||
|
Funziona direttamente sul provider di calendario di sistema: qualsiasi
|
||||||
|
origine sincronizzata sul tuo dispositivo — Nextcloud tramite DAVx5,
|
||||||
|
Google, calendari locali, iscrizioni WebCal — compare automaticamente, e
|
||||||
|
le modifiche che apporti vengono sincronizzate a ritroso allo stesso
|
||||||
|
modo.
|
||||||
|
|
||||||
|
Crea, modifica ed elimina eventi, compresi quelli ricorrenti con
|
||||||
|
modifiche mirate (solo questo evento / questo e tutti i successivi /
|
||||||
|
l'intera serie) e un semplice selettore di ripetizione. Calendula
|
||||||
|
recapita anche i promemoria dei tuoi eventi come notifiche: ne tocchi una
|
||||||
|
e sei subito sull'evento.
|
||||||
|
|
||||||
|
Se vuoi, mostra nel calendario i compleanni, gli anniversari e le altre
|
||||||
|
date speciali dei tuoi contatti. Sei tu ad attivarlo; i contatti vengono
|
||||||
|
letti solo sul tuo dispositivo, non vengono mai caricati e non vengono
|
||||||
|
mai modificati — Calendula si limita a rispecchiare le date in calendari
|
||||||
|
locali che controlli completamente.
|
||||||
|
|
||||||
|
La differenza sta nel design: vero Material 3 Expressive ovunque, con
|
||||||
|
Dynamic Color, animazioni espressive e forme espressive.
|
||||||
|
|
||||||
|
Privacy: zero telemetria, nessuna analisi, nessun accesso alla rete — i
|
||||||
|
tuoi dati non lasciano mai il dispositivo.
|
||||||
BIN
fastlane/metadata/android/it-IT/images/icon.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 149 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 210 KiB |
|
After Width: | Height: | Size: 202 KiB |
1
fastlane/metadata/android/it-IT/short_description.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Un moderno calendario Material 3 Expressive per Android.
|
||||||
1
fastlane/metadata/android/it-IT/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Calendula
|
||||||
@@ -13,14 +13,14 @@ composeBom = "2026.05.01"
|
|||||||
# Re-evaluate when 1.5.0 stable lands.
|
# Re-evaluate when 1.5.0 stable lands.
|
||||||
material3 = "1.5.0-alpha21"
|
material3 = "1.5.0-alpha21"
|
||||||
datastore = "1.2.1"
|
datastore = "1.2.1"
|
||||||
junit = "6.1.0"
|
junit = "6.1.2"
|
||||||
junitPlatform = "6.1.0"
|
junitPlatform = "6.1.2"
|
||||||
truth = "1.4.5"
|
truth = "1.4.5"
|
||||||
androidxJunit = "1.3.0"
|
androidxJunit = "1.3.0"
|
||||||
espressoCore = "3.7.0"
|
espressoCore = "3.7.0"
|
||||||
kotlinxDatetime = "0.7.0"
|
kotlinxDatetime = "0.7.0"
|
||||||
kotlinxCoroutines = "1.10.2"
|
kotlinxCoroutines = "1.10.2"
|
||||||
turbine = "1.2.0"
|
turbine = "1.2.1"
|
||||||
hiltNavigationCompose = "1.3.0"
|
hiltNavigationCompose = "1.3.0"
|
||||||
lifecycleCompose = "2.10.0"
|
lifecycleCompose = "2.10.0"
|
||||||
androidxTestRules = "1.7.0"
|
androidxTestRules = "1.7.0"
|
||||||
|
|||||||