Merge branch 'master' into feature/material-3

This commit is contained in:
Roland Geider
2023-10-21 21:41:56 +02:00
18 changed files with 785 additions and 31 deletions

View File

@@ -1,15 +1,25 @@
# Proposed Changes
## Description (Proposed Changes)
(Please try to mention in bullet points.)
-
-
-
Related Issues (if applicable)
## Link to the issue :
-
(Add link of the issue you have proposed changes to)
## Please check that the PR fulfills these requirements
- Link :
## Tests
Please make sure to add tests when implementing new features.
## Checklist
Please check that the PR fulfills all requirements listed below by checking the relevant checkboxes (`[x]`). This will ensure a smooth and quick review process.
- [ ] Set a 100 character limit in your editor/IDE to avoid white space diffs in the PR
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Added yourself to AUTHORS.md
- [ ] Updated/added relevant documentation (doc comments with `///`).
- [ ] Added relevant reviewers.

View File

@@ -22,6 +22,7 @@
- Miroslav Mazel - <https://gitlab.com/12people>
- artchiee - <https://github.com/artchiee>
- Tejas Bir Singh - <https://github.com/tejasbirsingh>
- Abhishek Saini - <https://github.com/Abhisheksainii>
## Translators

View File

@@ -31,7 +31,13 @@ height="80">](https://f-droid.org/packages/de.wger.flutter/)
Install the [wger server](https://github.com/wger-project/wger), the easiest way
is to start the development docker-compose: <https://github.com/wger-project/docker>
Alternatively, you can use one of our test servers, just ask us for access.
Alternatively, you can use the test server (the db is reset every day):
* URL: `https://wger-master.rge.uber.space`
* username: `user`
* password: `flutteruser`
* API key: `31e2ea0322c07b9df583a9b6d1e794f7139e78d4`
### 2

View File

@@ -0,0 +1,39 @@
Από λάτρεις της γυμναστικής σε λάτρεις της γυμναστικής οργανώστε την υγεία σας με το WGER, τον Προπονητή σας!
Έχετε ήδη βρει την #1 εφαρμογή γυμναστικής σας και σας αρέσει να δημιουργείτε τις δικές σας αθλητικές ρουτίνες; Ανεξάρτητα από το είδος του σπορ θηρίου που είστε όλοι έχουμε κάτι κοινό: Μας αρέσει να παρακολουθούμε τα δεδομένα υγείας μας <3
Επομένως, δεν σας κρίνουμε επειδή εξακολουθείτε να διαχειρίζεστε το ταξίδι σας στη φυσική κατάσταση με το εύχρηστο μικρό ημερολόγιο προπόνησης, αλλά καλώς ήρθατε στο 2021!
Έχουμε αναπτύξει μια 100% δωρεάν ψηφιακή εφαρμογή παρακολούθησης υγείας και φυσικής κατάστασης για εσάς, με μέγεθος στις πιο σχετικές λειτουργίες για να διευκολύνει τη ζωή σας. Ξεκινήστε, συνεχίστε την προπόνηση και γιορτάστε την πρόοδό σας!
Το wger είναι ένα έργο ανοιχτού κώδικα και όλα σχετικά με:
* Το σώμα σας
* Τις προπονήσεις σας
* Τη πρόοδό σας
* Τα δεδομένα σας
Το σώμα σας:
Δεν χρειάζεται να ψάχνετε στο google τα συστατικά των αγαπημένων σας λιχουδιών επιλέξτε τα καθημερινά σας γεύματα από περισσότερα από 78000 προϊόντα και δείτε τις θρεπτικές αξίες. Προσθέστε γεύματα στο διατροφικό πρόγραμμα και κρατήστε μια επισκόπηση της διατροφής σας στο ημερολόγιο
Τις προπονήσεις σας:
Ξέρετε τι είναι καλύτερο για το σώμα σας. Δημιουργήστε τις δικές σας προπονήσεις μέσα από μια αυξανόμενη ποικιλία από 200 διαφορετικές ασκήσεις. Στη συνέχεια, χρησιμοποιήστε τη λειτουργία γυμναστικής για να σας καθοδηγήσει στην προπόνηση ενώ καταγράφετε τα βάρη σας με ένα πάτημα
Τη πρόοδός σας:
Μην χάνετε ποτέ τους στόχους σας. Παρακολουθήστε το βάρος σας και κρατήστε τα στατιστικά σας.
Τα δεδομένα σας:
Το wger είναι το εξατομικευμένο ημερολόγιο γυμναστικής σας αλλά εσείς κατέχετε τα δεδομένα σας. Χρησιμοποιήστε το REST API για να αποκτήσετε πρόσβαση και να κάνετε εκπληκτικά πράγματα με αυτό.
Σημείωση: Αυτή η δωρεάν εφαρμογή δεν βασίζεται σε πρόσθετους πόρους και δεν σας ζητάμε να δωρίσετε χρήματα. Περισσότερο από αυτό είναι ένα κοινοτικό έργο που αυξάνεται συνεχώς. Ετοιμαστείτε λοιπόν για νέα χαρακτηριστικά ανά πάσα στιγμή!
#ΑνοιχτόςΚώδικας τι σημαίνει αυτό;
Ανοιχτός κώδικας σημαίνει ότι ολόκληρος ο πηγαίος κώδικας για αυτήν την εφαρμογή και τον διακομιστή στον οποίο συνομιλεί είναι δωρεάν και διαθέσιμος σε οποιονδήποτε:
* Θέλετε να εκτελέσετε το wger στον δικό σας διακομιστή για εσάς ή το τοπικό σας γυμναστήριο; Προχώρα!
* Σας λείπει ένα χαρακτηριστικό και θέλετε να το εφαρμόσετε; Ξεκίνα τώρα!
* Θέλετε να ελέγξετε ότι δεν αποστέλλεται τίποτα πουθενά; Μπορείς!
Γίνετε μέλος της κοινότητάς μας και γίνετε μέρος των λάτρεις του αθλητισμού και των geeks της πληροφορικής από όλο τον κόσμο. Συνεχίζουμε να εργαζόμαστε για την προσαρμογή και τη βελτιστοποίηση της εφαρμογής προσαρμοσμένης στις ανάγκες μας. Μας αρέσει η συμβολή σας, γι' αυτό μη διστάσετε να μπείτε ανά πάσα στιγμή και να συνεισφέρετε τις επιθυμίες και τις ιδέες σας!
-> βρείτε τον πηγαίο κώδικα στο https://github.com/wger-project
-> κάντε τις ερωτήσεις σας ή απλώς πείτε ένα γεια στον διακομιστή discord μας https://discord.gg/rPWFv6W

View File

@@ -0,0 +1 @@
Καταγραφή φυσικής κατάστασης/προπόνησης, διατροφής και βάρους

View File

@@ -1,4 +1,4 @@
Od ljubitelja fitnessa za ljubitelja fitnessa organiziraj svoje zdravlje s WGER, tvojim upravljaöem treninga!
Od ljubitelja fitnessa za ljubitelje fitnessa organiziraj svoje zdravlje s WGER, tvojim upravljačem treninga!
Već si pronašao/la omiljeni program za fitness i voliš stvarati vlastite sportske rutine? Bez obzira na vrstu sportske zvijeri svi imamo nešto zajedničko: Volimo pratiti naše zdravstvene podatke <3
@@ -22,7 +22,7 @@ Tvoj napredak:
Nikada ne gubi iz vida svoje ciljeve. Prati svoju težinu i vodi statistiku.
Tvoji podaci:
wger je tvoj personalizirani dnevnik fitnessa ali ti posjeduješ svoje podatke. Koristi REST API za pristup i obavi s njim nevjerojatnih stvari.
wger je tvoj personalizirani dnevnik fitnessa ali ti posjeduješ svoje podatke. Koristi REST API za pristup i obavi s njim nevjerojatne stvari.
Napomena: Ovaj besplatni program ne temelji se na dodatnim sredstvima i ne tražimo da doniraš novac. Više od toga, ovo je projekt zajednice koji stalno raste. Stoga budi spreman/na za nove funkcije u bilo kojem trenutku!

View File

@@ -70,6 +70,9 @@ String getTranslation(String value, BuildContext context) {
case 'Legs':
return AppLocalizations.of(context).legs;
case 'Lower back':
return AppLocalizations.of(context).lower_back;
case 'Max Reps':
return AppLocalizations.of(context).max_reps;

View File

@@ -553,5 +553,68 @@
"description": "Header label for dialog when product is found with barcode"
},
"appUpdateContent": "Tato verze aplikace není kompatibilní se serverem, aktualizujte prosím svou aplikaci.",
"@appUpdateContent": {}
"@appUpdateContent": {},
"add_exercise_image_license": "Obrázky musí být licencovány pod CC BY SA licencí. Pokud si nejste jisti, nahrávejte pouze fotky které jste sami pořídili",
"@add_exercise_image_license": {},
"verify": "Ověřit",
"@verify": {},
"alternativeNames": "Alternativní jména",
"@alternativeNames": {},
"oneNamePerLine": "Jedno jméno na jeden řádek",
"@oneNamePerLine": {},
"whatVariationsExist": "Existují nějaké varianty tohoto cviku?",
"@whatVariationsExist": {},
"previous": "Předešlé",
"@previous": {},
"next": "Další",
"@next": {},
"addExercise": "Přidat cvik",
"@addExercise": {},
"translation": "Překlad",
"@translation": {},
"baseData": "Základy v angličtině",
"@baseData": {
"description": "The base data for an exercise such as category, trained muscles, etc."
},
"productFoundDescription": "Čárový kód náleží tomuto produktu: {productName}. Chcete pokračovat?",
"@productFoundDescription": {
"description": "Dialog info when product is found with barcode",
"type": "text",
"placeholders": {
"productName": {}
}
},
"scanBarcode": "Naskenovat čárový kód",
"@scanBarcode": {
"description": "Label for scan barcode button"
},
"productNotFound": "Produkt nenalezen",
"@productNotFound": {
"description": "Header label for dialog when product is not found with barcode"
},
"images": "Obrázky",
"@images": {},
"language": "Jazyk",
"@language": {},
"aboutPageTitle": "O Wger",
"@aboutPageTitle": {},
"contributeExercise": "Přispějte cvik",
"@contributeExercise": {},
"setUnitsAndRir": "Upravte jednotky a OvR",
"@setUnitsAndRir": {
"description": "Label shown on the slider where the user can toggle showing units and RiR",
"type": "text"
},
"close": "Zavřít",
"@close": {
"description": "Translation for close"
},
"productNotFoundDescription": "Produkt s naskenovaným čárovým kódem {barcode} nebyl nalezen v databázi wger",
"@productNotFoundDescription": {
"description": "Dialog info when product is not found with barcode",
"type": "text",
"placeholders": {
"barcode": {}
}
}
}

View File

@@ -730,5 +730,23 @@
"swiss_ball": "Gymnastikball",
"@swiss_ball": {},
"none__bodyweight_exercise_": "keine (Körpergewichtsübung)",
"@none__bodyweight_exercise_": {}
"@none__bodyweight_exercise_": {},
"body_weight": "Körpergewicht",
"@body_weight": {
"description": "Generated entry for translation for server strings"
},
"kg": "kg",
"@kg": {
"description": "Generated entry for translation for server strings"
},
"kilometers_per_hour": "Kilometer pro Stunde",
"@kilometers_per_hour": {
"description": "Generated entry for translation for server strings"
},
"miles_per_hour": "Meilen pro Stunde",
"@miles_per_hour": {
"description": "Generated entry for translation for server strings"
},
"verify": "Verifizieren",
"@verify": {}
}

