diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 166ab86..b1895af 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -1,11 +1,13 @@ -name: Release — F-Droid repo + Gitea release +name: Release — F-Droid repo + Gitea/Codeberg release # A release is cut by merging a release branch into main with a bumped # versionName (see docs/RELEASING.md). This workflow reads that versionName and, # if no matching tag exists yet, runs tests, builds + signs the APK, publishes -# it to the F-Droid repo, and only then creates the vX.Y.Z tag + Gitea release -# itself — the tag is an output of the pipeline, not its trigger. Ordinary -# merges (no version bump) fall through `detect` and do nothing. +# it to the F-Droid repo, creates the vX.Y.Z tag + Gitea release, and mirrors +# that release to Codeberg with the signed APK + a SHA-256 checksum as a +# direct-download channel — the tag is an output of the pipeline, not its +# trigger. Ordinary merges (no version bump) fall through `detect` and do +# nothing. # # A manual workflow_dispatch (from a branch) runs the re-sign-only recovery # path: it re-signs the existing F-Droid index with the repo key and re-uploads, @@ -350,3 +352,88 @@ jobs: curl -s -X POST -H "Authorization: token $TOKEN" \ -F "attachment=@/tmp/$ASSET" \ "$API/releases/$ID/assets?name=$ASSET" -o /dev/null -w "asset upload HTTP %{http_code}\n" + + # Mirror the release to the Codeberg mirror as a direct-download channel + # for users who don't want F-Droid. Gitea already push-mirrors branches + + # tags to Codeberg, but releases aren't git objects so they don't sync — + # we create the release there over the API and attach the signed APK plus + # a SHA-256 checksum. The APK is identical to the F-Droid one (same app + # key), so this adds no trust surface. Best-effort: a Codeberg outage + # (it 504s under load) must never fail an already-published F-Droid + # release. Needs the CODEBERG_RELEASE_TOKEN secret; skips cleanly if unset. + - name: Publish release to Codeberg + if: env.IS_RELEASE == 'true' + continue-on-error: true + env: + TOKEN: ${{ secrets.CODEBERG_RELEASE_TOKEN }} + API: https://codeberg.org/api/v1/repos/jlmakiola/calendula + SHA: ${{ github.sha }} + run: | + set -e + if [ -z "${TOKEN:-}" ]; then + echo "CODEBERG_RELEASE_TOKEN not set — skipping Codeberg publish." + exit 0 + fi + TAG="v$VERSION" + APK="app/build/outputs/apk/release/app-release.apk" + if [ ! -f "$APK" ]; then echo "No release APK found — skipping." >&2; exit 1; fi + ASSET_APK="calendula_v${VERSION}.apk" + ASSET_SUM="${ASSET_APK}.sha256" + cp "$APK" "/tmp/$ASSET_APK" + ( cd /tmp && sha256sum "$ASSET_APK" > "$ASSET_SUM" ) + + # Release notes: reuse the section extracted for the Gitea release, + # fall back to the CHANGELOG entry if that step's file is gone. + if [ ! -s release-notes.md ]; then + awk -v ver="$VERSION" ' + $0 ~ "^## \\[" ver "\\]" { flag = 1; next } + /^## \[/ { flag = 0 } + flag' CHANGELOG.md > release-notes.md + sed -i -e '/./,$!d' release-notes.md + fi + [ -s release-notes.md ] || echo "_See CHANGELOG.md for ${VERSION}._" > release-notes.md + # The pipeline creates the tag via the Gitea API, which the push mirror + # (sync_on_commit only fires on real git pushes) doesn't propagate + # promptly — so a release POST that carries a target_commitish can + # outrun the mirror and 500 on a commit/tag Codeberg hasn't received. + # Push the tag straight to Codeberg so it's guaranteed present, then + # attach the release to that existing tag with NO target_commitish + # (which is what triggered the 500). + git tag -f "$TAG" "$SHA" + git push -f "https://jlmakiola:${TOKEN}@codeberg.org/jlmakiola/calendula.git" \ + "refs/tags/$TAG" + python3 - "$TAG" <<'PY' > cb-payload.json + import json, sys + print(json.dumps({ + "tag_name": sys.argv[1], + "name": sys.argv[1], + "body": open("release-notes.md").read(), + "draft": False, + "prerelease": False, + })) + PY + # Upsert (re-run safe). POST also creates the tag at target_commitish + # if the push mirror hasn't synced it yet. + ID=$(curl -s -H "Authorization: token $TOKEN" "$API/releases/tags/$TAG" | jq -r '.id // empty') + if [ -n "$ID" ]; then + curl -s -o /dev/null -w "release PATCH HTTP %{http_code}\n" -X PATCH \ + -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ + -d @cb-payload.json "$API/releases/$ID" + else + curl -s -o cb-response.json -w "release POST HTTP %{http_code}\n" -X POST \ + -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \ + -d @cb-payload.json "$API/releases" + ID=$(jq -r '.id // empty' cb-response.json 2>/dev/null || true) + fi + if [ -z "$ID" ]; then echo "Could not resolve Codeberg release id." >&2; exit 1; fi + + # Attach APK + checksum, replacing any prior asset of the same name. + for A in "$ASSET_APK" "$ASSET_SUM"; do + OLD=$(curl -s -H "Authorization: token $TOKEN" "$API/releases/$ID/assets" \ + | jq -r --arg n "$A" '.[] | select(.name==$n) | .id') + [ -n "$OLD" ] && curl -s -X DELETE -H "Authorization: token $TOKEN" "$API/releases/$ID/assets/$OLD" >/dev/null || true + curl -s -X POST -H "Authorization: token $TOKEN" \ + -F "attachment=@/tmp/$A" \ + "$API/releases/$ID/assets?name=$A" -o /dev/null -w "asset $A HTTP %{http_code}\n" + done + echo "Published $TAG to Codeberg." diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7978cfe..866683f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -113,10 +113,13 @@ android { lint { // Community translations are expected to be partial — a missing string // falls back to the English base at runtime — so don't fail the build on - // it. Stale/extra keys (ExtraTranslation) stay fatal; scripts/ + // it. Likewise a translated may not fill every CLDR quantity + // form its locale defines (e.g. Arabic needs "zero"); the missing form + // falls back to "other" at runtime, so MissingQuantity is informational + // too. Stale/extra keys (ExtraTranslation) stay fatal; scripts/ // check_translations.py guards the same invariants with clearer, // translator-facing messages. - informational += "MissingTranslation" + informational += listOf("MissingTranslation", "MissingQuantity") } testOptions { diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml new file mode 100644 index 0000000..ce0c971 --- /dev/null +++ b/app/src/main/res/values-ar/strings.xml @@ -0,0 +1,246 @@ + + + + Minutes + Hours + Days + Weeks + + جارٍ التحميل… + إعادة المحاولة + ‌تقويم عصري. + حدث خطأ ما. + الوصول إلى التقويم مطلوب. + منح الوصول + لم يتم تكوين أي تقويمات. + فتح إعدادات تقويم النظام + تعذّر قراءة التقويم. + شاهد جميع أحداثك، بشكل جميل + Calendula يحتاج للوصول إلى تقويمك لعرض و إدارة أحداثك. هذا كل ما يطلبه مقدمًا — ولا يخرج أي شيء من جهازك على الإطلاق. + منح الوصول إلى التقويم + رُفِض الوصول إلى التقويم + Calendula لا يمكنه عرض الأحداث بدون الوصول إلى التقويم. يمكنك منحه مُجددًا في إعدادات النظام. + أعِد المحاولة + فتح إعدادات النظام + يبقى على جهازك + تقويماتك تتِم قراءتها محليًا ولا تُغادر الهاتف أبدًا. + جميع تقويماتك، مع بعض + جوجل، CalDAV، محلي — أي شيء تمت مزامنته مع الجهاز يظهر فورًا. + لا تتبع، أبدًا + لا تتبع عن بُعد، لا تحليلات، لا إعلانات. + يبقى على جهازك · لا يوجد إذن بالإنترنت + الشهر السابق + الشهر القادم + اليوم + إعدادات + الإعدادات + الثيم + النظام + فاتح + داكن + افتح القائمة + المزيد من الإجراءات + تعديل + حذف + مشاركة + نسخ + مشاركة الحدث + اليوم + هذا الأسبوع + أسبوع + العودة + اليوم + تعذّر مشاركة هذا الحدث. + حذف الحدث؟ + الحدث أُزيل من تقويمك ومن كل جهاز تتم مزامنته معه. + حذف الحدث المتكرر + فقط هذا الحدث + هذا وجميع الأحداث اللاحقة + جميع الأحداث في السلسلة + تعديل الحدث المتكرر + تعذّر حذف الحدث + Calendula يحتاج إلى صلاحية للكتابة لحذف الأحداث + إلغاء + حسنًا + حدث جديد + إغلاق + حفظ + إضافة عنوان + تتم الإدارة بواسطة ”%1$s“ — العنوان، التاريخ و التكرار تبقى في مزامنة من جهات اتصالك. التذكيرات، الموقع والملاحظات يمكن لك تعديلها. + يبدأ + ينتهي + ينتهي قبل أن يبدأ + لا تتوفر تقويمات قابلة للكتابة + تعذّر حفظ الحدث + Calendula يحتاج إلى صلاحية للكتابة لإنشاء أحداث + إضافة تذكير + إزالة التذكير + الضيوف + ‌إضافة ضيف + إضافة ضيف بالبريد الإلكتروني… + إضافة من جهات الاتصال + إزالة الضيف + مطلوب + اختياري + Calendula لا يرسل دعوات. قد يرسل حساب التقويم الخاص بك بريدًا إلكترونيًا إلى الضيوف عند مزامنته. + مخصص + دقائق + ساعات + مخزّن على هذا الجهاز. لن يتم إشعار أي شخص. + اختر عنوان من جهات الاتصال + أضِف + أيام + أسابيع + لون التقويم + لون مخصص + مدى الرؤية + التَّوافر + اللون + إعادة تعيين + غير مُتوفِّر لهذا التقويم + هذا التقويم لا ينشر أي مجموعة ألوان. يمكنك السماح بألوان مخصصة لمثل هذه التقويمات في الإعدادات. + هذا التقويم قد يزيل أو يستبدله اللون في مزامنته التالية. + الحدث غُيِّ‏‏ر في مكان آخر + أثناء قيامك بالتعديل، هذا الحدث تغيّر — عن طريق المزامنة أو تطبيق آخر. ماذا يجب أن يحدث لتغييراتك؟ + حفظ تغييراتي + تجاهل تغييراتي + تم حذف الحدث + الحدث يبقى كما هو الآن + هل تريد تطبيق تذكيرك الافتراضي؟ + هذا الحدث حُذف في هذه الأثناء، على سبيل المثال على جهاز آخر. لم يعد من الممكن حفظ تغييراتك. + المزيد من الخيارات + علني + الافتراضي + مشغول + مرّات + أيام + أسابيع + شهور + سنوات + ينتهي + أبدًا + في موعد + بعد عدد من المرّات + مخصص + كل + لا يتكرر + تم استيراد هذا الحدث بدون أي تذكير. + + تم استيراد هذا الحدث مع %1$d تذكير. + تم استيراد هذا الحدث مع %1$d تذكيران. + تم استيراد هذا الحدث مع %1$d تذكيرات. + تم استيراد هذا الحدث مع %1$d تذكير. + تم استيراد هذا الحدث مع %1$d تذكير. + + التكرار ينتهي قبل أن يبدأ الحدث + اتركه كما هو + التقويم + تقويم غير معروف + الوصف + كل يوم + الموقع + الحضور + التكرار + كل يوم + كل أسبوع + كل شهر + كل سنة + كل %1$d أيام + ‌كل %1$d أسابيع + كل %1$d أشهر + كل %1$d سنوات + هذا الحدث لم يعد موجودًا. + %1$s حتى %2$s + %1$s، %2$d مرّات + طَبِّق الافتراضي + حدث مُتكرر + %1$s في %2$s + + تم القُبول + تم الرَفض + غير مُؤكِّد + لا يوجد رد + التذكيرات + المنطقة الزمنية + غير مُؤكِّد + ملغي + متاح + خاص + سري + المُنظِّم + اختياري + التذكير الافتراضي + ردَّك: %1$s + المُنسِّق + في وقت الحدث + (بدون عنوان) + تذكيرات الحدث + الإشعارات في أوقات التذكير الخاصه بأحداثك + لا تفوّت أي حدث أبدًا + Android لا يعرض تذكيرات الأحداث من نفسه — بل يجب أن يقوم تطبيق تقويم بذلك. دع Calendula يتولى هذه المهمة. + كل تذكير لأحداثك يصِل كإشعار، في الوقت المحدد تمامًا. + هل تستخدم تطبيق تقويم ثانٍ؟ + إذا كان تطبيق آخر أيضًا ينشر تذكيرات، فستراهم مرتين — قم بإيقاف تشغيلهم هناك أو هنا. + يمكنك تغييره في أي وقت + شَغِّل التذكيرات + ليس الآن + تأجيل + تجاهل + غدًا + يوم أمس + شهر + أسبوع + يوم + جدول + الانتقال إلى تاريخ + اليوم + اليوم + غدًا + طريقة العرض + البحث عن الأحداث + مسح + لا مزيد من الأحداث اليوم + لا توجد أحداث مطابقة ”%1$s“. + ابحث عن أحداثك بالعنوان، الموقع أو الملاحظات. + الرجوع + البحث + القادم + جدول Calendula + شهر Calendula + حدث جديد + افتح Calendula لمنح الوصول إلى التقويم + الشهر السابق + الشهر القادم + اليوم + التقويمات + الرجوع + رجوع + المظهر + اللون الديناميكي + يتطلب Android 12 أو أحدث + طريقة العرض الافتراضية + ألوان تقويم ناعمة + خفف ألوان التقويم والأحداث لتتناسب مع الثيم. قم بإيقافه لإظهار الألوان الخام من مصدر التقويم. + خط العناوين + خط النص + افتراضي النظام + اختر ملفًا… + خط مخصص + تعذّر قراءة هذا الملف كخط + يبدأ الأسبوع في + تلقائي + تلقائي + تنسيق الوقت + أرقام الأسبوع + إظهار أرقام أسابيع التقويم في عرض الشهر + ١٢-ساعة (٢:٠٠ م) + ٢٤-ساعة (١٤:٠٠) + اليوم + إظهار اليوم دائمًا + اترك اليوم في أعلى الجدول و ودجته، حتى بعد عدم وجود أي شيء اليوم. + هذا الشهر + هذا الأسبوع + إظهار + إخفاء + جدول + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 23996c0..89b876a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -475,19 +475,21 @@ Jahrestag von {name} ({year}) {name} Kalenderwochen - Kalenderwochen der Monatsansicht anzeigen + Kalenderwochen in Monatsansicht zeigen Kalender exportieren Wähle aus, welche Kalender in die .ics-Datei aufgenommen werden sollen. Exportieren Wiederherstellen Aus .ics-Datei wiederherstellen - Importiere Ereignisse aus einem Backup oder einer anderen Kalender-App. + Einträge von einem Backup oder einer anderen Kalender App importieren. Bereits im Kalender vorhandene Ereignisse wurden übersprungen. Hinzugefügt - Duplikate + Dopplungen Importieren %d Ereignis wird importiert %d Ereignisse werden importiert + Duplikate + Morgen diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 34c92b8..c242be3 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -10,27 +10,27 @@ Un calendrier moderne. Chargement… Réessayer - Une erreur s\'est produit. + Une erreur s\'est produite. Un accès au Calendrier est nécessaire. - Autoriser l\'accès + Accorder l\'accès Aucun calendrier configuré. - Ouvrir les paramètres du calendrier. - Ne peut pas lire le calendrier. - Tous les évènements ont été trouvés. - Calendula a besoin d\'avoir accès à votre calendrier pour afficher et accéder aux événements. C\'est tout ce dont nous avons besoin, aucune données ne sort de votre appareil. + Ouvrir les paramètres systèmes du calendrier + Impossible de lire le calendrier. + Accédez à tous vos évènements, en beauté + Calendula a besoin d\'accéder à votre calendrier pour afficher et gérer vos évènements. C\'est tout ce qu\'il demande — et rien ne quitte votre appareil. Autoriser l\'accès au calendrier - Accès au calendrier refusé. + Accès au calendrier refusé Calendula ne peut pas afficher les évènements si elle ne peut pas accéder au calendrier. Vous pouvez l\'autoriser à tout moment dans les paramètres. - Ouvrir les paramètres. + Ouvrir les paramètres système Essayer à nouveau - Reste sur votre appareil + Ne quitte pas votre appareil Vos calendriers sont lus localement et ne quittent jamais le téléphone. Tous vos calendriers, réunis Aucun suivi, jamais - Aucune collecte de données, aucune analyse, pas de pubs + Aucune collecte de données, aucune analyse, pas de pubs. Reste sur votre appareil - Pas d\'utilisation d\'Internet Mois précédent - Prochain mois + Mois suivant Aujourd\'hui Plus d\'actions Ouvrir le menu @@ -153,4 +153,351 @@ Aucune réponse Rappels + Google, CalDAV, local - Tout ce qui est synchronisé sur l\'appareil s\'affiche tout simplement. + Annulé + + %d minute + %d minutes + %d minutes + + Nouvel évènement + Mois suivant + Calendriers + Personnaliser… + Calendriers + Calendriers + Sauvegarde + Chaque %1$s + Sauvegarde + Nouvel évènement + Nouvel évènement + Dupliquer + Fuseau horaire + Disponible + Privé + Confidentiel + Organisateur + Ressource + Votre réponse : %1$s + Rappel par défaut + + %d minute avant + %d minutes avant + %d minutes avant + + + %d heure avant + %d heures avant + %d heures avant + + + %d jour avant + %d jours avant + %d jours avant + + + %d semaine avant + %d semaines avant + %d semaines avant + + + %d heure + %d heures + %d heures + + + %d jour + %d jours + %d jours + + + %d semaine + %d semaines + %d semaines + + (Pas de titre) + Rappels d\'évènement + Notifications au moment des rappels de vos évènements + Ne manquez jamais un évènement + Vos rappels, libérés + Chaque rappel à vos évènements vous délivre une notification, ponctuelle. + Activer les rappels + Plus tard + Demain + Hier + Mois + Semaine + Jour + Agenda + Vue + Aller à ... + Demain + Vous êtes à jour + Plus d\'évènements aujourd\'hui + Rechercher + Rechercher des évènements + Rechercher parmi vos évènements par titre, lieu, ou notes. + Pas d\'évènements correspondant à “%1$s”. + À venir + Agenda Calendula + Calendula Mois + Actualiser + Apparence + Thème + Système + Clair + Sombre + Vue par défaut + Couleurs dynamiques + Nécessite Android 12 ou plus récent + Adoucir les couleurs du calendrier + Ajuster les couleurs du calendrier et des évènements au thème. Désactiver pour voir les couleurs brutes issues du calendrier. + Police des titres + Police du corps + Valeur par défaut du système + Atkinson Hyperlegible + Lora + Sélectionner un fichier… + Police personnalisée + Impossible d\'interpréter ce fichier comme police + Automatique + Numéros de semaine + Afficher les numéros de semaine dans la vue par mois + Optionnel + Aujourd\'hui + Aujourd\'hui + Retour + Mois précédent + Aujourd\'hui + Paramètres + Retour + Aujourd\'hui + Cette semaine + Retour + Rappels + Autoriser l\'accès + Sauvegarder + Couleur + Fermer + Semaine + Provisoire + Au moment de l’événement + Android n’affiche pas de rappels d’événements par lui-même — une application de calendrier doit le faire. Laissez Calendula faire ce travail. + Utiliser une deuxième application de calendrier ? + Si une autre application publie également des rappels, vous les verrez deux fois, désactivez-les là ou ici. + modifier à tout moment + Le commutateur se trouve dans les paramètres, sous Notifications. + Snooze + Ignorer + Effacer + Ouvrez Calendula pour accorder l’accès au calendrier + JetBrains Mono + La semaine commence le + Format de l\'heure + Automatique + 12 heures (2:00 PM) + 24 heures (14:00) + Lignes d\'heures + Afficher une ligne de séparation à chaque heure dans la vue de la semaine et du jour + Dim événements terminés + Estomper les événements qui se sont déjà terminés dans la vue du mois et de la semaine + Evènements passés + Montrer + Dim + Cacher + Agenda + Plage d’agenda + Jusqu’à quelle date l’écran Agenda liste les événements. + Plage de widgets Agenda + Jusqu’à quelle heure le widget de l’écran d’accueil de l’agenda liste les événements. + Toujours montrer aujourd’hui + Gardez aujourd’hui en tête de l’agenda et de son widget, même s’il ne reste plus rien aujourd’hui. + Barre de rang + Afficher une barre en haut de l’agenda nommant les dates affichées, avec un bouton pour changer la plage de la session + Ce mois + Les 7 jours prochains + Les 30 jours prochains + Jours + Juste pour l’instant — réinitialise votre plage d’enregistrement lorsque vous rouvrez Calendula. + Afficher tous les événements à venir pour + + %d jour + %d jours + + Vues + Bouton d’interrupteur rapide + Choisissez les vues que le bouton en haut à droite fait défiler, puis faites-les glisser pour les réorganiser. Les vues désactivées restent accessibles depuis le menu de navigation. + Menu navigation + Faites glisser pour réorganiser les vues répertoriées dans le menu de navigation. + Faites glisser pour réorganiser + Nouveau formulaire d’événement + Champs affichés par défaut — tout le reste se trouve derrière « Plus de champs » + Titre principal du nouvel événement + Lorsque vous démarrez un nouvel événement, placez le curseur dans le champ du titre et ouvrez immédiatement le clavier. + Autoriser les couleurs dans les calendriers non pris en charge + Certains calendriers (par exemple, certains CalDAV) ne publient aucun ensemble de couleurs, une couleur d’événement personnalisée peut être supprimée ou remplacée lors de leur prochaine synchronisation. C’est une limitation de ces calendriers, pas quelque chose que Calendula peut réparer. + Notifications + rappels d\'événements + Vous voyez des rappels deux fois ? Une autre application de calendrier les publie aussi — désactivez-les dans l’un des deux. + rappel par défaut + événements d\'une journée entière + Heure de rappel toute la journée + Les rappels pour les événements d’une journée entière se déclenchent à %1$s + Aucun + Utiliser le rappel par défaut + montant + fixer + Rappels par calendrier + Remplacer le paramètre par défaut par calendrier, séparément pour les événements planifiés et sur une journée. Un calendrier peut conserver le paramètre par défaut, l’abandonner ou définir le sien. + Défaut (%1$s) + livraison fiable + Android peut retarder les rappels pour économiser la batterie. Exempter Calendula afin qu’ils arrivent à temps. + Exempté de l’optimisation de la batterie — les rappels arrivent à temps. + Durée de répétition + gérer les calendriers + Créer des calendriers locaux, gérer les calendriers synchronisés + Langue + langue de l\'application + par défaut du système + aider à traduire + Ajouter ou améliorer une langue sur Weblate + Thème, vue par défaut, début de la semaine + Bouton de sélection rapide et ordre du menu + Champs par défaut pour les nouveaux événements + rappels d\'événement + Anniversaires et dates de naissance des contacts + Contact, dates spéciales + Afficher les dates de contact + Reprendre les anniversaires et autres dates de vos contacts dans des calendriers locaux. Lit les contacts uniquement sur cet appareil — rien n’est téléchargé et vos contacts ne sont jamais modifiés. + Anniversaires + Anniversaires + Autres dates + Format du titre + Utilisez {name} pour le contact et {year} pour l’année (l’année de naissance ou l’année de début d’un anniversaire, masqué si inconnu). + Montrer l\'année + Inclure {year} dans les titres lorsque l\'année est connue + Synchroniser maintenant + Pas encore synchronisé + Dernière synchronisation %1$s + Définissez la couleur et la visibilité de chaque calendrier dans les paramètres des calendriers. + Définir dans les dates spéciales de contact + suspendu + Calendula ne peut plus lire vos contacts, donc ces calendriers ne se mettent pas à jour. + Désactiver les dates de contact ? + Cela supprime les calendriers de contact et leurs événements. Tous les rappels ou notes que vous leur avez ajoutés seront perdus. + Cela supprime le calendrier « %1$s » et ses événements. Tous les rappels ou notes que vous y avez ajoutés seront perdus. + désactiver + A propos + Licence + MIT + par Jean-Luc Makiola + Source + soutenir le développement + Version %1$s + Icône de l’application Calendula + Rapporter un problème + Envoyer un rapport de plantage ou ouvrir le suivi des problèmes + Vos calendriers + Pas encore de calendrier local. Créez-en un pour conserver les événements uniquement sur cet appareil. + Ajouter un calendrier + Désactivez un calendrier pour le retirer de l’application, ses événements, ses filtres et ses sélecteurs. Rien n’est supprimé et vous pouvez le réactiver à tout moment ici. + Afficher « %1$s » dans l’application + Calendriers synchronisés + Ils proviennent de comptes sur votre appareil. Créez et modifiez-les dans leur propre application. + Gérer dans l’application + Plus d’options pour %1$s + Tout activer + Tout désactiver + Ajouter un compte + Nouveau calendrier + Editer un agenda + Nom + Ajouter une description + Supprimer un calendrier ? + \"%1$s\" et tous ses événements seront définitivement retirés de cet appareil. + Impossible de sauvegarder les changements. + Les calendriers locaux ne sont synchronisés nulle part, alors exportez-les vers un fichier .ics pour en garder une copie. + Exporter en tant que fichier .ics + Exporter des calendriers + Choisissez les calendriers à inclure dans le fichier .ics. + Exporter + Restaurer + Restaurer à partir du fichier .ics + Importez des événements à partir d’une sauvegarde ou d’une autre application de calendrier. + sauvegarde automatique + Exportez périodiquement vos calendriers locaux dans un dossier en tant que fichier .ics. + dossier de sauvegarde + Cliquez pour choisir un dossier + Intervalle + Minimum 30 minutes. + Pas encore de sauvegarde automatique + Dernière sauvegarde : %1$s + La dernière sauvegarde a échoué : %1$s + Avertit si les sauvegardes automatiques échouent de manière répétée. + La sauvegarde automatique a échoué + Calendula n’a pas pu écrire le fichier de sauvegarde. Vérifiez le dossier de sauvegarde dans les paramètres. + Impossible d’exporter la sauvegarde. + + Événement %d exporté. + Événements %d exportés. + Événements %d exportés. + + importer des événements + ajouter au calendrier + Aucun événement trouvé dans ce fichier. + Impossible de lire ce fichier. + Pas de calendrier lisible à importer. Créez d’abord un calendrier local. + Importation terminée + Les événements déjà présents dans le calendrier ont été ignorés. + ajouté + Dupliquer + Certaines occurrences modifiées d’événements récurrents ont été ignorées. + Un événement sans heure de début a été ignoré. + Les listes d’invités n’ont pas été importées. + Un fuseau horaire inconnu est revenu sur celui de votre appareil. + Import + + Importation de l’événement %d + Importation des événements %d + Importation des événements %d + + + %d événement dans ce fichier. + %d événements dans ce fichier. + %d événements dans ce fichier. + + + Importer l’événement %d + Importer les événements %d + Importer les événements %d + + + Événement %d importé. + Événements %d importés. + Événements %d importés. + + + Ignoré %d déjà dans ce calendrier. + Ignorés %d déjà dans ce calendrier. + Ignorés %d déjà dans ce calendrier. + + créer un événement + Ajouter des paramètres rapides + Ajoutez un bouton « Nouvel événement » au panneau Paramètres rapides. + %1$s a planté + %1$s a été fermé de manière inattendue la dernière fois. Vous pouvez aider à le corriger en envoyant ce rapport en tant que problème. Il reste sur votre appareil jusqu’à ce que vous choisissiez de le partager, et n’inclut aucune donnée personnelle ni contenu de calendrier — seuls les détails techniques ci-dessous. + rapport + pas maintenant + rapport de plantage + %1$s rapport de plantage + Rapport copié dans votre presse-papiers + Impossible d’ouvrir le suivi des problèmes. Le rapport se trouve dans votre presse-papiers. + Merci d’avoir signalé un plantage dans %1$s. Veuillez ajouter tout ce dont vous vous souvenez sur ce que vous faisiez, puis soumettez-le.\n\n### Que s’est-il passé\n\n\n### Rapport de plantage\n%2$s\n + _(Le rapport était trop long pour ce lien — collez-le depuis votre presse-papiers ici.)_ + anniversaires + Anniversaires + dates spéciales + {name}\'s birthday ({year}) + {name}, anniversaire ({year}) + {name} diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ee06261..884d476 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -17,7 +17,7 @@ Apri le impostazioni calendario di sistema Errore nella lettura del calendario. Gestisci magnificamente tutti i tuoi eventi - 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. + Calendula ha bisogno di accedere al tuo calendario per mostrare e gestire gli eventi. È l\'unica cosa di cui ha bisogno: nessuna informazione lascerà mai il tuo dispositivo. Concedi l\'accesso al calendario Accesso al calendario negato Calendula non può mostrare gli eventi senza accesso al calendario. Puoi concederlo dalle impostazioni di sistema. @@ -228,7 +228,7 @@ Nuovo evento Apri Calendula per concedere l\'accesso al calendario Mese precedente - Calendari + Calendario Aspetto Tema Sistema @@ -253,18 +253,18 @@ Nascondi Agenda Intervallo dell\'Agenda - Anticipo con cui vengono visualizzati gli eventi nell\'Agenda. - Intervallo del widget Agenda - Anticipo con cui vengono visualizzati gli eventi nel widget Agenda. + Intervallo di visualizzazione degli eventi nell\'Agenda. + Intervallo di visualizzazione degli eventi nel widget Agenda + Intervallo di visualizzazione degli eventi nel widget Agenda. Barra dell\'intervallo - Mostra una barra sopra l\'agenda che indica le date mostrate, con un pulsante per cambiare l\'intervallo scelto per la sessione + Nella vista Agenda, mostra una barra che indica l\'intervallo di date visualizzato, con un pulsante per cambiarlo Oggi Questo mese Prossimi 7 giorni Prossimi 30 giorni Personalizza… Giorni - Solo questa volta, ripristina l\'intervallo salvato al riavvio di Calendula. + L\'intervallo viene modificato solo questa volta. La prossima volta che apri Calendula verrà visualizzato l\'intervallo di default. Mostra tutti gli eventi in arrivo per %d giorno @@ -272,26 +272,26 @@ %d giorni Scheda Nuovo Evento - Campi mostrati di default, tutti gli altri saranno in \"Altri campi\" - Subito al titolo su un nuovo evento - Quando crei un nuovo evento, posiziona subito il cursore sul campo Titolo e mostra la tastiera. - Abilita i colori sui calendari non supportati - Alcuni calendari (e.g. alcuni CalDAV) non pubblicano il set di colori di cui sono dotati; i colori personalizzati assegnati a un evento possono essere persi o sovrascritti alla prossima sincronizzazione. È una limitazione di questo tipo di calendari, Calendula non può farci nulla. - Notifiche + Campi di default, tutti gli altri saranno in \"Altri campi\" + Focus sul titolo + Quando crei un nuovo evento posiziona subito il cursore sul campo Titolo e mostra la tastiera. + Abilita i colori sui calendari anche sui calendari che non li supportano + Alcuni calendari (e.g. alcuni CalDAV) non comunicano il set di colori di cui sono dotati; se assegni colori personalizzati agli eventi può succedere che vengano persi o sovrascritti alla prossima sincronizzazione. È una limitazione di questo tipo di calendari, Calendula non può farci nulla. + Promemoria Vedi promemoria duplicati? Vuol dire che li sta mostrando anche un\'altra app. Disattivali qui o nell\'altra app. - Eventi giornalieri - Ora per i promemoria degli eventi giornalieri - I promemoria per gli eventi giornalieri vengono mandati alle %1$s + Promemoria per eventi giornalieri + Orario di invio dei promemoria degli eventi giornalieri + I promemoria per gli eventi giornalieri vengono inviati alle %1$s Nessuno - Usa il promemoria standard + Promemoria standard Valore Imposta Promemoria per calendario - Sovrascrivi i reminder standard con reminder specifici per calendario, separati per eventi giornalieri ed eventi ad ore. Ogni calendario può usare i promemoria di default, ignorarli o avere i suoi personalizzati. + Sostituisci i promemoria standard con promemoria specifici per ogni calendario, dettagliando quelli per eventi standard ed quelli per eventi giornalieri. Ogni calendario può usare i promemoria di default, ignorarli o avere i suoi personalizzati. Default (%1$s) Notifiche affidabili - Android potrebbe posticipare le notifiche per risparmiare batteria. Escludi Calendula così che le notifiche possano arrivare puntuali. - Escludi dall\'ottimizzazione batteria. I promemoria arriveranno puntuali. + Android potrebbe posticipare le notifiche per migliorare la durata batteria. Escludi Calendula dall\'ottimizzazione della batteria per far arrivare puntuali i promemoria. + I promemoria arriveranno puntuali. Durata del posticipo Calendari Gestisci calendari @@ -314,17 +314,17 @@ Segnala un problema Invia un crash report o apri il gestore dei problemi Calendari - I tuoi calendari - Non ci sono ancora calendari locali. Creane uno per avere gli eventi solo su questo dispositivo. + Calendari locali + Non ci sono ancora calendari locali. Creane uno con eventi salvati solo su questo dispositivo. Aggiungi calendario - .Disattiva un calendario per non vederlo più sull\'app. Non viene cancellato nulla, puoi riattivarlo in qualsiasi momento. + Disattiva un calendario per non vederlo più sull\'app. Non viene cancellato nulla, puoi riattivarlo in qualsiasi momento. Mostra \"%1$s\" nell\'app Calendari sincronizzati - Questi vengono dagli account presenti sul tuo dispositivo. Creali e modificali nella loro app. + Questi calendari vengono dagli account sincronizzati sul tuo dispositivo. Puoi modificarli o crearne di nuovi dall\'app di sincronizzazione. Gestisci in app Altre opzioni per %1$s - Attiva tutti - Disattiva tutti + Mostra tutti + Nascondi tutti Aggiungi account Nuovo calendario Modifica calendario @@ -350,7 +350,7 @@ Backup Avvisa se i backup automatici falliscono ripetutamente. Backup automatico fallito - Calendula non è riuscito a esportare il file di backup. Controlla la cartella di backup nelle Impostazioni. + Calendula non è riuscito a esportare il file di backup. Verifica quale sia la cartella di backup nelle Impostazioni. Impossibile esportare il backup. Esportato %d evento. @@ -390,17 +390,17 @@ Crea un nuovo evento Nuovo evento - Aggiungi un toggle nelle Impostazioni Rapide - Aggiungi un toggle \"Nuovo evento\" nel pannello delle Impostazioni Rapide. - Calendula è crashato - Calendula si è chiuso inaspettatamente l\'ultima volta. Puoi contribuire allo sviluppo inviando questo report, che rimane sul tuo dispositivo finchè non scegli di inviarlo e non include informazioni personali o sui tuoi calendari:solo le informazioni tecniche qui sotto. + Aggiungi un riquadro nelle Impostazioni Rapide + Aggiungi un riquadro \"Nuovo evento\" nel pannello delle Impostazioni Rapide. + %1$s crashato + %1$s si è chiuso inaspettatamente l\'ultima volta. Puoi contribuire allo sviluppo inviando questo report, che rimane sul tuo dispositivo finchè non scegli di inviarlo e non include informazioni personali o sui tuoi calendari: solo le informazioni tecniche qui sotto. Report Non ora Crash report - Calendula crash report + %1$s crash report Report copiato negli Appunti - Impossibile aprire il gestore dei problemi. Il report è sugli Appunti. - Grazie per riportare un crash di Calendula. Per favore, aggiungi ogni informazione che ricordi in merito a quello che stavi facendo, quindi invia\n\n### Cosa è successo\n\n\n###Crash report\n%1$s\n + Impossibile aprire il gestore dei problemi. Il report è negli Appunti. + Grazie per segnalare un crash di %1$s. Per favore, aggiungi ogni informazione che ricordi in merito a quello che stavi facendo, quindi invia\n\n### Cosa è successo\n\n\n###Crash report\n%2$s\n _(Il report era troppo lungo per questo link - copialo qui dai tuoi Appunti.)_ Ricorrenza Evento ricorrente @@ -414,14 +414,14 @@ Impostazioni Indietro Questa settimana - Promemoria evento - Promemoria standard + Promemoria per gli eventi + Promemoria per eventi standard Promemoria evento Nuovo evento Gestito da “%1$s” - titolo, data e ripetizioni sono sincronizzate dai tuoi contatti. Promemoria e note sono modificabili dall\'utente. Carattere del titolo Carattere del corpo - Predefinito di sistema + Lingua di sistema Scegli file… Font personalizzato Impossibile leggere il file come font @@ -446,11 +446,11 @@ Include {year} nei titoli quando è noto Sincronizza adesso Ancora non sincronizzato - %1$s è un tempo relativo, per esempio \"5 minuti fa\" + Ultima sincronizzazione %1$s Imposta colore e visibilità di ogni calendario nelle impostazioni dei calendari. In pausa Calendula non può più leggere i tuoi contatti, quindi questi calendari non vengono aggiornati. - Concedi accesso + Concedi l\'accesso Disattivare date dei contatti? Questo cancella i calendari delle date dei contatti ed i loro eventi. Ogni promemoria o note che erano stati aggiunti saranno persi. Questo cancella il calendario “%1$s” ed i suoi eventi. Ogni promemoria o note che erano stati aggiunti saranno persi. @@ -466,4 +466,39 @@ Lora JetBrains Mono {name} + Duplica + Vuoi applicare i promemoria di default? + Questo evento è stato importato senza nessun promemoria. + + Questo evento è stato importato con %1$d promemoria. + Questo evento è stato importato con %1$d promemoria. + Questo evento è stato importato con %1$d promemoria. + + Applica promemoria di default + Lascia invariato + Domani + Ieri + Nessun altro evento per oggi + Indietro + Attenua i colori del calendario + I colori dei calendari e degli eventi vengono attenuati per adattarsi al tema. Deseleziona per mostrare i colori naturali. + Numeri di settimana + Mostra i numeri di settimana nella vista Mese + Mostra sempre Oggi + Mantieni Oggi in alto nell\'Agenda e nel widget, anche se non ci sono altri eventi in giornata. + Esporta calendari + Scegli quali calendari includere nel file .ics. + Esporta + Ripristina + Ripristina da un file .ics + Importa eventi da un backup o da un\'altra app. + Gli eventi già presenti nel calendario sono stati saltati. + Aggiunto + Duplicati + Importa + + Importando %d evento + Importando %d eventi + Importando %d eventi + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index ef73b95..57320a3 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -47,11 +47,11 @@ Nie udało się udostępnić tego wydarzenia. Usunąć wydarzenie? Usunięto wydarzenie z Twojego kalendarza i wszystkich zsynchronizowanych urządzeń. - Usuń powtarzające się wydarzenie + Usuń wydarzenie cykliczne Tylko to wystąpienie To i wszystkie następne wystąpienia Wszystkie wystąpienia w serii - Edytuj powtarzające się wydarzenie + Edytuj wydarzenie cykliczne Nie udało się usunąć tego wydarzenia Calendula wymaga uprawnień do zapisu, aby móc usuwać wydarzenia Anuluj @@ -136,7 +136,7 @@ Opis Uczestnicy Powtarzanie - Powtarzające się wydarzenie + Wydarzenie cykliczne Codziennie Co tydzień Co miesiąc @@ -297,4 +297,224 @@ Zakres agendy Jak daleko w przód wyświetlane są wydarzenia na ekranie Agendy. Zakres widżetu agendy + Jak daleko w przód wyświetlane są wydarzenia w widżecie agendy na ekranie domowym. + Pasek zakresu + Wyświetl u góry agendy pasek z zakresem widocznych dat oraz przyciskiem umożliwiającym zmianę zakresu na czas trwania sesji + Dzisiaj + Bieżący tydzień + Bieżący miesiąc + Następne 7 dni + Następne 30 dni + Niestandardowy… + Dni + Ustawienie tymczasowe — po ponownym otwarciu aplikacji Calendula przywrócony zostanie zapisany zakres. + Wyświetlanie wszystkich nadchodzących wydarzeń dla + + %d dzień + %d dni + %d dni + %d dni + + Widoki + Przycisk szybkiego przełączania + Wybierz widoki, między którymi można przełączać się przyciskiem w prawym górnym rogu, i przeciągnij je, aby zmienić ich kolejność. Wyłączone widoki pozostaną dostępne w menu nawigacyjnym. + Menu nawigacyjne + Przeciągnij aby zmienić kolejność widoków w menu nawigacyjnym. + Przeciągnij by zmienić kolejność + Formularz nowego wydarzenia + Pola wyświetlane domyślnie — cała reszta znajduje się pod przyciskiem „Więcej pól” + Ustaw kursor na tytule nowego wydarzenia + Kiedy tworzysz nowe wydarzenie, umieść kursor w polu tytułu i od razu otwórz klawiaturę. + Zezwalaj na kolory w nieobsługiwanych kalendarzach + Niektóre kalendarze (np. niektóre CalDAV) nie udostępniają zestawu kolorów; niestandardowy kolor wydarzenia może zostać utracony lub nadpisany przy następnej synchronizacji. Jest to ograniczenie tych kalendarzy, a nie coś, co Calendula może naprawić. + Powiadomienia + Przypomnienia o wydarzeniach + Widzisz podwójne przypomnienia? Inna aplikacja kalendarza również je wyświetla — wyłącz je w jednej z nich. + Domyślne przypomnienie + Wydarzenia całodniowe + Godzina przypomnienia o wydarzeniach całodniowych + Przypomnienia o wydarzeniach całodniowych zostaną pojawiają się o %1$s + Brak + Użyj domyślnego przypomnienia + jednostek + Ustaw + Przypomnienia dla poszczególnych kalendarzy + Zastąp ustawienia domyślne dla wybranych kalendarzy — oddzielnie dla wydarzeń terminowych i całodniowych. Kalendarz może zachować ustawienie domyślne, odrzucić je lub ustawić własne. + Domyślne (%1$s) + Niezawodne dostarczanie + Android może opóźniać przypomnienia, aby oszczędzać baterię. Dodaj Calendula do wyjątków, żeby przychodziły na czas. + Wyłączono optymalizację baterii — przypomnienia przychodzą na czas. + Długość drzemki + Kalendarze + Zarządzaj kalendarzami + Twórz lokalne kalendarze; zarządzaj synchronizowanymi + Język + Język aplikacji + Domyślny systemu + Pomóż w tłumaczeniu + Dodaj lub ulepsz tłumaczenie w Weblate + Motyw, domyślny widok, pierwszy dzień tygodnia + Kolejność przycisku szybkiego przełączania oraz menu + Domyślne pola dla nowych wydarzeń + Przypomnienia o wydarzeniach + Urodziny i rocznice kontaktów + Szczególne daty kontaktów + Pokaż daty kontaktów + Zsynchronizuj urodziny i inne daty z kontaktów z lokalnymi kalendarzami. Odczytuje kontakty wyłącznie z tego urządzenia — nic nie jest przesyłane, a Twoje kontakty nigdy nie ulegają zmianie. + Urodziny + Rocznice + Inne daty + Format tytułu + Użyj {name} dla nazwy kontaktu i {year} dla roku (rok urodzenia lub rok rozpoczęcia rocznicy; ukryty, gdy jest nieznany). + Przypomnienia + Pokaż rok + Uwzględniaj {year} w tytułach, jeśli jest znany + Synchronizuj teraz + Jeszcze nie zsynchronizowano + Ostatnio zsynchronizowano %1$s + Ustaw kolor i widoczność każdego kalendarza w sekcji Kalendarze. + Ustaw w sekcji Szczególne daty kontaktów + Wstrzymano + Aplikacja Calendula nie ma już dostępu do Twoich kontaktów, więc te kalendarze nie są aktualizowane. + Przyznaj dostęp + Wyłączyć daty kontaktów? + To spowoduje usunięcie kalendarzy ze szczególnymi datami kontaktów oraz ich wydarzeń. Wszelkie dodane do nich przypomnienia lub notatki zostaną utracone. + To spowoduje usunięcie kalendarza „%1$s” wraz z jego wydarzeniami. Wszelkie dodane do nich przypomnienia lub notatki zostaną utracone. + Wyłącz + Zapisz + O aplikacji + Licencja + MIT + autorstwa Jean-Luc Makiola + Kod źródłowy + Wesprzyj rozwój + Wersja %1$s + Ikona aplikacji Calendula + Zgłoś problem + Wyślij raport o awarii lub otwórz system zgłoszeń + Kalendarze + Twoje kalendarze + Brak lokalnych kalendarzy. Utwórz kalendarz, aby zapisywać wydarzenia tylko na tym urządzeniu. + Dodaj kalendarz + Wyłącz kalendarz, aby ukryć go w aplikacji — wraz z jego wydarzeniami, filtrami i selektorami. Nic nie zostanie usunięte, a w każdej chwili możesz go tutaj ponownie włączyć. + Pokaż „%1$s” w aplikacji + Synchronizowane kalendarze + Pochodzą z kont na Twoim urządzeniu. Możesz je tworzyć i edytować w powiązanych z nimi aplikacjach. + Zarządzaj w aplikacji + Więcej opcji dla %1$s + Włącz wszystkie + Wyłącz wszystkie + Dodaj konto + Nowy kalendarz + Edytuj kalendarz + Nazwa + Kolor + Dodaj opis + Usunąć kalendarz? + „%1$s” oraz wszystkie powiązane z nim wydarzenia zostaną trwale usunięte z tego urządzenia. + Nie udało się zapisać zmiany. + Kopia zapasowa + Kalendarze lokalne nie są nigdzie synchronizowane, więc wyeksportuj je do pliku .ics, aby zachować kopię. + Eksportuj jako plik .ics + Eksportuj kalendarze + Wybierz kalendarze, które mają zostać uwzględnione w pliku .ics. + Eksportuj + Przywróć + Przywróć z pliku .ics + Importuj wydarzenia z kopii zapasowej lub innej aplikacji kalendarza. + Automatyczna kopia zapasowa + Okresowo eksportuj swoje lokalne kalendarze do folderu jako plik .ics. + Folder kopii zapasowej + Dotknij by wybrać folder + Okres + Co %1$s + Minimum 30 minut. + Nie ma jeszcze automatycznych kopii zapasowych + Ostatnia kopia zapasowa: %1$s + Ostatnia nieudana kopia zapasowa: %1$s + Kopia zapasowa + Ostrzega, jeśli automatyczne kopie zapasowe wielokrotnie się nie powiodą. + Automatyczna kopia zapasowa nie powiodła się + Calendula nie mogła zapisać pliku kopii zapasowej. Sprawdź folder kopii zapasowej w Ustawieniach. + Nie udało się wyeksportować kopii zapasowej. + + Wyeksportowano %d wydarzenie. + Wyeksportowano %d wydarzenia. + Wyeksportowano %d wydarzeń. + Wyeksportowano %d wydarzeń. + + Importuj wydarzenia + Dodaj do kalendarza + Nie znaleziono wydarzeń w tym w pliku. + Nie udało się odczytać tego pliku. + Brak kalendarza z możliwością zapisu, do którego można zaimportować dane. Najpierw utwórz kalendarz lokalny. + Import zakończony + Wydarzenia znajdujące się już w kalendarzu zostały pominięte. + Dodano + Duplikaty + Zamknij + Niektóre zmienione wystąpienia zdarzeń cyklicznych zostały pominięte. + Wydarzenie bez określonej godziny rozpoczęcia zostało pominięte. + Listy gości nie zostały zaimportowane. + Nieznana strefa czasowa została zastąpiona strefą ustawioną na Twoim urządzeniu. + Importuj + + Importowanie %d wydarzenia + Importowanie %d wydarzeń + Importowanie %d wydarzeń + Importowanie %d wydarzeń + + + %d wydarzenie w tym pliku. + %d wydarzenia w tym pliku. + %d wydarzeń w tym pliku. + %d wydarzeń w tym pliku. + + + Importuj %d wydarzenie + Importuj %d wydarzenia + Importuj %d wydarzeń + Importuj %d wydarzeń + + + Zaimportowano %d wydarzenie. + Zaimportowano %d wydarzenia. + Zaimportowano %d wydarzeń. + Zaimportowano %d wydarzeń. + + + Pominięto %d wydarzenie znajdujące się już w tym kalendarzu. + Pominięto %d wydarzenia znajdujące się już w tym kalendarzu. + Pominięto %d wydarzeń znajdujących się już w tym kalendarzu. + Pominięto %d wydarzeń znajdujących się już w tym kalendarzu. + + Nowe wydarzenie + Utwórz nowe wydarzenie + Nowe wydarzenie + Dodaj kafelek Szybkich ustawień + Dodaj kafelek „Nowe wydarzenie” do panelu Szybkich ustawień. + Aplikacja %1$s uległa awarii + Aplikacja %1$s została nieoczekiwanie zamknięta przy ostatnim uruchomieniu. Możesz pomóc nam to naprawić, wysyłając zgłoszenie o błędzie. Pozostanie ono na Twoim urządzeniu, dopóki nie zdecydujesz się go udostępnić, i nie zawiera żadnych danych osobowych ani treści z kalendarza — jedynie poniższe szczegóły techniczne. + Zgłoś + Nie teraz + Raport o awarii + Raport o awarii %1$s + Raport skopiowany do schowka + Nie udało się otworzyć systemu zgłoszeń. Raport znajduje się w Twoim schowku. + Dziękujemy za zgłoszenie awarii w aplikacji %1$s. Prosimy o dodanie wszelkich zapamiętanych szczegółów na temat wykonywanych czynności, a następnie przesłanie zgłoszenia.\n\n### Co się wydarzyło\n\n\n### Raport o awarii\n%2$s\n + _(Raport był zbyt długi dla tego linku — wklej go tutaj ze schowka)._ + Szczególne daty + Urodziny {name} ({year}) + Rocznica {name} ({year}) + {name} + Duplikuj + Jutro + Wczoraj + Brak zaplanowanych wydarzeń + Zredukuj intensywność kolorów kalendarza + Dopasuj intensywność kolorów kalendarza i wydarzeń do motywu. Wyłącz tę opcję, aby wyświetlać oryginalne kolory ze źródła kalendarza. + Zawsze pokazuj dzisiejszy dzień + Zachowaj dzisiejszy dzień na górze agendy i widżetu, nawet gdy nie ma już na dziś żadnych zadań. + Urodziny + Rocznice diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 92a7f63..7688090 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -6,4 +6,60 @@ Days Weeks + Calendula + Современный календарь. + Загрузка… + Попробовать ещё раз + Что-то пошло не так. + Требуется доступ к календарю. + Предоставить доступ + Нет настроенных календарей. + Перейти в системные настройки календаря + Не удалось просмотреть календарь. + Следите за всеми своими событиями. С красотой + Calendula требуется доступ к вашему календарю, чтобы показывать и управлять вашими событиями. Это всё, что приложение требует с самого начала – и никакая информация не покидает ваш девайс. + Дать доступ к календарю + В доступе к календарю отказано + Calendula не может показать события без доступа к календарю. Предоставьте его снова в настройках телефона. + Открыть настройки телефона + Попытайтесь снова + Остаётся на вашем устройстве + Ваши календари просматриваются локально и информация никогда не покидает устройство. + Все ваши календари. Вместе + Google, CalDAV, локальный календарь – всё синхронизированное с устройством просто подключается. + Никакого отслеживания. Никогда + Ноль телеметрии. ноль аналитики, без рекламы. + Остаётся на устройстве · не требует доступа к интернету + Предыдущий месяц + Следующий месяц + Сегодня + Больше действий + Открыть меню + Настройки + Сегодня + Эта неделя + Нед + Сегодня + Назад + Редактировать + Удалить + Поделиться + Дублировать + Поделиться событием + Не удалось поделиться этим событием. + Удалить событие? + Это событие удалено из вашего календаря и всех устройств с которыми он синхронизирован. + Удалить повторяющееся событие + Только это событие + Это и все следующие события + Все события в последовательности + Редактировать повторяющееся событие + Не удалось удалить событие + Calendula требуется доступ для удаления событий + Отмена + ОК + Новое событие + Закрыть + Сохранить + Добавить имя diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 5d0102d..4bd4f03 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -82,9 +82,24 @@ release work when a merge actually cuts a release: merged commit, build & sign the release APK with the **app key**, copy it into the F-Droid repo, generate the per-version changelog, re-sign the index with the **repo key**, upload `repo/` + `metadata/`, then create the `vX.Y.Z` tag + - Gitea release (CHANGELOG section as notes) and attach the R8 `mapping.txt` - (best-effort). Ordinary merges with no version bump fall through `detect` and - do nothing. + Gitea release (CHANGELOG section as notes), attach the R8 `mapping.txt`, and + mirror the release to **Codeberg** with the signed APK + a SHA-256 checksum + (both best-effort). Ordinary merges with no version bump fall through `detect` + and do nothing. + +### Codeberg direct-download channel + +Alongside F-Droid, each release is mirrored to the Codeberg repo +(`jlmakiola/calendula`) as a plain download for users who don't want F-Droid. +Gitea already **push-mirrors** branches and tags to Codeberg, but releases +aren't git objects and don't sync, so the pipeline creates the release over the +Codeberg API and attaches `calendula_v.apk` + its `.sha256`. It's the +same APK the F-Droid repo serves (same **app key**), so it adds no trust +surface. The step is best-effort: a Codeberg outage never fails an +already-published F-Droid release, and it skips cleanly if `CODEBERG_RELEASE_TOKEN` is +unset. One-time setup: the repo's **Releases** unit must be enabled and a +`CODEBERG_RELEASE_TOKEN` secret (Codeberg access token, `write:repository` scope) added +to Gitea Actions. ### Manual re-sign / recovery @@ -103,6 +118,7 @@ for key rotation or repo recovery without publishing a new app version. | `FDROID_CONFIG_BASE64` | F-Droid `config.yml` (base64) — repo metadata + keystore passwords. | | `HETZNER_HOST`, `HETZNER_USER`, `HETZNER_PASS` | Upload target for the F-Droid repo. | | `GITHUB_TOKEN` | Provided by Gitea Actions; used to create the release + attach assets. | +| `CODEBERG_RELEASE_TOKEN` | Codeberg access token (`write:repository` scope) — creates the mirrored Codeberg release + uploads the APK/checksum. Best-effort; if unset the Codeberg step skips. | The two keys are independent: the **app key** signs APKs; the **repo key** signs the index (its fingerprint is what users pin). Neither key nor the