Compare commits
13
Commits
e639e250b7
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
633ec5b5d3 | ||
|
|
d7131087cb | ||
|
|
dfb0a694de | ||
|
|
79970b5c65 | ||
|
|
5b31067e43 | ||
|
|
c69ff049a0 | ||
|
|
81220d53d1 | ||
|
|
b3091a5aa3 | ||
|
|
b1bde2fab5 | ||
|
|
abc381ca24 | ||
|
|
1fbd91fe82 | ||
|
|
c2087de639 | ||
|
|
c47653c9cb |
@@ -7,7 +7,14 @@ All notable changes to this project are documented here. The format follows
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.4.0] - 2026-08-31
|
||||
|
||||
### Added
|
||||
- Agendula now speaks **German** and **Brazilian Portuguese**, the first
|
||||
community translations. Pick one under **Settings → App language**, or in
|
||||
Android's own per-app language settings; leave it on *System default* and
|
||||
Agendula follows your phone. Anything not yet translated falls back to
|
||||
English.
|
||||
- Agendula can now be translated. Pick or request a language on Weblate and
|
||||
translate in the browser — the link sits at the top of the language picker in
|
||||
**Settings → App language**. Partial translations are fine; anything
|
||||
|
||||
@@ -29,8 +29,8 @@ android {
|
||||
// release itself (versionCode is pinned to MAJOR*10000 + MINOR*100 +
|
||||
// PATCH from versionName, e.g. 0.2.0 -> 200). The Gitea release is marked
|
||||
// as a pre-release while MAJOR is 0. See docs/RELEASING.md.
|
||||
versionCode = 302
|
||||
versionName = "0.3.2"
|
||||
versionCode = 400
|
||||
versionName = "0.4.0"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="back">Zurück</string>
|
||||
<string name="save">Speichern</string>
|
||||
<string name="delete">Löschen</string>
|
||||
<string name="edit">Bearbeiten</string>
|
||||
<string name="field_description">Beschreibung</string>
|
||||
<string name="task_deleted">Gelöscht</string>
|
||||
<string name="app_name">Agendula</string>
|
||||
<string name="task_untitled">Unbenannte Aufgabe</string>
|
||||
<string name="tasks_title">Aufgaben</string>
|
||||
<string name="task_list_empty">Keine Aufgaben bisher.</string>
|
||||
<string name="task_list_failure">Aufgaben konnten nicht geladen werden.</string>
|
||||
<string name="smart_no_date">Kein Datum</string>
|
||||
<string name="smart_completed">Abgeschlossen</string>
|
||||
<string name="task_detail_title">Aufgabe</string>
|
||||
<string name="task_detail_not_found">Diese Aufgabe ist nicht mehr verfügbar.</string>
|
||||
<string name="edit_task_title">Aufgabe bearbeiten</string>
|
||||
<string name="new_task_title">Neue Aufgabe</string>
|
||||
<string name="field_title">Titel</string>
|
||||
<string name="edit_save_failed">Konnte nicht gespeichert werden. Versuche es erneut.</string>
|
||||
<string name="add_task_hint">Aufgabe hinzufügen</string>
|
||||
<string name="add_subtask_hint">Unteraufgabe hinzufügen</string>
|
||||
<string name="cd_add_task">Aufgabe hinzufügen</string>
|
||||
<string name="cd_complete">Abgeschlossen</string>
|
||||
<string name="cd_reopen">Erneut öffnen</string>
|
||||
<string name="undo">Rückgängig</string>
|
||||
<string name="section_today">Heute</string>
|
||||
<string name="cd_expand_subtasks">Unteraufgaben anzeigen</string>
|
||||
<string name="cd_collapse_subtasks">Unteraufgaben ausblenden</string>
|
||||
<string name="section_overdue">Überfällig</string>
|
||||
<string name="section_upcoming">Anstehend</string>
|
||||
<string name="section_no_date">Kein Datum</string>
|
||||
<string name="section_completed">Abgeschlossen</string>
|
||||
<string name="priority_none">Keine</string>
|
||||
<string name="priority_low">Niedrig</string>
|
||||
<string name="priority_medium">Mittel</string>
|
||||
<string name="priority_high">Hoch</string>
|
||||
<string name="detail_mark_complete">Als abgeschlossen markieren</string>
|
||||
<string name="detail_mark_incomplete">Als nicht abgeschlossen markieren</string>
|
||||
<string name="detail_list">Liste</string>
|
||||
<string name="detail_due">Fällig</string>
|
||||
<string name="detail_start">Beginn</string>
|
||||
<string name="detail_priority">Priorität</string>
|
||||
<string name="detail_progress">Fortschritt</string>
|
||||
<string name="detail_subtasks">Unteraufgaben</string>
|
||||
<string name="detail_parent">Hauptaufgabe</string>
|
||||
<string name="detail_part_of">Teil von</string>
|
||||
<string name="edit_list_label">Liste</string>
|
||||
<string name="edit_start_label">Beginn</string>
|
||||
<string name="edit_due_label">Fällig</string>
|
||||
<string name="edit_all_day">Ganzer Tag</string>
|
||||
<string name="edit_priority_label">Priorität</string>
|
||||
<string name="edit_progress_label">Fortschritt</string>
|
||||
<string name="edit_parent_label">Hauptaufgabe</string>
|
||||
<string name="edit_parent_none">Keine (Hauptebene)</string>
|
||||
<string name="edit_parent_search">Aufgaben suchen</string>
|
||||
<string name="edit_parent_empty">Keine passenden Aufgaben in der Liste gefunden.</string>
|
||||
<string name="edit_reminder_label">Erinnerungen</string>
|
||||
<string name="edit_set">Übernehmen</string>
|
||||
<string name="edit_clear">Leeren</string>
|
||||
<string name="edit_title_hint">Aufgaben-Titel</string>
|
||||
<string name="edit_when">Wann</string>
|
||||
<string name="edit_more_fields">Weitere Felder</string>
|
||||
<string name="close">Schließen</string>
|
||||
<string name="dialog_cancel">Abbrechen</string>
|
||||
<string name="edit_conflict_title">Termin wurde extern geändert</string>
|
||||
<string name="edit_conflict_body">Die Aufgabe wurde seit der Öffnung wo anders geändert (über Sync oder einer anderen App). Möchtest die Änderungen überschreiben?</string>
|
||||
<string name="edit_conflict_overwrite">Überschreiben</string>
|
||||
<string name="reminder_none">Keine</string>
|
||||
<string name="reminder_at_due">Zum Start der Aufgabe</string>
|
||||
<string name="reminder_5_min">5 Minuten vorher</string>
|
||||
<string name="reminder_10_min">10 Minuten vorher</string>
|
||||
<string name="reminder_30_min">30 Minuten vorher</string>
|
||||
<string name="reminder_1_hour">1 Stunde vorher</string>
|
||||
<string name="reminder_1_day">1 Tag vorher</string>
|
||||
<string name="reminder_custom">Benutzerdefiniert</string>
|
||||
<string name="reminder_custom_with_value">Benutzerdefiniert (%1$s)</string>
|
||||
<string name="reminder_custom_set">Übernehmen</string>
|
||||
<string name="reminder_custom_amount">Anzahl eingeben</string>
|
||||
<string name="reminder_use_default">Standard verwenden</string>
|
||||
<string name="reminder_unit_minutes">Minuten</string>
|
||||
<string name="reminder_unit_hours">Stunden</string>
|
||||
<string name="reminder_unit_days">Tage</string>
|
||||
<string name="reminder_unit_weeks">Woche</string>
|
||||
<string name="settings_list_reminders_title">Erinnerungen (Pro Liste)</string>
|
||||
<string name="settings_list_reminders_hint">Überschreibe die Standard-Erinnerungen für individuelle Listen</string>
|
||||
<string name="settings_list_reminder_inherits">Standard (%1$s)</string>
|
||||
<string name="error_blank_title">Gebe einen Titel ein.</string>
|
||||
<string name="error_no_list">Wähle eine Liste.</string>
|
||||
<string name="error_due_before_start">Fälligkeit darf nicht vor dem Start liegen.</string>
|
||||
<string name="error_reminder_without_due">Setze ein Fälligkeits-Datum für Erinnerungen.</string>
|
||||
<string name="lists_header">Listen</string>
|
||||
<string name="new_task">Neue Aufgabe</string>
|
||||
<string name="lists_failure">Deine Aufgaben konnten nicht gelesen werden.</string>
|
||||
<string name="lists_empty">Keine Aufgaben-Listen bisher. Füge eine in deiner Aufgaben-App hinzu oder mit der + Schaltfläche.</string>
|
||||
<string name="smart_today">Heute</string>
|
||||
<string name="smart_overdue">Überfällig</string>
|
||||
<string name="smart_upcoming">Anstehend</string>
|
||||
<string name="smart_all">Alle</string>
|
||||
<string name="open_count">%1$d offen</string>
|
||||
<string name="home_today_progress">%1$d von %2$d erledigt</string>
|
||||
<string name="home_today_remaining">%1$d übrig</string>
|
||||
<string name="home_today_all_done">Alles erledigt 🎉</string>
|
||||
<string name="home_today_empty">Heute keine Fälligkeiten 🎉</string>
|
||||
<string name="home_upcoming_view_all">Alle anzeigen</string>
|
||||
<string name="home_due_today">Heute</string>
|
||||
<string name="home_due_tomorrow">Morgen</string>
|
||||
<string name="home_search_hint">Aufgaben suchen</string>
|
||||
<string name="home_search_clear">Suche zurücksetzen</string>
|
||||
<string name="home_search_close">Suche schließen</string>
|
||||
<string name="home_search_empty">Keine Aufgaben passen zu „%1$s“</string>
|
||||
<string name="reminder_due_at">Fälligkeiten %1$s</string>
|
||||
<string name="reminder_channel_name">Aufgaben Erinnerungen</string>
|
||||
<string name="reminder_channel_desc">Benachrichtigungen für fällige Aufgaben.</string>
|
||||
<string name="onboarding_no_provider_title">Eine Task-App wird benötigt</string>
|
||||
<string name="onboarding_no_provider_body">Agendula zeigt und bearbeitet die Aufgaben, die in OpenTasks oder tasks.org gespeichert sind und per DAVx5 synchronisiert werden. Installiere eine davon, um zu starten.</string>
|
||||
<string name="onboarding_permission_title">Erlaube Zugriff auf deine Aufgaben</string>
|
||||
<string name="onboarding_permission_body">Agendula benötigt die Berechtigung, deine Aufgaben zu lesen und zu schreiben. Das ist die einzige Berechtigung, die es jemals anfragt.</string>
|
||||
<string name="onboarding_permission_button">Zugriff gewähren</string>
|
||||
<string name="onboarding_install_opentasks">Installiere OpenTasks</string>
|
||||
<string name="onboarding_install_tasksorg">Installiere tasks.org</string>
|
||||
<string name="reminder_onboarding_title">Verpasse nichts, was fällig ist</string>
|
||||
<string name="reminder_onboarding_body">Aufgaben-Apps senden selbst keine Erinnerungen, daher liefert Agendula sie für dich. Schalte sie ein, um eine Benachrichtigung zu erhalten, wenn eine Aufgabe fällig ist.</string>
|
||||
<string name="reminder_onboarding_enable_button">Erinnerungen aktivieren</string>
|
||||
<string name="reminder_onboarding_skip_button">Nicht jetzt</string>
|
||||
<string name="reminder_benefit_delivery_title">Agendula erinnert dich</string>
|
||||
<string name="reminder_benefit_delivery_body">Es plant eine Benachrichtigung für jede Aufgabe mit einem Fälligkeitsdatum.</string>
|
||||
<string name="reminder_benefit_timing_title">Auf deinem Zeitplan</string>
|
||||
<string name="reminder_benefit_timing_body">Wähle in den Einstellungen, wie weit im Voraus du erinnert werden möchtest.</string>
|
||||
<string name="reminder_benefit_reversible_title">Jederzeit änderbar</string>
|
||||
<string name="reminder_benefit_reversible_body">Schalte Erinnerungen aus, wann immer du willst — es ist nur ein Schalter.</string>
|
||||
<string name="settings_title">Einstellungen</string>
|
||||
<string name="settings_section_appearance">Darstellung</string>
|
||||
<string name="settings_appearance_subtitle">Theme und Farbe</string>
|
||||
<string name="settings_section_task_form">Aufgaben-Formular</string>
|
||||
<string name="settings_task_form_subtitle">Standard Felder, Liste und Unter-Aufgaben</string>
|
||||
<string name="settings_reminders_subtitle">Benachrichtigungen für fällige Aufgaben</string>
|
||||
<string name="settings_form_fields_hint">Standardmäßig angezeigte Felder — alles Weitere liegt hinter „Weitere Felder“.</string>
|
||||
<string name="settings_dynamic_color_unavailable">Verfügbar für Android 12 und höher</string>
|
||||
<string name="settings_about_author">von Jean-Luc Makiola</string>
|
||||
<string name="settings_about_source">Quellcode</string>
|
||||
<string name="settings_license">Lizenz</string>
|
||||
<string name="settings_about_support">Entwicklung unterstützen</string>
|
||||
<string name="settings_about_version">Version %1$s</string>
|
||||
<string name="settings_about_logo_desc">Calendula-App-Symbol</string>
|
||||
<string name="settings_language">App-Sprache</string>
|
||||
<string name="settings_language_auto">Systemstandard</string>
|
||||
<string name="settings_report_problem">Problem melden</string>
|
||||
<string name="settings_report_problem_hint">Öffne den Issue-Tracker</string>
|
||||
<string name="crash_report_issue_title">Absturzbericht</string>
|
||||
<string name="settings_theme">Design</string>
|
||||
<string name="settings_theme_system">System folgen</string>
|
||||
<string name="settings_theme_light">Hell</string>
|
||||
<string name="settings_theme_dark">Dunkel</string>
|
||||
<string name="settings_dynamic_color">Dynamische Farben</string>
|
||||
<string name="settings_dynamic_color_hint">Verwende Farben aus dem Hintergrundbild</string>
|
||||
<string name="settings_section_reminders">Erinnerungen</string>
|
||||
<string name="settings_reminders">Fälligkeits-Erinnerungen</string>
|
||||
<string name="settings_reminders_hint">Benachrichtige mich wenn eine Aufgabe fällig ist</string>
|
||||
<string name="settings_default_reminder">Wann erinnern</string>
|
||||
<string name="settings_exact_alarms">Exakter Zeitpunkt</string>
|
||||
<string name="settings_exact_alarms_allowed">Die Erinnerungen erfolgen zum exakten Zeitpunkt</string>
|
||||
<string name="settings_exact_alarms_blocked">Blockiert – tippe, um exakte Erinnerungen zu erlauben</string>
|
||||
<string name="settings_section_tasks">Aufgaben</string>
|
||||
<string name="settings_default_list">Standard-Liste</string>
|
||||
<string name="settings_default_list_first">Erste verfügbare Felder</string>
|
||||
<string name="settings_add_subtask_row">Zeile \"Unteraufgaben hinzufügen\" anzeigen</string>
|
||||
<string name="settings_add_subtask_row_hint">Ein Eingabefeld am Ende der Unteraufgaben einer aufgeklappten Aufgabe</string>
|
||||
<string name="settings_bottom_add_bar">Untere Schnellhinzufüge-Leiste</string>
|
||||
<string name="settings_bottom_add_bar_hint">Füge Aufgaben hinzu, über eine Leiste, die unten an einer Liste angepinnt ist, statt über die schwebende Schaltfläche</string>
|
||||
<plurals name="reminder_minutes">
|
||||
<item quantity="one">%1$d Minute vorher</item>
|
||||
<item quantity="other">%1$d Minuten vorher</item>
|
||||
</plurals>
|
||||
<plurals name="reminder_hours">
|
||||
<item quantity="one">%1$d Stunde vorher</item>
|
||||
<item quantity="other">%1$d Stunden vorher</item>
|
||||
</plurals>
|
||||
<plurals name="reminder_days">
|
||||
<item quantity="one">%1$d Tag vorher</item>
|
||||
<item quantity="other">%1$d Tage vorher</item>
|
||||
</plurals>
|
||||
<plurals name="reminder_weeks">
|
||||
<item quantity="one">%1$d Woche vorher</item>
|
||||
<item quantity="other">%1$d Wochen vorher</item>
|
||||
</plurals>
|
||||
<string name="settings_translate">Hilf beim Übersetzen</string>
|
||||
<string name="settings_translate_hint">Füge eine Sprache auf Weblate hinzu oder verbessere sie</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,196 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Agendula</string>
|
||||
<string name="app_tagline">Um app de tarefas em Material 3 Expressive. \nFlorescendo.</string>
|
||||
<string name="task_untitled">Tarefa sem título</string>
|
||||
<string name="back">Voltar</string>
|
||||
<string name="save">Salvar</string>
|
||||
<string name="delete">Deletar</string>
|
||||
<string name="tasks_title">Tarefas</string>
|
||||
<string name="task_list_empty">Nenhuma tarefa aqui ainda.</string>
|
||||
<string name="task_list_failure">Não foi possível carregar estas tarefas.</string>
|
||||
<string name="smart_no_date">Sem data</string>
|
||||
<string name="smart_completed">Completo</string>
|
||||
<string name="task_detail_title">Tarefa</string>
|
||||
<string name="task_detail_not_found">Esta tarefa não existe mais.</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="edit_task_title">Editar tarefa</string>
|
||||
<string name="new_task_title">Nova tarefa</string>
|
||||
<string name="field_title">Título</string>
|
||||
<string name="field_description">Descrição</string>
|
||||
<string name="edit_save_failed">Não foi possível salvar. Tente novamente.</string>
|
||||
<string name="add_task_hint">Adicionar tarefa</string>
|
||||
<string name="add_subtask_hint">Adicionar subtarefa</string>
|
||||
<string name="cd_add_task">Adicionar tarefa</string>
|
||||
<string name="cd_complete">Concluído</string>
|
||||
<string name="cd_reopen">Reabrir</string>
|
||||
<string name="task_deleted">Deletado</string>
|
||||
<string name="undo">Desfazer</string>
|
||||
<string name="cd_expand_subtasks">Mostrar subtarefas</string>
|
||||
<string name="cd_collapse_subtasks">Esconder subtarefas</string>
|
||||
<string name="section_overdue">Prazo expirado</string>
|
||||
<string name="section_today">Hoje</string>
|
||||
<string name="section_upcoming">A seguir</string>
|
||||
<string name="section_no_date">Sem data</string>
|
||||
<string name="section_completed">Concluído</string>
|
||||
<string name="priority_none">Nenhuma</string>
|
||||
<string name="priority_low">Baixa</string>
|
||||
<string name="priority_medium">Média</string>
|
||||
<string name="priority_high">Alta</string>
|
||||
<string name="detail_mark_complete">Marcar como concluído</string>
|
||||
<string name="detail_mark_incomplete">Marcar como não concluído</string>
|
||||
<string name="detail_list">Lista</string>
|
||||
<string name="detail_due">Prazo</string>
|
||||
<string name="detail_start">Inicia</string>
|
||||
<string name="detail_priority">Prioridade</string>
|
||||
<string name="detail_progress">Progresso</string>
|
||||
<string name="detail_subtasks">Subtarefas</string>
|
||||
<string name="detail_parent">Tarefa pai</string>
|
||||
<string name="detail_part_of">Parte de</string>
|
||||
<string name="percent_complete">%1$d%%</string>
|
||||
<string name="edit_list_label">Lista</string>
|
||||
<string name="edit_start_label">Inicia</string>
|
||||
<string name="edit_due_label">Prazo</string>
|
||||
<string name="edit_all_day">O dia todo</string>
|
||||
<string name="edit_priority_label">Prioridade</string>
|
||||
<string name="edit_progress_label">Progresso</string>
|
||||
<string name="edit_parent_label">Tarefa pai</string>
|
||||
<string name="edit_parent_none">Nenhum (primeiro nível)</string>
|
||||
<string name="edit_parent_search">Buscar tarefas</string>
|
||||
<string name="edit_parent_empty">Nenhuma tarefa correspondente nesta lista.</string>
|
||||
<string name="edit_reminder_label">Lembrete</string>
|
||||
<string name="edit_set">Ajustar</string>
|
||||
<string name="edit_clear">Limpar</string>
|
||||
<string name="edit_title_hint">Título da tarefa</string>
|
||||
<string name="edit_when">Quando</string>
|
||||
<string name="edit_more_fields">Mais campos</string>
|
||||
<string name="close">Fechar</string>
|
||||
<string name="dialog_cancel">Cancelar</string>
|
||||
<string name="edit_conflict_title">A tarefa foi alterada em outro lugar</string>
|
||||
<string name="edit_conflict_body">Esta tarefa foi atualizada em outro local (uma sincronização ou outro app) desde que você a abriu. Sobrescrever estas mudanças com suas edições?</string>
|
||||
<string name="edit_conflict_overwrite">Sobrescrever</string>
|
||||
<string name="reminder_none">Nenhum</string>
|
||||
<string name="reminder_at_due">Na hora da tarefa</string>
|
||||
<string name="reminder_5_min">5 minutos antes</string>
|
||||
<string name="reminder_10_min">10 minutos antes</string>
|
||||
<string name="reminder_30_min">30 minutos antes</string>
|
||||
<string name="reminder_1_hour">1 hora antes</string>
|
||||
<string name="reminder_1_day">1 dia antes</string>
|
||||
<string name="reminder_custom">Personalizado</string>
|
||||
<string name="reminder_custom_with_value">Personalizado (%1$s)</string>
|
||||
<string name="reminder_custom_set">Ajustar</string>
|
||||
<string name="reminder_custom_amount">Insira uma quantidade</string>
|
||||
<string name="reminder_use_default">Usar padrão</string>
|
||||
<string name="reminder_unit_minutes">Minutos</string>
|
||||
<string name="reminder_unit_hours">Horas</string>
|
||||
<string name="reminder_unit_days">Dias</string>
|
||||
<string name="reminder_unit_weeks">Semanas</string>
|
||||
<string name="settings_list_reminders_title">Lembretes por lista</string>
|
||||
<string name="settings_list_reminders_hint">Alterar o lembrete padrão para listas individuais</string>
|
||||
<string name="settings_list_reminder_inherits">Padrão (%1$s)</string>
|
||||
<string name="error_blank_title">Insira um título.</string>
|
||||
<string name="error_no_list">Escolha uma lista.</string>
|
||||
<string name="error_due_before_start">Prazo não pode ser antes do início.</string>
|
||||
<string name="error_reminder_without_due">Ajuste um prazo para usar um lembrete.</string>
|
||||
<string name="lists_header">Listas</string>
|
||||
<string name="new_task">Nova tarefa</string>
|
||||
<string name="lists_failure">Não foi possível ler suas tarefas.</string>
|
||||
<string name="lists_empty">Nenhuma lista de tarefas ainda. Adicione uma no seu app de tarefas ou com o botão +.</string>
|
||||
<string name="smart_today">Hoje</string>
|
||||
<string name="smart_overdue">Prazo expirado</string>
|
||||
<string name="smart_upcoming">A seguir</string>
|
||||
<string name="smart_all">Tudo</string>
|
||||
<string name="open_count">%1$d abertos</string>
|
||||
<string name="home_today_progress">%1$d de %2$d concluídos</string>
|
||||
<string name="home_today_remaining">%1$d restantes</string>
|
||||
<string name="home_today_all_done">Tudo pronto 🎉</string>
|
||||
<string name="home_today_empty">Nada terminando hoje 🎉</string>
|
||||
<string name="home_upcoming_view_all">Ver tudo</string>
|
||||
<string name="home_due_today">Hoje</string>
|
||||
<string name="home_due_tomorrow">Amanhã</string>
|
||||
<string name="home_search_hint">Buscar tarefas</string>
|
||||
<string name="home_search_clear">Limpar buscas</string>
|
||||
<string name="home_search_close">Fechar busca</string>
|
||||
<string name="home_search_empty">Nenhuma tarefa corresponde a \"%1$s\"</string>
|
||||
<string name="reminder_due_at">Termina em %1$s</string>
|
||||
<string name="reminder_channel_name">Lembretes de tarefas</string>
|
||||
<string name="reminder_channel_desc">Notificações para tarefas com prazo.</string>
|
||||
<string name="onboarding_no_provider_title">Um app de tarefas é necessário</string>
|
||||
<string name="onboarding_no_provider_body">O Agendula mostra e edita as tarefas armazenadas no OpenTasks ou tasks.org, sincronizadas pelo DAVx5. Instale um para começar.</string>
|
||||
<string name="onboarding_permission_title">Permitir acesso às suas tarefas</string>
|
||||
<string name="onboarding_permission_body">O Agendula precisa de permissão para ler e salvar suas tarefas. É tudo o que ele pede.</string>
|
||||
<string name="onboarding_permission_button">Conceder acesso às tarefas</string>
|
||||
<string name="onboarding_install_opentasks">Instalar OpenTasks</string>
|
||||
<string name="onboarding_install_tasksorg">Instalar tasks.org</string>
|
||||
<string name="reminder_onboarding_title">Nunca perca seus prazos</string>
|
||||
<string name="reminder_onboarding_body">Apps de tarefas não enviam lembretes sozinhos, então o Agendula os entrega para você. Ative para receber uma notificação de quando uma tarefa estiver no prazo.</string>
|
||||
<string name="reminder_onboarding_enable_button">Ativar lembretes</string>
|
||||
<string name="reminder_onboarding_skip_button">Agora não</string>
|
||||
<string name="reminder_benefit_delivery_title">O Agendula lembra você</string>
|
||||
<string name="reminder_benefit_delivery_body">Ele agenda uma notificação para cada tarefa com prazo.</string>
|
||||
<string name="reminder_benefit_timing_title">Na sua rotina</string>
|
||||
<string name="reminder_benefit_timing_body">Escolha o quão à frente quer ser lembrado em Ajustes.</string>
|
||||
<string name="reminder_benefit_reversible_title">Altere a qualquer momento</string>
|
||||
<string name="reminder_benefit_reversible_body">Desative os lembretes quando quiser — é só um botão.</string>
|
||||
<string name="settings_title">Ajustes</string>
|
||||
<string name="settings_section_appearance">Aparência</string>
|
||||
<string name="settings_appearance_subtitle">Tema e cor</string>
|
||||
<string name="settings_section_task_form">Formulário de tarefa</string>
|
||||
<string name="settings_task_form_subtitle">Campos, listas e subtarefas padrão</string>
|
||||
<string name="settings_reminders_subtitle">Notificações para tarefas com prazo acabando</string>
|
||||
<string name="settings_form_fields_hint">Campos mostrados por padrão em uma nova tarefa. O resto está atrás de \"Mais campos\".</string>
|
||||
<string name="settings_dynamic_color_unavailable">Disponível no Android 12 e mais recente</string>
|
||||
<string name="settings_about_author">por Jean-Luc Makiola</string>
|
||||
<string name="settings_about_source">Código-fonte</string>
|
||||
<string name="settings_license">Licença</string>
|
||||
<string name="settings_about_support">Apoie o desenvolvimento</string>
|
||||
<string name="settings_about_version">Versão %1$s</string>
|
||||
<string name="settings_about_logo_desc">Ícone de app do Agendula</string>
|
||||
<string name="settings_language">Idioma do app</string>
|
||||
<string name="settings_language_auto">Padrão do sistema</string>
|
||||
<string name="settings_translate">Ajude a traduzir</string>
|
||||
<string name="settings_translate_hint">Adicione ou melhore um idioma no Weblate</string>
|
||||
<string name="settings_report_problem">Relate um problema</string>
|
||||
<string name="settings_report_problem_hint">Abrir o rastreador de problemas</string>
|
||||
<string name="crash_report_issue_title">Relatório de quebra</string>
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="settings_theme_system">Seguir o sistema</string>
|
||||
<string name="settings_theme_light">Claro</string>
|
||||
<string name="settings_theme_dark">Escuro</string>
|
||||
<string name="settings_dynamic_color">Cor dinâmica</string>
|
||||
<string name="settings_dynamic_color_hint">Usar cores do papel de parede</string>
|
||||
<string name="settings_section_reminders">Lembretes</string>
|
||||
<string name="settings_reminders">Lembretes no prazo</string>
|
||||
<string name="settings_reminders_hint">Me notifique quando uma tarefa estiver no prazo</string>
|
||||
<string name="settings_default_reminder">Quando lembrar</string>
|
||||
<string name="settings_exact_alarms">Na hora</string>
|
||||
<string name="settings_exact_alarms_allowed">Lembretes disparam na mesma hora</string>
|
||||
<string name="settings_exact_alarms_blocked">Bloqueado — toque para permitir lembretes na hora</string>
|
||||
<string name="settings_section_tasks">Tarefas</string>
|
||||
<string name="settings_default_list">Lista padrão</string>
|
||||
<string name="settings_default_list_first">Primeira lista disponível</string>
|
||||
<string name="settings_add_subtask_row">Mostrar uma linha \"adicionar subtarefa\"</string>
|
||||
<string name="settings_add_subtask_row_hint">Um campo Adicionar no fim das subtarefas de uma tarefa expandida</string>
|
||||
<string name="settings_bottom_add_bar">Barra adicionar-rápido abaixo</string>
|
||||
<string name="settings_bottom_add_bar_hint">Adicione tarefas de uma barra presa abaixo de uma lista, em vez do botão flutuante</string>
|
||||
<plurals name="reminder_minutes">
|
||||
<item quantity="one">%1$d minuto antes</item>
|
||||
<item quantity="many">%1$d minutos antes</item>
|
||||
<item quantity="other">%1$d minutos antes</item>
|
||||
</plurals>
|
||||
<plurals name="reminder_hours">
|
||||
<item quantity="one">%1$d hora antes</item>
|
||||
<item quantity="many">%1$d horas antes</item>
|
||||
<item quantity="other">%1$d horas antes</item>
|
||||
</plurals>
|
||||
<plurals name="reminder_days">
|
||||
<item quantity="one">%1$d dia antes</item>
|
||||
<item quantity="many">%1$d dias antes</item>
|
||||
<item quantity="other">%1$d dias antes</item>
|
||||
</plurals>
|
||||
<plurals name="reminder_weeks">
|
||||
<item quantity="one">%1$d semana antes</item>
|
||||
<item quantity="many">%1$d semanas antes</item>
|
||||
<item quantity="other">%1$d semanas antes</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
@@ -8,4 +8,6 @@
|
||||
-->
|
||||
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<locale android:name="en" />
|
||||
<locale android:name="de" />
|
||||
<locale android:name="pt-BR" />
|
||||
</locale-config>
|
||||
|
||||
+246
@@ -0,0 +1,246 @@
|
||||
---
|
||||
title: Privacy Policy — Agendula
|
||||
description: What Agendula does with your data. No servers, no account, no analytics — your tasks stay on your device unless you add a CalDAV server yourself.
|
||||
updated: 2026-09-09
|
||||
---
|
||||
|
||||
<!--
|
||||
THIS FILE IS THE POLICY. Edit it here, in a PR, reviewed like any other
|
||||
change — it is the source of truth.
|
||||
|
||||
It is published at https://jeanlucmakiola.de/agendula/privacy, which is what
|
||||
the app's Settings → About → Privacy policy row opens and what the Play
|
||||
Console field must hold. That page holds no copy of the prose: the website
|
||||
build checks this repository out beside itself and renders this file through
|
||||
an Astro content collection, so there is exactly one copy of the policy
|
||||
anywhere and the two cannot drift. An edit here reaches the live page on the
|
||||
site's next build.
|
||||
|
||||
The page supplies its own <h1> from the `title` above, so this body starts at
|
||||
the first section — do not add one. This comment is HTML so that it cannot
|
||||
render on the published page.
|
||||
-->
|
||||
|
||||
**Last updated:** 9 September 2026
|
||||
Applies to the Android app **Agendula** (package `de.jeanlucmakiola.agendula`),
|
||||
all versions and all distribution channels.
|
||||
|
||||
## In short
|
||||
|
||||
Agendula has no servers, no user accounts and no analytics. Your tasks live on
|
||||
your device. They leave it in exactly one case: if you set up a CalDAV account
|
||||
yourself, they are synchronised with **the server you entered** — and with
|
||||
nothing and no one else. Nothing is ever sent to the developer.
|
||||
|
||||
## 1. Controller
|
||||
|
||||
IT-Dienstleister | Jean-Luc Makiola
|
||||
Mahlerstraße 10
|
||||
14772 Brandenburg an der Havel
|
||||
Email: [business@jeanlucmakiola.de](mailto:business@jeanlucmakiola.de)
|
||||
|
||||
## 2. No data collection by the developer
|
||||
|
||||
Agendula contains **no analytics, no tracking, no advertising, no
|
||||
crash-reporting SDK and no third-party service that reports anything
|
||||
anywhere**. No user profile is created, no advertising or device identifier is
|
||||
generated, and no data is shared with or sold to anyone. There is no Agendula
|
||||
account, and the developer operates no server that the app talks to.
|
||||
|
||||
All of this is verifiable in the
|
||||
[source code](https://codeberg.org/jlmakiola/agendula), which is public.
|
||||
|
||||
## 3. Where your tasks live — your choice
|
||||
|
||||
- **On your device (the default)** — your task lists, tasks and reminders are
|
||||
kept in Agendula's own database inside the app's private storage. Nothing is
|
||||
published to other apps, and uninstalling the app removes it.
|
||||
- **In a tasks provider you already use** — OpenTasks or tasks.org. Agendula
|
||||
then reads and writes that app's task database through Android's provider
|
||||
mechanism, after you grant its read/write permission. Whatever already
|
||||
synchronises that provider (DAVx5, SmoothSync, DecSync CC, …) keeps doing so,
|
||||
unchanged; that synchronisation is performed by those apps, not by Agendula,
|
||||
and their privacy policies apply to it.
|
||||
|
||||
## 4. CalDAV sync — the only case where your tasks leave the device
|
||||
|
||||
Sync is optional and off until you add an account. If you add one, everything
|
||||
below happens between your device and **the server you nominated**, and nowhere
|
||||
else.
|
||||
|
||||
### What is stored on your device
|
||||
|
||||
The server address, your username, and your password or app password. The
|
||||
password is encrypted with a key held in the Android Keystore, which cannot be
|
||||
exported from the device.
|
||||
|
||||
### What is transmitted, and to whom
|
||||
|
||||
- The tasks in the synchronised lists, as standard iCalendar (`VTODO`) data,
|
||||
and the credentials needed to authenticate.
|
||||
- Requests carry the user agent `Agendula (Android)` — a fixed string, so that
|
||||
you can recognise and revoke the session on your server. No device identifier
|
||||
is sent.
|
||||
- Connections are HTTPS. Cleartext HTTP is refused, so credentials are never
|
||||
sent over an unencrypted connection.
|
||||
|
||||
Nothing is sent anywhere else. In particular, nothing is sent to the developer.
|
||||
|
||||
Under Google Play's Data Safety definitions this counts as **collected** — Play
|
||||
defines collection as transmitting data off the device, regardless of who
|
||||
receives it — and **not shared**, because the only recipient is the server you
|
||||
nominated. Data is encrypted in transit.
|
||||
|
||||
### Finding your server
|
||||
|
||||
When you type a server address or an email domain, Agendula follows the
|
||||
standard discovery procedure (RFC 6764): a DNS lookup for the `_caldavs._tcp`
|
||||
service record of that domain, then `/.well-known/caldav` on the host. The DNS
|
||||
query goes to whichever resolver your device or network uses, and the requests
|
||||
go to the domain you typed — no directory of servers is consulted and no lookup
|
||||
is sent to the developer.
|
||||
|
||||
### Signing in to a Nextcloud
|
||||
|
||||
If the server is a Nextcloud, Agendula uses Nextcloud's Login Flow v2: your
|
||||
browser opens *your own server's* login page, you authorise there, and the
|
||||
server hands the app a dedicated app password. Agendula never sees your actual
|
||||
account password. The app password appears in your server's "Devices &
|
||||
sessions" list as `Agendula (Android)`, and you can revoke it there at any
|
||||
time. Removing the account in Agendula revokes it too, where the server
|
||||
supports that.
|
||||
|
||||
### Your server's own policy
|
||||
|
||||
Your CalDAV provider has its own privacy policy, and your data on their server
|
||||
is governed by it. Agendula has no relationship with them.
|
||||
|
||||
A note on certificates: Agendula trusts private certificate authorities that
|
||||
you have installed in your device's user store, because self-hosted servers
|
||||
routinely use them. That is a deliberate trade-off in favour of self-hosters —
|
||||
any CA installed on your device (for example by an employer's management
|
||||
profile) can, in principle, intercept traffic from the app, as it can from
|
||||
other apps that make the same choice.
|
||||
|
||||
## 5. Other data Agendula handles on your device
|
||||
|
||||
### Reminders and notifications
|
||||
|
||||
Due-date reminders are scheduled by the app itself and displayed as local
|
||||
notifications. Nothing is sent to a push service — there is no push service.
|
||||
|
||||
### Export files
|
||||
|
||||
You can export your tasks as standard iCalendar `.ics` files. Agendula writes
|
||||
exactly the file you select through Android's system file picker, and has no
|
||||
access to other files.
|
||||
|
||||
### App settings
|
||||
|
||||
Your preferences (theme, language, list and reminder defaults and similar) are
|
||||
stored locally on your device and are removed when you uninstall the app.
|
||||
|
||||
## 6. Backups
|
||||
|
||||
If Android Auto Backup is enabled on your device, your tasks and settings may
|
||||
be backed up to your own Google account, under Google's terms — the developer
|
||||
has no access to it. Two things are deliberately excluded from that backup:
|
||||
your stored CalDAV password, and Agendula's per-device sync bookkeeping. After
|
||||
restoring onto a new device you therefore sign in to your server again.
|
||||
|
||||
## 7. Crash reports
|
||||
|
||||
If Agendula crashes, it offers to report the problem. Nothing is sent
|
||||
automatically, even though the app has network access. The report is copied to
|
||||
your clipboard and your browser is opened with the project's issue tracker, the
|
||||
text pre-filled. **You see the full content, you decide whether to submit it,
|
||||
and you can edit or discard it.**
|
||||
|
||||
Such a report contains:
|
||||
|
||||
- app version,
|
||||
- Android version,
|
||||
- device manufacturer and model,
|
||||
- your device language,
|
||||
- the timestamp,
|
||||
- and the technical stack trace.
|
||||
|
||||
It is built from that fixed list and nothing else: **no** task data, **no**
|
||||
server address or credentials, **no** account names, **no** log files and
|
||||
**no** personal identifiers.
|
||||
|
||||
If you choose to submit it, the report becomes a public issue on the project's
|
||||
issue tracker at Codeberg, operated by Codeberg e. V. Their privacy policy then
|
||||
applies to that submission.
|
||||
|
||||
## 8. External links
|
||||
|
||||
The app links to the source code, the licence, the issue tracker, the
|
||||
translation platform (Weblate) and a voluntary donation page (Ko-fi). Following
|
||||
one of these links opens your browser and leaves the app; the privacy policy of
|
||||
the respective website then applies. Agendula transmits no data of yours in the
|
||||
process — it only opens the address.
|
||||
|
||||
## 9. Permissions and why they exist
|
||||
|
||||
- `INTERNET`, `ACCESS_NETWORK_STATE` — CalDAV sync with the server you
|
||||
configure, and checking whether a connection exists before trying. Without a
|
||||
CalDAV account, no connection is made.
|
||||
- `READ_SYNC_SETTINGS`, `WRITE_SYNC_SETTINGS` — register the sync account with
|
||||
Android's sync framework so it can be scheduled.
|
||||
- `POST_NOTIFICATIONS` — show reminders.
|
||||
- `USE_EXACT_ALARM`, `SCHEDULE_EXACT_ALARM` — deliver reminders at the exact
|
||||
due time.
|
||||
- `RECEIVE_BOOT_COMPLETED` — re-register pending reminders after a restart.
|
||||
- `org.dmfs.permission.READ_TASKS` / `WRITE_TASKS` and
|
||||
`org.tasks.permission.READ_TASKS` / `WRITE_TASKS` — optional, requested only
|
||||
if you choose the external-provider storage mode, and only for the provider
|
||||
you selected (OpenTasks or tasks.org).
|
||||
- `WAKE_LOCK`, `FOREGROUND_SERVICE` — required by the Android system component
|
||||
used for scheduled background work (WorkManager); on older Android versions
|
||||
it needs them to run an expedited sync.
|
||||
|
||||
Agendula publishes no content provider of its own and declares no permissions
|
||||
that other apps could request.
|
||||
|
||||
## 10. Distribution channels
|
||||
|
||||
Agendula is distributed through the project's releases on Codeberg, a
|
||||
self-hosted F-Droid repository, Obtainium, and — where applicable — F-Droid and
|
||||
the Google Play Store. When you download or update the app, the operator of
|
||||
that channel processes data (such as your IP address) under their own privacy
|
||||
policy. This is outside the developer's control and unrelated to the app's own
|
||||
behaviour.
|
||||
|
||||
## 11. Children
|
||||
|
||||
Agendula is not directed at children and collects nothing about anyone.
|
||||
|
||||
## 12. Deleting your data
|
||||
|
||||
- **Remove a CalDAV account** from Settings → Accounts. This deletes the stored
|
||||
credential and, where the server supports it, revokes the app password. Task
|
||||
lists become device-only lists rather than being destroyed.
|
||||
- **Remove an account and delete its local data** removes the lists and tasks
|
||||
as well.
|
||||
- **Uninstalling the app** removes everything Agendula stored on the device.
|
||||
|
||||
Deleting data from your CalDAV server is done on that server; data in an
|
||||
external tasks provider is deleted in that app.
|
||||
|
||||
## 13. Your rights
|
||||
|
||||
The developer stores no personal data of yours — the only data transfer the app
|
||||
performs is between your device and a server you operate or chose. There is
|
||||
therefore no data held by the developer to which rights of access,
|
||||
rectification, erasure, restriction, data portability or objection (Art. 15–21
|
||||
GDPR) could apply. Your tasks are exportable as standard `.ics` files from
|
||||
within the app at any time. You may contact the address above with any
|
||||
question, and you have the right to lodge a complaint with a supervisory
|
||||
authority.
|
||||
|
||||
## 14. Changes to this policy
|
||||
|
||||
Should the app's functionality change in a way that affects data processing,
|
||||
this policy will be updated and the date at the top adjusted. The history of
|
||||
this file is public in the repository.
|
||||
@@ -0,0 +1,17 @@
|
||||
### Added
|
||||
- Agendula now speaks **German** and **Brazilian Portuguese**, the first
|
||||
community translations. Pick one under **Settings → App language**, or in
|
||||
Android's own per-app language settings; leave it on *System default* and
|
||||
Agendula follows your phone. Anything not yet translated falls back to
|
||||
English.
|
||||
- Agendula can now be translated. Pick or request a language on Weblate and
|
||||
translate in the browser — the link sits at the top of the language picker in
|
||||
**Settings → App language**. Partial translations are fine; anything
|
||||
untranslated falls back to English.
|
||||
|
||||
### Changed
|
||||
- Agendula's home is now **Codeberg** (`jlmakiola/agendula`) — that's where the
|
||||
source, issues, pull requests and releases live. The Source and License links
|
||||
in Settings, the issue-reporting link and the F-Droid metadata all point there
|
||||
now. The self-hosted Gitea instance stays as build infrastructure.
|
||||
|
||||
Reference in New Issue
Block a user