158
lib/l10n/app_el.arb Normal file
View File

@@ -0,0 +1,158 @@
{
"useDefaultServer": "Χρήση προεπιλεγμένου διακομιστή",
"@useDefaultServer": {
"description": "Toggle button allowing users to switch between the default and a custom wger server"
},
"labelBottomNavWorkout": "Προπόνηση",
"@labelBottomNavWorkout": {
"description": "Label used in bottom navigation, use a short word"
},
"reset": "Επαναφορά",
"@reset": {
"description": "Button text allowing the user to reset the entered values to the default"
},
"kg": "kg",
"@kg": {
"description": "Generated entry for translation for server strings"
},
"password": "Κωδικός",
"@password": {},
"nutritionalPlan": "Διατροφικό σχέδιο",
"@nutritionalPlan": {},
"invalidUsername": "Παρακαλώ εισάγετε ένα έγκυρο όνομα χρήστη",
"@invalidUsername": {
"description": "Error message when the user enters an invalid username"
},
"next": "Επόμενο",
"@next": {},
"date": "Ημερομηνία",
"@date": {
"description": "The date of a workout log or body weight entry"
},
"loginInstead": "Έχετε ήδη λογαριασμό; Σύνδεση",
"@loginInstead": {},
"passwordTooShort": "Ο κωδικός πρόσβασης είναι πολύ σύντομος",
"@passwordTooShort": {
"description": "Error message when the user a password that is too short"
},
"email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
"@email": {},
"edit": "Επεξεργασία",
"@edit": {},
"username": "Όνομα χρήστη",
"@username": {},
"value": "Αξία",
"@value": {
"description": "The value of a measurement entry"
},
"customServerHint": "Εισάγετε τη διεύθυνση του δικού σας διακομιστή, διαφορετικά θα χρησιμοποιηθεί η προεπιλεγμένη",
"@customServerHint": {
"description": "Hint text for the form where the users can enter their own wger instance"
},
"useCustomServer": "Χρήση προσαρμοσμένου διακομιστή",
"@useCustomServer": {
"description": "Toggle button allowing users to switch between the default and a custom wger server"
},
"delete": "Διαγραφή",
"@delete": {},
"notes": "Σημειώσεις",
"@notes": {
"description": "Personal notes, e.g. for a workout session"
},
"difference": "Διαφορά",
"@difference": {},
"register": "Εγγραφή",
"@register": {
"description": "Text for registration button"
},
"registerInstead": "Δεν έχετε λογαριασμό; Εγγραφείτε τώρα",
"@registerInstead": {},
"usernameValidChars": "Ένα όνομα χρήστη μπορεί να περιέχει μόνο γράμματα, ψηφία και τους χαρακτήρες @, +, ., - και _",
"@usernameValidChars": {
"description": "Error message when the user tries to register a username with forbidden characters"
},
"labelWorkoutPlans": "Προγράμματα προπόνησης",
"@labelWorkoutPlans": {
"description": "Title for screen workout plans"
},
"previous": "Προηγούμενο",
"@previous": {},
"userProfile": "Το προφίλ σας",
"@userProfile": {},
"lb": "lb",
"@lb": {
"description": "Generated entry for translation for server strings"
},
"labelWorkoutLogs": "Ημερολόγια προπόνησης",
"@labelWorkoutLogs": {
"description": "(Workout) logs"
},
"kJ": "kJ",
"@kJ": {
"description": "Energy in a meal in kilo joules, kJ"
},
"labelBottomNavNutrition": "Διατροφή",
"@labelBottomNavNutrition": {
"description": "Label used in bottom navigation, use a short word"
},
"invalidUrl": "Παρακαλώ εισάγετε ένα έγκυρο URL",
"@invalidUrl": {
"description": "Error message when the user enters an invalid URL, e.g. in the login form"
},
"kcal": "kcal",
"@kcal": {
"description": "Energy in a meal in kilocalories, kcal"
},
"g": "γρ",
"@g": {
"description": "Abbreviation for gram"
},
"logout": "Αποσύνδεση",
"@logout": {
"description": "Text for logout button"
},
"customServerUrl": "URL της περίπτωσης wger",
"@customServerUrl": {
"description": "Label in the form where the users can enter their own wger instance"
},
"login": "Συνδεθείτε",
"@login": {
"description": "Text for login button"
},
"unit": "Μονάδα",
"@unit": {
"description": "The unit used for a repetition (kg, time, etc.)"
},
"passwordsDontMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν",
"@passwordsDontMatch": {
"description": "Error message when the user enters two different passwords during registration"
},
"weight": "Βάρος",
"@weight": {
"description": "The weight of a workout log or body weight entry"
},
"invalidEmail": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
"@invalidEmail": {
"description": "Error message when the user enters an invalid email"
},
"confirmPassword": "Επιβεβαίωση κωδικού πρόσβασης",
"@confirmPassword": {},
"images": "Εικόνες",
"@images": {},
"save": "Αποθήκευση",
"@save": {},
"description": "Περιγραφή",
"@description": {},
"name": "Όνομα",
"@name": {
"description": "Name for a workout or nutritional plan"
},
"translation": "Μετάφραση",
"@translation": {},
"language": "Γλώσσα",
"@language": {},
"category": "Κατηγορία",
"@category": {
"description": "Category for an exercise, ingredient, etc."
}
}

