From aa34e788ab051d40dc708b216857f4e07d234f0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ningu=C3=A9m=20Mesmo?= Date: Mon, 22 Sep 2025 19:50:56 +0200 Subject: [PATCH 01/26] Translated using Weblate (Portuguese) Currently translated at 100.0% (317 of 317 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/pt/ --- lib/l10n/app_pt.arb | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 26297cb3..8b826136 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -861,7 +861,7 @@ "@goalTypeAdvanced": { "description": "added for localization of Class GoalType's filed advanced" }, - "indicatorRaw": "Crua", + "indicatorRaw": "Crú", "@indicatorRaw": { "description": "added for localization of Class Indicator's field text" }, @@ -877,7 +877,7 @@ "@themeMode": {}, "darkMode": "Modo sempre escuro", "@darkMode": {}, - "settingsIngredientCacheDescription": "Princípio de cache", + "settingsIngredientCacheDescription": "Armazém de ingredientes", "@settingsIngredientCacheDescription": {}, "routines": "Rotinas", "@routines": {}, @@ -1010,5 +1010,19 @@ "setHasProgressionWarning": "Por favor, nota que, de momento, não é possível editar todos os valores para uma série na aplicação móvel ou configurar a progressão automática. Por agora, por favor, usa a aplicação web.", "@setHasProgressionWarning": {}, "startDate": "Data de início", - "@startDate": {} + "@startDate": {}, + "endDate": "Data de término", + "@endDate": { + "description": "The End date of a nutritional plan" + }, + "applicationLogs": "Registos da aplicação", + "@applicationLogs": {}, + "creationDate": "Data de início", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "openEnded": "Sem fim definido", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + } } From 73c64e2a027725e09ddb8442b9237647a678e81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Mon, 22 Sep 2025 16:40:20 +0200 Subject: [PATCH 02/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (317 of 317 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index ca28df05..3f1ec6fe 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1034,5 +1034,13 @@ "startDate": "Дата початку", "@startDate": {}, "applicationLogs": "Журнали програм", - "@applicationLogs": {} + "@applicationLogs": {}, + "creationDate": "Дата початку", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "openEnded": "Відкритий", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + } } From afc15b1369204cdf05a0b63f7865f01ecd0cc33a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ningu=C3=A9m=20Mesmo?= Date: Mon, 22 Sep 2025 21:43:04 +0200 Subject: [PATCH 03/26] Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (317 of 317 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/pt_PT/ --- lib/l10n/app_pt_PT.arb | 2132 ++++++++++++++++++++-------------------- 1 file changed, 1074 insertions(+), 1058 deletions(-) diff --git a/lib/l10n/app_pt_PT.arb b/lib/l10n/app_pt_PT.arb index a5a7c90e..bca6294f 100644 --- a/lib/l10n/app_pt_PT.arb +++ b/lib/l10n/app_pt_PT.arb @@ -1,1062 +1,1078 @@ { - "login": "Iniciar sessão", - "@login": { - "description": "Text for login button" - }, - "success": "Sucesso", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "noMatchingExerciseFound": "Não foram encontrados exercícios", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "labelDashboard": "Painel", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "exercise": "Exercício", - "@exercise": { - "description": "An exercise for a workout" - }, - "usernameValidChars": "O nome de utilizador só pode conter letras, números e os caracteres @, +, ., - e _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "searchNamesInEnglish": "Também procurar nomes em inglês", - "@searchNamesInEnglish": {}, - "useCustomServer": "Usar servidor personalizado", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "equipment": "Equipamento", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "userProfile": "O teu perfil", - "@userProfile": {}, - "register": "Registar", - "@register": { - "description": "Text for registration button" - }, - "comment": "Comentário", - "@comment": { - "description": "Comment, additional information" - }, - "customServerHint": "Introduz o endereço do teu próprio servidor, senão será usado o predefinido", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "useDefaultServer": "Usar servidor predefinido", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "invalidUrl": "Introduz um URL válido", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "passwordsDontMatch": "As palavras-passe não coincidem", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "passwordTooShort": "A palavra-passe é demasiado curta", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "selectAvailablePlates": "Selecionar discos disponíveis", - "@selectAvailablePlates": {}, - "barWeight": "Peso da barra", - "@barWeight": {}, - "useColors": "Usar cores", - "@useColors": {}, - "password": "Palavra-passe", - "@password": {}, - "confirmPassword": "Confirmar palavra-passe", - "@confirmPassword": {}, - "invalidEmail": "Introduz um e-mail válido", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "email": "Endereço de e-mail", - "@email": {}, - "username": "Nome de utilizador", - "@username": {}, - "invalidUsername": "Introduz um nome de utilizador válido", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "useApiToken": "Usar Token da API", - "@useApiToken": {}, - "useUsernameAndPassword": "Usar nome de utilizador e palavra-passe", - "@useUsernameAndPassword": {}, - "apiToken": "Token da API", - "@apiToken": {}, - "invalidApiToken": "Introduz uma chave API válida", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "apiTokenValidChars": "Uma chave API só pode conter letras de a-f, números de 0-9 e ter exatamente 40 caracteres", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - }, - "customServerUrl": "URL da instância wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "reset": "Repor", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "registerInstead": "Ainda não tens conta? Regista-te agora", - "@registerInstead": {}, - "loginInstead": "Já tens conta? Inicia sessão", - "@loginInstead": {}, - "labelBottomNavWorkout": "Treino", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavNutrition": "Nutrição", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelWorkoutLogs": "Registos de treino", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "labelWorkoutPlan": "Plano de treino", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "successfullyDeleted": "Eliminado", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "successfullySaved": "Guardado", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "exerciseList": "Lista de exercícios", - "@exerciseList": {}, - "exercises": "Exercícios", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Nome do exercício", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "searchExercise": "Procura um exercício para adicionar", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "muscles": "Músculos", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "musclesSecondary": "Músculos secundários", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "category": "Categoria", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "routines": "Rotinas", - "@routines": {}, - "newRoutine": "Nova rotina", - "@newRoutine": {}, - "noRoutines": "Ainda não tens rotinas", - "@noRoutines": {}, - "reps": "Repetições", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "sets": "Séries", - "@sets": { - "description": "The number of sets to be done for one exercise" - }, - "rir": "Repetições em Reserva", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "restTime": "Tempo de descanso", - "@restTime": {}, - "rirNotUsed": "ReR não utilizado", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "useMetric": "Usar unidades métricas para peso corporal", - "@useMetric": {}, - "weightUnit": "Unidade de peso", - "@weightUnit": {}, - "set": "Série", - "@set": { - "description": "A set in a workout plan" - }, - "needsLogsToAdvance": "Precisa de registos para avançar", - "@needsLogsToAdvance": {}, - "repetitionUnit": "Unidade de repetição", - "@repetitionUnit": {}, - "dayDescriptionHelp": "Descrição do que é feito neste dia (ex.: \"dia de puxar\") ou que músculos são treinados (ex.: \"peito e ombros\")", - "@dayDescriptionHelp": {}, - "exerciseNr": "Exercício {nr}", - "@exerciseNr": { - "description": "Header in form indicating the number of the current exercise. Can also be translated as something like 'Set Nr. xy'.", - "type": "text", - "placeholders": { - "nr": { - "type": "String" - } - } - }, - "supersetNr": "Superset {nr}", - "@supersetNr": { - "description": "Header in form indicating the number of the current exercise. Can also be translated as something like 'Superset Nr. xy'.", - "type": "text", - "placeholders": { - "nr": { - "type": "String" - } - } - }, - "sameRepetitions": "Se fizeres o mesmo número de repetições e peso em todas as séries, basta preencher uma linha. Por exemplo: para 4 séries de 10, escreve \"10\" e fica automaticamente \"4 x 10\".", - "@sameRepetitions": {}, - "impression": "Impressão", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "notes": "Notas", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "workoutSession": "Sessão de treino", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "isRestDayHelp": "Nota que todas as séries e exercícios serão removidos se marcares o dia como descanso.", - "@isRestDayHelp": {}, - "restDay": "Dia de descanso", - "@restDay": {}, - "isRestDay": "É dia de descanso", - "@isRestDay": {}, - "selectExercises": "Se quiseres fazer um superset, podes procurar vários exercícios - eles serão agrupados", - "@selectExercises": {}, - "gymMode": "Modo ginásio", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "plateCalculator": "Discos", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "plateCalculatorNotDivisible": "Não é possível atingir o peso com os discos disponíveis", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "pause": "Pausa", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "jumpTo": "Ir para", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "todaysWorkout": "O teu treino de hoje", - "@todaysWorkout": {}, - "logHelpEntries": "Se houver várias entradas no mesmo dia com o mesmo número de repetições mas pesos diferentes, só aparece no gráfico a de maior peso.", - "@logHelpEntries": {}, - "logHelpEntriesUnits": "Apenas são mostradas entradas com unidade de peso (kg ou lb) e repetições, outras como tempo ou até falhar são ignoradas.", - "@logHelpEntriesUnits": {}, - "description": "Descrição", - "@description": {}, - "name": "Nome", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "save": "Guardar", - "@save": {}, - "verify": "Verificar", - "@verify": {}, - "addSet": "Adicionar série", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Adicionar refeição", - "@addMeal": {}, - "mealLogged": "Refeição registada no diário", - "@mealLogged": {}, - "ingredientLogged": "Ingrediente registado no diário", - "@ingredientLogged": {}, - "logMeal": "Registar refeição no diário nutricional", - "@logMeal": {}, - "addIngredient": "Adicionar ingrediente", - "@addIngredient": {}, - "logIngredient": "Registar ingrediente no diário nutricional", - "@logIngredient": {}, - "searchIngredient": "Procurar ingrediente", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "nutritionalPlan": "Plano nutricional", - "@nutritionalPlan": {}, - "nutritionalDiary": "Diário nutricional", - "@nutritionalDiary": {}, - "nutritionalPlans": "Planos nutricionais", - "@nutritionalPlans": {}, - "noNutritionalPlans": "Ainda não tens planos nutricionais", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "onlyLogging": "Registar apenas calorias", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Marca esta opção se quiseres registar só as calorias, sem plano nutricional detalhado", - "@onlyLoggingHelpText": {}, - "goalMacro": "Objetivos de macronutrientes", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "selectMealToLog": "Seleciona uma refeição para registar no diário", - "@selectMealToLog": {}, - "yourCurrentNutritionPlanHasNoMealsDefinedYet": "O teu plano nutricional atual não tem refeições definidas", - "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { - "description": "Message shown when a nutrition plan doesn't have any meals" - }, - "toAddMealsToThePlanGoToNutritionalPlanDetails": "Para adicionar refeições ao plano, vai aos detalhes do plano nutricional", - "@toAddMealsToThePlanGoToNutritionalPlanDetails": { - "description": "Message shown to guide users to the nutritional plan details page to add meals" - }, - "goalEnergy": "Objetivo energético", - "@goalEnergy": {}, - "goalProtein": "Objetivo de proteína", - "@goalProtein": {}, - "goalCarbohydrates": "Objetivo de hidratos de carbono", - "@goalCarbohydrates": {}, - "goalFat": "Objetivo de gordura", - "@goalFat": {}, - "goalFiber": "Objetivo de fibra", - "@goalFiber": {}, - "anErrorOccurred": "Ocorreu um erro!", - "@anErrorOccurred": {}, - "errorInfoDescription": "Lamentamos, algo correu mal. Podes ajudar a corrigir isto ao reportar o problema no GitHub.", - "@errorInfoDescription": {}, - "errorInfoDescription2": "Podes continuar a usar a app, mas algumas funcionalidades podem não funcionar.", - "@errorInfoDescription2": {}, - "errorViewDetails": "Detalhes técnicos", - "@errorViewDetails": {}, - "errorCouldNotConnectToServer": "Não foi possível ligar ao servidor", - "@errorCouldNotConnectToServer": {}, - "copyToClipboard": "Copiar para a área de transferência", - "@copyToClipboard": {}, - "weight": "Peso", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "min": "Mín", - "@min": {}, - "max": "Máx", - "@max": {}, - "chartAllTimeTitle": "{name} total", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chart30DaysTitle": "{name} últimos 30 dias", - "@chart30DaysTitle": { - "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chartDuringPlanTitle": "{chartName} durante o plano nutricional {planName}", - "@chartDuringPlanTitle": { - "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", - "type": "text", - "placeholders": { - "chartName": { - "type": "String" - }, - "planName": { - "type": "String" - } - } - }, - "measurement": "Medição", - "@measurement": {}, - "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "Unidade usada para medir, como 'cm' ou '%'", - "@measurementEntriesHelpText": {}, - "date": "Data", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "value": "Valor", - "@value": { - "description": "The value of a measurement entry" - }, - "time": "Hora", - "@time": { - "description": "The time of a meal or workout" - }, - "timeStart": "Hora de início", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeEnd": "Hora de fim", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStartAhead": "Hora de início não pode ser depois da hora de fim", - "@timeStartAhead": {}, - "ingredient": "Ingrediente", - "@ingredient": {}, - "energy": "Energia", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "planned": "Planeado", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "logged": "Registado", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "today": "Hoje", - "@today": {}, - "loggedToday": "Registado hoje", - "@loggedToday": {}, - "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" - }, - "surplus": "excedente", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "défice", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "difference": "Diferença", - "@difference": {}, - "percentEnergy": "Percentagem da energia", - "@percentEnergy": {}, - "gPerBodyKg": "g por kg de corpo", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "total": "Total", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "gValue": "{value} g", - "@gValue": { - "description": "A value in grams, e.g. 5 g", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "logout": "Terminar sessão", - "@logout": { - "description": "Text for logout button" - }, - "noIngredientsDefined": "Ainda não há ingredientes definidos", - "@noIngredientsDefined": {}, - "routineDays": "Dias na rotina", - "@routineDays": {}, - "newDay": "Novo dia", - "@newDay": {}, - "newSet": "Nova série", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "kcalValue": "{value} kcal", - "@kcalValue": { - "description": "A value in kcal, e.g. 500 kcal", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "protein": "Proteína", - "@protein": {}, - "resultingRoutine": "Rotina resultante", - "@resultingRoutine": {}, - "errorCouldNotConnectToServerDetails": "A aplicação não conseguiu ligar ao servidor. Verifica a ligação à internet ou o URL do servidor e tenta outra vez. Se continuar, contacta o administrador do servidor.", - "@errorCouldNotConnectToServerDetails": {}, - "needsLogsToAdvanceHelp": "Seleciona se queres que a rotina avance para o próximo dia apenas se registares um treino", - "@needsLogsToAdvanceHelp": {}, - "start": "Início", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "macronutrients": "Macronutrientes", - "@macronutrients": {}, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "measurements": "Medições", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "percentValue": "{value} %", - "@percentValue": { - "description": "A value in percent, e.g. 10 %", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "carbohydrates": "Hidratos de carbono", - "@carbohydrates": {}, - "carbohydratesShort": "C", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "sugars": "Açúcares", - "@sugars": {}, - "fat": "Gordura", - "@fat": {}, - "fatShort": "F", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "fiber": "Fibras", - "@fiber": {}, - "sodium": "Sódio", - "@sodium": {}, - "amount": "Quantidade", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "unit": "Unidade", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "newEntry": "Nova entrada", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "noMeasurementEntries": "Ainda não tens registos de medições", - "@noMeasurementEntries": {}, - "aboutDescription": "Obrigado por usares o wger! O wger é um projeto colaborativo de código aberto, feito por fãs de fitness de todo o mundo.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "aboutDonateTitle": "Fazer um donativo", - "@aboutDonateTitle": {}, - "aboutDonateText": "Apesar de gratuito e assim continuará, manter o servidor tem custos! O desenvolvimento também exige muito tempo dos voluntários. A tua ajuda apoia diretamente estes custos.", - "@aboutDonateText": {}, - "aboutContributeTitle": "Contribuir", - "@aboutContributeTitle": {}, - "aboutContributeText": "Todos os tipos de contribuição são bem-vindos. Sejas programador, tradutor ou apenas apaixonado por fitness, toda a ajuda conta!", - "@aboutContributeText": {}, - "aboutBugsListTitle": "Reportar um problema ou sugerir uma funcionalidade", - "@aboutBugsListTitle": {}, - "aboutTranslationListTitle": "Traduzir a aplicação", - "@aboutTranslationListTitle": {}, - "aboutSourceListTitle": "Ver código-fonte", - "@aboutSourceListTitle": {}, - "aboutJoinCommunityTitle": "Junta-te à comunidade", - "@aboutJoinCommunityTitle": {}, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "aboutDiscordTitle": "Discord", - "@aboutDiscordTitle": {}, - "others": "Outros", - "@others": {}, - "calendar": "Calendário", - "@calendar": {}, - "goToToday": "Ir para hoje", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "enterValue": "Introduz um valor", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "selectEntry": "Seleciona uma entrada", - "@selectEntry": {}, - "selectExercise": "Seleciona um exercício", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterCharacters": "Escreve entre {min} e {max} caracteres", - "@enterCharacters": { - "description": "Error message when the user hasn't entered the correct number of characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - }, - "max": { - "type": "String" - } - } - }, - "enterMinCharacters": "Escreve pelo menos {min} caracteres", - "@enterMinCharacters": { - "description": "Error message when the user hasn't entered the minimum amount characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - } - } - }, - "baseNameEnglish": "Todos os exercícios precisam de nome base em inglês", - "@baseNameEnglish": {}, - "nrOfSets": "Séries por exercício: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "optionsLabel": "Opções", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "takePicture": "Tirar foto", - "@takePicture": {}, - "chooseFromLibrary": "Escolher da galeria", - "@chooseFromLibrary": {}, - "gallery": "Galeria", - "@gallery": {}, - "addImage": "Adicionar imagem", - "@addImage": {}, - "appUpdateContent": "Esta versão da aplicação não é compatível com o servidor. Por favor, atualiza a aplicação.", - "@appUpdateContent": {}, - "productNotFoundDescription": "O produto com o código {barcode} não foi encontrado na base de dados wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Ler código de barras", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Fechar", - "@close": { - "description": "Translation for close" - }, - "add_exercise_image_license": "Imagens têm de ser compatíveis com a licença CC BY SA. Se tiveres dúvidas, usa apenas fotos tiradas por ti.", - "@add_exercise_image_license": {}, - "variations": "Variações", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "verifiedEmail": "E-mail verificado", - "@verifiedEmail": {}, - "verifiedEmailReason": "Tens de verificar o e-mail para poderes contribuir com exercícios", - "@verifiedEmailReason": {}, - "verifiedEmailInfo": "Foi enviado um e-mail de verificação para {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "alternativeNames": "Nomes alternativos", - "@alternativeNames": {}, - "oneNamePerLine": "Um nome por linha", - "@oneNamePerLine": {}, - "whatVariationsExist": "Que variações deste exercício existem (se houver)?", - "@whatVariationsExist": {}, - "previous": "Anterior", - "@previous": {}, - "next": "Seguinte", - "@next": {}, - "images": "Imagens", - "@images": {}, - "language": "Idioma", - "@language": {}, - "addExercise": "Adicionar exercício", - "@addExercise": {}, - "fitInWeek": "Ajustar à semana", - "@fitInWeek": {}, - "toggleDetails": "Mostrar detalhes", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "edit": "Editar", - "@edit": {}, - "aboutWhySupportTitle": "Código aberto e gratuito ❤️", - "@aboutWhySupportTitle": {}, - "goToDetailPage": "Ir para a página de detalhes", - "@goToDetailPage": {}, - "productFound": "Produto encontrado", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "unVerifiedEmail": "E-mail não verificado", - "@unVerifiedEmail": {}, - "moreMeasurementEntries": "Adicionar nova medição", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "selectIngredient": "Seleciona um ingrediente", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "newNutritionalPlan": "Novo plano nutricional", - "@newNutritionalPlan": {}, - "setUnitsAndRir": "Unidades de série e ReR", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "saturatedFat": "Gordura saturada", - "@saturatedFat": {}, - "selectImage": "Seleciona uma imagem", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "appUpdateTitle": "Atualização necessária", - "@appUpdateTitle": {}, - "noWeightEntries": "Ainda não tens registos de peso", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "confirmDelete": "Tens a certeza que queres eliminar '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "recentlyUsedIngredients": "Ingredientes adicionados recentemente", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "loadingText": "A carregar...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "delete": "Eliminar", - "@delete": {}, - "productNotFound": "Produto não encontrado", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "enterValidNumber": "Introduz um número válido", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "dataCopied": "Dados copiados para nova entrada", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "productFoundDescription": "O código de barras corresponde a este produto: {productName}. Queres continuar?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "alsoKnownAs": "Também conhecido como: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "login": "Iniciar sessão", + "@login": { + "description": "Text for login button" }, - "description": "List of alternative names for an exercise" - }, - "fitInWeekHelp": "Se ativado, os dias repetem-se semanalmente. Caso contrário, seguem-se em sequência sem respeitar o início da semana.", - "@fitInWeekHelp": {}, - "addSuperset": "Adicionar Superset", - "@addSuperset": {}, - "setHasProgression": "Série com progressão", - "@setHasProgression": {}, - "setHasProgressionWarning": "De momento não é possível editar todas as definições de uma série na app móvel ou configurar progressões automáticas. Usa a versão web.", - "@setHasProgressionWarning": {}, - "setHasNoExercises": "Esta série ainda não tem exercícios!", - "@setHasNoExercises": {}, - "contributeExercise": "Contribuir com um exercício", - "@contributeExercise": {}, - "translation": "Tradução", - "@translation": {}, - "translateExercise": "Traduz este exercício agora", - "@translateExercise": {}, - "baseData": "Básico em inglês", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "settingsTitle": "Definições", - "@settingsTitle": {}, - "settingsCacheTitle": "Cache", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Cache de exercícios", - "@settingsExerciseCacheDescription": {}, - "settingsIngredientCacheDescription": "Cache de ingredientes", - "@settingsIngredientCacheDescription": {}, - "settingsCacheDeletedSnackbar": "Cache limpo com sucesso", - "@settingsCacheDeletedSnackbar": {}, - "aboutPageTitle": "Sobre nós & Apoio", - "@aboutPageTitle": {}, - "contributeExerciseWarning": "Só podes contribuir com exercícios se a tua conta tiver mais de {days} dias e e-mail verificado", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } + "success": "Sucesso", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "noMatchingExerciseFound": "Não foram encontrados exercícios", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "labelDashboard": "Painel", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "exercise": "Exercício", + "@exercise": { + "description": "An exercise for a workout" + }, + "usernameValidChars": "O nome de utilizador só pode conter letras, números e os caracteres @, +, ., - e _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "searchNamesInEnglish": "Também procurar nomes em inglês", + "@searchNamesInEnglish": {}, + "useCustomServer": "Usar servidor personalizado", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "equipment": "Equipamento", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "userProfile": "O teu perfil", + "@userProfile": {}, + "register": "Registar", + "@register": { + "description": "Text for registration button" + }, + "comment": "Comentário", + "@comment": { + "description": "Comment, additional information" + }, + "customServerHint": "Introduz o endereço do teu próprio servidor, senão será usado o predefinido", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "useDefaultServer": "Usar servidor predefinido", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "invalidUrl": "Introduz um URL válido", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "passwordsDontMatch": "As palavras-passe não coincidem", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "A palavra-passe é demasiado curta", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "selectAvailablePlates": "Selecionar discos disponíveis", + "@selectAvailablePlates": {}, + "barWeight": "Peso da barra", + "@barWeight": {}, + "useColors": "Usar cores", + "@useColors": {}, + "password": "Palavra-passe", + "@password": {}, + "confirmPassword": "Confirmar palavra-passe", + "@confirmPassword": {}, + "invalidEmail": "Introduz um e-mail válido", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "Endereço de e-mail", + "@email": {}, + "username": "Nome de utilizador", + "@username": {}, + "invalidUsername": "Introduz um nome de utilizador válido", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "useApiToken": "Usar Token da API", + "@useApiToken": {}, + "useUsernameAndPassword": "Usar nome de utilizador e palavra-passe", + "@useUsernameAndPassword": {}, + "apiToken": "Token da API", + "@apiToken": {}, + "invalidApiToken": "Introduz uma chave API válida", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "Uma chave API só pode conter letras de a-f, números de 0-9 e ter exatamente 40 caracteres", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "customServerUrl": "URL da instância wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "reset": "Repor", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "registerInstead": "Ainda não tens conta? Regista-te agora", + "@registerInstead": {}, + "loginInstead": "Já tens conta? Inicia sessão", + "@loginInstead": {}, + "labelBottomNavWorkout": "Treino", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "Nutrição", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "Registos de treino", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "Plano de treino", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "successfullyDeleted": "Eliminado", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "successfullySaved": "Guardado", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exerciseList": "Lista de exercícios", + "@exerciseList": {}, + "exercises": "Exercícios", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Nome do exercício", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "searchExercise": "Procura um exercício para adicionar", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "muscles": "Músculos", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "musclesSecondary": "Músculos secundários", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "category": "Categoria", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "routines": "Rotinas", + "@routines": {}, + "newRoutine": "Nova rotina", + "@newRoutine": {}, + "noRoutines": "Ainda não tens rotinas", + "@noRoutines": {}, + "reps": "Repetições", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "sets": "Séries", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "rir": "Repetições em Reserva", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "restTime": "Tempo de descanso", + "@restTime": {}, + "rirNotUsed": "ReR não utilizado", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "useMetric": "Usar unidades métricas para peso corporal", + "@useMetric": {}, + "weightUnit": "Unidade de peso", + "@weightUnit": {}, + "set": "Série", + "@set": { + "description": "A set in a workout plan" + }, + "needsLogsToAdvance": "Precisa de registos para avançar", + "@needsLogsToAdvance": {}, + "repetitionUnit": "Unidade de repetição", + "@repetitionUnit": {}, + "dayDescriptionHelp": "Descrição do que é feito neste dia (ex.: \"dia de puxar\") ou que músculos são treinados (ex.: \"peito e ombros\")", + "@dayDescriptionHelp": {}, + "exerciseNr": "Exercício {nr}", + "@exerciseNr": { + "description": "Header in form indicating the number of the current exercise. Can also be translated as something like 'Set Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "supersetNr": "Superset {nr}", + "@supersetNr": { + "description": "Header in form indicating the number of the current exercise. Can also be translated as something like 'Superset Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "sameRepetitions": "Se fizeres o mesmo número de repetições e peso em todas as séries, basta preencher uma linha. Por exemplo: para 4 séries de 10, escreve \"10\" e fica automaticamente \"4 x 10\".", + "@sameRepetitions": {}, + "impression": "Impressão", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "notes": "Notas", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "workoutSession": "Sessão de treino", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "isRestDayHelp": "Nota que todas as séries e exercícios serão removidos se marcares o dia como descanso.", + "@isRestDayHelp": {}, + "restDay": "Dia de descanso", + "@restDay": {}, + "isRestDay": "É dia de descanso", + "@isRestDay": {}, + "selectExercises": "Se quiseres fazer um superset, podes procurar vários exercícios - eles serão agrupados", + "@selectExercises": {}, + "gymMode": "Modo ginásio", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculator": "Discos", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Não é possível atingir o peso com os discos disponíveis", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "Pausa", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "jumpTo": "Ir para", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "todaysWorkout": "O teu treino de hoje", + "@todaysWorkout": {}, + "logHelpEntries": "Se houver várias entradas no mesmo dia com o mesmo número de repetições mas pesos diferentes, só aparece no gráfico a de maior peso.", + "@logHelpEntries": {}, + "logHelpEntriesUnits": "Apenas são mostradas entradas com unidade de peso (kg ou lb) e repetições, outras como tempo ou até falhar são ignoradas.", + "@logHelpEntriesUnits": {}, + "description": "Descrição", + "@description": {}, + "name": "Nome", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "save": "Guardar", + "@save": {}, + "verify": "Verificar", + "@verify": {}, + "addSet": "Adicionar série", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Adicionar refeição", + "@addMeal": {}, + "mealLogged": "Refeição registada no diário", + "@mealLogged": {}, + "ingredientLogged": "Ingrediente registado no diário", + "@ingredientLogged": {}, + "logMeal": "Registar refeição no diário nutricional", + "@logMeal": {}, + "addIngredient": "Adicionar ingrediente", + "@addIngredient": {}, + "logIngredient": "Registar ingrediente no diário nutricional", + "@logIngredient": {}, + "searchIngredient": "Procurar ingrediente", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalPlan": "Plano nutricional", + "@nutritionalPlan": {}, + "nutritionalDiary": "Diário nutricional", + "@nutritionalDiary": {}, + "nutritionalPlans": "Planos nutricionais", + "@nutritionalPlans": {}, + "noNutritionalPlans": "Ainda não tens planos nutricionais", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "onlyLogging": "Registar apenas calorias", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Marca esta opção se quiseres registar só as calorias, sem plano nutricional detalhado", + "@onlyLoggingHelpText": {}, + "goalMacro": "Objetivos de macronutrientes", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Seleciona uma refeição para registar no diário", + "@selectMealToLog": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "O teu plano nutricional atual não tem refeições definidas", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Para adicionar refeições ao plano, vai aos detalhes do plano nutricional", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "goalEnergy": "Objetivo energético", + "@goalEnergy": {}, + "goalProtein": "Objetivo de proteína", + "@goalProtein": {}, + "goalCarbohydrates": "Objetivo de hidratos de carbono", + "@goalCarbohydrates": {}, + "goalFat": "Objetivo de gordura", + "@goalFat": {}, + "goalFiber": "Objetivo de fibra", + "@goalFiber": {}, + "anErrorOccurred": "Ocorreu um erro!", + "@anErrorOccurred": {}, + "errorInfoDescription": "Lamentamos, algo correu mal. Podes ajudar a corrigir isto ao reportar o problema no GitHub.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Podes continuar a usar a app, mas algumas funcionalidades podem não funcionar.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Detalhes técnicos", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "Não foi possível ligar ao servidor", + "@errorCouldNotConnectToServer": {}, + "copyToClipboard": "Copiar para a área de transferência", + "@copyToClipboard": {}, + "weight": "Peso", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "min": "Mín", + "@min": {}, + "max": "Máx", + "@max": {}, + "chartAllTimeTitle": "{name} total", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chart30DaysTitle": "{name} últimos 30 dias", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartDuringPlanTitle": "{chartName} durante o plano nutricional {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "measurement": "Medição", + "@measurement": {}, + "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "Unidade usada para medir, como 'cm' ou '%'", + "@measurementEntriesHelpText": {}, + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "value": "Valor", + "@value": { + "description": "The value of a measurement entry" + }, + "time": "Hora", + "@time": { + "description": "The time of a meal or workout" + }, + "timeStart": "Hora de início", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "Hora de fim", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStartAhead": "Hora de início não pode ser depois da hora de fim", + "@timeStartAhead": {}, + "ingredient": "Ingrediente", + "@ingredient": {}, + "energy": "Energia", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "planned": "Planeado", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "logged": "Registado", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "today": "Hoje", + "@today": {}, + "loggedToday": "Registado hoje", + "@loggedToday": {}, + "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" + }, + "surplus": "excedente", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "défice", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "difference": "Diferença", + "@difference": {}, + "percentEnergy": "Percentagem da energia", + "@percentEnergy": {}, + "gPerBodyKg": "g por kg de corpo", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "total": "Total", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "gValue": "{value} g", + "@gValue": { + "description": "A value in grams, e.g. 5 g", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "logout": "Terminar sessão", + "@logout": { + "description": "Text for logout button" + }, + "noIngredientsDefined": "Ainda não há ingredientes definidos", + "@noIngredientsDefined": {}, + "routineDays": "Dias na rotina", + "@routineDays": {}, + "newDay": "Novo dia", + "@newDay": {}, + "newSet": "Nova série", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "kcalValue": "{value} kcal", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "protein": "Proteína", + "@protein": {}, + "resultingRoutine": "Rotina resultante", + "@resultingRoutine": {}, + "errorCouldNotConnectToServerDetails": "A aplicação não conseguiu ligar ao servidor. Verifica a ligação à internet ou o URL do servidor e tenta outra vez. Se continuar, contacta o administrador do servidor.", + "@errorCouldNotConnectToServerDetails": {}, + "needsLogsToAdvanceHelp": "Seleciona se queres que a rotina avance para o próximo dia apenas se registares um treino", + "@needsLogsToAdvanceHelp": {}, + "start": "Início", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "macronutrients": "Macronutrientes", + "@macronutrients": {}, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "measurements": "Medições", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "percentValue": "{value} %", + "@percentValue": { + "description": "A value in percent, e.g. 10 %", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "carbohydrates": "Hidratos de carbono", + "@carbohydrates": {}, + "carbohydratesShort": "C", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "sugars": "Açúcares", + "@sugars": {}, + "fat": "Gordura", + "@fat": {}, + "fatShort": "F", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "fiber": "Fibras", + "@fiber": {}, + "sodium": "Sódio", + "@sodium": {}, + "amount": "Quantidade", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "unit": "Unidade", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "newEntry": "Nova entrada", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "noMeasurementEntries": "Ainda não tens registos de medições", + "@noMeasurementEntries": {}, + "aboutDescription": "Obrigado por usares o wger! O wger é um projeto colaborativo de código aberto, feito por fãs de fitness de todo o mundo.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "aboutDonateTitle": "Fazer um donativo", + "@aboutDonateTitle": {}, + "aboutDonateText": "Apesar de gratuito e assim continuará, manter o servidor tem custos! O desenvolvimento também exige muito tempo dos voluntários. A tua ajuda apoia diretamente estes custos.", + "@aboutDonateText": {}, + "aboutContributeTitle": "Contribuir", + "@aboutContributeTitle": {}, + "aboutContributeText": "Todos os tipos de contribuição são bem-vindos. Sejas programador, tradutor ou apenas apaixonado por fitness, toda a ajuda conta!", + "@aboutContributeText": {}, + "aboutBugsListTitle": "Reportar um problema ou sugerir uma funcionalidade", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Traduzir a aplicação", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Ver código-fonte", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Junta-te à comunidade", + "@aboutJoinCommunityTitle": {}, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Outros", + "@others": {}, + "calendar": "Calendário", + "@calendar": {}, + "goToToday": "Ir para hoje", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "enterValue": "Introduz um valor", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "selectEntry": "Seleciona uma entrada", + "@selectEntry": {}, + "selectExercise": "Seleciona um exercício", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterCharacters": "Escreve entre {min} e {max} caracteres", + "@enterCharacters": { + "description": "Error message when the user hasn't entered the correct number of characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + }, + "max": { + "type": "String" + } + } + }, + "enterMinCharacters": "Escreve pelo menos {min} caracteres", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "baseNameEnglish": "Todos os exercícios precisam de nome base em inglês", + "@baseNameEnglish": {}, + "nrOfSets": "Séries por exercício: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "optionsLabel": "Opções", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "takePicture": "Tirar foto", + "@takePicture": {}, + "chooseFromLibrary": "Escolher da galeria", + "@chooseFromLibrary": {}, + "gallery": "Galeria", + "@gallery": {}, + "addImage": "Adicionar imagem", + "@addImage": {}, + "appUpdateContent": "Esta versão da aplicação não é compatível com o servidor. Por favor, atualiza a aplicação.", + "@appUpdateContent": {}, + "productNotFoundDescription": "O produto com o código {barcode} não foi encontrado na base de dados wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Ler código de barras", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Fechar", + "@close": { + "description": "Translation for close" + }, + "add_exercise_image_license": "Imagens têm de ser compatíveis com a licença CC BY SA. Se tiveres dúvidas, usa apenas fotos tiradas por ti.", + "@add_exercise_image_license": {}, + "variations": "Variações", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "verifiedEmail": "E-mail verificado", + "@verifiedEmail": {}, + "verifiedEmailReason": "Tens de verificar o e-mail para poderes contribuir com exercícios", + "@verifiedEmailReason": {}, + "verifiedEmailInfo": "Foi enviado um e-mail de verificação para {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "alternativeNames": "Nomes alternativos", + "@alternativeNames": {}, + "oneNamePerLine": "Um nome por linha", + "@oneNamePerLine": {}, + "whatVariationsExist": "Que variações deste exercício existem (se houver)?", + "@whatVariationsExist": {}, + "previous": "Anterior", + "@previous": {}, + "next": "Seguinte", + "@next": {}, + "images": "Imagens", + "@images": {}, + "language": "Idioma", + "@language": {}, + "addExercise": "Adicionar exercício", + "@addExercise": {}, + "fitInWeek": "Ajustar à semana", + "@fitInWeek": {}, + "toggleDetails": "Mostrar detalhes", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "edit": "Editar", + "@edit": {}, + "aboutWhySupportTitle": "Código aberto e gratuito ❤️", + "@aboutWhySupportTitle": {}, + "goToDetailPage": "Ir para a página de detalhes", + "@goToDetailPage": {}, + "productFound": "Produto encontrado", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "unVerifiedEmail": "E-mail não verificado", + "@unVerifiedEmail": {}, + "moreMeasurementEntries": "Adicionar nova medição", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "selectIngredient": "Seleciona um ingrediente", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "newNutritionalPlan": "Novo plano nutricional", + "@newNutritionalPlan": {}, + "setUnitsAndRir": "Unidades de série e ReR", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "saturatedFat": "Gordura saturada", + "@saturatedFat": {}, + "selectImage": "Seleciona uma imagem", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "appUpdateTitle": "Atualização necessária", + "@appUpdateTitle": {}, + "noWeightEntries": "Ainda não tens registos de peso", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "confirmDelete": "Tens a certeza que queres eliminar '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "recentlyUsedIngredients": "Ingredientes adicionados recentemente", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "loadingText": "A carregar...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "delete": "Eliminar", + "@delete": {}, + "productNotFound": "Produto não encontrado", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "enterValidNumber": "Introduz um número válido", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "dataCopied": "Dados copiados para nova entrada", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "productFoundDescription": "O código de barras corresponde a este produto: {productName}. Queres continuar?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "alsoKnownAs": "Também conhecido como: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "fitInWeekHelp": "Se ativado, os dias repetem-se semanalmente. Caso contrário, seguem-se em sequência sem respeitar o início da semana.", + "@fitInWeekHelp": {}, + "addSuperset": "Adicionar Superset", + "@addSuperset": {}, + "setHasProgression": "Série com progressão", + "@setHasProgression": {}, + "setHasProgressionWarning": "De momento não é possível editar todas as definições de uma série na app móvel ou configurar progressões automáticas. Usa a versão web.", + "@setHasProgressionWarning": {}, + "setHasNoExercises": "Esta série ainda não tem exercícios!", + "@setHasNoExercises": {}, + "contributeExercise": "Contribuir com um exercício", + "@contributeExercise": {}, + "translation": "Tradução", + "@translation": {}, + "translateExercise": "Traduz este exercício agora", + "@translateExercise": {}, + "baseData": "Básico em inglês", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "settingsTitle": "Definições", + "@settingsTitle": {}, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Cache de exercícios", + "@settingsExerciseCacheDescription": {}, + "settingsIngredientCacheDescription": "Cache de ingredientes", + "@settingsIngredientCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Cache limpo com sucesso", + "@settingsCacheDeletedSnackbar": {}, + "aboutPageTitle": "Sobre nós & Apoio", + "@aboutPageTitle": {}, + "contributeExerciseWarning": "Só podes contribuir com exercícios se a tua conta tiver mais de {days} dias e e-mail verificado", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "simpleMode": "Modo simples", + "@simpleMode": {}, + "simpleModeHelp": "Esconder opções mais avançadas ao editar exercícios", + "@simpleModeHelp": {}, + "progressionRules": "Este exercício tem regras de progressão e não pode ser editado na app. Usa a versão web para o editar.", + "@progressionRules": {}, + "cacheWarning": "Por causa da cache, pode demorar um pouco até veres as alterações na app.", + "@cacheWarning": {}, + "textPromptTitle": "Pronto para começar?", + "@textPromptTitle": {}, + "textPromptSubheading": "Clica no botão de ação para começar", + "@textPromptSubheading": {}, + "abs": "Abdominais", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "arms": "Braços", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "back": "Costas", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "barbell": "Barra olímpica", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "bench": "Banco", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "biceps": "Bíceps", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "body_weight": "Peso corporal", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "calves": "Gémeos", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "cardio": "Cardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Peito", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Halteres", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Glúteos", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "Tapete de ginásio", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "hamstrings": "Isquiotibiais", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "incline_bench": "Banco inclinado", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Kettlebell", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Quilómetros", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Km/h", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Dorsais", + "@lats": { + "description": "Generated entry for translation for server strings" + }, + "legs": "Pernas", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "lower_back": "Zona lombar", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Repetições máximas", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Milhas", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Mi/h", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Minutos", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Discos", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "pull_up_bar": "Barra de elevações", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Quadríceps", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "repetitions": "Repetições", + "@repetitions": { + "description": "Generated entry for translation for server strings" + }, + "resistance_band": "Banda de resistência", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "sz_bar": "Barra SZ", + "@sz_bar": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "Segundos", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Ombros", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "swiss_ball": "Bola suíça", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Tríceps", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "Até falhar", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "nenhum (exercício com peso corporal)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "log": "Registar", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Concluído", + "@done": {}, + "overallChangeWeight": "Alteração total", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Das refeições", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeBasic": "Básico", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Avançado", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "cru", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "média", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "Modo de tema", + "@themeMode": {}, + "darkMode": "Modo escuro sempre", + "@darkMode": {}, + "lightMode": "Modo claro sempre", + "@lightMode": {}, + "systemMode": "Usar definições do sistema", + "@systemMode": {}, + "endDate": "Data de término", + "@endDate": { + "description": "The End date of a nutritional plan" + }, + "startDate": "Data de início", + "@startDate": {}, + "applicationLogs": "Registos da aplicação", + "@applicationLogs": {}, + "creationDate": "Data de início", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "openEnded": "Sem fim definido", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" } - }, - "simpleMode": "Modo simples", - "@simpleMode": {}, - "simpleModeHelp": "Esconder opções mais avançadas ao editar exercícios", - "@simpleModeHelp": {}, - "progressionRules": "Este exercício tem regras de progressão e não pode ser editado na app. Usa a versão web para o editar.", - "@progressionRules": {}, - "cacheWarning": "Por causa da cache, pode demorar um pouco até veres as alterações na app.", - "@cacheWarning": {}, - "textPromptTitle": "Pronto para começar?", - "@textPromptTitle": {}, - "textPromptSubheading": "Clica no botão de ação para começar", - "@textPromptSubheading": {}, - "abs": "Abdominais", - "@abs": { - "description": "Generated entry for translation for server strings" - }, - "arms": "Braços", - "@arms": { - "description": "Generated entry for translation for server strings" - }, - "back": "Costas", - "@back": { - "description": "Generated entry for translation for server strings" - }, - "barbell": "Barra olímpica", - "@barbell": { - "description": "Generated entry for translation for server strings" - }, - "bench": "Banco", - "@bench": { - "description": "Generated entry for translation for server strings" - }, - "biceps": "Bíceps", - "@biceps": { - "description": "Generated entry for translation for server strings" - }, - "body_weight": "Peso corporal", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "calves": "Gémeos", - "@calves": { - "description": "Generated entry for translation for server strings" - }, - "cardio": "Cardio", - "@cardio": { - "description": "Generated entry for translation for server strings" - }, - "chest": "Peito", - "@chest": { - "description": "Generated entry for translation for server strings" - }, - "dumbbell": "Halteres", - "@dumbbell": { - "description": "Generated entry for translation for server strings" - }, - "glutes": "Glúteos", - "@glutes": { - "description": "Generated entry for translation for server strings" - }, - "gym_mat": "Tapete de ginásio", - "@gym_mat": { - "description": "Generated entry for translation for server strings" - }, - "hamstrings": "Isquiotibiais", - "@hamstrings": { - "description": "Generated entry for translation for server strings" - }, - "incline_bench": "Banco inclinado", - "@incline_bench": { - "description": "Generated entry for translation for server strings" - }, - "kettlebell": "Kettlebell", - "@kettlebell": { - "description": "Generated entry for translation for server strings" - }, - "kilometers": "Quilómetros", - "@kilometers": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Km/h", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "lats": "Dorsais", - "@lats": { - "description": "Generated entry for translation for server strings" - }, - "legs": "Pernas", - "@legs": { - "description": "Generated entry for translation for server strings" - }, - "lower_back": "Zona lombar", - "@lower_back": { - "description": "Generated entry for translation for server strings" - }, - "max_reps": "Repetições máximas", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "miles": "Milhas", - "@miles": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Mi/h", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "minutes": "Minutos", - "@minutes": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Discos", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "pull_up_bar": "Barra de elevações", - "@pull_up_bar": { - "description": "Generated entry for translation for server strings" - }, - "quads": "Quadríceps", - "@quads": { - "description": "Generated entry for translation for server strings" - }, - "repetitions": "Repetições", - "@repetitions": { - "description": "Generated entry for translation for server strings" - }, - "resistance_band": "Banda de resistência", - "@resistance_band": { - "description": "Generated entry for translation for server strings" - }, - "sz_bar": "Barra SZ", - "@sz_bar": { - "description": "Generated entry for translation for server strings" - }, - "seconds": "Segundos", - "@seconds": { - "description": "Generated entry for translation for server strings" - }, - "shoulders": "Ombros", - "@shoulders": { - "description": "Generated entry for translation for server strings" - }, - "swiss_ball": "Bola suíça", - "@swiss_ball": { - "description": "Generated entry for translation for server strings" - }, - "triceps": "Tríceps", - "@triceps": { - "description": "Generated entry for translation for server strings" - }, - "until_failure": "Até falhar", - "@until_failure": { - "description": "Generated entry for translation for server strings" - }, - "kg": "kg", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "lb": "lb", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "none__bodyweight_exercise_": "nenhum (exercício com peso corporal)", - "@none__bodyweight_exercise_": { - "description": "Generated entry for translation for server strings" - }, - "log": "Registar", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Concluído", - "@done": {}, - "overallChangeWeight": "Alteração total", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "Das refeições", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "goalTypeBasic": "Básico", - "@goalTypeBasic": { - "description": "added for localization of Class GoalType's filed basic" - }, - "goalTypeAdvanced": "Avançado", - "@goalTypeAdvanced": { - "description": "added for localization of Class GoalType's filed advanced" - }, - "indicatorRaw": "cru", - "@indicatorRaw": { - "description": "added for localization of Class Indicator's field text" - }, - "indicatorAvg": "média", - "@indicatorAvg": { - "description": "added for localization of Class Indicator's field text" - }, - "themeMode": "Modo de tema", - "@themeMode": {}, - "darkMode": "Modo escuro sempre", - "@darkMode": {}, - "lightMode": "Modo claro sempre", - "@lightMode": {}, - "systemMode": "Usar definições do sistema", - "@systemMode": {} } From 51efdf73bf84f90dd4bf139a4f54bbb98c8069e0 Mon Sep 17 00:00:00 2001 From: Pablo Sarabia Ortiz Date: Thu, 25 Sep 2025 09:24:35 +0200 Subject: [PATCH 04/26] Translated using Weblate (Spanish) Currently translated at 100.0% (317 of 317 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/es/ --- lib/l10n/app_es.arb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 312bb16a..1a750806 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -1036,5 +1036,13 @@ "setHasProgressionWarning": "Tenga en cuenta que, por el momento, no es posible editar todos los ajustes de un set en la aplicación móvil ni configurar la progresión automática. Por ahora, utilice la aplicación web.", "@setHasProgressionWarning": {}, "applicationLogs": "Registro de la aplicación", - "@applicationLogs": {} + "@applicationLogs": {}, + "creationDate": "Fecha de comienzo", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "openEnded": "Indefinido", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + } } From ac0783936e443b52c6b7df05be74a46585fb66ab Mon Sep 17 00:00:00 2001 From: Federico Date: Sun, 28 Sep 2025 21:56:38 +0200 Subject: [PATCH 05/26] Translated using Weblate (Italian) Currently translated at 100.0% (321 of 321 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/it/ --- lib/l10n/app_it.arb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index d45f77f7..af04ec18 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -1076,5 +1076,23 @@ "aboutDiscordTitle": "Discord", "@aboutDiscordTitle": {}, "fitInWeek": "Settimana Fit in", - "@fitInWeek": {} + "@fitInWeek": {}, + "creationDate": "Data di inizio", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "openEnded": "Senza fine", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + }, + "overview": "Panoramica", + "@overview": {}, + "identicalExercisePleaseDiscard": "Se trovate un esercizio identico a quello che state cercando di aggiungere, per favore scartate la vostra bozza e se necessario modificate l'esercizio esistente.", + "@identicalExercisePleaseDiscard": {}, + "checkInformationBeforeSubmitting": "Verificate che le informazioni siano corrette prima di aggiungere l'esercizio", + "@checkInformationBeforeSubmitting": {}, + "enterTextInLanguage": "Aggiungete il testo usando la lingua giusta!", + "@enterTextInLanguage": {}, + "applicationLogs": "Registri dell'applicazione", + "@applicationLogs": {} } From d7104ff52a0e71b6c0d2074b6f0a82c0c0b22290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Sun, 28 Sep 2025 16:44:36 +0200 Subject: [PATCH 06/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (321 of 321 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 3f1ec6fe..85979a7e 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1042,5 +1042,13 @@ "openEnded": "Відкритий", "@openEnded": { "description": "When a nutrition plan has no pre-defined end date" - } + }, + "overview": "Огляд", + "@overview": {}, + "identicalExercisePleaseDiscard": "Якщо ви помітили вправу, ідентичну тій, яку ви додаєте, будь ласка, відкиньте свій чернетку та відредагуйте цю вправу.", + "@identicalExercisePleaseDiscard": {}, + "checkInformationBeforeSubmitting": "Будь ласка, перевірте правильність введеної вами інформації, перш ніж надсилати вправу", + "@checkInformationBeforeSubmitting": {}, + "enterTextInLanguage": "Будь ласка, введіть текст правильною мовою!", + "@enterTextInLanguage": {} } From a6fecfcc8d7b47e01813ad0213f3800777347dc7 Mon Sep 17 00:00:00 2001 From: Marina Aranha Date: Mon, 29 Sep 2025 10:09:13 +0200 Subject: [PATCH 07/26] Translated using Weblate (Portuguese (Brazil)) Currently translated at 96.8% (311 of 321 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/pt_BR/ --- lib/l10n/app_pt_BR.arb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_pt_BR.arb b/lib/l10n/app_pt_BR.arb index cb84dcf3..83a2648a 100644 --- a/lib/l10n/app_pt_BR.arb +++ b/lib/l10n/app_pt_BR.arb @@ -1068,5 +1068,11 @@ "lightMode": "Sempre modo claro", "@lightMode": {}, "systemMode": "Configurações do sistema", - "@systemMode": {} + "@systemMode": {}, + "endDate": "Data final", + "@endDate": { + "description": "The End date of a nutritional plan" + }, + "startDate": "Data inicial", + "@startDate": {} } From 6d1061185aa8ce42bd6ec9f0f7294604bf9e0577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ningu=C3=A9m=20Mesmo?= Date: Mon, 29 Sep 2025 18:42:52 +0200 Subject: [PATCH 08/26] Translated using Weblate (Portuguese) Currently translated at 100.0% (321 of 321 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/pt/ --- lib/l10n/app_pt.arb | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 8b826136..86bf3171 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -666,13 +666,13 @@ "@add_exercise_image_license": {}, "selectEntry": "Por favor selecione uma entrada", "@selectEntry": {}, - "cacheWarning": "Devido ao caching, pode levar algum tempo até que as alterações sejam visíveis em todo o aplicativo.", + "cacheWarning": "Devido ao \"caching\", pode levar algum tempo até que as alterações sejam visíveis em todo o aplicativo.", "@cacheWarning": {}, "success": "Sucesso", "@success": { "description": "Message when an action completed successfully, usually used as a heading" }, - "contributeExerciseWarning": "Você só pode contribuir com exercícios se sua conta tiver mais de {days} dias e tiver verificado seu e-mail", + "contributeExerciseWarning": "Só podes contribuir com exercícios se a tua conta tiver mais de {days} dias e tiveres verificado o teu e-mail", "@contributeExerciseWarning": { "description": "Number of days before which a person can add exercise", "placeholders": { @@ -722,13 +722,13 @@ }, "settingsCacheTitle": "Cache", "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Cache do exercício", + "settingsExerciseCacheDescription": "Arquivo de exercícios", "@settingsExerciseCacheDescription": {}, "useMetric": "Use unidades métricas para o peso corpora", "@useMetric": {}, "settingsTitle": "Configurações", "@settingsTitle": {}, - "settingsCacheDeletedSnackbar": "Cache limpo com sucesso", + "settingsCacheDeletedSnackbar": "Cache limpa com sucesso", "@settingsCacheDeletedSnackbar": {}, "log": "Log", "@log": { @@ -877,7 +877,7 @@ "@themeMode": {}, "darkMode": "Modo sempre escuro", "@darkMode": {}, - "settingsIngredientCacheDescription": "Armazém de ingredientes", + "settingsIngredientCacheDescription": "Arquivo de ingredientes", "@settingsIngredientCacheDescription": {}, "routines": "Rotinas", "@routines": {}, @@ -981,7 +981,7 @@ "@setHasProgression": {}, "simpleMode": "Modo simples", "@simpleMode": {}, - "progressionRules": "Este exercíco tem regras de progressão e não pode ser editado na aplicação móvel. Por favor, usa a aplicação web para editar este exercício.", + "progressionRules": "Este exercício tem regras de progressão e não pode ser editado na aplicação móvel. Por favor, usa a aplicação web para editar este exercício.", "@progressionRules": {}, "selectAvailablePlates": "Seleciona anilhas disponíveis", "@selectAvailablePlates": {}, @@ -1024,5 +1024,13 @@ "openEnded": "Sem fim definido", "@openEnded": { "description": "When a nutrition plan has no pre-defined end date" - } + }, + "enterTextInLanguage": "Por favor, introduz o texto la linguagem correta!", + "@enterTextInLanguage": {}, + "checkInformationBeforeSubmitting": "Por favor, verifica que a informação introduzida está correta antes de submeter o exercício", + "@checkInformationBeforeSubmitting": {}, + "identicalExercisePleaseDiscard": "Se encontrares um exercício igual ao que estás a introduzir, por favor descarta o teu rascunho e edita antes esse exercício.", + "@identicalExercisePleaseDiscard": {}, + "overview": "Panorama", + "@overview": {} } From df40ca77f0899aa7e1b5fbe7588fd701c895e67c Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 1 Oct 2025 19:55:37 +0200 Subject: [PATCH 09/26] Translated using Weblate (German) Currently translated at 98.1% (315 of 321 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/de/ --- lib/l10n/app_de.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index cf4ff4e0..84ed17d0 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -950,7 +950,7 @@ "@simpleModeHelp": {}, "isRestDayHelp": "Bitte beachten Sie, dass alle Sätze und Übungen entfernt werden, wenn Sie einen Tag als Ruhetag markieren.", "@isRestDayHelp": {}, - "needsLogsToAdvance": "Benötigt Eintrag, um fortzufahren", + "needsLogsToAdvance": "Benötigt Logeinträge, um fortzufahren", "@needsLogsToAdvance": {}, "needsLogsToAdvanceHelp": "Wählen Sie aus, ob die Routine nur dann zum nächsten geplanten Tag fortgesetzt werden soll, wenn Sie für diesen Tag ein Training protokolliert haben", "@needsLogsToAdvanceHelp": {}, From 89ad67417c8b863cdc9f60a88fc0b75c78c8f358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Mon, 6 Oct 2025 16:53:26 +0200 Subject: [PATCH 10/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (334 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 54 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 85979a7e..54160739 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1050,5 +1050,57 @@ "checkInformationBeforeSubmitting": "Будь ласка, перевірте правильність введеної вами інформації, перш ніж надсилати вправу", "@checkInformationBeforeSubmitting": {}, "enterTextInLanguage": "Будь ласка, введіть текст правильною мовою!", - "@enterTextInLanguage": {} + "@enterTextInLanguage": {}, + "imageDetailsTitle": "Деталі зображення", + "@imageDetailsTitle": { + "description": "Title for image details form" + }, + "imageDetailsLicenseTitle": "Назва", + "@imageDetailsLicenseTitle": { + "description": "Label for image title field" + }, + "imageDetailsLicenseTitleHint": "Введіть назву зображення", + "@imageDetailsLicenseTitleHint": { + "description": "Hint text for image title field" + }, + "imageDetailsSourceLink": "Посилання на веб-сайт джерела, якщо є", + "@imageDetailsSourceLink": { + "description": "Label for source link field" + }, + "imageDetailsAuthor": "Автор(и)", + "@imageDetailsAuthor": { + "description": "Label for author field" + }, + "imageDetailsAuthorHint": "Введіть ім'я автора", + "@imageDetailsAuthorHint": { + "description": "Hint text for author field" + }, + "imageDetailsAuthorLink": "Посилання на веб-сайт або профіль автора, якщо є", + "@imageDetailsAuthorLink": { + "description": "Label for author link field" + }, + "imageDetailsDerivativeSource": "Посилання на оригінальне джерело, якщо це похідний твір", + "@imageDetailsDerivativeSource": { + "description": "Label for derivative source field" + }, + "imageDetailsDerivativeHelp": "Похідний твір базується на попередньому творі, але містить достатньо нового, творчого контенту, щоб мати право на власне авторське право.", + "@imageDetailsDerivativeHelp": { + "description": "Helper text explaining derivative works" + }, + "imageDetailsImageType": "Тип зображення", + "@imageDetailsImageType": { + "description": "Label for image type selector" + }, + "imageDetailsLicenseNoticePrefix": "Надсилаючи це зображення, ви погоджуєтеся на його публікацію відповідно до ", + "@imageDetailsLicenseNoticePrefix": { + "description": "First part of license notice text" + }, + "imageDetailsLicenseNoticeSuffix": " Зображення має бути або вашою власною роботою, або автор має опублікувати його за ліцензією, сумісною з CC BY-SA 4.0.", + "@imageDetailsLicenseNoticeSuffix": { + "description": "Second part of license notice text" + }, + "add": "додати", + "@add": { + "description": "Add button text" + } } From 5a40891f513faa190d21518395a57e48b8476882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Wed, 8 Oct 2025 14:14:55 +0200 Subject: [PATCH 11/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (334 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 54160739..72a0468d 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1102,5 +1102,9 @@ "add": "додати", "@add": { "description": "Add button text" - } + }, + "imageDetailsLicenseNotice": "Надсилаючи це зображення, ви погоджуєтеся на його розповсюдження за ліцензією CC-BY-SA-4. Зображення має бути або вашою власною роботою, або автор має опублікувати його за ліцензією, сумісною з нею.", + "@imageDetailsLicenseNotice": {}, + "imageDetailsLicenseNoticeLinkToLicense": "Див. текст ліцензії.", + "@imageDetailsLicenseNoticeLinkToLicense": {} } From 9cc9dda448f52f8dcfd03dc1e479f1b500c0b82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Wed, 8 Oct 2025 15:08:43 +0200 Subject: [PATCH 12/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (334 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 72a0468d..62288564 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1063,7 +1063,7 @@ "@imageDetailsLicenseTitleHint": { "description": "Hint text for image title field" }, - "imageDetailsSourceLink": "Посилання на веб-сайт джерела, якщо є", + "imageDetailsSourceLink": "Посилання на веб-сайт джерела", "@imageDetailsSourceLink": { "description": "Label for source link field" }, @@ -1075,7 +1075,7 @@ "@imageDetailsAuthorHint": { "description": "Hint text for author field" }, - "imageDetailsAuthorLink": "Посилання на веб-сайт або профіль автора, якщо є", + "imageDetailsAuthorLink": "Посилання на веб-сайт або профіль автора", "@imageDetailsAuthorLink": { "description": "Label for author link field" }, @@ -1106,5 +1106,11 @@ "imageDetailsLicenseNotice": "Надсилаючи це зображення, ви погоджуєтеся на його розповсюдження за ліцензією CC-BY-SA-4. Зображення має бути або вашою власною роботою, або автор має опублікувати його за ліцензією, сумісною з нею.", "@imageDetailsLicenseNotice": {}, "imageDetailsLicenseNoticeLinkToLicense": "Див. текст ліцензії.", - "@imageDetailsLicenseNoticeLinkToLicense": {} + "@imageDetailsLicenseNoticeLinkToLicense": {}, + "author": "Автор(и)", + "@author": {}, + "authorHint": "Введіть ім'я автора", + "@authorHint": { + "description": "Hint text for author field" + } } From c7520c4db8fbb800444c8d3b2fda86bb97d12fe4 Mon Sep 17 00:00:00 2001 From: "Wiputdanai Pinkaew (Kang)" Date: Wed, 8 Oct 2025 15:38:24 +0200 Subject: [PATCH 13/26] Translated using Weblate (Thai) Currently translated at 9.8% (33 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/th/ --- lib/l10n/app_th.arb | 129 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_th.arb b/lib/l10n/app_th.arb index 0967ef42..226ee66e 100644 --- a/lib/l10n/app_th.arb +++ b/lib/l10n/app_th.arb @@ -1 +1,128 @@ -{} +{ + "userProfile": "โปรไฟล์ของคุณ", + "@userProfile": {}, + "login": "เข้าสู่ระบบ", + "@login": { + "description": "Text for login button" + }, + "logout": "ออกจากระบบ", + "@logout": { + "description": "Text for logout button" + }, + "register": "ลงทะเบียน", + "@register": { + "description": "Text for registration button" + }, + "useDefaultServer": "ใช้เซิร์ฟเวอร์เริ่มต้น", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useCustomServer": "ใช้เซิร์ฟเวอร์ที่กำหนดเอง", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "invalidUrl": "กรุณาป้อน URL ที่ถูกต้อง", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "usernameValidChars": "ชื่อผู้ใช้สามารถประกอบด้วยตัวอักษร ตัวเลข และอักขระ @, +, ., - และ _ เท่านั้น", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "passwordsDontMatch": "รหัสผ่านไม่ตรงกัน", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "รหัสผ่านสั้นเกินไป", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "selectAvailablePlates": "เลือกแผ่นน้ำหนักที่มี", + "@selectAvailablePlates": {}, + "barWeight": "น้ำหนัก Bar", + "@barWeight": {}, + "password": "รหัสผ่าน", + "@password": {}, + "confirmPassword": "ยืนยันรหัสผ่าน", + "@confirmPassword": {}, + "invalidEmail": "กรุณากรอกที่อยู่อีเมลที่ถูกต้อง", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "ที่อยู่อีเมล", + "@email": {}, + "username": "ชื่อผู้ใช้", + "@username": {}, + "invalidUsername": "กรุณากรอกชื่อผู้ใช้ที่ถูกต้อง", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "useApiToken": "ใช้โทเค็น API", + "@useApiToken": {}, + "useUsernameAndPassword": "ใช้ชื่อผู้ใช้และรหัสผ่าน", + "@useUsernameAndPassword": {}, + "apiToken": "โทเค็น API", + "@apiToken": {}, + "invalidApiToken": "กรุณาป้อนรหัส API ที่ถูกต้อง", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "คีย์ API จะต้องประกอบด้วยตัวอักษร a-f, ตัวเลข 0-9 และมีความยาว 40 อักขระเท่านั้น", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "customServerHint": "กรอกที่อยู่เซิร์ฟเวอร์ของคุณ มิฉะนั้นจะใช้ค่าเริ่มต้น", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "รีเซ็ต", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "registerInstead": "ยังไม่มีบัญชีใช่ไหม? ลงทะเบียนเลย", + "@registerInstead": {}, + "loginInstead": "มีบัญชีอยู่แล้ว? เข้าสู่ระบบ", + "@loginInstead": {}, + "labelBottomNavWorkout": "การออกกำลังกาย", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "โภชนาการ", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "ข้อมูลการออกกำลังกาย", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "แผนการออกกำลังกาย", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "แดชบอร์ด", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "success": "สำเร็จ", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "successfullyDeleted": "ลบเรียบร้อย", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "successfullySaved": "บันทึกสำเร็จ", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exerciseList": "รายการการออกกำลังกาย", + "@exerciseList": {}, + "exercise": "ออกกำลังกาย", + "@exercise": { + "description": "An exercise for a workout" + }, + "exercises": "ออกกำลังกาย", + "@exercises": { + "description": "Multiple exercises for a workout" + } +} From ed01cbb51d3998e23217c658a8ec281ba2df088e Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 9 Oct 2025 22:54:58 +0200 Subject: [PATCH 14/26] Translated using Weblate (German) Currently translated at 94.6% (316 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/de/ --- lib/l10n/app_de.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 84ed17d0..8ece0c7c 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -751,7 +751,7 @@ }, "aboutDonateTitle": "Mach eine Spende", "@aboutDonateTitle": {}, - "aboutDonateText": "Das Projekt ist kostenlos und wird es auch bleiben, der Betrieb des Servers hingegen nicht! Die Entwicklung erfordert zudem viel Zeit und Mühe von Freiwilligen. Ihr Beitrag deckt diese Kosten direkt und trägt zur Zuverlässigkeit des Dienstes bei.", + "aboutDonateText": "Das Projekt ist kostenlos und wird es auch bleiben, der Betrieb des Servers hingegen ist es nicht! Die Entwicklung erfordert zudem viel Zeit und Mühe von Freiwilligen. Ihr Beitrag deckt diese Kosten direkt und trägt zur Zuverlässigkeit des Dienstes bei.", "@aboutDonateText": {}, "settingsCacheTitle": "Zwischenspeicher", "@settingsCacheTitle": {}, From ec4285bd056d2394ad632866ab2106df3475dc75 Mon Sep 17 00:00:00 2001 From: Mahmuoud Salehi Date: Sat, 11 Oct 2025 22:47:09 +0200 Subject: [PATCH 15/26] Translated using Weblate (Persian) Currently translated at 32.0% (107 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/fa/ --- lib/l10n/app_fa.arb | 356 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 355 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_fa.arb b/lib/l10n/app_fa.arb index 0967ef42..37275152 100644 --- a/lib/l10n/app_fa.arb +++ b/lib/l10n/app_fa.arb @@ -1 +1,355 @@ -{} +{ + "userProfile": "پروفایل شما", + "@userProfile": {}, + "login": "ورود", + "@login": { + "description": "Text for login button" + }, + "logout": "خروج", + "@logout": { + "description": "Text for logout button" + }, + "date": "تاریخ", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "register": "ثبت نام", + "@register": { + "description": "Text for registration button" + }, + "useDefaultServer": "استفاده از سرور پیش فرض", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useCustomServer": "استفاده از سرور سفارشی (خصوصی)", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "edit": "ویرایش", + "@edit": {}, + "invalidUrl": "لطفا یک لینک معتبر وارد کنید", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "usernameValidChars": "نام کاربری فقط میتواند شامل حروف انگلیسی، اعداد انگلیسی و این کاراکتر ها @ + . - _ باشد", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "delete": "حذف", + "@delete": {}, + "passwordsDontMatch": "رمزهای عبور مطابقت ندارند", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "رمز عبور خیلی کوتاه است", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "selectAvailablePlates": "بشقاب‌های غذایی موجود را انتخاب کنید", + "@selectAvailablePlates": {}, + "close": "بستن", + "@close": { + "description": "Translation for close" + }, + "difference": "تفاوت", + "@difference": {}, + "useColors": "استفاده از رنگ ها", + "@useColors": {}, + "password": "رمزعبور", + "@password": {}, + "confirmPassword": "تأیید رمز عبور", + "@confirmPassword": {}, + "invalidEmail": "لطفا یک آدرس ایمیل معتبر وارد کنید", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "آدرس ایمیل", + "@email": {}, + "username": "نام کاربری", + "@username": {}, + "invalidUsername": "لطفا یک نام کاربری معتبر وارد کنید", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "start": "شروع", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "useApiToken": "استفاده از توکن API", + "@useApiToken": {}, + "useUsernameAndPassword": "استفاده از نام کاربری و رمز عبور", + "@useUsernameAndPassword": {}, + "comment": "نظر", + "@comment": { + "description": "Comment, additional information" + }, + "apiToken": "توکن API", + "@apiToken": {}, + "invalidApiToken": "لطفا یک کلید API معتبر وارد کنید", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "یک کلید API می‌تواند فقط شامل حروف انگلیسی a تا f، اعداد انگلیسی 0 تا 9 و دقیقاً 40 کاراکتر باشد", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "customServerUrl": "آدرس اینترنتی (URL) به منبع WGER", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "customServerHint": "آدرس سرور خودتان را وارد کنید، در غیر این صورت آدرس پیش‌فرض استفاده خواهد شد", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "تنظیم مجدد", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "registerInstead": "حساب کاربری ندارید؟ همین حالا ثبت نام کنید", + "@registerInstead": {}, + "loginInstead": "حساب کاربری دارید؟ وارد شوید", + "@loginInstead": {}, + "nutritionalPlan": "برنامه غذایی", + "@nutritionalPlan": {}, + "labelBottomNavWorkout": "تمرین ورزشی", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "تغذیه", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "گزارش تمرینات", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "برنامه تمرین ورزشی", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "داشبورد", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "success": "موفقیت", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "successfullyDeleted": "حذف شده", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "successfullySaved": "ذخیره شده", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "notes": "یادداشت‌ها", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "exerciseList": "لیست تمرینات", + "@exerciseList": {}, + "value": "مقدار", + "@value": { + "description": "The value of a measurement entry" + }, + "newDay": "روز جدید", + "@newDay": {}, + "newSet": "مجموعه جدید", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "selectExercises": "اگر می‌خواهید مجموعه ای از حرکات را انجام دهید، می‌توانید چندین تمرین را جستجو کنید، آنها در یک گروه قرار می‌گیرند", + "@selectExercises": {}, + "gymMode": "حالت باشگاه", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculator": "دیسک ها", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "با دیسک های موجود نمی‌توان به وزن دلخواه رسید", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "توقف", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "jumpTo": "برو به", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "todaysWorkout": "تمرین ورزشی امروز شما", + "@todaysWorkout": {}, + "logHelpEntries": "اگر در یک روز واحد بیش از یک ورودی با همان تعداد تکرارها وجود داشته باشد ، اما وزنهای مختلف ، فقط ورودی با وزن بالاتر در نمودار نشان داده می شود.", + "@logHelpEntries": {}, + "logHelpEntriesUnits": "توجه داشته باشید که فقط ورودی هایی با واحد وزنی (کیلوگرم یا پوند) و تکرارها نمودار می شوند ، ترکیبات دیگری مانند زمان یا تا زمان خستگی در اینجا نادیده گرفته می شوند.", + "@logHelpEntriesUnits": {}, + "description": "توضیحات", + "@description": {}, + "name": "نام", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "save": "ذخیره", + "@save": {}, + "verify": "تأیید کردن", + "@verify": {}, + "addSet": "افزودن مجموعه", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "افزودن وعده", + "@addMeal": {}, + "mealLogged": "غذا به دفتر گزارشات وارد شد", + "@mealLogged": {}, + "ingredientLogged": "مواد به دفتر گزارشات وارد شد", + "@ingredientLogged": {}, + "logMeal": "افزودن وعده به دفتر گزارشات غذایی", + "@logMeal": {}, + "addIngredient": "افزودن مواد تشکیل دهنده", + "@addIngredient": {}, + "logIngredient": "افزودن مواد تشکیل دهنده به دفتر گزارشات غذایی", + "@logIngredient": {}, + "searchIngredient": "جستجو مواد تشکیل دهنده", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalDiary": "دفتر گزارشات غذایی", + "@nutritionalDiary": {}, + "nutritionalPlans": "برنامه های غذایی", + "@nutritionalPlans": {}, + "noNutritionalPlans": "شما هیچ برنامه غذایی ندارید", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "onlyLogging": "فقط کالری را شمارش کردن", + "@onlyLogging": {}, + "onlyLoggingHelpText": "اگر فقط می خواهید کالری خود را گزارش کنید و نمی خواهید یک برنامه غذایی دقیق را با وعده های غذایی خاص تنظیم کنید ، کادر را تیک بزنید", + "@onlyLoggingHelpText": {}, + "goalMacro": "اهداف مواد مغذی", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "یک وعده انتخاب کنید تا به گزارشات اضافه شود", + "@selectMealToLog": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "در برنامه غذایی فعلی شما هیچ وعده ای تعریف نشده است", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "برای افزودن وعده های غذایی به برنامه ، به جزئیات برنامه غذایی بروید", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "goalEnergy": "هدف انرژی", + "@goalEnergy": {}, + "goalProtein": "هدف پروتئینی", + "@goalProtein": {}, + "goalCarbohydrates": "هدف کربوهیدراتی", + "@goalCarbohydrates": {}, + "goalFat": "هدف چربی", + "@goalFat": {}, + "goalFiber": "هدف فیبری", + "@goalFiber": {}, + "anErrorOccurred": "خطایی رخ داد!", + "@anErrorOccurred": {}, + "errorInfoDescription": "متأسفیم ، اما مشکلی پیش آمد. شما می توانید با گزارش آن در GitHub به ما در رفع این مشکل کمک کنید.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "شما می توانید به استفاده از برنامه ادامه دهید ، اما برخی از ویژگی ها ممکن است کار نکند.", + "@errorInfoDescription2": {}, + "errorViewDetails": "جزئیات فنی", + "@errorViewDetails": {}, + "applicationLogs": "گزارشات اپلیکیشن", + "@applicationLogs": {}, + "errorCouldNotConnectToServer": "اتصال به سرور امکان پذیر نیست", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "برنامه نمی تواند به سرور وصل شود. لطفاً اتصال اینترنت یا URL سرور خود را بررسی کرده و دوباره امتحان کنید. اگر مشکل ادامه پیدا کرد، با مدیر سرور تماس بگیرید.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "کپی در کلیپ بورد", + "@copyToClipboard": {}, + "weight": "وزن", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "min": "حداقل", + "@min": {}, + "max": "حداکثر", + "@max": {}, + "chartAllTimeTitle": "نمودار کلی {name}", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chart30DaysTitle": "نمودار 30 روزه {name}", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartDuringPlanTitle": "نمودار {chartName} در برنامه {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "measurement": "اندازه گیری", + "@measurement": {}, + "measurements": "اندازه گیری ها", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurementCategoriesHelpText": "دسته اندازه گیری ، مانند \"دوسر\" یا \"چربی بدن\"", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "واحد مورد استفاده برای اندازه گیری دسته مانند \"سانتی متر\" یا \"٪\"", + "@measurementEntriesHelpText": {}, + "creationDate": "تاریخ شروع", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "endDate": "تاریخ پایان", + "@endDate": { + "description": "The End date of a nutritional plan" + }, + "openEnded": "پایان باز", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + }, + "time": "زمان", + "@time": { + "description": "The time of a meal or workout" + }, + "timeStart": "زمان شروع", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "زمان پایان", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStartAhead": "زمان شروع نمیتواند جلوتر از زمان پایان باشد", + "@timeStartAhead": {}, + "ingredient": "مواد تشکیل دهنده", + "@ingredient": {}, + "energy": "انرژی", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + } +} From 16cdb150067dc8d13da169d2b37273474369e21d Mon Sep 17 00:00:00 2001 From: Mahmuoud Salehi Date: Sat, 11 Oct 2025 18:38:51 +0200 Subject: [PATCH 16/26] Translated using Weblate (Persian) Currently translated at 100.0% (3 of 3 strings) Translation: wger Workout Manager/Play Store Translate-URL: https://hosted.weblate.org/projects/wger/play-store/fa/ --- .../android/fa-IR/full_description.txt | 57 +++++++++++++++++++ .../android/fa-IR/short_description.txt | 1 + 2 files changed, 58 insertions(+) create mode 100644 fastlane/metadata/android/fa-IR/full_description.txt create mode 100644 fastlane/metadata/android/fa-IR/short_description.txt diff --git a/fastlane/metadata/android/fa-IR/full_description.txt b/fastlane/metadata/android/fa-IR/full_description.txt new file mode 100644 index 00000000..06ac653f --- /dev/null +++ b/fastlane/metadata/android/fa-IR/full_description.txt @@ -0,0 +1,57 @@ +از طرف ما علاقمندان به تناسب اندام، به شما علاقمندان دیگر! +سلامتتون رو با برنامه مدیریت ورزش WGER، متحول کنید. + +آیا اپلیکیشن موردعلاقه‌تون رو پیدا کردید و دوست دارید برنامه ورزشی مخصوص به خودتون رو درست کنید؟ +مهم نیست چه جور ورزشکاری هستید، ما همه در یک چیز مشترکیم: عاشق اینیم که پیشرفت و داده‌های سلامتی‌مون رو دنبال کنیم! 3> + +ما شما رو به خاطر اینکه هنوز هم سفر ورزشیتون رو با یک دفترچه کوچک پیش می‌برید قضاوت نمی‌کنیم... +اما خب، سلام به قرن ۲۰ ام! + +ما یک اپلیکیشن شمارشگر و گزارش وضعیت سلامت و تناسب اندام ۱۰۰٪ رایگان برای شما ساخته‌ایم +که با خلاصه شدن در مهم‌ترین قابلیت‌ها، زندگی رو براتون ساده می‌کنه. +شروع کنید، به ورزش ادامه بدید و پیشرفتتون رو جشن بگیرید! + +WGER یک پروژه متن‌باز است و همه‌چیز درباره این چهار مورد است: + +بدن شما + +تمرین‌های شما + +پیشرفت شما + +داده‌های شما + +بدن شما: +دیگه نیازی نیست مواد تشکیل‌دهنده خوراکی موردعلاقه‌تون رو گوگل کنید! +وعده‌های غذایی روزانه‌تون رو از بین بیش از ۷۸,۰۰۰ محصول انتخاب کنید و ارزش غذایی آن‌ها رو ببینید. وعده‌ها رو به برنامه غذایی اضافه کنید و در تقویم، یک نمای کلی از رژیم‌تون داشته باشید. + +تمرین‌های شما: +شما بهتر می‌دونید چه چیزی برای بدنتون مناسبه. +تمرین‌های شخصی خودتون رو از بین ۲۰۰ حرکت متنوع و در حال افزایش بسازید. +بعدش از "حالت باشگاه" استفاده کنید تا شما رو قدم‭ ‬به قدم در طول تمرین راهنمایی کند، در حالی که با یک کلیک وزن‌هایی که زدید رو ثبت می‌کنید. + +پیشرفت شما: +هیچ‌وقت هدف‌هاتون رو فراموش نکنید. +وزن‌تون رو زیر نظر بگیرید و آمار پیشرفت‌تون رو ذخیره کنید. + +داده‌های شما: +WGER دفترچه خاطرات ورزشی شخصی‌شده شماست – اما این شما هستید که صاحب داده‌هایتان هستید. +از REST API استفاده کنید و با داده‌هاتون کارهای فوق‌العاده انجام بدید. + +یک نکته مهم: این اپ رایگان بر اساس بودجه اضافی نیست و از شما کمک مالی نمی‌خواهیم. +بلکه یک پروژه جامعه‌محور است که دائماً در حال رشد است. پس خودتون رو برای قابلیت‌های جدید هیجان‌زده کنید! + +متن‌باز – این یعنی چی؟ +یعنی تمام کد این برنامه و سرورش رایگان است و در دسترس همه قرار دارد: + +می‌خواهید WGER رو روی سرور خودتون برای باشگاه محل اجرا کنید؟ حله! + +یک قابلیت خاص کمه و می‌خواهید خودتون اضافهش کنید؟ از همین امروز شروع کنید! + +می‌خواهید مطمئن بشوید که اطلاعاتی جایی فرستاده نمی‌شه؟ می‌توانید بررسی کنید! + +به جامعه ما بپیوندید! بخشی از علاقه‌مندان به ورزش و متخصصان فناوری از سراسر جهان شوید. +ما دائماً در حال تنظیم و بهینه‌سازی اپلیکیشن متناسب با نیازهایمون هستیم. عاشق مشارکت و نظرات شما هستیم، پس در هر زمانی خوش آمدید که به ما ملحق شوید و آرزوها و ایده‌هاتون رو با ما در میان بگذارید! + +-> کد منبع را در اینجا پیدا کنید: https://github.com/wger-project +-> سوال بپرسید یا فقط سلامی بکنید، سرور دیسکورد ما: https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/fa-IR/short_description.txt b/fastlane/metadata/android/fa-IR/short_description.txt new file mode 100644 index 00000000..1f0e2405 --- /dev/null +++ b/fastlane/metadata/android/fa-IR/short_description.txt @@ -0,0 +1 @@ +شمارنده تناسب اندام/ورزش، تغذیه و وزن From 50bcb0bbe86d2c2da15e43aa16e725b11d6f892a Mon Sep 17 00:00:00 2001 From: Mahmuoud Salehi Date: Sun, 12 Oct 2025 20:11:09 +0200 Subject: [PATCH 17/26] Translated using Weblate (Persian) Currently translated at 34.7% (116 of 334 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/fa/ --- lib/l10n/app_fa.arb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lib/l10n/app_fa.arb b/lib/l10n/app_fa.arb index 37275152..76a193f7 100644 --- a/lib/l10n/app_fa.arb +++ b/lib/l10n/app_fa.arb @@ -351,5 +351,39 @@ "energy": "انرژی", "@energy": { "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "barWeight": "وزن میله", + "@barWeight": {}, + "exercise": "تمرین", + "@exercise": { + "description": "An exercise for a workout" + }, + "unit": "واحد", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "exercises": "تمرین ها", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "نام تمرین", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "searchExercise": "تمرین را برای افزودن جستجو کنید", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "noIngredientsDefined": "هنوز هیچ مواد تشکیل دهنده ای تعریف نشده", + "@noIngredientsDefined": {}, + "noMatchingExerciseFound": "هیچ تمرین مطابقی پیدا نشد", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "searchNamesInEnglish": "اسامی را به زبان انگلیسی هم جستجو کنید", + "@searchNamesInEnglish": {}, + "equipment": "تجهیزات", + "@equipment": { + "description": "Equipment needed to perform an exercise" } } From 46dc3a44d8a55b970787e51a657be3896e1a5bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Sun, 12 Oct 2025 22:24:25 +0200 Subject: [PATCH 18/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (338 of 338 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 62288564..029fbd97 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1112,5 +1112,21 @@ "authorHint": "Введіть ім'я автора", "@authorHint": { "description": "Hint text for author field" + }, + "galleryImageTypeNotSupported": "Зображення типу {imageType} наразі не підтримуються на цій платформі.", + "@galleryImageTypeNotSupported": { + "placeholders": { + "imageType": { + "type": "String" + } + } + }, + "galleryImageTypeNotSupportedDetail": "Це зображення у форматі {imageType}, який наразі не підтримується на цій платформі.", + "@galleryImageTypeNotSupportedDetail": { + "placeholders": { + "imageType": { + "type": "String" + } + } } } From 84acd13254ca7106fcb885f10d0b65eab35ba590 Mon Sep 17 00:00:00 2001 From: v7mbz Date: Wed, 15 Oct 2025 09:39:33 +0200 Subject: [PATCH 19/26] Translated using Weblate (Spanish) Currently translated at 100.0% (338 of 338 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/es/ --- lib/l10n/app_es.arb | 70 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 1a750806..395cd1e2 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -1044,5 +1044,75 @@ "openEnded": "Indefinido", "@openEnded": { "description": "When a nutrition plan has no pre-defined end date" + }, + "overview": "Descripción general", + "@overview": {}, + "identicalExercisePleaseDiscard": "Si observa un ejercicio idéntico al que está agregando, descarte el borrador y edítelo en su lugar.", + "@identicalExercisePleaseDiscard": {}, + "checkInformationBeforeSubmitting": "Por favor verifique que la información que ingresó sea correcta antes de enviar el ejercicio", + "@checkInformationBeforeSubmitting": {}, + "imageDetailsTitle": "Detalles de la imagen", + "@imageDetailsTitle": { + "description": "Title for image details form" + }, + "imageDetailsLicenseTitle": "Título", + "@imageDetailsLicenseTitle": { + "description": "Label for image title field" + }, + "imageDetailsLicenseTitleHint": "Introduce el título de la imagen", + "@imageDetailsLicenseTitleHint": { + "description": "Hint text for image title field" + }, + "imageDetailsSourceLink": "Enlace al sitio web de origen", + "@imageDetailsSourceLink": { + "description": "Label for source link field" + }, + "author": "Autor(es)", + "@author": {}, + "authorHint": "Introduce el nombre del autor", + "@authorHint": { + "description": "Hint text for author field" + }, + "imageDetailsAuthorLink": "Enlace al sitio web o perfil del autor", + "@imageDetailsAuthorLink": { + "description": "Label for author link field" + }, + "imageDetailsDerivativeSource": "Enlace a la fuente original, si se trata de un trabajo derivado", + "@imageDetailsDerivativeSource": { + "description": "Label for derivative source field" + }, + "imageDetailsDerivativeHelp": "Un trabajo derivado se basa en un trabajo anterior, pero contiene suficiente contenido nuevo y creativo para darle derecho a sus propios derechos de autor.", + "@imageDetailsDerivativeHelp": { + "description": "Helper text explaining derivative works" + }, + "imageDetailsImageType": "Tipo de imagen", + "@imageDetailsImageType": { + "description": "Label for image type selector" + }, + "imageDetailsLicenseNotice": "Al enviar esta imagen, acepta divulgarla según la licencia CC-BY-SA-4. La imagen debe ser obra propia o el autor debe haberla publicado bajo una licencia compatible con ella.", + "@imageDetailsLicenseNotice": {}, + "imageDetailsLicenseNoticeLinkToLicense": "Ver texto de licencia.", + "@imageDetailsLicenseNoticeLinkToLicense": {}, + "add": "agregar", + "@add": { + "description": "Add button text" + }, + "enterTextInLanguage": "¡Por favor ingrese el texto en el idioma correcto!", + "@enterTextInLanguage": {}, + "galleryImageTypeNotSupported": "Las imágenes {imageType} actualmente no son compatibles con esta plataforma.", + "@galleryImageTypeNotSupported": { + "placeholders": { + "imageType": { + "type": "String" + } + } + }, + "galleryImageTypeNotSupportedDetail": "Esta imagen está en formato {imageType}, que actualmente no es compatible con esta plataforma.", + "@galleryImageTypeNotSupportedDetail": { + "placeholders": { + "imageType": { + "type": "String" + } + } } } From 769b36f5d2c3eec58c4a9395ee38948832db4fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Fri, 17 Oct 2025 07:37:07 +0200 Subject: [PATCH 20/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (351 of 351 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 029fbd97..f2b88d28 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1128,5 +1128,37 @@ "type": "String" } } - } + }, + "dayTypeCustom": "Користувацька", + "@dayTypeCustom": {}, + "dayTypeEnom": "Кожну хвилину за хвилиною", + "@dayTypeEnom": {}, + "dayTypeAmrap": "Якомога більше раундів", + "@dayTypeAmrap": {}, + "dayTypeHiit": "Високоінтенсивне інтервальне тренування", + "@dayTypeHiit": {}, + "dayTypeTabata": "Табата", + "@dayTypeTabata": {}, + "dayTypeEdt": "Збільшення щільності навчання", + "@dayTypeEdt": {}, + "dayTypeRft": "Раунди на час", + "@dayTypeRft": {}, + "dayTypeAfap": "Якомога швидше", + "@dayTypeAfap": {}, + "slotEntryTypeNormal": "Звичайний", + "@slotEntryTypeNormal": {}, + "slotEntryTypeDropset": "Дропсет", + "@slotEntryTypeDropset": {}, + "slotEntryTypeMyo": "Міо", + "@slotEntryTypeMyo": {}, + "slotEntryTypePartial": "Часткове", + "@slotEntryTypePartial": {}, + "slotEntryTypeForced": "Примусово", + "@slotEntryTypeForced": {}, + "slotEntryTypeTut": "Час під Напругою", + "@slotEntryTypeTut": {}, + "slotEntryTypeIso": "Ізометричне утримання", + "@slotEntryTypeIso": {}, + "slotEntryTypeJump": "Стрибок", + "@slotEntryTypeJump": {} } From 020c3a872acc4f4f685e5be79411cb2c70497076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Sat, 18 Oct 2025 12:32:34 +0200 Subject: [PATCH 21/26] Translated using Weblate (Ukrainian) Currently translated at 100.0% (352 of 352 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/uk/ --- lib/l10n/app_uk.arb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index f2b88d28..1d88c768 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1155,10 +1155,12 @@ "@slotEntryTypePartial": {}, "slotEntryTypeForced": "Примусово", "@slotEntryTypeForced": {}, - "slotEntryTypeTut": "Час під Напругою", + "slotEntryTypeTut": "Час під Напруги", "@slotEntryTypeTut": {}, "slotEntryTypeIso": "Ізометричне утримання", "@slotEntryTypeIso": {}, "slotEntryTypeJump": "Стрибок", - "@slotEntryTypeJump": {} + "@slotEntryTypeJump": {}, + "endWorkout": "Закінчити тренування", + "@endWorkout": {} } From 537b50d556f9a81ffa67c58e6e8155eec13f8651 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Mon, 20 Oct 2025 14:32:37 +0200 Subject: [PATCH 22/26] Translated using Weblate (Croatian) Currently translated at 79.5% (280 of 352 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/hr/ --- lib/l10n/app_hr.arb | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/l10n/app_hr.arb b/lib/l10n/app_hr.arb index 117cd7b0..5905b591 100644 --- a/lib/l10n/app_hr.arb +++ b/lib/l10n/app_hr.arb @@ -718,7 +718,7 @@ "@searchNamesInEnglish": {}, "language": "Jezik", "@language": {}, - "aboutPageTitle": "Wger informacije", + "aboutPageTitle": "O nama i podrška", "@aboutPageTitle": {}, "abs": "Trbuh", "@abs": { @@ -788,7 +788,7 @@ }, "aboutDonateTitle": "Doniraj", "@aboutDonateTitle": {}, - "aboutDonateText": "Pomogni projektu: kupi nam kavu, plati troškove poslužitelja i potiči nas u našem radu", + "aboutDonateText": "Iako je projekt besplatan i uvijek će to ostati, održavanje servera nije! Razvoj također zahtijeva značajno vrijeme i trud volontera. Tvoj doprinos izravno podupire te troškove i pomaže u održavanju pouzdanosti usluge.", "@aboutDonateText": {}, "settingsTitle": "Postavke", "@settingsTitle": {}, @@ -955,20 +955,32 @@ "@invalidApiToken": { "description": "Error message when the user enters an invalid API key" }, - "apiTokenValidChars": "API Token može sadržavati a-f, brojeve od 0-9 i mora biti točno 40 znakova dugačak.", + "apiTokenValidChars": "API ključ može sadržati slova a-f, brojke od 0-9 i mora imati točno 40 znakova", "@apiTokenValidChars": { "description": "Error message when the user tries to input a API key with forbidden characters" }, - "routines": "Rutina", + "routines": "Rutine", "@routines": {}, "newRoutine": "Nova rutina", "@newRoutine": {}, - "noRoutines": "Vi nemate rutine", + "noRoutines": "Ti nemaš rutine", "@noRoutines": {}, - "restTime": "Period odmora", + "restTime": "Vrijeme odmora", "@restTime": {}, - "sets": "Vježba ima setova", + "sets": "Serije", "@sets": { "description": "The number of sets to be done for one exercise" - } + }, + "min": "Min.", + "@min": {}, + "max": "Maks.", + "@max": {}, + "dayTypeAfap": "Što brže moguće", + "@dayTypeAfap": {}, + "slotEntryTypeNormal": "Normalno", + "@slotEntryTypeNormal": {}, + "slotEntryTypePartial": "Djelomično", + "@slotEntryTypePartial": {}, + "slotEntryTypeForced": "Prisiljeno", + "@slotEntryTypeForced": {} } From 955970b1d03e1f4b292f72d8b8df308be476e58a Mon Sep 17 00:00:00 2001 From: Paul Bonneau Date: Thu, 23 Oct 2025 18:35:54 +0200 Subject: [PATCH 23/26] Translated using Weblate (French) Currently translated at 100.0% (352 of 352 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/fr/ --- lib/l10n/app_fr.arb | 92 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index eb6637b6..902d4c58 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -1036,5 +1036,95 @@ "endDate": "Date de fin", "@endDate": {}, "startDate": "Date de début", - "@startDate": {} + "@startDate": {}, + "dayTypeCustom": "Personnalisé", + "@dayTypeCustom": {}, + "dayTypeEnom": "Un mouvement par minute", + "@dayTypeEnom": {}, + "dayTypeAmrap": "Autant de rounds que possible", + "@dayTypeAmrap": {}, + "dayTypeHiit": "Entraînement fractionné de haute intensité", + "@dayTypeHiit": {}, + "dayTypeTabata": "Tabata", + "@dayTypeTabata": {}, + "dayTypeEdt": "Entraînement à densité croissante", + "@dayTypeEdt": {}, + "dayTypeAfap": "Aussi vite que possible", + "@dayTypeAfap": {}, + "slotEntryTypeNormal": "Normal", + "@slotEntryTypeNormal": {}, + "slotEntryTypeDropset": "Dropset", + "@slotEntryTypeDropset": {}, + "slotEntryTypeMyo": "Myo", + "@slotEntryTypeMyo": {}, + "slotEntryTypePartial": "Partiel", + "@slotEntryTypePartial": {}, + "slotEntryTypeForced": "Forcé", + "@slotEntryTypeForced": {}, + "slotEntryTypeTut": "Temps sous tension", + "@slotEntryTypeTut": {}, + "slotEntryTypeIso": "Maintien isométrique", + "@slotEntryTypeIso": {}, + "slotEntryTypeJump": "Saut", + "@slotEntryTypeJump": {}, + "applicationLogs": "Journaux d'application", + "@applicationLogs": {}, + "openEnded": "Sans date de fin", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + }, + "overview": "Aperçu", + "@overview": {}, + "identicalExercisePleaseDiscard": "Si vous remarquez un exercice identique à celui que vous ajoutez, veuillez supprimer votre brouillon et modifier cet exercice à la place.", + "@identicalExercisePleaseDiscard": {}, + "checkInformationBeforeSubmitting": "Veuillez vérifier que les informations que vous avez saisies sont correctes avant de soumettre l'exercice", + "@checkInformationBeforeSubmitting": {}, + "imageDetailsTitle": "Détails de l'image", + "@imageDetailsTitle": { + "description": "Title for image details form" + }, + "dayTypeRft": "Rounds for time", + "@dayTypeRft": {}, + "imageDetailsLicenseTitle": "Valeur de l'attribut \"title\" de l'image", + "@imageDetailsLicenseTitle": { + "description": "Label for image title field" + }, + "imageDetailsLicenseTitleHint": "Saisir la valeur de l'attribut \"title\" de l'image", + "@imageDetailsLicenseTitleHint": { + "description": "Hint text for image title field" + }, + "imageDetailsSourceLink": "Lien vers le site internet source", + "@imageDetailsSourceLink": { + "description": "Label for source link field" + }, + "author": "Auteur(s)", + "@author": {}, + "authorHint": "Saisir le nom de l'auteur", + "@authorHint": { + "description": "Hint text for author field" + }, + "imageDetailsAuthorLink": "Lien vers le site internet de l'auteur ou de son profil", + "@imageDetailsAuthorLink": { + "description": "Label for author link field" + }, + "imageDetailsDerivativeSource": "Lien vers la source originale, s'il s'agit d'une œuvre dérivée", + "@imageDetailsDerivativeSource": { + "description": "Label for derivative source field" + }, + "imageDetailsDerivativeHelp": "Une œuvre dérivée est basée sur une œuvre antérieure mais contient suffisamment de contenu nouveau et créatif pour lui donner droit à son propre droit d’auteur.", + "@imageDetailsDerivativeHelp": { + "description": "Helper text explaining derivative works" + }, + "imageDetailsImageType": "Type de l'image", + "@imageDetailsImageType": { + "description": "Label for image type selector" + }, + "imageDetailsLicenseNotice": "En soumettant cette image, vous acceptez sa publication sous licence CC-BY-SA-4. L'image doit être votre propre création ou son auteur doit l'avoir publiée sous une licence compatible.", + "@imageDetailsLicenseNotice": {}, + "imageDetailsLicenseNoticeLinkToLicense": "Voir le texte de la licence.", + "@imageDetailsLicenseNoticeLinkToLicense": {}, + "enterTextInLanguage": "Veuillez saisir le texte dans la bonne langue !", + "@enterTextInLanguage": {}, + "endWorkout": "Terminer l'entraînement", + "@endWorkout": {} } From 760e7728fb6e92ac092df123beed3e06170e6b87 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Thu, 23 Oct 2025 17:20:44 +0200 Subject: [PATCH 24/26] Translated using Weblate (Croatian) Currently translated at 100.0% (352 of 352 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/hr/ --- lib/l10n/app_hr.arb | 250 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 229 insertions(+), 21 deletions(-) diff --git a/lib/l10n/app_hr.arb b/lib/l10n/app_hr.arb index 5905b591..25368bb6 100644 --- a/lib/l10n/app_hr.arb +++ b/lib/l10n/app_hr.arb @@ -31,15 +31,15 @@ }, "email": "E-mail adresa", "@email": {}, - "invalidUrl": "Upiši važeći URL", + "invalidUrl": "Upiši valjanu URL adresu", "@invalidUrl": { "description": "Error message when the user enters an invalid URL, e.g. in the login form" }, - "useCustomServer": "Koristi prilagođeni poslužitelj", + "useCustomServer": "Koristi prilagođeni server", "@useCustomServer": { "description": "Toggle button allowing users to switch between the default and a custom wger server" }, - "invalidUsername": "Upiši važeće korisničko ime", + "invalidUsername": "Upiši valjano korisničko ime", "@invalidUsername": { "description": "Error message when the user enters an invalid username" }, @@ -47,7 +47,7 @@ "@customServerUrl": { "description": "Label in the form where the users can enter their own wger instance" }, - "customServerHint": "Upiši adresu tvog poslužitelja, inače će se koristiti zadani", + "customServerHint": "Upiši adresu tvog servera, inače će se koristiti standardni", "@customServerHint": { "description": "Hint text for the form where the users can enter their own wger instance" }, @@ -205,7 +205,7 @@ "@selectExercise": { "description": "Error message when the user hasn't selected an exercise in the form" }, - "enterCharacters": "Upiši {min} do {max} znakova", + "enterCharacters": "Upiši između {min} do {max} znaka", "@enterCharacters": { "description": "Error message when the user hasn't entered the correct number of characters in a form", "type": "text", @@ -233,7 +233,7 @@ "description": "Label shown on the slider where the user can toggle showing units and RiR", "type": "text" }, - "enterValidNumber": "Upiši važeći broj", + "enterValidNumber": "Upiši valjani broj", "@enterValidNumber": { "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" }, @@ -261,7 +261,7 @@ "@dataCopied": { "description": "Snackbar message to show on copying data to a new log entry" }, - "usernameValidChars": "Korisničko ime može sadržavati samo slova, brojeve i sljedeće znakove: @, +, ., -, _", + "usernameValidChars": "Korisničko ime smije sadržavati samo slova, brojeve i sljedeće znakove: @, +, ., -, _", "@usernameValidChars": { "description": "Error message when the user tries to register a username with forbidden characters" }, @@ -275,7 +275,7 @@ "@addMeal": {}, "nutritionalPlan": "Plan prehrane", "@nutritionalPlan": {}, - "useDefaultServer": "Koristi zadani poslužitelj", + "useDefaultServer": "Koristi standardni server", "@useDefaultServer": { "description": "Toggle button allowing users to switch between the default and a custom wger server" }, @@ -461,7 +461,7 @@ "@weightUnit": {}, "appUpdateTitle": "Potrebna je nova verzija", "@appUpdateTitle": {}, - "appUpdateContent": "Ova verzija aplikacije nije kompatibilna s poslužiteljem. Aktualiziraj svoju aplikaciju.", + "appUpdateContent": "Ova verzija aplikacije nije kompatibilna sa serverom. Aktualiziraj svoju aplikaciju.", "@appUpdateContent": {}, "set": "Serija", "@set": { @@ -519,7 +519,7 @@ "@close": { "description": "Translation for close" }, - "enterMinCharacters": "Upiši barem {min} znakova", + "enterMinCharacters": "Upiši barem {min} znaka", "@enterMinCharacters": { "description": "Error message when the user hasn't entered the minimum amount characters in a form", "type": "text", @@ -608,7 +608,7 @@ "@verifiedEmail": {}, "unVerifiedEmail": "Nepotvrđena e-mail adresa", "@unVerifiedEmail": {}, - "verifiedEmailInfo": "E-mail poruka za potvrdu je poslana na {email}", + "verifiedEmailInfo": "E-mail za ovjeru je poslan na {email}", "@verifiedEmailInfo": { "placeholders": { "email": { @@ -634,7 +634,7 @@ "@cardio": { "description": "Generated entry for translation for server strings" }, - "quads": "Ekstenzije nogu", + "quads": "Kvadriceps", "@quads": { "description": "Generated entry for translation for server strings" }, @@ -658,7 +658,7 @@ "@until_failure": { "description": "Generated entry for translation for server strings" }, - "none__bodyweight_exercise_": "ništa (vježba za tjelesnu težinu)", + "none__bodyweight_exercise_": "bez (vježba za tjelesnu težinu)", "@none__bodyweight_exercise_": { "description": "Generated entry for translation for server strings" }, @@ -710,7 +710,7 @@ "@kg": { "description": "Generated entry for translation for server strings" }, - "lb": "funta", + "lb": "lb", "@lb": { "description": "Generated entry for translation for server strings" }, @@ -866,7 +866,7 @@ "@goalMacro": { "description": "The goal for macronutrients" }, - "selectMealToLog": "Odaberi obrok za zapis u dnevnik", + "selectMealToLog": "Odaberi obrok za zapisivanje u dnevnik", "@selectMealToLog": {}, "ingredientLogged": "Sastojak je upisan u dnevnik", "@ingredientLogged": {}, @@ -880,15 +880,15 @@ "@goalTypeMeals": { "description": "added for localization of Class GoalType's filed meals" }, - "goalTypeBasic": "Osnovni", + "goalTypeBasic": "Osnovno", "@goalTypeBasic": { "description": "added for localization of Class GoalType's filed basic" }, - "goalTypeAdvanced": "Napredni", + "goalTypeAdvanced": "Napredno", "@goalTypeAdvanced": { "description": "added for localization of Class GoalType's filed advanced" }, - "indicatorRaw": "sirovo", + "indicatorRaw": "neobrađeno", "@indicatorRaw": { "description": "added for localization of Class Indicator's field text" }, @@ -914,7 +914,7 @@ } } }, - "chartDuringPlanTitle": "{chartName} tijekom prehrambenog plana {planName}", + "chartDuringPlanTitle": "{chartName} tijekom plana prehrane {planName}", "@chartDuringPlanTitle": { "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", "type": "text", @@ -951,7 +951,7 @@ "@useUsernameAndPassword": {}, "apiToken": "API Token", "@apiToken": {}, - "invalidApiToken": "Molimo provjerite API Token", + "invalidApiToken": "Upiši valjani API ključ", "@invalidApiToken": { "description": "Error message when the user enters an invalid API key" }, @@ -982,5 +982,213 @@ "slotEntryTypePartial": "Djelomično", "@slotEntryTypePartial": {}, "slotEntryTypeForced": "Prisiljeno", - "@slotEntryTypeForced": {} + "@slotEntryTypeForced": {}, + "aboutTranslationListTitle": "Prevedi aplikaciju", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Prikaži izvorni kod", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Pridruži se zajednici", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Drugi", + "@others": {}, + "resultingRoutine": "Rezultirajuća rutina", + "@resultingRoutine": {}, + "restDay": "Dan odmora", + "@restDay": {}, + "isRestDay": "Je dan odmora", + "@isRestDay": {}, + "progressionRules": "Ova vježba ima pravila napredovanja i ne može se uređivati u mobilnoj aplikaciji. Za uređivanje ove vježbe koristi web aplikaciju.", + "@progressionRules": {}, + "needsLogsToAdvance": "Treba dnevnike za nastavljanje", + "@needsLogsToAdvance": {}, + "slotEntryTypeTut": "Vrijeme pod napetošću", + "@slotEntryTypeTut": {}, + "slotEntryTypeIso": "Izometrijsko držanje", + "@slotEntryTypeIso": {}, + "slotEntryTypeJump": "Skok", + "@slotEntryTypeJump": {}, + "dayTypeCustom": "Prilagođeno", + "@dayTypeCustom": {}, + "dayTypeEnom": "Svake minute u minuti", + "@dayTypeEnom": {}, + "startDate": "Datum početka", + "@startDate": { + "description": "The start date of a nutritional plan or routine" + }, + "dayTypeRft": "Runde za vrijeme", + "@dayTypeRft": {}, + "dayTypeAmrap": "Što više rundi", + "@dayTypeAmrap": {}, + "dayTypeHiit": "Trening visokog intenziteta u intervalima", + "@dayTypeHiit": {}, + "dayTypeTabata": "Tabata", + "@dayTypeTabata": {}, + "simpleMode": "Jednostavni modus", + "@simpleMode": {}, + "dayTypeEdt": "Trening s postupnim povećanjem ponavljanja/serija", + "@dayTypeEdt": {}, + "slotEntryTypeDropset": "Drop set (serije sa smanjivanjem težine)", + "@slotEntryTypeDropset": {}, + "slotEntryTypeMyo": "Myo (intenzivnije aktiviranje mišićnih vlakana)", + "@slotEntryTypeMyo": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Tvoj trenutačni plan prehrane nema definirane obroke", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Za dodavanje obroka u plan, idi na detalje plana prehrane", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "resistance_band": "Elastična vrpca", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "aboutWhySupportTitle": "Otvoreni kod i besplatno ❤️", + "@aboutWhySupportTitle": {}, + "addSuperset": "Dodaj super-seriju", + "@addSuperset": {}, + "setHasProgression": "Serija ima napredovanje", + "@setHasProgression": {}, + "setHasProgressionWarning": "Imaj na umu da trenutačno nije moguće urediti sve postavke za serije na mobilnoj aplikaciji ili konfigurirati automatsko napredovanje. Za sada koristi web aplikaciju.", + "@setHasProgressionWarning": {}, + "fitInWeek": "Prilagodi u tjedan", + "@fitInWeek": {}, + "fitInWeekHelp": "Ako je aktivirano, dani će se ponavljati u tjednom ciklusu, inače će dani slijediti uzastopno bez obzira na početak novog tjedna.", + "@fitInWeekHelp": {}, + "setHasNoExercises": "Ova serija još nema vježbe!", + "@setHasNoExercises": {}, + "exerciseNr": "Vježba {nr}", + "@exerciseNr": { + "description": "Header in form indicating the number of the current exercise. Can also be translated as something like 'Set Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "supersetNr": "Super-serija {nr}", + "@supersetNr": { + "description": "Header in form indicating the number of the current exercise. Can also be translated as something like 'Superset Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "isRestDayHelp": "Imaj na umu da će se sve serije i vježbe ukloniti kada označiš dan kao dan odmora.", + "@isRestDayHelp": {}, + "needsLogsToAdvanceHelp": "Odaberi želiš li da se rutina nastavi na sljedeći zakazani dan, samo ako si za taj dan zapisao/la trening", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Dani u rutini", + "@routineDays": {}, + "errorInfoDescription": "Žao nam je, dogodila se greška. Možeš nam pomoći to popraviti prijavom problema na GitHub-u.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Možeš nastaviti koristiti aplikaciju, ali neke funkcije možda neće raditi.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Tehnički detalji", + "@errorViewDetails": {}, + "applicationLogs": "Dnevnici aplikacije", + "@applicationLogs": {}, + "errorCouldNotConnectToServer": "Neuspjelo povezivanje sa serverom", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "Aplikacija se nije mogla povezati sa serverom. Provjeri internetsku vezu ili URL servera i pokušaj ponovo. Ako problem ne nestane, obrati se administratoru servera.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "Kopiraj u međuspremnik", + "@copyToClipboard": {}, + "endDate": "Datum kraja", + "@endDate": { + "description": "The End date of a nutritional plan or routine" + }, + "openEnded": "Bez datuma kraja", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + }, + "overview": "Pregled", + "@overview": {}, + "aboutContributeTitle": "Doprinesi", + "@aboutContributeTitle": {}, + "aboutContributeText": "Sve vrste doprinosa su dobrodošle. Bilo da si programer, prevoditelj ili jednostavno strastveni ljubitelj fitnessa, svaka podrška je dobrodošla!", + "@aboutContributeText": {}, + "aboutBugsListTitle": "Prijavi problem ili predloži funkciju", + "@aboutBugsListTitle": {}, + "identicalExercisePleaseDiscard": "Ako primijetiš vježbu koja je identična onoj koju dodaješ, odbaci svoju vježbu i umjesto toga uredi tu vježbu.", + "@identicalExercisePleaseDiscard": {}, + "checkInformationBeforeSubmitting": "Provjeri točnost tvojih unesenih podataka prije slanja vježbe", + "@checkInformationBeforeSubmitting": {}, + "imageDetailsTitle": "Detalji slike", + "@imageDetailsTitle": { + "description": "Title for image details form" + }, + "imageDetailsLicenseTitle": "Naslov", + "@imageDetailsLicenseTitle": { + "description": "Label for image title field" + }, + "imageDetailsLicenseTitleHint": "Upiši naslov slike", + "@imageDetailsLicenseTitleHint": { + "description": "Hint text for image title field" + }, + "imageDetailsSourceLink": "Poveznica na izvornu web-stranicu", + "@imageDetailsSourceLink": { + "description": "Label for source link field" + }, + "author": "Autori", + "@author": {}, + "authorHint": "Upiši ime autora", + "@authorHint": { + "description": "Hint text for author field" + }, + "imageDetailsAuthorLink": "Poveznica na web-stranicu ili profil autora", + "@imageDetailsAuthorLink": { + "description": "Label for author link field" + }, + "imageDetailsDerivativeSource": "Poveznica na izvorni izvor, ako je ovo izvedeno djelo", + "@imageDetailsDerivativeSource": { + "description": "Label for derivative source field" + }, + "imageDetailsDerivativeHelp": "Izvedeno djelo se temelji na prethodnom djelu, ali sadrži dovoljno novog, kreativnog sadržaja da bi mu se dalo pravo na vlastita autorska prava.", + "@imageDetailsDerivativeHelp": { + "description": "Helper text explaining derivative works" + }, + "imageDetailsImageType": "Vrsta slike", + "@imageDetailsImageType": { + "description": "Label for image type selector" + }, + "imageDetailsLicenseNotice": "Slanjem ove slike pristaješ na njezino objavljivanje pod licencom CC-BY-SA-4. Slika mora biti tvoje vlastito djelo ili ju je autor morao objaviti pod s njom kompatibilnom licencom.", + "@imageDetailsLicenseNotice": {}, + "imageDetailsLicenseNoticeLinkToLicense": "Pogledaj tekst licence.", + "@imageDetailsLicenseNoticeLinkToLicense": {}, + "imageFormatNotSupported": "{imageFormat} nije podržani format", + "@imageFormatNotSupported": { + "description": "Label shown on the error container when image format is not supported", + "type": "text", + "placeholders": { + "imageFormat": { + "type": "String" + } + } + }, + "imageFormatNotSupportedDetail": "{imageFormat} slike još nisu podržane.", + "@imageFormatNotSupportedDetail": { + "description": "Label shown on the image preview container when image format is not supported", + "type": "text", + "placeholders": { + "imageFormat": { + "type": "String" + } + } + }, + "add": "dodaj", + "@add": { + "description": "Add button text" + }, + "enterTextInLanguage": "Upiši tekst u ispravnom jeziku!", + "@enterTextInLanguage": {}, + "simpleModeHelp": "Sakrij neke naprednije postavke prilikom uređivanja vježbi", + "@simpleModeHelp": {}, + "endWorkout": "Završi trening", + "@endWorkout": {} } From 3ef5f71aa050f46b02b00d8d3d4c6b84a5372aac Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Thu, 23 Oct 2025 17:17:01 +0200 Subject: [PATCH 25/26] Translated using Weblate (Croatian) Currently translated at 100.0% (3 of 3 strings) Translation: wger Workout Manager/Play Store Translate-URL: https://hosted.weblate.org/projects/wger/play-store/hr/ --- fastlane/metadata/android/hr/full_description.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fastlane/metadata/android/hr/full_description.txt b/fastlane/metadata/android/hr/full_description.txt index 9f3ffff2..61420ce6 100644 --- a/fastlane/metadata/android/hr/full_description.txt +++ b/fastlane/metadata/android/hr/full_description.txt @@ -1,10 +1,10 @@ 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 +Već si pronašao/la omiljeni program za fitness i voliš stvarati vlastite sportske rutine? Bez obzira na vrstu sporta kojim se baviš – svi imamo nešto zajedničko: Volimo pratiti naše zdravstvene podatke <3 Stoga te ne osuđujemo što još uvijek upravljaš svojim fitnessom sa svojim praktičnim malim dnevnikom vježbanja, ali nalazimo se u 2025. godini! -Razvili smo 100 % besplatan program za digitalno praćenje zdravlja i fitnessa, s najrelevantnijim funkcijama koje će ti olakšati život. Započni, nastavi trenirati i proslavi svoj napredak! +Razvili smo 100 % besplatan program za digitalno praćenje zdravlja i fitnessa, s najrelevantnijim funkcijama koje će ti olakšati život. Započni i nastavi trenirati te slavi svoj napredak! wger je projekt otvorenog koda za: * Tvoje tijelo @@ -28,12 +28,12 @@ Napomena: Ovaj besplatni program ne temelji se na dodatnim sredstvima i ne traž #Otvoreni kod – što to znači? -Otvoreni kod znači da je cijeli izvorni kod za ovaj program i poslužitelj s kojim razgovara besplatan i dostupan svima: -* Želiš pokrenuti wger na vlastitom poslužitelju za sebe ili lokalnu teretanu? Izvoli! +Otvoreni kod znači da je cijeli izvorni kod za ovaj program i server s kojim razgovara besplatan i dostupan svima: +* Želiš pokrenuti wger na vlastitom serveru za sebe ili lokalnu teretanu? Izvoli! * Nedostaje ti funkcija i želiš je implementirati? Počni odmah! * Želiš provjeriti da se nigdje ništa ne šalje? Možeš! Pridruži se našoj zajednici i postani dio sportskih entuzijasta i IT geekova iz cijelog svijeta. Nastavljamo raditi na prilagodbi i optimizaciji programa prilagođen našim potrebama. Volimo tvoj doprinos, stoga se slobodno uključi u bilo koje vrijeme i predloži tvoje želje i ideje! -> pronađi izvorni kod na https://github.com/wger-project --> postavljaj pitanja ili se jednostavno predstavi na našem Discord poslužitelju https://discord.gg/rPWFv6W +-> postavljaj pitanja ili se jednostavno predstavi na našem Discord serveru https://discord.gg/rPWFv6W From b9ac7bf19c9c0d84a4103163c1aba354c4e29136 Mon Sep 17 00:00:00 2001 From: Alessio Date: Tue, 28 Oct 2025 16:11:59 +0100 Subject: [PATCH 26/26] Translated using Weblate (Italian) Currently translated at 92.0% (324 of 352 strings) Translation: wger Workout Manager/Mobile App Translate-URL: https://hosted.weblate.org/projects/wger/mobile/it/ --- lib/l10n/app_it.arb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index af04ec18..7277acf9 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -1094,5 +1094,11 @@ "enterTextInLanguage": "Aggiungete il testo usando la lingua giusta!", "@enterTextInLanguage": {}, "applicationLogs": "Registri dell'applicazione", - "@applicationLogs": {} + "@applicationLogs": {}, + "dayTypeCustom": "Personalizzato", + "@dayTypeCustom": {}, + "dayTypeAfap": "Più velocemente possibile", + "@dayTypeAfap": {}, + "dayTypeHiit": "Allenamento a intervalli ad alta intensità", + "@dayTypeHiit": {} }