refactor(activity-meter): redesign screen with honest per-range stats

This commit is contained in:
2026-04-15 21:51:08 +02:00
parent 4e21e8d698
commit c7e32d1399
23 changed files with 1440 additions and 537 deletions

View File

@@ -868,5 +868,19 @@
"openSettings": "Einstellungen öffnen",
"errorMessageCodeIsEmpty": "Der Code darf nicht leer sein",
"callWatchSubtitle": "Gib die Telefonnummer des Geräts ein, das du anrufen möchtest.",
"spyCallSubtitle": "Das Gerät ruft diese Nummer an. Gib deine Telefonnummer ein, um den Anruf von der Uhr zu erhalten."
"spyCallSubtitle": "Das Gerät ruft diese Nummer an. Gib deine Telefonnummer ein, um den Anruf von der Uhr zu erhalten.",
"activityMeterSectionToday": "Heute",
"activityMeterSectionActivity": "Aktivität",
"activityMeterSectionHistory": "Verlauf",
"activityMeterDailyGoal": "Tagesziel: {goal} ({percent}%)",
"activityMeterAverageDaily": "Tagesdurchschnitt",
"activityMeterTotalSteps": "Gesamt",
"activityMeterActiveDays": "Aktive Tage",
"activityMeterActiveHoursToday": "Aktive Stunden heute: {hours} von 24",
"activityMeterBestDay": "Bester Tag: {date} ({steps} Schritte)",
"activityMeterRangeLabelToday": "Heute, {date}",
"activityMeterNoStepsToday": "Heute noch keine Schritte erfasst",
"activityMeterNoStepsPeriod": "Keine Aktivität in diesem Zeitraum",
"unitStepsPerDay": "Schritte/Tag",
"unitDays": "Tage"
}

View File

@@ -868,5 +868,19 @@
"openSettings": "Open settings",
"errorMessageCodeIsEmpty": "The code cannot be empty",
"callWatchSubtitle": "Enter the phone number of the device you want to call.",
"spyCallSubtitle": "The device will call this number. Enter your phone to receive the call from the watch."
"spyCallSubtitle": "The device will call this number. Enter your phone to receive the call from the watch.",
"activityMeterSectionToday": "Today",
"activityMeterSectionActivity": "Activity",
"activityMeterSectionHistory": "History",
"activityMeterDailyGoal": "Daily goal: {goal} ({percent}%)",
"activityMeterAverageDaily": "Daily average",
"activityMeterTotalSteps": "Total",
"activityMeterActiveDays": "Active days",
"activityMeterActiveHoursToday": "Active hours today: {hours} of 24",
"activityMeterBestDay": "Best day: {date} ({steps} steps)",
"activityMeterRangeLabelToday": "Today, {date}",
"activityMeterNoStepsToday": "No steps recorded yet today",
"activityMeterNoStepsPeriod": "No activity recorded in this period",
"unitStepsPerDay": "steps/day",
"unitDays": "days"
}

View File

@@ -868,5 +868,19 @@
"openSettings": "Abrir ajustes",
"errorMessageCodeIsEmpty": "El código no puede estar vacío",
"callWatchSubtitle": "Introduce el número de teléfono del dispositivo al que quieres llamar.",
"spyCallSubtitle": "El dispositivo llamará a este número. Introduce tu teléfono para recibir la llamada desde el reloj."
"spyCallSubtitle": "El dispositivo llamará a este número. Introduce tu teléfono para recibir la llamada desde el reloj.",
"activityMeterSectionToday": "Hoy",
"activityMeterSectionActivity": "Actividad",
"activityMeterSectionHistory": "Historial",
"activityMeterDailyGoal": "Meta diaria: {goal} ({percent}%)",
"activityMeterAverageDaily": "Promedio diario",
"activityMeterTotalSteps": "Total",
"activityMeterActiveDays": "Días activos",
"activityMeterActiveHoursToday": "Horas activas hoy: {hours} de 24",
"activityMeterBestDay": "Mejor día: {date} ({steps} pasos)",
"activityMeterRangeLabelToday": "Hoy, {date}",
"activityMeterNoStepsToday": "Aún no se registraron pasos hoy",
"activityMeterNoStepsPeriod": "No hay actividad registrada en este período",
"unitStepsPerDay": "pasos/día",
"unitDays": "días"
}

View File