View File

@@ -719,6 +719,10 @@
"@legs": {
"description": "Generated entry for translation for server strings"
},
"lower_back": "Lower back",
"@lower_back": {
"description": "Generated entry for translation for server strings"
},
"max_reps": "Max Reps",
"@max_reps": {
"description": "Generated entry for translation for server strings"

View File

@@ -755,5 +755,11 @@
"description": "Generated entry for translation for server strings"
},
"searchNamesInEnglish": "Chercher également en termes anglais",
"@searchNamesInEnglish": {}
"@searchNamesInEnglish": {},
"max_reps": "Maximum de répétitions",
"@max_reps": {
"description": "Generated entry for translation for server strings"
},
"verify": "Vérifier",
"@verify": {}
}

View File

@@ -91,7 +91,7 @@
"@exercise": {
"description": "An exercise for a workout"
},
"logHelpEntriesUnits": "Imaj na umu da su ovdje ucrtani samo unosi s jedinicom težine (kg ili lb) i ponavljanjima, druge kombinacije kao što su vrijeme ili do neuspjeha se ovdje zanemaruju.",
"logHelpEntriesUnits": "Napomena: prikazuju se samo unosi s jedinicom težine (kg ili lb) i ponavljanja, druge kombinacije kao što su vrijeme ili do neuspjeha se ovdje zanemaruju.",
"@logHelpEntriesUnits": {},
"description": "Opis",
"@description": {},
@@ -807,5 +807,9 @@
"description": "Generated entry for translation for server strings"
},
"verify": "Potvrdi",
"@verify": {}
"@verify": {},
"lower_back": "Donji dio leđa",
"@lower_back": {
"description": "Generated entry for translation for server strings"
}
}

