From eeb3069750b5720e7a618a5b611bfba2c81fbe50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Sat, 8 Aug 2026 23:27:58 +0200 Subject: [PATCH] feat(app): wrap root in GestureHandlerRootView for gesture support --- App.tsx | 23 +- targets/watch/Localizable.xcstrings | 1622 ++++++++++++++++++++++----- targets/watch/WorkoutManager.swift | 4 +- 3 files changed, 1368 insertions(+), 281 deletions(-) diff --git a/App.tsx b/App.tsx index 5d3941f..c37eebd 100644 --- a/App.tsx +++ b/App.tsx @@ -2,6 +2,7 @@ import "./global.css"; import "./src/i18n"; import { StatusBar } from "expo-status-bar"; import { NavigationContainer } from "@react-navigation/native"; +import { GestureHandlerRootView } from "react-native-gesture-handler"; import { RootNavigator } from "./src/navigation/RootNavigator"; import { DatabaseProvider } from "./src/providers/DatabaseProvider"; import { SettingsProvider } from "./src/providers/WatchProvider"; @@ -27,16 +28,18 @@ function SystemLanguageListener() { function App() { return ( - - - - - - - - - - + + + + + + + + + + + + ); } diff --git a/targets/watch/Localizable.xcstrings b/targets/watch/Localizable.xcstrings index 9431875..915af61 100644 --- a/targets/watch/Localizable.xcstrings +++ b/targets/watch/Localizable.xcstrings @@ -1,314 +1,1398 @@ { - "version": "1.0", - "sourceLanguage": "en", - "strings": { - "No workouts yet": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "No workouts yet" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Nog geen workouts" } }, - "de": { "stringUnit": { "state": "translated", "value": "Noch keine Workouts" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Aucun entraînement pour le moment" } }, - "it": { "stringUnit": { "state": "translated", "value": "Nessun allenamento ancora" } }, - "es": { "stringUnit": { "state": "translated", "value": "Aún no hay entrenamientos" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Brak treningów" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Ainda não há treinos" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Ingen træninger endnu" } } + "sourceLanguage" : "en", + "strings" : { + "" : { + + }, + "·" : { + + }, + "%lld" : { + + }, + "%lld. %@" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$lld. %2$@" + } + } } }, - "Create a workout on your iPhone to get started": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Create a workout on your iPhone to get started" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Maak een workout op je iPhone om te beginnen" } }, - "de": { "stringUnit": { "state": "translated", "value": "Erstelle ein Workout auf deinem iPhone um zu beginnen" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Créez un entraînement sur votre iPhone pour commencer" } }, - "it": { "stringUnit": { "state": "translated", "value": "Crea un allenamento sul tuo iPhone per iniziare" } }, - "es": { "stringUnit": { "state": "translated", "value": "Crea un entrenamiento en tu iPhone para empezar" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Stwórz trening na swoim iPhone, aby rozpocząć" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Crie um treino no seu iPhone para começar" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Opret en træning på din iPhone for at komme i gang" } } + "%lld/%lldm" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$lld/%2$lldm" + } + } } }, - "Saved Workouts": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Saved Workouts" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Opgeslagen workouts" } }, - "de": { "stringUnit": { "state": "translated", "value": "Gespeicherte Workouts" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Entraînements enregistrés" } }, - "it": { "stringUnit": { "state": "translated", "value": "Allenamenti salvati" } }, - "es": { "stringUnit": { "state": "translated", "value": "Entrenamientos guardados" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Zapisane treningi" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Treinos guardados" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Gemte træninger" } } + "%lldkcal" : { + + }, + "%lldm" : { + + }, + "%lldm · %lld sets" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$lldm · %2$lld sets" + } + } } }, - "Workout": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Workout" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Workout" } }, - "de": { "stringUnit": { "state": "translated", "value": "Workout" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Entraînement" } }, - "it": { "stringUnit": { "state": "translated", "value": "Allenamento" } }, - "es": { "stringUnit": { "state": "translated", "value": "Entrenamiento" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Trening" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Treino" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Træning" } } + "%lldm pool" : { + + }, + "%lldm total" : { + + }, + "%lldx%lldm" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$lldx%2$lldm" + } + } } }, - "Recent": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Recent" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Recent" } }, - "de": { "stringUnit": { "state": "translated", "value": "Zuletzt" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Récent" } }, - "it": { "stringUnit": { "state": "translated", "value": "Recenti" } }, - "es": { "stringUnit": { "state": "translated", "value": "Reciente" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Ostatnie" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Recente" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Seneste" } } + "Back" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurück" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tilbage" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volver" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Retour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indietro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terug" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wstecz" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voltar" + } + } } }, - "Sets": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Sets" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Sets" } }, - "de": { "stringUnit": { "state": "translated", "value": "Sets" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Séries" } }, - "it": { "stringUnit": { "state": "translated", "value": "Serie" } }, - "es": { "stringUnit": { "state": "translated", "value": "Series" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Serie" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Séries" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Sæt" } } + "Calories" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalorien" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalorier" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calories" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calorías" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calories" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calorie" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calorieën" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalorie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calorias" + } + } } }, - "Start": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Start" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Start" } }, - "de": { "stringUnit": { "state": "translated", "value": "Starten" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Commencer" } }, - "it": { "stringUnit": { "state": "translated", "value": "Inizia" } }, - "es": { "stringUnit": { "state": "translated", "value": "Iniciar" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Rozpocznij" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Iniciar" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Start" } } + "Complete Lap" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bahn abschließen" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fuldfør bane" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Complete Lap" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Completar largo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminer la longueur" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Completa lunghezza" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Baan voltooien" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ukończ długość" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Completar comprimento" + } + } } }, - "Back": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Back" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Terug" } }, - "de": { "stringUnit": { "state": "translated", "value": "Zurück" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Retour" } }, - "it": { "stringUnit": { "state": "translated", "value": "Indietro" } }, - "es": { "stringUnit": { "state": "translated", "value": "Volver" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Wstecz" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Voltar" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Tilbage" } } + "Create a workout on your iPhone to get started" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erstelle ein Workout auf deinem iPhone um zu beginnen" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Opret en træning på din iPhone for at komme i gang" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Create a workout on your iPhone to get started" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crea un entrenamiento en tu iPhone para empezar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créez un entraînement sur votre iPhone pour commencer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crea un allenamento sul tuo iPhone per iniziare" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maak een workout op je iPhone om te beginnen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stwórz trening na swoim iPhone, aby rozpocząć" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crie um treino no seu iPhone para começar" + } + } } }, - "Complete Lap": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Complete Lap" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Baan voltooien" } }, - "de": { "stringUnit": { "state": "translated", "value": "Bahn abschließen" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Terminer la longueur" } }, - "it": { "stringUnit": { "state": "translated", "value": "Completa lunghezza" } }, - "es": { "stringUnit": { "state": "translated", "value": "Completar largo" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Ukończ długość" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Completar comprimento" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Fuldfør bane" } } + "Distance" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distanz" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distance" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distance" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distancia" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distance" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distanza" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afstand" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dystans" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Distância" + } + } } }, - "End": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "End" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Einde" } }, - "de": { "stringUnit": { "state": "translated", "value": "Beenden" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Terminer" } }, - "it": { "stringUnit": { "state": "translated", "value": "Fine" } }, - "es": { "stringUnit": { "state": "translated", "value": "Finalizar" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Koniec" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Fim" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Slut" } } + "End" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Beenden" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Slut" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "End" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finalizar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fine" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einde" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Koniec" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fim" + } + } } }, - "Rest": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Rest" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Rust" } }, - "de": { "stringUnit": { "state": "translated", "value": "Pause" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Repos" } }, - "it": { "stringUnit": { "state": "translated", "value": "Recupero" } }, - "es": { "stringUnit": { "state": "translated", "value": "Descanso" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Odpoczynek" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Descanso" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Hvile" } } + "kcal" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@kcal" + } + } } }, - "Lap detected!": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Lap detected!" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Baan gedetecteerd!" } }, - "de": { "stringUnit": { "state": "translated", "value": "Bahn erkannt!" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Longueur détectée !" } }, - "it": { "stringUnit": { "state": "translated", "value": "Lunghezza rilevata!" } }, - "es": { "stringUnit": { "state": "translated", "value": "¡Largo detectado!" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Wykryto długość!" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Comprimento detectado!" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Bane registreret!" } } + "Lap detected!" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bahn erkannt!" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bane registreret!" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lap detected!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Largo detectado!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Longueur détectée !" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lunghezza rilevata!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Baan gedetecteerd!" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wykryto długość!" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comprimento detectado!" + } + } } }, - "m pool": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "%@m pool" } }, - "nl": { "stringUnit": { "state": "translated", "value": "%@m bad" } }, - "de": { "stringUnit": { "state": "translated", "value": "%@m Becken" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Bassin de %@m" } }, - "it": { "stringUnit": { "state": "translated", "value": "Piscina di %@m" } }, - "es": { "stringUnit": { "state": "translated", "value": "Piscina de %@m" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Basen %@m" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Piscina de %@m" } }, - "dk": { "stringUnit": { "state": "translated", "value": "%@m pool" } } + "Laps" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Runden" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Baner" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laps" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Largos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Longueurs" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lunghezze" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rondes" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Długości" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comprimentos" + } + } } }, - "m total": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "%@m total" } }, - "nl": { "stringUnit": { "state": "translated", "value": "%@m totaal" } }, - "de": { "stringUnit": { "state": "translated", "value": "%@m gesamt" } }, - "fr": { "stringUnit": { "state": "translated", "value": "%@m au total" } }, - "it": { "stringUnit": { "state": "translated", "value": "%@m totale" } }, - "es": { "stringUnit": { "state": "translated", "value": "%@m total" } }, - "pl": { "stringUnit": { "state": "translated", "value": "%@m łącznie" } }, - "pt": { "stringUnit": { "state": "translated", "value": "%@m total" } }, - "dk": { "stringUnit": { "state": "translated", "value": "%@m i alt" } } + "m pool" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m Becken" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m pool" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m pool" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Piscina de %@m" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bassin de %@m" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Piscina di %@m" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m bad" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Basen %@m" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Piscina de %@m" + } + } } }, - "kcal": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "nl": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "de": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "fr": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "it": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "es": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "pl": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "pt": { "stringUnit": { "state": "translated", "value": "%@kcal" } }, - "dk": { "stringUnit": { "state": "translated", "value": "%@kcal" } } + "m total" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m gesamt" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m i alt" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m total" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m total" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m au total" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m totale" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m totaal" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m łącznie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@m total" + } + } } }, - "Workout complete!": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Workout complete!" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Training voltooid!" } }, - "de": { "stringUnit": { "state": "translated", "value": "Training abgeschlossen!" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Entraînement terminé !" } }, - "it": { "stringUnit": { "state": "translated", "value": "Allenamento completato!" } }, - "es": { "stringUnit": { "state": "translated", "value": "¡Entrenamiento completado!" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Trening zakończony!" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Treino concluído!" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Træning afsluttet!" } } + "Next: %@ %lldm" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Next: %1$@ %2$lldm" + } + } } }, - "Stats": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Stats" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Statistieken" } }, - "de": { "stringUnit": { "state": "translated", "value": "Statistiken" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Statistiques" } }, - "it": { "stringUnit": { "state": "translated", "value": "Statistiche" } }, - "es": { "stringUnit": { "state": "translated", "value": "Estadísticas" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Statystyki" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Estatísticas" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Statistik" } } + "No workouts yet" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Noch keine Workouts" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ingen træninger endnu" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No workouts yet" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aún no hay entrenamientos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun entraînement pour le moment" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nessun allenamento ancora" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nog geen workouts" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Brak treningów" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ainda não há treinos" + } + } } }, - "Total time": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Total time" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Totale tijd" } }, - "de": { "stringUnit": { "state": "translated", "value": "Gesamtzeit" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Durée totale" } }, - "it": { "stringUnit": { "state": "translated", "value": "Tempo totale" } }, - "es": { "stringUnit": { "state": "translated", "value": "Tiempo total" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Czas łączny" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Tempo total" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Samlet tid" } } + "OK" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + } } }, - "Distance": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Distance" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Afstand" } }, - "de": { "stringUnit": { "state": "translated", "value": "Distanz" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Distance" } }, - "it": { "stringUnit": { "state": "translated", "value": "Distanza" } }, - "es": { "stringUnit": { "state": "translated", "value": "Distancia" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Dystans" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Distância" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Distance" } } + "Recent" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zuletzt" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seneste" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recent" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reciente" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Récent" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recent" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ostatnie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recente" + } + } } }, - "Calories": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Calories" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Calorieën" } }, - "de": { "stringUnit": { "state": "translated", "value": "Kalorien" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Calories" } }, - "it": { "stringUnit": { "state": "translated", "value": "Calorie" } }, - "es": { "stringUnit": { "state": "translated", "value": "Calorías" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Kalorie" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Calorias" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Kalorier" } } + "Rep %lld/%lld" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Rep %1$lld/%2$lld" + } + } } }, - "Laps": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "Laps" } }, - "nl": { "stringUnit": { "state": "translated", "value": "Rondes" } }, - "de": { "stringUnit": { "state": "translated", "value": "Runden" } }, - "fr": { "stringUnit": { "state": "translated", "value": "Longueurs" } }, - "it": { "stringUnit": { "state": "translated", "value": "Lunghezze" } }, - "es": { "stringUnit": { "state": "translated", "value": "Largos" } }, - "pl": { "stringUnit": { "state": "translated", "value": "Długości" } }, - "pt": { "stringUnit": { "state": "translated", "value": "Comprimentos" } }, - "dk": { "stringUnit": { "state": "translated", "value": "Baner" } } + "Rest" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pause" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hvile" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rest" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descanso" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repos" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Recupero" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rust" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Odpoczynek" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descanso" + } + } } }, - "OK": { - "extractionState": "manual", - "localizations": { - "en": { "stringUnit": { "state": "translated", "value": "OK" } }, - "nl": { "stringUnit": { "state": "translated", "value": "OK" } }, - "de": { "stringUnit": { "state": "translated", "value": "OK" } }, - "fr": { "stringUnit": { "state": "translated", "value": "OK" } }, - "it": { "stringUnit": { "state": "translated", "value": "OK" } }, - "es": { "stringUnit": { "state": "translated", "value": "OK" } }, - "pl": { "stringUnit": { "state": "translated", "value": "OK" } }, - "pt": { "stringUnit": { "state": "translated", "value": "OK" } }, - "dk": { "stringUnit": { "state": "translated", "value": "OK" } } + "Saved Workouts" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gespeicherte Workouts" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gemte træninger" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saved Workouts" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entrenamientos guardados" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entraînements enregistrés" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allenamenti salvati" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Opgeslagen workouts" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zapisane treningi" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Treinos guardados" + } + } + } + }, + "Set %lld/%lld" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Set %1$lld/%2$lld" + } + } + } + }, + "Sets" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sets" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sæt" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sets" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Series" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Séries" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Serie" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sets" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Serie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Séries" + } + } + } + }, + "Start" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Starten" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iniciar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Commencer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inizia" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rozpocznij" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iniciar" + } + } + } + }, + "Stats" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistiken" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistik" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stats" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Estadísticas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistiques" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistiche" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statistieken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Statystyki" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Estatísticas" + } + } + } + }, + "SwimBuddy" : { + + }, + "Total time" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gesamtzeit" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Samlet tid" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Total time" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tiempo total" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Durée totale" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tempo totale" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Totale tijd" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Czas łączny" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tempo total" + } + } + } + }, + "Workout" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Workout" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Træning" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Workout" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entrenamiento" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entraînement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allenamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Workout" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trening" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Treino" + } + } + } + }, + "Workout complete!" : { + "extractionState" : "manual", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Training abgeschlossen!" + } + }, + "dk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Træning afsluttet!" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Workout complete!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Entrenamiento completado!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entraînement terminé !" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allenamento completato!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Training voltooid!" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trening zakończony!" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Treino concluído!" + } + } } } - } -} + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/targets/watch/WorkoutManager.swift b/targets/watch/WorkoutManager.swift index 0b993d0..997f509 100644 --- a/targets/watch/WorkoutManager.swift +++ b/targets/watch/WorkoutManager.swift @@ -280,7 +280,7 @@ class WorkoutManager: ObservableObject { if let query = heartRateQuery { healthStore.execute(query) - healthStore.enableBackgroundDelivery(for: heartRateType, frequency: .immediate) { _, _, _ in } + healthStore.enableBackgroundDelivery(for: heartRateType, frequency: .immediate) { _, _ in } } } @@ -321,7 +321,7 @@ class WorkoutManager: ObservableObject { if let query = calorieQuery { healthStore.execute(query) - healthStore.enableBackgroundDelivery(for: calorieType, frequency: .immediate) { _, _, _ in } + healthStore.enableBackgroundDelivery(for: calorieType, frequency: .immediate) { _, _ in } } }