All checks were successful
CI / ci (push) Successful in 5m56s
Post-v1.2.0 design iteration on the event form, reviewed slice by slice
on-device:
- Form rebuilt on the detail screen's card system: tonal EditCards with
gutter icons (centred on the first row, top-aligned for multiline),
borderless inline fields (placeholders at half opacity), calendar-coloured
title accent, no dividers, bare top bar
- Optional sections (location, description, reminders, availability,
visibility) with per-user defaults in Settings ("New event form" toggles);
hidden ones unfold via a "More fields" picker dialog
- Reminders: stacked rows + full-width borderless add; two-step picker
(one-tap presets, then custom amount + minutes/hours/days/weeks dropdown);
written as METHOD_ALERT Reminders rows. Availability busy/free segmented
toggle; visibility selector with per-level icons
- OptionCard (ui/common) is now the app-wide selection-dialog standard;
calendar picker, visibility, more-fields, reminder presets and the
recurring-delete chooser all use it — radio-row dialogs removed
- MaterialExpressiveTheme with MotionScheme.standard() (expressive bounce
felt overdone); FAB stack + field reveals animate on theme springs;
jump-to-today slides toward today's actual direction
- IME: adjustResize + imePadding so the keyboard never pans the form
- Tests: form-field prefs round-trips, availability/access provider
mappings; DE+EN strings throughout
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
182 lines
10 KiB
XML
182 lines
10 KiB
XML
<resources>
|
|
<string name="app_name">Calendula</string>
|
|
<string name="app_tagline">A modern calendar.</string>
|
|
|
|
<!-- Loading / Failure / Success generic strings (used across screens) -->
|
|
<string name="state_loading">Loading…</string>
|
|
<string name="state_retry">Retry</string>
|
|
<string name="state_failure_unknown">Something went wrong.</string>
|
|
<string name="state_failure_permission">Calendar access is required.</string>
|
|
<string name="state_failure_permission_action">Grant access</string>
|
|
<string name="state_failure_no_calendars">No calendars configured.</string>
|
|
<string name="state_failure_no_calendars_action">Open system calendar settings</string>
|
|
<string name="state_failure_provider">Could not read the calendar.</string>
|
|
|
|
<!-- Permission flow (F1) -->
|
|
<string name="permission_rationale_title">See all your events, beautifully</string>
|
|
<string name="permission_rationale_body">Calendula needs access to your calendar to show and manage your events. That\'s the only thing it ever asks for.</string>
|
|
<string name="permission_request_button">Grant calendar access</string>
|
|
<string name="permission_denied_title">Calendar access denied</string>
|
|
<string name="permission_denied_body">Calendula cannot show events without calendar access. You can grant it again in the system settings.</string>
|
|
<string name="permission_open_settings_button">Open system settings</string>
|
|
<string name="permission_retry_button">Try again</string>
|
|
<string name="permission_benefit_private_title">Stays on your device</string>
|
|
<string name="permission_benefit_private_body">Your calendars are read locally and never leave the phone.</string>
|
|
<string name="permission_benefit_sync_title">All your calendars, together</string>
|
|
<string name="permission_benefit_sync_body">Google, CalDAV, local — anything synced to the device just appears.</string>
|
|
<string name="permission_benefit_privacy_title">No tracking, ever</string>
|
|
<string name="permission_benefit_privacy_body">Zero telemetry, zero analytics, no ads.</string>
|
|
<string name="permission_privacy_footnote">Stays on your device · no internet permission</string>
|
|
|
|
<!-- Month view (S1) -->
|
|
<string name="month_prev">Previous month</string>
|
|
<string name="month_next">Next month</string>
|
|
<string name="month_today_action">Today</string>
|
|
<string name="month_more_actions">More actions</string>
|
|
<string name="month_open_menu">Open menu</string>
|
|
<string name="month_action_settings">Settings</string>
|
|
<string name="month_a11y_today_prefix">Today</string>
|
|
|
|
<!-- Week view (S2) -->
|
|
<string name="week_today_action">This week</string>
|
|
<string name="week_number_label">Wk</string>
|
|
|
|
<!-- Day view (S3) -->
|
|
<string name="day_today_action">Today</string>
|
|
|
|
<!-- Event detail screen (S4) -->
|
|
<string name="event_detail_back">Back</string>
|
|
<string name="event_detail_delete">Delete</string>
|
|
<string name="event_delete_title">Delete event?</string>
|
|
<string name="event_delete_body">The event is removed from your calendar and from every device it syncs to.</string>
|
|
<string name="event_delete_recurring_title">Delete recurring event</string>
|
|
<string name="event_delete_option_occurrence">Only this event</string>
|
|
<string name="event_delete_option_series">All events in the series</string>
|
|
<string name="event_delete_failed">Couldn\'t delete the event</string>
|
|
<string name="event_delete_write_denied">Calendula needs write access to delete events</string>
|
|
<string name="dialog_cancel">Cancel</string>
|
|
<string name="dialog_ok">OK</string>
|
|
|
|
<!-- Event form (v1.2 create) -->
|
|
<string name="event_edit_new_title">New event</string>
|
|
<string name="event_edit_close">Close</string>
|
|
<string name="event_edit_save">Save</string>
|
|
<string name="event_edit_title_hint">Add title</string>
|
|
<string name="event_edit_starts">Starts</string>
|
|
<string name="event_edit_ends">Ends</string>
|
|
<string name="event_edit_error_end_before_start">Ends before it starts</string>
|
|
<string name="event_edit_error_no_calendar">No writable calendar available</string>
|
|
<string name="event_edit_save_failed">Couldn\'t save the event</string>
|
|
<string name="event_edit_write_denied">Calendula needs write access to create events</string>
|
|
<string name="event_edit_more_fields">More fields</string>
|
|
<string name="event_edit_add">Add</string>
|
|
<string name="event_edit_add_reminder">Add reminder</string>
|
|
<string name="event_edit_remove_reminder">Remove reminder</string>
|
|
<string name="event_edit_reminder_custom">Custom</string>
|
|
<string name="reminder_unit_minutes">minutes</string>
|
|
<string name="reminder_unit_hours">hours</string>
|
|
<string name="reminder_unit_days">days</string>
|
|
<string name="reminder_unit_weeks">weeks</string>
|
|
<string name="event_edit_availability">Availability</string>
|
|
<string name="event_edit_visibility">Visibility</string>
|
|
<string name="event_availability_busy">Busy</string>
|
|
<string name="event_access_default">Default</string>
|
|
<string name="event_access_public">Public</string>
|
|
<string name="event_detail_all_day">All day</string>
|
|
<string name="event_detail_calendar">Calendar</string>
|
|
<string name="event_detail_calendar_unknown">Unknown calendar</string>
|
|
<string name="event_detail_location">Location</string>
|
|
<string name="event_detail_description">Description</string>
|
|
<string name="event_detail_attendees">Attendees</string>
|
|
<string name="event_detail_recurrence">Recurrence</string>
|
|
<string name="event_detail_recurring">Repeating event</string>
|
|
<string name="recurrence_daily">Every day</string>
|
|
<string name="recurrence_weekly">Every week</string>
|
|
<string name="recurrence_monthly">Every month</string>
|
|
<string name="recurrence_yearly">Every year</string>
|
|
<string name="recurrence_every_n_days">Every %1$d days</string>
|
|
<string name="recurrence_every_n_weeks">Every %1$d weeks</string>
|
|
<string name="recurrence_every_n_months">Every %1$d months</string>
|
|
<string name="recurrence_every_n_years">Every %1$d years</string>
|
|
<string name="recurrence_on_days">%1$s on %2$s</string>
|
|
<string name="recurrence_with_until">%1$s until %2$s</string>
|
|
<string name="recurrence_with_count">%1$s, %2$d times</string>
|
|
<string name="event_detail_not_found">This event no longer exists.</string>
|
|
<string name="event_attendee_accepted">Accepted</string>
|
|
<string name="event_attendee_declined">Declined</string>
|
|
<string name="event_attendee_tentative">Tentative</string>
|
|
<string name="event_attendee_needs_action">No response</string>
|
|
<string name="event_attendee_unknown">—</string>
|
|
|
|
<!-- Event detail — full read (v0.6) -->
|
|
<string name="event_detail_reminders">Reminders</string>
|
|
<string name="event_detail_timezone">Time zone</string>
|
|
<string name="event_status_tentative">Tentative</string>
|
|
<string name="event_status_cancelled">Cancelled</string>
|
|
<string name="event_availability_free">Free</string>
|
|
<string name="event_access_private">Private</string>
|
|
<string name="event_access_confidential">Confidential</string>
|
|
<string name="event_attendee_organizer">Organizer</string>
|
|
<string name="event_attendee_optional">Optional</string>
|
|
<string name="event_attendee_resource">Resource</string>
|
|
<string name="event_detail_self_response">Your response: %1$s</string>
|
|
<string name="reminder_at_time">At time of event</string>
|
|
<string name="reminder_default">Default reminder</string>
|
|
<plurals name="reminder_minutes">
|
|
<item quantity="one">%d minute before</item>
|
|
<item quantity="other">%d minutes before</item>
|
|
</plurals>
|
|
<plurals name="reminder_hours">
|
|
<item quantity="one">%d hour before</item>
|
|
<item quantity="other">%d hours before</item>
|
|
</plurals>
|
|
<plurals name="reminder_days">
|
|
<item quantity="one">%d day before</item>
|
|
<item quantity="other">%d days before</item>
|
|
</plurals>
|
|
<plurals name="reminder_weeks">
|
|
<item quantity="one">%d week before</item>
|
|
<item quantity="other">%d weeks before</item>
|
|
</plurals>
|
|
|
|
<!-- Shared event strings -->
|
|
<string name="event_untitled">(No title)</string>
|
|
|
|
<!-- View switcher (M1) -->
|
|
<string name="view_month">Month</string>
|
|
<string name="view_week">Week</string>
|
|
<string name="view_day">Day</string>
|
|
|
|
<!-- Calendar filter (M3) -->
|
|
<string name="filter_title">Calendars</string>
|
|
|
|
<!-- Settings (M4) -->
|
|
<string name="settings_title">Settings</string>
|
|
<string name="settings_back">Back</string>
|
|
<string name="settings_section_appearance">Appearance</string>
|
|
<string name="settings_theme">Theme</string>
|
|
<string name="settings_theme_system">System</string>
|
|
<string name="settings_theme_light">Light</string>
|
|
<string name="settings_theme_dark">Dark</string>
|
|
<string name="settings_dynamic_color">Dynamic colour</string>
|
|
<string name="settings_dynamic_color_unavailable">Requires Android 12 or newer</string>
|
|
<string name="settings_week_start">Week starts on</string>
|
|
<string name="settings_week_start_auto">Automatic</string>
|
|
<string name="settings_week_start_monday">Monday</string>
|
|
<string name="settings_week_start_sunday">Sunday</string>
|
|
<string name="settings_section_event_form">New event form</string>
|
|
<string name="settings_form_fields_hint">Fields shown by default — everything else sits behind \"More fields\"</string>
|
|
<string name="settings_section_language">Language</string>
|
|
<string name="settings_language">App language</string>
|
|
<string name="settings_language_auto">System default</string>
|
|
<string name="settings_language_german">Deutsch</string>
|
|
<string name="settings_language_english">English</string>
|
|
<string name="settings_section_about">About</string>
|
|
<string name="settings_version">Version</string>
|
|
<string name="settings_license">License</string>
|
|
<string name="settings_license_value">MIT</string>
|
|
<string name="settings_source">Source code</string>
|
|
<string name="settings_source_open">Open</string>
|
|
<string name="about_source_url" translatable="false">https://gitea.jeanlucmakiola.de/makiolaj/calendula</string>
|
|
</resources>
|