View File

@@ -40,5 +40,447 @@
"register": "Inscrever-se",
"@register": {
"description": "Text for registration button"
}
},
"useDefaultServer": "Usar servidor padrão",
"@useDefaultServer": {
"description": "Toggle button allowing users to switch between the default and a custom wger server"
},
"reset": "Redefinir",
"@reset": {
"description": "Button text allowing the user to reset the entered values to the default"
},
"password": "Senha",
"@password": {},
"invalidUsername": "Por favor insira um nome de usuário válido",
"@invalidUsername": {
"description": "Error message when the user enters an invalid username"
},
"passwordTooShort": "A senha é muito curta",
"@passwordTooShort": {
"description": "Error message when the user a password that is too short"
},
"email": "Endereço de email",
"@email": {},
"username": "Usuário",
"@username": {},
"customServerHint": "Digite o endereço do seu próprio servidor, caso contrário o padrão será usado",
"@customServerHint": {
"description": "Hint text for the form where the users can enter their own wger instance"
},
"useCustomServer": "Usar servidor customizado",
"@useCustomServer": {
"description": "Toggle button allowing users to switch between the default and a custom wger server"
},
"registerInstead": "Não tem uma conta? Registrar agora",
"@registerInstead": {},
"usernameValidChars": "Um usuário deve apenas conter letras, digitos e os caracteres @, +, ., -, ou _",
"@usernameValidChars": {
"description": "Error message when the user tries to register a username with forbidden characters"
},
"invalidUrl": "Por favor, digite uma URL válida",
"@invalidUrl": {
"description": "Error message when the user enters an invalid URL, e.g. in the login form"
},
"customServerUrl": "URL da instância wger",
"@customServerUrl": {
"description": "Label in the form where the users can enter their own wger instance"
},
"passwordsDontMatch": "As senhas não coincidem",
"@passwordsDontMatch": {
"description": "Error message when the user enters two different passwords during registration"
},
"invalidEmail": "Por favor insira um endereço de e-mail válido",
"@invalidEmail": {
"description": "Error message when the user enters an invalid email"
},
"confirmPassword": "Confirme sua senha",
"@confirmPassword": {},
"comment": "Comente",
"@comment": {
"description": "Comment, additional information"
},
"logIngredient": "Salvar no diário nutricional",
"@logIngredient": {},
"equipment": "Equipamento",
"@equipment": {
"description": "Equipment needed to perform an exercise"
},
"saturatedFat": "Gordura saturada",
"@saturatedFat": {},
"mealLogged": "Refeição registrada no diário",
"@mealLogged": {},
"images": "Imagens",
"@images": {},
"close": "Fechar",
"@close": {
"description": "Translation for close"
},
"successfullyDeleted": "Excluído",
"@successfullyDeleted": {
"description": "Message when an item was successfully deleted"
},
"save": "Salvar",
"@save": {},
"goToToday": "Vá para hoje",
"@goToToday": {
"description": "Label on button to jump back to 'today' in the calendar widget"
},
"enterRepetitionsOrWeight": "Por favor preencha as repetições ou o peso para pelo menos uma das séries",
"@enterRepetitionsOrWeight": {
"description": "Error message when the user hasn't filled in the forms for exercise sets"
},
"set": "Definir",
"@set": {
"description": "A set in a workout plan"
},
"noMeasurementEntries": "Você não tem entradas de medição",
"@noMeasurementEntries": {},
"newSet": "Novo conjunto",
"@newSet": {
"description": "Header when adding a new set to a workout day"
},
"impression": "Impressão",
"@impression": {
"description": "General impression (e.g. for a workout session) such as good, bad, etc."
},
"plateCalculator": "Pratos",
"@plateCalculator": {
"description": "Label used for the plate calculator in the gym mode"
},
"newNutritionalPlan": "Novo plano nutricional",
"@newNutritionalPlan": {},
"setNr": "Definir {nr}",
"@setNr": {
"description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.",
"type": "text",
"placeholders": {
"nr": {}
}
},
"fat": "Gordura",
"@fat": {},
"timeStartAhead": "O horário de início não pode ser anterior ao horário de término",
"@timeStartAhead": {},
"carbohydrates": "Carboidratos",
"@carbohydrates": {},
"noWorkoutPlans": "Você não tem planos de treino",
"@noWorkoutPlans": {
"description": "Message shown when the user has no workout plans"
},
"aboutTranslationTitle": "Tradução",
"@aboutTranslationTitle": {
"description": "Title for translation section in the about dialog"
},
"muscles": "Músculos",
"@muscles": {
"description": "(main) muscles trained by an exercise"
},
"total": "Total",
"@total": {
"description": "Label used for total sums of e.g. calories or similar"
},
"dayDescriptionHelp": "Uma descrição do que é feito neste dia (por exemplo, 'dia de puxar') ou quais partes do corpo são treinadas (por exemplo, 'peito e ombros')",
"@dayDescriptionHelp": {},
"gymMode": "Modo Gym",
"@gymMode": {
"description": "Label when starting the gym mode"
},
"logged": "Desconectar",
"@logged": {
"description": "Header for the column of 'logged' nutritional values, i.e. what was eaten"
},
"amount": "Quantia",
"@amount": {
"description": "The amount (e.g. in grams) of an ingredient in a meal"
},
"loginInstead": "Já tem uma conta ? Entre",
"@loginInstead": {},
"pause": "Pausar",
"@pause": {
"description": "Noun, not an imperative! Label used for the pause when using the gym mode"
},
"success": "Sucesso",
"@success": {
"description": "Message when an action completed successfully, usually used as a heading"
},
"repetitionUnit": "Unidade de repetição",
"@repetitionUnit": {},
"weightUnit": "Unidade de peso",
"@weightUnit": {},
"searchIngredient": "Pesquisar Ingrediente",
"@searchIngredient": {
"description": "Label on ingredient search form"
},
"aboutBugsText": "Entre em contato se algo não se comportou conforme o esperado ou se houver algum recurso que você acha que está faltando.",
"@aboutBugsText": {
"description": "Text for bugs section in the about dialog"
},
"anErrorOccurred": "Ocorreu um erro!",
"@anErrorOccurred": {},
"aboutContactUsTitle": "Diga oi!",
"@aboutContactUsTitle": {
"description": "Title for contact us section in the about dialog"
},
"enterValue": "por favor insira um valor",
"@enterValue": {
"description": "Error message when the user hasn't entered a value on a required field"
},
"logMeal": "Registrar esta refeição",
"@logMeal": {},
"newEntry": "Nova entrada",
"@newEntry": {
"description": "Title when adding a new entry such as a weight or log entry"
},
"addSet": "Adicionar set",
"@addSet": {
"description": "Label for the button that adds a set (to a workout day)"
},
"newWorkout": "Novo plano de treino",
"@newWorkout": {
"description": "Header when adding a new workout"
},
"energyShort": "E",
"@energyShort": {
"description": "The first letter or short name of the word 'Energy', used in overviews"
},
"name": "Nome",
"@name": {
"description": "Name for a workout or nutritional plan"
},
"percentEnergy": "Porcentagem de energia",
"@percentEnergy": {},
"searchNamesInEnglish": "Pesquise também por nomes em inglês",
"@searchNamesInEnglish": {},
"exercise": "Exercício",
"@exercise": {
"description": "An exercise for a workout"
},
"addIngredient": "Adicionar ingrediente",
"@addIngredient": {},
"fatShort": "G",
"@fatShort": {
"description": "The first letter or short name of the word 'Fat', used in overviews"
},
"start": "Começar",
"@start": {
"description": "Label on button to start the gym mode (i.e., an imperative)"
},
"jumpTo": "Pule para",
"@jumpTo": {
"description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode"
},
"difference": "Diferença",
"@difference": {},
"fibres": "Fibra",
"@fibres": {},
"aboutDescription": "Obrigado por usar o Wger! Wger é um projeto colaborativo de código aberto, feito por entusiastas do fitness de todo o mundo.",
"@aboutDescription": {
"description": "Text in the about dialog"
},
"timeStart": "Hora de início",
"@timeStart": {
"description": "The starting time of a workout"
},
"searchExercise": "Exercício de pesquisa para adicionar",
"@searchExercise": {
"description": "Label on set form. Selected exercises are added to the set"
},
"moreMeasurementEntries": "Adicionar nova medição",
"@moreMeasurementEntries": {
"description": "Message shown when the user wants to add new measurement"
},
"loadingText": "Carregando...",
"@loadingText": {
"description": "Text to show when entries are being loaded in the background: Loading..."
},
"selectExercises": "Se quiser fazer um superset você pode procurar vários exercícios, eles estarão agrupados",
"@selectExercises": {},
"nutritionalDiary": "Diário nutricional",
"@nutritionalDiary": {},
"protein": "Proteína",
"@protein": {},
"labelWorkoutPlans": "Planos de treino",
"@labelWorkoutPlans": {
"description": "Title for screen workout plans"
},
"proteinShort": "P",
"@proteinShort": {
"description": "The first letter or short name of the word 'Protein', used in overviews"
},
"noWeightEntries": "Você não tem entradas de peso",
"@noWeightEntries": {
"description": "Message shown when the user has no logged weight entries"
},
"noNutritionalPlans": "Você não tem planos nutricionais",
"@noNutritionalPlans": {
"description": "Message shown when the user has no nutritional plans"
},
"goToDetailPage": "Ir para a página de detalhes",
"@goToDetailPage": {},
"labelWorkoutLogs": "Registros de treinos",
"@labelWorkoutLogs": {
"description": "(Workout) logs"
},
"aboutTranslationText": "Este aplicativo está traduzido no weblate. Se você também quiser ajudar, clique no link e comece a traduzir",
"@aboutTranslationText": {
"description": "Text for translation section in the about dialog"
},
"ingredient": "Ingrediente",
"@ingredient": {},
"measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'",
"@measurementCategoriesHelpText": {},
"rirNotUsed": "RiR não usado",
"@rirNotUsed": {
"description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log"
},
"todaysWorkout": "Seu treino hoje",
"@todaysWorkout": {},
"aboutSourceText": "Obtenha o código fonte deste aplicativo e seu servidor no github",
"@aboutSourceText": {
"description": "Text for source code section in the about dialog"
},
"kJ": "kJ",
"@kJ": {
"description": "Energy in a meal in kilo joules, kJ"
},
"sodium": "Sódio",
"@sodium": {},
"translation": "Tradução",
"@translation": {},
"successfullySaved": "Salvo",
"@successfullySaved": {
"description": "Message when an item was successfully saved"
},
"exerciseList": "Lista de exercícios",
"@exerciseList": {},
"energy": "Energia",
"@energy": {
"description": "Energy in a meal, ingredient etc. e.g. in kJ"
},
"newDay": "Novo dia",
"@newDay": {},
"toggleDetails": "Alterar detalhes",
"@toggleDetails": {
"description": "Switch to toggle detail / overview"
},
"musclesSecondary": "Músculos secundários",
"@musclesSecondary": {
"description": "secondary muscles trained by an exercise"
},
"aboutContactUsText": "Se você quiser bater um papo conosco, entre no servidor Discord e entre em contato",
"@aboutContactUsText": {
"description": "Text for contact us section in the about dialog"
},
"labelDashboard": "Painel",
"@labelDashboard": {
"description": "Title for screen dashboard"
},
"timeEnd": "Fim do tempo",
"@timeEnd": {
"description": "The end time of a workout"
},
"planned": "Planejado",
"@planned": {
"description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten"
},
"logHelpEntries": "Se em um mesmo dia houver mais de uma inscrição com o mesmo número de repetições, mas pesos diferentes, apenas a inscrição com maior peso será mostrada no diagrama.",
"@logHelpEntries": {},
"exerciseName": "Nome do exercício",
"@exerciseName": {
"description": "Label for the name of a workout exercise"
},
"labelBottomNavNutrition": "Nutrição",
"@labelBottomNavNutrition": {
"description": "Label used in bottom navigation, use a short word"
},
"language": "Linguagem",
"@language": {},
"nutritionalPlans": "Planos nutricionais",
"@nutritionalPlans": {},
"kcal": "kcal",
"@kcal": {
"description": "Energy in a meal in kilocalories, kcal"
},
"g": "g",
"@g": {
"description": "Abbreviation for gram"
},
"addMeal": "Adicionar refeição",
"@addMeal": {},
"sameRepetitions": "Se você fizer as mesmas repetições e peso para todas as séries, poderá preencher apenas uma linha. Por exemplo, para 4 séries basta inserir 10 para as repetições, isso automaticamente se torna \"4 x 10\".",
"@sameRepetitions": {},
"measurementEntriesHelpText": "A unidade usada para medir a categoria, como 'cm' ou '%'",
"@measurementEntriesHelpText": {},
"supersetWith": "superset com",
"@supersetWith": {
"description": "Text used between exercise cards when adding a new set. Translate as something like 'in a superset with'"
},
"sugars": "Açúcar",
"@sugars": {},
"aboutBugsTitle": "Tem um problema ou ideia?",
"@aboutBugsTitle": {
"description": "Title for bugs section in the about dialog"
},
"carbohydratesShort": "C",
"@carbohydratesShort": {
"description": "The first letter or short name of the word 'Carbohydrates', used in overviews"
},
"measurements": "Medidas",
"@measurements": {
"description": "Categories for the measurements such as biceps size, body fat, etc."
},
"macronutrients": "Macronutrientes",
"@macronutrients": {},
"plateCalculatorNotDivisible": "Não é possível atingir o peso com os pratos disponíveis",
"@plateCalculatorNotDivisible": {
"description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)"
},
"confirmDelete": "Tem certeza de que deseja excluir '{toDelete}'?",
"@confirmDelete": {
"description": "Confirmation text before the user deletes an object",
"type": "text",
"placeholders": {
"toDelete": {}
}
},
"gPerBodyKg": "g por kg corporal",
"@gPerBodyKg": {
"description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight"
},
"weekAverage": "Média de 7 dias",
"@weekAverage": {
"description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week"
},
"labelWorkoutPlan": "Plano de treino",
"@labelWorkoutPlan": {
"description": "Title for screen workout plan"
},
"category": "Categoria",
"@category": {
"description": "Category for an exercise, ingredient, etc."
},
"exercises": "Exercícios",
"@exercises": {
"description": "Multiple exercises for a workout"
},
"time": "Tempo",
"@time": {
"description": "The time of a meal or workout"
},
"calendar": "Calendário",
"@calendar": {},
"verify": "Verificar",
"@verify": {},
"workoutSession": "Sessão de treino",
"@workoutSession": {
"description": "A (logged) workout session"
},
"logHelpEntriesUnits": "Observe que apenas as entradas com uma unidade de peso (kg ou lb) e repetições são registradas; outras combinações, como tempo ou até a falha, são ignoradas aqui.",
"@logHelpEntriesUnits": {},
"aboutSourceTitle": "Código fonte",
"@aboutSourceTitle": {
"description": "Title for source code section in the about dialog"
},
"measurement": "Medição",
"@measurement": {}
}