@@ -868,5 +868,19 @@
"openSettings": "Ouvrir les paramètres",
"errorMessageCodeIsEmpty": "Le code ne peut pas être vide",
"callWatchSubtitle": "Saisis le numéro de téléphone de l'appareil que tu veux appeler.",
"spyCallSubtitle": "L'appareil appellera ce numéro. Saisis ton téléphone pour recevoir l'appel de la montre."
"spyCallSubtitle": "L'appareil appellera ce numéro. Saisis ton téléphone pour recevoir l'appel de la montre.",
"activityMeterSectionToday": "Aujourd'hui",
"activityMeterSectionActivity": "Activité",
"activityMeterSectionHistory": "Historique",
"activityMeterDailyGoal": "Objectif quotidien : {goal} ({percent}%)",
"activityMeterAverageDaily": "Moyenne quotidienne",
"activityMeterTotalSteps": "Total",
"activityMeterActiveDays": "Jours actifs",
"activityMeterActiveHoursToday": "Heures actives aujourd'hui : {hours} sur 24",
"activityMeterBestDay": "Meilleur jour : {date} ({steps} pas)",
"activityMeterRangeLabelToday": "Aujourd'hui, {date}",
"activityMeterNoStepsToday": "Aucun pas enregistré aujourd'hui",
"activityMeterNoStepsPeriod": "Aucune activité enregistrée sur cette période",
"unitStepsPerDay": "pas/jour",
"unitDays": "jours"
}

View File

@@ -868,5 +868,19 @@
"openSettings": "Apri impostazioni",
"errorMessageCodeIsEmpty": "Il codice non può essere vuoto",
"callWatchSubtitle": "Inserisci il numero di telefono del dispositivo che vuoi chiamare.",
"spyCallSubtitle": "Il dispositivo chiamerà questo numero. Inserisci il tuo telefono per ricevere la chiamata dall'orologio."
"spyCallSubtitle": "Il dispositivo chiamerà questo numero. Inserisci il tuo telefono per ricevere la chiamata dall'orologio.",
"activityMeterSectionToday": "Oggi",
"activityMeterSectionActivity": "Attività",
"activityMeterSectionHistory": "Cronologia",
"activityMeterDailyGoal": "Obiettivo giornaliero: {goal} ({percent}%)",
"activityMeterAverageDaily": "Media giornaliera",
"activityMeterTotalSteps": "Totale",
"activityMeterActiveDays": "Giorni attivi",
"activityMeterActiveHoursToday": "Ore attive oggi: {hours} di 24",
"activityMeterBestDay": "Giorno migliore: {date} ({steps} passi)",
"activityMeterRangeLabelToday": "Oggi, {date}",
"activityMeterNoStepsToday": "Nessun passo registrato oggi",
"activityMeterNoStepsPeriod": "Nessuna attività registrata in questo periodo",
"unitStepsPerDay": "passi/giorno",
"unitDays": "giorni"
}

View File

@@ -868,5 +868,19 @@
"openSettings": "Abrir definições",
"errorMessageCodeIsEmpty": "O código não pode estar vazio",
"callWatchSubtitle": "Digita o número de telefone do dispositivo que queres chamar.",
"spyCallSubtitle": "O dispositivo ligará para este número. Digita o teu telefone para receber a chamada do relógio."
"spyCallSubtitle": "O dispositivo ligará para este número. Digita o teu telefone para receber a chamada do relógio.",
"activityMeterSectionToday": "Hoje",
"activityMeterSectionActivity": "Atividade",
"activityMeterSectionHistory": "Histórico",
"activityMeterDailyGoal": "Meta diária: {goal} ({percent}%)",
"activityMeterAverageDaily": "Média diária",
"activityMeterTotalSteps": "Total",
"activityMeterActiveDays": "Dias ativos",
"activityMeterActiveHoursToday": "Horas ativas hoje: {hours} de 24",
"activityMeterBestDay": "Melhor dia: {date} ({steps} passos)",
"activityMeterRangeLabelToday": "Hoje, {date}",
"activityMeterNoStepsToday": "Ainda não há passos registados hoje",
"activityMeterNoStepsPeriod": "Sem atividade registada neste período",
"unitStepsPerDay": "passos/dia",
"unitDays": "dias"
}

View File

@@ -121,6 +121,20 @@ class I18n {
static const String callOutgoing = 'callOutgoing';
static const String callWatch = 'callWatch';
static const String callWatchSubtitle = 'callWatchSubtitle';
static const String activityMeterSectionToday = 'activityMeterSectionToday';
static const String activityMeterSectionActivity = 'activityMeterSectionActivity';
static const String activityMeterSectionHistory = 'activityMeterSectionHistory';
static const String activityMeterDailyGoal = 'activityMeterDailyGoal';
static const String activityMeterAverageDaily = 'activityMeterAverageDaily';
static const String activityMeterTotalSteps = 'activityMeterTotalSteps';
static const String activityMeterActiveDays = 'activityMeterActiveDays';
static const String activityMeterActiveHoursToday = 'activityMeterActiveHoursToday';
static const String activityMeterBestDay = 'activityMeterBestDay';
static const String activityMeterRangeLabelToday = 'activityMeterRangeLabelToday';
static const String activityMeterNoStepsToday = 'activityMeterNoStepsToday';
static const String activityMeterNoStepsPeriod = 'activityMeterNoStepsPeriod';
static const String unitStepsPerDay = 'unitStepsPerDay';
static const String unitDays = 'unitDays';
static const String spyCallSubtitle = 'spyCallSubtitle';
static const String cancel = 'cancel';
static const String cardPinChange = 'cardPinChange';