View File

@@ -349,7 +349,6 @@ class WorkoutPlansProvider with ChangeNotifier {
'weightUnit': _weightUnits.map((e) => e.toJson()).toList(),
};
prefs.setString('workoutUnits', json.encode(exerciseData));
log(json.encode(exerciseData));
notifyListeners();
}

View File

@@ -13,7 +13,7 @@ import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
RivePlugin.register(with: registry.registrar(forPlugin: "RivePlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))

View File

@@ -495,10 +495,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev"
source: hosted
version: "2.0.2"
version: "2.0.3"
flutter_localizations:
dependency: "direct main"
description: flutter
@@ -537,10 +537,10 @@ packages:
dependency: "direct main"
description:
name: flutter_typeahead
sha256: a3539f7a90246b152f569029dedcf0b842532d3f2a440701b520e0bf2acbcf42
sha256: b9942bd5b7611a6ec3f0730c477146cffa4cd4b051077983ba67ddfc9e7ee818
url: "https://pub.dev"
source: hosted
version: "4.6.2"
version: "4.8.0"
flutter_web_plugins:
dependency: transitive
description: flutter
@@ -880,10 +880,10 @@ packages:
dependency: "direct main"
description:
name: package_info_plus
sha256: ceb027f6bc6a60674a233b4a90a7658af1aebdea833da0b5b53c1e9821a78c7b
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
version: "4.2.0"
package_info_plus_platform_interface:
dependency: transitive
description:
@@ -1064,10 +1064,10 @@ packages:
dependency: "direct main"
description:
name: shared_preferences
sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
version: "2.2.2"
shared_preferences_android:
dependency: transitive
description:
@@ -1373,10 +1373,10 @@ packages:
dependency: "direct main"
description:
name: video_player
sha256: "3fd106c74da32f336dc7feb65021da9b0207cb3124392935f1552834f7cce822"
sha256: "74b86e63529cf5885130c639d74cd2f9232e7c8a66cbecbddd1dcb9dbd060d1e"
url: "https://pub.dev"
source: hosted
version: "2.7.0"
version: "2.7.2"
video_player_android:
dependency: transitive
description:

View File

@@ -39,21 +39,21 @@ dependencies:
equatable: ^2.0.5
flutter_calendar_carousel: ^2.4.1
flutter_html: ^3.0.0-beta.2
flutter_typeahead: ^4.6.2
flutter_typeahead: ^4.8.0
font_awesome_flutter: ^10.4.0
http: ^0.13.5
image_picker: ^0.8.9
intl: ^0.17.0
json_annotation: ^4.8.1
version: ^3.0.2
package_info_plus: ^4.0.2
package_info_plus: ^4.2.0
provider: ^6.0.5
rive: ^0.11.4
shared_preferences: ^2.2.0
shared_preferences: ^2.2.2
table_calendar: ^3.0.8
url_launcher: ^6.1.11
flutter_barcode_scanner: ^2.0.0
video_player: ^2.7.0
video_player: ^2.7.2
flutter_staggered_grid_view: ^0.7.0
carousel_slider: ^4.2.1
multi_select_flutter: ^4.1.3
@@ -71,7 +71,7 @@ dev_dependencies:
json_serializable: ^6.6.2
mockito: ^5.4.0
network_image_mock: ^2.1.1
flutter_lints: ^2.0.2
flutter_lints: ^2.0.3
cider: ^0.1.6
flutter_icons: