diff --git a/.github/actions/flutter-common/action.yml b/.github/actions/flutter-common/action.yml index 72c0e7b9..2f3c19bc 100644 --- a/.github/actions/flutter-common/action.yml +++ b/.github/actions/flutter-common/action.yml @@ -9,7 +9,7 @@ runs: uses: subosito/flutter-action@v2 with: channel: stable - flutter-version: 3.32.2 + flutter-version: 3.32.8 cache: true - name: Install Flutter dependencies diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 073681dc..5d11748c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -12,6 +12,6 @@ If applicable, please link to any related issues (`Closes #123`, - [ ] Tests for the changes have been added (for bug fixes / features) - [ ] Set a 100 character limit in your editor/IDE to avoid white space diffs in the PR - (run `dart format --line-length=100 .`) + (run `dart format .`) - [ ] Updated/added relevant documentation (doc comments with `///`). - [ ] Added relevant reviewers. diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index ff044875..f07a7066 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} diff --git a/.github/workflows/build-apple.yml b/.github/workflows/build-apple.yml index 64456188..0ca6888a 100644 --- a/.github/workflows/build-apple.yml +++ b/.github/workflows/build-apple.yml @@ -11,10 +11,15 @@ jobs: runs-on: macos-latest steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} + # This seems to be related to https://github.com/actions/runner-images/issues/12758 + - name: Xcode setup + run: | + sudo xcode-select --switch /Applications/Xcode_16.4.app + - name: Common flutter setup uses: ./.github/actions/flutter-common @@ -34,13 +39,18 @@ jobs: runs-on: macos-latest steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} - name: Common flutter setup uses: ./.github/actions/flutter-common + # This seems to be related to https://github.com/actions/runner-images/issues/12758 + - name: Xcode setup + run: | + sudo xcode-select --switch /Applications/Xcode_16.4.app + - name: Build .xcarchive run: | flutter build ipa --release --no-codesign @@ -57,7 +67,7 @@ jobs: runs-on: macos-latest steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index a69e3dff..5fd0882c 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -25,7 +25,7 @@ jobs: # runner: ubuntu-24.04-arm steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} @@ -56,14 +56,14 @@ jobs: steps: - name: Checkout flatpak-flathub repo - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: wger-project/de.wger.flutter - name: Bump version and update manifest run: | - pip install pyyaml toml - git clone https://github.com/TheAppgineer/flatpak-flutter.git --branch 0.7.0 ../flatpak-flutter + pip install pyyaml toml packaging + git clone https://github.com/TheAppgineer/flatpak-flutter.git --branch 0.7.2 ../flatpak-flutter python bump-wger-version.py ${{ inputs.ref }} ../flatpak-flutter/flatpak-flutter.py --app-module wger flatpak-flutter.json diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 8c1208b7..adc64f80 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -15,7 +15,7 @@ jobs: runs-on: windows-latest steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ inputs.ref }} diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 483b0c3e..951ab4db 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 # needed to push changes token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bc20e31..1fe851a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: name: Run tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Common flutter setup uses: ./.github/actions/flutter-common diff --git a/.github/workflows/linter.yml.bak b/.github/workflows/linter.yml.bak index 6339805d..e3665a58 100644 --- a/.github/workflows/linter.yml.bak +++ b/.github/workflows/linter.yml.bak @@ -26,7 +26,7 @@ jobs: run: flutter pub get - name: Check for formatting issues (run "dart format . ") - run: dart format --line-length=100 . + run: dart format . - name: Push a commit with the changed files continue-on-error: true diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml index ad371196..1b5b5f9a 100644 --- a/.github/workflows/make-release.yml +++ b/.github/workflows/make-release.yml @@ -61,12 +61,12 @@ jobs: - build_linux steps: - name: Checkout application - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.version }} - name: Download builds - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: path: /tmp/ @@ -105,7 +105,7 @@ jobs: # - build_apple # steps: # - name: Checkout application - # uses: actions/checkout@v4 + # uses: actions/checkout@v5 # with: # ref: feature/build-process # # ref: ${{ github.event.inputs.version }} @@ -114,7 +114,7 @@ jobs: # uses: ./.github/actions/flutter-common # # - name: Download builds - # uses: actions/download-artifact@v4 + # uses: actions/download-artifact@v5 # with: # path: /tmp/ # @@ -133,7 +133,7 @@ jobs: steps: - name: Download builds - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 - name: Make Github release uses: softprops/action-gh-release@v2 diff --git a/Gemfile.lock b/Gemfile.lock index e6608342..f886a26b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,25 +11,27 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1116.0) - aws-sdk-core (3.225.2) + aws-partitions (1.1152.0) + aws-sdk-core (3.231.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) base64 + bigdecimal jmespath (~> 1, >= 1.6.1) logger - aws-sdk-kms (1.105.0) - aws-sdk-core (~> 3, >= 3.225.0) + aws-sdk-kms (1.112.0) + aws-sdk-core (~> 3, >= 3.231.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.189.1) - aws-sdk-core (~> 3, >= 3.225.0) + aws-sdk-s3 (1.198.0) + aws-sdk-core (~> 3, >= 3.231.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.3.0) + bigdecimal (3.2.2) claide (1.1.0) colored (1.2) colored2 (3.1.2) @@ -58,10 +60,10 @@ GEM faraday (>= 0.8.0) http-cookie (~> 1.0.0) faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.0) + faraday-em_synchrony (1.0.1) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.1.0) + faraday-multipart (1.1.1) multipart-post (~> 2.0) faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) @@ -159,13 +161,13 @@ GEM httpclient (2.9.0) mutex_m jmespath (1.6.2) - json (2.12.2) - jwt (2.10.1) + json (2.13.2) + jwt (2.10.2) base64 logger (1.7.0) mini_magick (4.13.2) mini_mime (1.1.5) - multi_json (1.15.0) + multi_json (1.17.0) multipart-post (2.4.1) mutex_m (0.3.0) nanaimo (0.4.0) @@ -181,15 +183,15 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.4.1) + rexml (3.4.2) rouge (3.28.0) ruby2_keywords (0.0.5) rubyzip (2.4.1) security (0.1.5) - signet (0.20.0) + signet (0.21.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) - jwt (>= 1.5, < 3.0) + jwt (>= 1.5, < 4.0) multi_json (~> 1.10) simctl (1.6.10) CFPropertyList diff --git a/README.md b/README.md index cb728a73..cf31f6d3 100644 --- a/README.md +++ b/README.md @@ -17,12 +17,18 @@ If you want to contribute, hop on the Discord server and say hi! ## Installation -[Get it on Google Play](https://play.google.com/store/apps/details?id=de.wger.flutter) -[](https://play.google.com/store/apps/details?id=de.wger.flutter) +[Get it on F-Droid](https://f-droid.org/packages/de.wger.flutter/) +height="55">](https://f-droid.org/packages/de.wger.flutter/) +[](https://apps.apple.com/us/app/wger-workout-manager/id6502226792) +[](https://flathub.org/apps/de.wger.flutter) ## Developing and contributing diff --git a/analysis_options.yaml b/analysis_options.yaml index 15127111..68c186a1 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -19,6 +19,9 @@ analyzer: # Please see https://github.com/flutter/flutter/pull/24528 for details. sdk_version_async_exported_from_core: ignore +formatter: + page_width: 100 + linter: rules: # These rules are documented on and in the same order as @@ -165,8 +168,6 @@ dart_code_metrics: - avoid-passing-self-as-argument: false # fairly harmless. and e.g. drift calls are like this - avoid-passing-async-when-sync-expected: false # we really like to do this in onTap() etc, and it seems harmless - prefer-match-file-name: false # dieter wants to enable this. but requires a lot of renames. what does roland think? - formatter: indent: 0 - line-length: 100 cascading-widget-extensions: false diff --git a/android/app/build.gradle b/android/app/build.gradle index c9090ede..ce9cc658 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -24,7 +24,7 @@ if (keystorePropertiesFile.exists()) { android { namespace = "de.wger.flutter" compileSdkVersion 35 - ndkVersion "26.3.11579264" + ndkVersion "27.0.12077973" compileOptions { sourceCompatibility JavaVersion.VERSION_11 @@ -39,7 +39,9 @@ android { defaultConfig { // Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "de.wger.flutter" - minSdk = flutter.minSdkVersion + // NOTE: manually setting the minSdk to 23 instead of "flutter.minSdkVersion" + // because flutter_zxing requires a higher minSdkVersion. + minSdk = 23 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/fastlane/metadata/android/iw-IL/full_description.txt b/fastlane/metadata/android/iw-IL/full_description.txt new file mode 100644 index 00000000..8e72f266 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/full_description.txt @@ -0,0 +1,39 @@ +From fitness lovers to fitness lovers – get your health organized with WGER, your Workout Manager! + +Have you already found your #1 fitness app and do you love to create your own sports routines? No matter what type of sporty beast you are – we all have something in common: We love to keep track of our health data <3 + +So we don’t judge you for still managing your fitness journey with your handy little workout log book but welcome to 2025! + +We have developed a 100% free digital health and fitness tracker app for you, sized down to the most relevant features to make your life easier. Get started, keep training and celebrate your progress! + +wger is an Open Source project and all about: +* Your Body +* Your Workouts +* Your Progress +* Your Data + +Your Body: +No need to google for the ingredients of your favourite treats – choose your daily meals from more than 78000 products and see the nutritional values. Add meals to the nutritional plan and keep an overview of your diet in the calendar. + +Your Workouts: +You know what is best for your body. Create your own workouts out of a growing variety from 200 different exercises. Then, use the Gym Mode to guide you through the training while you log your weights with one tap. + +Your Progress: +Never lose sight of your goals. Track your weight and keep your statistics. + +Your Data: +wger is your personalized fitness diary – but you own your data. Use the REST API to access and do amazing things with it. + +Please note: This free app is not based on additional fundings and we don’t ask you to donate money. More than that it is a community project which is growing constantly. So be prepared for new features anytime! + +#OpenSource – what does that mean? + +Open Source means that the whole source code for this app and the server it talks to is free and available to anybody: +* Do you want to run wger on your own server for you or your local gym? Go ahead! +* Do you miss a feature and want to implement it? Start now! +* Do you want to check that nothing is being sent anywhere? You can! + +Join our community and become a part of sport enthusiasts and IT geeks from all over the world. We keep working on adjusting and optimizing the app customized to our needs. We love your input so feel free to jump in anytime and contribute your wishes and ideas! + +-> find the source code on https://github.com/wger-project +-> ask your questions or just say hello on our discord Server https://discord.gg/rPWFv6W \ No newline at end of file diff --git a/fastlane/metadata/android/iw-IL/short_description.txt b/fastlane/metadata/android/iw-IL/short_description.txt new file mode 100644 index 00000000..bdcc931c --- /dev/null +++ b/fastlane/metadata/android/iw-IL/short_description.txt @@ -0,0 +1 @@ +מעקב אחר כושר גופני, תזונה ומשקל diff --git a/fastlane/metadata/android/iw-IL/title.txt b/fastlane/metadata/android/iw-IL/title.txt new file mode 100644 index 00000000..ea0df956 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/title.txt @@ -0,0 +1 @@ +wger Workout Manager \ No newline at end of file diff --git a/fastlane/metadata/android/pt-PT/full_description.txt b/fastlane/metadata/android/pt-PT/full_description.txt index 60e8c3d9..abb82544 100644 --- a/fastlane/metadata/android/pt-PT/full_description.txt +++ b/fastlane/metadata/android/pt-PT/full_description.txt @@ -1,39 +1,39 @@ -Feito por amantes da vida fitness - organize sua saúde com o WGER, seu Gerenciador de Treinos! +De amantes do exercício para amantes do exercício - Organiza a tua saúde com WGER, o gestor de treinos! -Você já encontrou o seu aplicativo de fitness nº1? Você adora criar suas próprias rotinas de treino? Não importa que tipo de fera esportiva você seja - todos nós temos algo em comum: adoramos acompanhar nossos dados de saúde <3 +Já encontraste a tua aplicação fitness n.º 1 e adoras criar as tuas próprias rotinas desportivas? Independentemente do animal desportivo que sejas, todos temos algo em comum: adoramos dominar os nossos dados biométricos <3 -Nós não te julgamos por ainda gerenciar sua jornada fitness em um caderno, mas bem-vindo(a) ao século 21! +Por isso não te julgamos se ainda fazes os teus registos no teu lindo caderninho de treino, mas bem-vindo a 2025! -Desenvolvemos um aplicativo de acompanhemento de saúde e fitness 100% gratuito para você, reduzido aos recursos mais relevantes para facilitar sua vida. Comece, treine e comemore seu progresso! +Desenvolvemos uma aplicação digital de controle de treino e saúde 100% livre para ti, simplificada às funções mais importantes para simplificar a tua vida. Começa, continua a treinar e celebra os teus progressos! -O wger é um projeto open-source que é sobre: -* Seu Corpo -* Seus Treinos -* Seu Progresso -* Seus Dados +wger é um projeto open source e comprometido com: +* O teu corpo +* Os teus treinos +* O teu progresso +* Os teus dados -Seu Corpo: -Não precisa pesquisar no Google os ingredientes de suas receitas favoritas - escolha suas refeições diárias entre mais de 78.000 itens e veja os valores nutricionais. Adicione as refeições ao plano nutricional e mantenha uma visão geral de sua dieta no calendário. +O teu corpo +Não é preciso googlar os ingredientes dos teus petiscos favoritos - escolhe as tuas refeições diárias de mais de 78000 produtos e verifica os valores nutricionais. Adiciona refeições ao plano nutricional e tem uma visão de conjunto da tua dieta no calendário. -Seus Treinos: -Você sabe o que é melhor para o seu corpo. Crie seus próprios treinos a partir de uma variedade de mais de 200 exercícios. Em seguida, use o Modo Academia para orientá-lo durante o treino, enquanto registra suas cargas com um clique. +Os teus treinos +Tu sabes o que é melhor para o teu corpo. Cria os teus treinos a partir duma grande variedade de 200 exercícios diferentes. Depois, usa o modo ginásio para te guiar no treino enquanto registas os pesos com um toque. -Seu Progresso: -Nunca perca de vista seus objetivos. Acompanhe seu peso e mantenha suas estatísticas. +O teu progresso +Nunca percas os teus objetivos de vista. Regista o teu peso e guarda as tuas estatísticas. -Seus Dados: -O wger é o seu diário fitness personalizado - mas você é dono(a) dos seus dados. Use a REST API para acessá-los e fazer coisas incríveis com eles. +Os teus dados +wger é o teu diário de treino personalizado - mas tu possuis os teus dados. Usa a API REST para aceder e fazer coisas espantosas com eles. -Obs.: Este aplicativo gratuito não é baseado em financiamentos adicionais e não pedimos que você doe dinheiro. Mais do que isso, é um projeto comunitário em constante crescimento. Portanto, esteja preparado(a) para novos recursos a qualquer momento! +Por favor nota: Esta app gratuita não está baseada em fundos adicionais e não pedimos que dês dinheiro. Mais do que isso, é um projeto comunitário que tem evoluído constantemente. Por isso, espera novas funcionalidades a qualquer momento! -#CódigoAberto - o que isso significa? +#Código aberto - O que quer isso dizer? -Código aberto significa que todo o código-fonte deste aplicativo e do servidor ao qual ele se conecta é gratuito e está disponível para qualquer pessoa: -* Você quer executar o wger em seu próprio servidor, para você ou para sua academia? Sinta-se à vontade! -* Está sentindo falta de um recurso e quer implementá-lo? Comece agora! -* Quer verificar se nenhum dado está sendo compartilhado? Você pode! +Código aberto quer dizer que todo o código fonte desta aplicação e do servidor com que comunica é livre e disponível para toda a gente: +* Queres correr o wger no teu servidor para ti e para o teu ginásio? Força! +* Sentes falta duma funcionalidade e queres implementá-la? Começa já! +* Queres verificar que nada está a ser enviado para lado nenhum? Podes! -Junte-se à nossa comunidade e faça parte dos entusiastas do esporte e geeks de TI de todo o mundo. Continuamos trabalhando para ajustar e otimizar o aplicativo de acordo com nossas necessidades. Amamos suas contribuições, então sinta-se à vontade para participar a qualquer momento e contribuir com seus desejos e ideias! +Junta-te à nossa comunidade e torna-te parte de entusiastas do exercício e geeks das TI de todo o mundo. Nós continuamos a ajustar e otimizar a app talhada para as nossas necessidades. Adoramos o teu contributo, por isso sente-te à vontade para aparecer com sugestões e ideias! --> encontre o código-fonte em https://github.com/wger-project --> faça suas perguntas ou apenas diga Olá no nosso servidor do Discord https://discord.gg/rPWFv6W +-> encontra o código fonte em https://github.com/wger-project +-> faz as tuas perguntas ou simplesmente diz olá no nosso servidor discord https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/pt-PT/short_description.txt b/fastlane/metadata/android/pt-PT/short_description.txt index 064060fe..3b018c2c 100644 --- a/fastlane/metadata/android/pt-PT/short_description.txt +++ b/fastlane/metadata/android/pt-PT/short_description.txt @@ -1 +1 @@ -Monitore seus treinos e dieta +Gestor de treinos, nutrição e peso diff --git a/flatpak/de.wger.flutter.metainfo.xml b/flatpak/de.wger.flutter.metainfo.xml index 70ea7dc9..3abff699 100755 --- a/flatpak/de.wger.flutter.metainfo.xml +++ b/flatpak/de.wger.flutter.metainfo.xml @@ -78,6 +78,12 @@ + + +

Bug fixes and improvements.

+
+ https://github.com/wger-project/flutter/releases/tag/1.8.4 +

Bug fixes and improvements.

diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 10721381..74e7ac47 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -22,28 +22,31 @@ PODS: - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - sqlite3 (3.50.1): - - sqlite3/common (= 3.50.1) - - sqlite3/common (3.50.1) - - sqlite3/dbstatvtab (3.50.1): + - sqlite3 (3.50.4): + - sqlite3/common (= 3.50.4) + - sqlite3/common (3.50.4) + - sqlite3/dbstatvtab (3.50.4): - sqlite3/common - - sqlite3/fts5 (3.50.1): + - sqlite3/fts5 (3.50.4): - sqlite3/common - - sqlite3/math (3.50.1): + - sqlite3/math (3.50.4): - sqlite3/common - - sqlite3/perf-threadsafe (3.50.1): + - sqlite3/perf-threadsafe (3.50.4): - sqlite3/common - - sqlite3/rtree (3.50.1): + - sqlite3/rtree (3.50.4): + - sqlite3/common + - sqlite3/session (3.50.4): - sqlite3/common - sqlite3_flutter_libs (0.0.1): - Flutter - FlutterMacOS - - sqlite3 (~> 3.50.1) + - sqlite3 (~> 3.50.4) - sqlite3/dbstatvtab - sqlite3/fts5 - sqlite3/math - sqlite3/perf-threadsafe - sqlite3/rtree + - sqlite3/session - url_launcher_ios (0.0.1): - Flutter - video_player_avfoundation (0.0.1): @@ -112,8 +115,8 @@ SPEC CHECKSUMS: pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed rive_common: dd421daaf9ae69f0125aa761dd96abd278399952 shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 - sqlite3: 1d85290c3321153511f6e900ede7a1608718bbd5 - sqlite3_flutter_libs: e7fc8c9ea2200ff3271f08f127842131746b70e2 + sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b + sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1 url_launcher_ios: 694010445543906933d732453a59da0a173ae33d video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b diff --git a/lib/helpers/date.dart b/lib/helpers/date.dart new file mode 100644 index 00000000..9177b8fc --- /dev/null +++ b/lib/helpers/date.dart @@ -0,0 +1,40 @@ +/* + * This file is part of wger Workout Manager . + * Copyright (C) wger Team + * + * wger Workout Manager is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * wger Workout Manager is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/// Returns a timezone aware DateTime object from a date and time string. +DateTime getDateTimeFromDateAndTime(String date, String time) { + return DateTime.parse('$date $time'); +} + +/// Returns a list of [DateTime] objects from [first] to [last], inclusive. +List daysInRange(DateTime first, DateTime last) { + final dayCount = last.difference(first).inDays + 1; + return List.generate( + dayCount, + (index) => DateTime.utc(first.year, first.month, first.day + index), + ); +} + +extension DateTimeExtension on DateTime { + bool isSameDayAs(DateTime other) { + final thisDay = DateTime(year, month, day); + final otherDay = DateTime(other.year, other.month, other.day); + + return thisDay.isAtSameMomentAs(otherDay); + } +} diff --git a/lib/helpers/json.dart b/lib/helpers/json.dart index f10c1f80..1ac50ffb 100644 --- a/lib/helpers/json.dart +++ b/lib/helpers/json.dart @@ -53,6 +53,15 @@ String? dateToYYYYMMDD(DateTime? dateTime) { return DateFormat('yyyy-MM-dd').format(dateTime); } +/// Convert a date to UTC and then to an ISO8601 string. +/// +/// This makes sure that the serialized data has correct timezone information. +/// Otherwise the django backend will possibly treat the date as local time, +/// which will not be correct in most cases. +String dateToUtcIso8601(DateTime dateTime) { + return dateTime.toUtc().toIso8601String(); +} + /* * Converts a time to a date object. * Needed e.g. when the wger api only sends a time but no date information. diff --git a/lib/helpers/misc.dart b/lib/helpers/misc.dart index 8db74a85..f99b2364 100644 --- a/lib/helpers/misc.dart +++ b/lib/helpers/misc.dart @@ -63,38 +63,6 @@ String repText( return out.join(' '); } -/// Returns a list of [DateTime] objects from [first] to [last], inclusive. -List daysInRange(DateTime first, DateTime last) { - final dayCount = last.difference(first).inDays + 1; - return List.generate( - dayCount, - (index) => DateTime.utc(first.year, first.month, first.day + index), - ); -} - -extension TimeOfDayExtension on TimeOfDay { - bool isAfter(TimeOfDay other) { - return toMinutes() > other.toMinutes(); - } - - bool isBefore(TimeOfDay other) { - return toMinutes() < other.toMinutes(); - } - - int toMinutes() { - return (hour * 60) + minute; - } -} - -extension DateTimeExtension on DateTime { - bool isSameDayAs(DateTime other) { - final thisDay = DateTime(year, month, day); - final otherDay = DateTime(other.year, other.month, other.day); - - return thisDay.isAtSameMomentAs(otherDay); - } -} - void launchURL(String url, BuildContext context) async { final scaffoldMessenger = ScaffoldMessenger.of(context); final launched = await launchUrl(Uri.parse(url)); diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index f6b4f004..5cd7da9d 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -795,5 +795,15 @@ "description": "Error message when the user enters an invalid API key" }, "useUsernameAndPassword": "استخدم اسم المستخدم وكلمة المرور", - "@useUsernameAndPassword": {} + "@useUsernameAndPassword": {}, + "selectAvailablePlates": "اختر من الاطباق المتوفرة", + "@selectAvailablePlates": {}, + "barWeight": "وزن القضيب الحديدي", + "@barWeight": {}, + "useColors": "استخدم الالوان", + "@useColors": {}, + "apiTokenValidChars": "إن مفتاح ال API لا يمكن أن يحتوي غير الأحرف من a-f، أرقام من 0-9، ويحب أن تكون 40 محرف تماما", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + } } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index d408d271..a3507580 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -155,6 +155,8 @@ "@category": { "description": "Category for an exercise, ingredient, etc." }, + "endDate": "End date", + "startDate": "Start date", "routines": "Routines", "newRoutine": "New routine", "noRoutines": "You have no routines", diff --git a/lib/l10n/app_he.arb b/lib/l10n/app_he.arb index 5c4ca82c..84233651 100644 --- a/lib/l10n/app_he.arb +++ b/lib/l10n/app_he.arb @@ -45,19 +45,19 @@ "@customServerHint": { "description": "Hint text for the form where the users can enter their own wger instance" }, - "labelWorkoutLogs": "יומני אימון", + "labelWorkoutLogs": "אימונים מתועדים", "@labelWorkoutLogs": { "description": "(Workout) logs" }, - "labelWorkoutPlan": "תוכנית כושר", + "labelWorkoutPlan": "תוכנית אימונים", "@labelWorkoutPlan": { "description": "Title for screen workout plan" }, - "labelDashboard": "לוח פעולות", + "labelDashboard": "לוח בקרה", "@labelDashboard": { "description": "Title for screen dashboard" }, - "successfullyDeleted": "נמחק", + "successfullyDeleted": "המחיקה בוצעה", "@successfullyDeleted": { "description": "Message when an item was successfully deleted" }, @@ -65,11 +65,11 @@ "@successfullySaved": { "description": "Message when an item was successfully saved" }, - "exercise": "תרגיל כושר", + "exercise": "תרגיל", "@exercise": { "description": "An exercise for a workout" }, - "searchExercise": "חיפוש תרגיל כושר להוספה", + "searchExercise": "חיפוש תרגילים להוספה", "@searchExercise": { "description": "Label on set form. Selected exercises are added to the set" }, @@ -129,7 +129,7 @@ "@notes": { "description": "Personal notes, e.g. for a workout session" }, - "workoutSession": "אימון", + "workoutSession": "סשן אימונים", "@workoutSession": { "description": "A (logged) workout session" }, @@ -165,7 +165,7 @@ "@mealLogged": {}, "addIngredient": "הוספת מרכיב", "@addIngredient": {}, - "nutritionalPlan": "תוכנית תזונה", + "nutritionalPlan": "תכנון תזונתי", "@nutritionalPlan": {}, "nutritionalDiary": "יומן תזונה", "@nutritionalDiary": {}, @@ -199,7 +199,7 @@ "@value": { "description": "The value of a measurement entry" }, - "start": "התחל", + "start": "התחלה", "@start": { "description": "Label on button to start the gym mode (i.e., an imperative)" }, @@ -223,7 +223,7 @@ "@energy": { "description": "Energy in a meal, ingredient etc. e.g. in kJ" }, - "logMeal": "רשום את הארוחה הזאת", + "logMeal": "תיעוד המנה ביומן התזונתי", "@logMeal": {}, "logHelpEntriesUnits": "שים לב שרק רשומות עם יחידת משקל (ק\"ג או ליברות) וחזרות הן ממופות, ישנה התעלמות משילובים אחרים כגון זמן או עד כשלון.", "@logHelpEntriesUnits": {}, @@ -243,7 +243,7 @@ "@difference": {}, "percentEnergy": "אחוז של אנרגיה", "@percentEnergy": {}, - "total": "סה\"כ", + "total": "סה״כ", "@total": { "description": "Label used for total sums of e.g. calories or similar" }, @@ -273,7 +273,7 @@ "@amount": { "description": "The amount (e.g. in grams) of an ingredient in a meal" }, - "unit": "יחידה", + "unit": "יחידת מידה", "@unit": { "description": "The unit used for a repetition (kg, time, etc.)" }, @@ -322,11 +322,11 @@ "description": "Label shown on the slider where the user can toggle showing units and RiR", "type": "text" }, - "reset": "אתחול", + "reset": "איפוס", "@reset": { "description": "Button text allowing the user to reset the entered values to the default" }, - "loginInstead": "הכנס במקום", + "loginInstead": "כבר יש לך חשבון? ניתן להיכנס", "@loginInstead": {}, "selectExercise": "אנא בחר/י אימון", "@selectExercise": { @@ -379,7 +379,7 @@ "@gallery": {}, "addImage": "הוסף תמונה", "@addImage": {}, - "email": "כתובת מייל", + "email": "כתובת דואר אלקטרוני", "@email": {}, "username": "שם משתמש", "@username": {}, @@ -399,13 +399,13 @@ "@passwordsDontMatch": { "description": "Error message when the user enters two different passwords during registration" }, - "invalidEmail": "אנא הכנס/י כתובת מייל תקינה", + "invalidEmail": "נא להקליד כתובת דואר אלקטרוני תקינה", "@invalidEmail": { "description": "Error message when the user enters an invalid email" }, "registerInstead": "אין לך חשבון? הירשם עכשיו", "@registerInstead": {}, - "labelBottomNavWorkout": "כושר", + "labelBottomNavWorkout": "אימון", "@labelBottomNavWorkout": { "description": "Label used in bottom navigation, use a short word" }, @@ -445,9 +445,9 @@ "@selectExercises": {}, "logHelpEntries": "אם ביום אחד ישנה יותר מרשומה אחת עם אותה כמות חזרות, אבל משקל שונה, רק הרשומה עם המשקל הגבוה יותר תופיע בדיאגרמה.", "@logHelpEntries": {}, - "searchNamesInEnglish": "חפש גם לפי שמות באנגלית", + "searchNamesInEnglish": "לחפש גם לפי השמות באנגלית", "@searchNamesInEnglish": {}, - "success": "מוצלח", + "success": "הפעולה צלחה", "@success": { "description": "Message when an action completed successfully, usually used as a heading" }, @@ -466,5 +466,501 @@ "noMatchingExerciseFound": "לא נמצאו תרגילים תואמים", "@noMatchingExerciseFound": { "description": "Message returned if no exercises match the searched string" + }, + "useColors": "שימוש בצבעים", + "@useColors": {}, + "useApiToken": "שימוש באסימון API", + "@useApiToken": {}, + "useUsernameAndPassword": "שימוש בשם משתמש וסיסמה", + "@useUsernameAndPassword": {}, + "apiToken": "אסימון API", + "@apiToken": {}, + "invalidApiToken": "נא להקליד אסימון API תקין", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "routines": "שגרות", + "@routines": {}, + "newRoutine": "שגרה חדשה", + "@newRoutine": {}, + "noRoutines": "אין לך שגרות", + "@noRoutines": {}, + "restDay": "יום מנוחה", + "@restDay": {}, + "isRestDay": "הוא יום מנוחה", + "@isRestDay": {}, + "routineDays": "ימים בשגרה", + "@routineDays": {}, + "verify": "אימות", + "@verify": {}, + "searchIngredient": "חיפוש מרכיב", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "onlyLogging": "מעקב אחר קלוריות בלבד", + "@onlyLogging": {}, + "goalMacro": "מטרות מזעריות", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "goalEnergy": "יעד אנרגיה", + "@goalEnergy": {}, + "goalProtein": "יעד חלבונים", + "@goalProtein": {}, + "goalFat": "יעד שומנים", + "@goalFat": {}, + "goalFiber": "יעד סיבים תזונתיים", + "@goalFiber": {}, + "errorViewDetails": "פרטים טכניים", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "לא היה ניתן להתחבר לשרת", + "@errorCouldNotConnectToServer": {}, + "min": "מינ׳", + "@min": {}, + "max": "מקס׳", + "@max": {}, + "today": "היום", + "@today": {}, + "weekAverage": "ממוצע שבועי", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "kcalValue": "{value} ק׳ קלוריות", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "gValue": "{value} גר׳", + "@gValue": { + "description": "A value in grams, e.g. 5 g", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "percentValue": "{value}%", + "@percentValue": { + "description": "A value in percent, e.g. 10 %", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "aboutWhySupportTitle": "תוכנה בקוד פתוח, וחופשית לשימוש ❤️", + "@aboutWhySupportTitle": {}, + "aboutDonateTitle": "תרומה כספית", + "@aboutDonateTitle": {}, + "aboutContributeTitle": "התנדבות", + "@aboutContributeTitle": {}, + "aboutTranslationListTitle": "עזרה בתרגום היישום", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "צפייה בקוד המקור", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "הצטרפות לקהילה", + "@aboutJoinCommunityTitle": {}, + "others": "אחרים", + "@others": {}, + "selectEntry": "נא לבחור ערך", + "@selectEntry": {}, + "recentlyUsedIngredients": "מרכיבים שנוספו לאחרונה", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "appUpdateTitle": "צריך לעדכן", + "@appUpdateTitle": {}, + "appUpdateContent": "גרסה זו של היישום אינה מסוגלת להתחבר לשרת, נא לעדכן את היישום.", + "@appUpdateContent": {}, + "productFound": "המוצר נמצא", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productNotFound": "המוצר לא נמצא", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "scanBarcode": "סריקת ברקוד", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "סגירה", + "@close": { + "description": "Translation for close" + }, + "alsoKnownAs": "מוכר גם בתור: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "alternativeNames": "שמות חלופיים", + "@alternativeNames": {}, + "previous": "הקודם", + "@previous": {}, + "next": "הבא", + "@next": {}, + "images": "תמונות", + "@images": {}, + "language": "שפה", + "@language": {}, + "addExercise": "הוספת תרגיל", + "@addExercise": {}, + "translation": "תרגום", + "@translation": {}, + "translateExercise": "לתרגם את התרגיל הזה כעת", + "@translateExercise": {}, + "settingsTitle": "הגדרות", + "@settingsTitle": {}, + "settingsCacheTitle": "מטמון", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "מטמון תרגילים", + "@settingsExerciseCacheDescription": {}, + "aboutPageTitle": "מידע כללי ותמיכה", + "@aboutPageTitle": {}, + "simpleMode": "מצב פשוט", + "@simpleMode": {}, + "arms": "זרועות", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "back": "גב", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "biceps": "שרירי הקיבורת (דו־ראשיים)", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "body_weight": "משקל הגוף", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "cardio": "סיבולת", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "chest": "חזה", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "שטיח אימונים", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "קילומטרים", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "קילומטרים לשעה", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles": "מילים", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "מילים לשעה", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "דקות", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "resistance_band": "רצועת התנגדות", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "שניות", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "כתפיים", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "השרירים התלת־ראשיים", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "kg": "ק״ג", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "goalTypeBasic": "בסיסי", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "מתקדם", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorAvg": "ממוצע", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "systemMode": "הגדרות מערכת", + "@systemMode": {}, + "copyToClipboard": "העתקה ללוח", + "@copyToClipboard": {}, + "noIngredientsDefined": "עדיין לא הוגדרו מרכיבים", + "@noIngredientsDefined": {}, + "restTime": "זמן מנוחה", + "@restTime": {}, + "sets": "סטים", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "ingredientLogged": "המרכיב תועד ביומן", + "@ingredientLogged": {}, + "logIngredient": "תיעוד המרכיב ביומן התזונתי", + "@logIngredient": {}, + "errorInfoDescription": "משהו השתבש, עמך הסליחה. ניתן לעזור לנו בתיקון התקלה בעזרת דיווח על הבעיה ב־GitHub.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "אפשר להמשיך להשתמש ביישום, אבל ייתכן כי תכונות מסוימות לא יעבדו.", + "@errorInfoDescription2": {}, + "proteinShort": "חל׳", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "fatShort": "שומנ׳", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "moreMeasurementEntries": "הוספת מדד חדש", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "aboutBugsListTitle": "דיווח על בעיה או הצעת תכונה חדשה", + "@aboutBugsListTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "dataCopied": "הנתונים הועתקו לערך החדש", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "useMetric": "שימוש בשיטה המטרית למדידת משקל הגוף", + "@useMetric": {}, + "selectMealToLog": "בחירת מנה לתיעוד ביומן", + "@selectMealToLog": {}, + "energyShort": "אנרגיה", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "loggedToday": "תועדו היום", + "@loggedToday": {}, + "enterMinCharacters": "נא להקליד לפחות {min} תווים", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "productFoundDescription": "הברקוד תואם למוצר: {productName}. להמשיך?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "productNotFoundDescription": "לא נמצא המוצר עם הברקוד שנסרק {barcode} במאגר של wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "verifiedEmail": "דוא״ל מאומת", + "@verifiedEmail": {}, + "unVerifiedEmail": "דוא״ל לא מאומת", + "@unVerifiedEmail": {}, + "verifiedEmailInfo": "נשלחה הודעת אימות לכתובת {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "setHasNoExercises": "עדיין אין אימונים בסט זה!", + "@setHasNoExercises": {}, + "settingsIngredientCacheDescription": "מטמון מרכיב", + "@settingsIngredientCacheDescription": {}, + "settingsCacheDeletedSnackbar": "המטמון נוקה בהצלחה", + "@settingsCacheDeletedSnackbar": {}, + "textPromptTitle": "מוכנים להתחיל?", + "@textPromptTitle": {}, + "abs": "שרירי בטן", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "lb": "פאונד", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "log": "תיעוד", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "סיום", + "@done": {}, + "themeMode": "ערכת עיצוב", + "@themeMode": {}, + "darkMode": "עיצוב כהה תמיד", + "@darkMode": {}, + "lightMode": "עיצוב בהיר תמיד", + "@lightMode": {}, + "barWeight": "משקל Bar", + "@barWeight": {}, + "apiTokenValidChars": "מפתח API יכול להכיל רק את האותיות a-f, את הספרות 0-9, ועליו להיות באורך 40 תווים בדיוק", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "exerciseNr": "תרגיל {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" + } + } + }, + "isRestDayHelp": "לתשומת לבך, כל הסטים והתרגילים יוסרו מימים שהגדרת בתור ימי מנוחה.", + "@isRestDayHelp": {}, + "onlyLoggingHelpText": "נא לסמן תיבה זו אך ורק אם ברצונך לתעד את כמות הקלוריות מבלי להגדיר תוכנית תזונתית עם מנות ספציפיות", + "@onlyLoggingHelpText": {}, + "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" + }, + "errorCouldNotConnectToServerDetails": "אין באפשרות היישום להתחבר לשרת. נא לבדוק את החיבור לאינטרנט או לכתובת השרת ולנסות שוב. אם הבעיה ממשיכה להתקיים, נא לפנות למנהל השרת.", + "@errorCouldNotConnectToServerDetails": {}, + "chartAllTimeTitle": "{name} בכל הזמנים", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chart30DaysTitle": "{name} ב־30 הימים האחרונים", + "@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" + } + } + }, + "aboutDonateText": "בעוד המיזם הזה חופשי ותמיד יישאר כך, תפעול השרת כן עולה לנו כסף! גם הפיתוח דורש השקעה משמעותית של זמן ומאמץ של מתנדבים. התרומה שלך תלך ישירות לכיסוי העלויות האלה, המאפשרות לספק את השירות שלנו נאמנה.", + "@aboutDonateText": {}, + "aboutContributeText": "אנחנו מעודדים את כל סוגי התרומה. בין אם היא מתבטאת בפיתוח קוד, תרגום, או אפילו רק תשוקה לכושר, אנו מעריכים כל סוג של תמיכה!", + "@aboutContributeText": {}, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "baseNameEnglish": "לכל התרגילים נחוץ שם מקור באנגלית", + "@baseNameEnglish": {}, + "add_exercise_image_license": "על התמונות להיות תואמות לרישיון CC BY SA. אם יש ספק כלשהו, יש להעלות רק תמונות שצילמת בעצמך.", + "@add_exercise_image_license": {}, + "variations": "וריאציות", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "verifiedEmailReason": "עליך לאמת את הדואר האלקטרוני שלך כדי לתרום תרגילים", + "@verifiedEmailReason": {}, + "oneNamePerLine": "שם אחד בכל שורה", + "@oneNamePerLine": {}, + "whatVariationsExist": "מהן הווריאציות שיש לתרגיל זה, אם קיימות?", + "@whatVariationsExist": {}, + "contributeExercise": "לתרום תרגיל", + "@contributeExercise": {}, + "contributeExerciseWarning": "אפשר לתרום תרגילים אך ורק אם החשבון שלך בן יותר מ־{days} ימים וכתובת הדואר האלקטרוני שלך מאומתת", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "textPromptSubheading": "נא ללחוץ על כפתור הפעולה כדי להתחיל", + "@textPromptSubheading": {}, + "bench": "", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "משקולות", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "משקולות קטלבל", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "legs": "רגליים", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "lower_back": "גב תחתון", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "מספר מרבי של חזרות", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "swiss_ball": "כדור התעמלות", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "ללא (התרגיל מסתמך על משקל גוף)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "overallChangeWeight": "שינוי כללי", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" } -} \ No newline at end of file +} diff --git a/lib/l10n/app_hr.arb b/lib/l10n/app_hr.arb index 408a1c29..117cd7b0 100644 --- a/lib/l10n/app_hr.arb +++ b/lib/l10n/app_hr.arb @@ -1,942 +1,974 @@ { - "todaysWorkout": "Tvoj današnji trening", - "@todaysWorkout": {}, - "mealLogged": "Obrok prijavljen u dnevnik", - "@mealLogged": {}, - "time": "Vrijeme", - "@time": { - "description": "The time of a meal or workout" - }, - "timeEnd": "Vrijeme završetka", - "@timeEnd": { - "description": "The end time of a workout" - }, - "username": "Korisničko ime", - "@username": {}, - "passwordsDontMatch": "Lozinke se ne podudaraju", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "passwordTooShort": "Lozinka je prekratka", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "password": "Lozinka", - "@password": {}, - "confirmPassword": "Potvrdi lozinku", - "@confirmPassword": {}, - "invalidEmail": "Upiši valjanu e-mail adresu", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "email": "E-mail adresa", - "@email": {}, - "invalidUrl": "Upiši važeći URL", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "useCustomServer": "Koristi prilagođeni poslužitelj", - "@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": { - "description": "Error message when the user enters an invalid username" - }, - "customServerUrl": "URL wger instance", - "@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": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "registerInstead": "Nemaš račun? Registriraj se", - "@registerInstead": {}, - "loginInstead": "Već imaš račun? Prijavi se", - "@loginInstead": {}, - "labelBottomNavWorkout": "Trening", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavNutrition": "Prehrana", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelWorkoutLogs": "Dnevnici treninga", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "labelWorkoutPlan": "Plan treninga", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "labelDashboard": "Kontrolna ploča", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "successfullyDeleted": "Izbrisano", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "successfullySaved": "Spremljeno", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "exercise": "Vježba", - "@exercise": { - "description": "An exercise for a workout" - }, - "logHelpEntriesUnits": "Napomena: prikazuju se samo unosi s jedinicom težine (kg ili lb) i ponavljanja, druge kombinacije kao što su vrijeme ili do neuspjeha se ovdje zanemaruju.", - "@logHelpEntriesUnits": {}, - "description": "Opis", - "@description": {}, - "name": "Ime", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "nutritionalDiary": "Dnevnik prehrane", - "@nutritionalDiary": {}, - "nutritionalPlans": "Planovi prehrane", - "@nutritionalPlans": {}, - "noNutritionalPlans": "Nemaš planove prehrane", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "anErrorOccurred": "Dogodila se greška!", - "@anErrorOccurred": {}, - "weight": "Težina", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "measurement": "Mjerenje", - "@measurement": {}, - "measurements": "Mjerenja", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurementCategoriesHelpText": "Kategorija mjerenja, kao što su „bicepsi” ili „tjelesna mast”", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "Jedinica koja se koristi za mjerenje kategorije kao što su „cm” ili „%”", - "@measurementEntriesHelpText": {}, - "date": "Datum", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "repetitions": "Ponavljanja", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "reps": "Ponavljanja", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "rir": "PUR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "rirNotUsed": "PUR se ne koristi", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "macronutrients": "Makronutrijenti", - "@macronutrients": {}, - "planned": "Planirano", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "logged": "Zabilježeno", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "difference": "Razlika", - "@difference": {}, - "percentEnergy": "Postotak energije", - "@percentEnergy": {}, - "gPerBodyKg": "g po tjelesnom kg", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "total": "Ukupno", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "carbohydrates": "Ugljikohidrati", - "@carbohydrates": {}, - "carbohydratesShort": "U", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "sugars": "Šećeri", - "@sugars": {}, - "fat": "Masti", - "@fat": {}, - "fatShort": "M", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "saturatedFat": "Zasićene masti", - "@saturatedFat": {}, - "fiber": "Vlakna", - "@fiber": {}, - "sodium": "Natrij", - "@sodium": {}, - "toggleDetails": "Prikaži detalje", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "enterValue": "Upiši vrijednost", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "selectExercise": "Odaberi vježbu", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterCharacters": "Upiši {min} do {max} znakova", - "@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" - } - } - }, - "nrOfSets": "Broj serija po vježbi: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "setUnitsAndRir": "Postavi jedinice i PUR", - "@setUnitsAndRir": { - "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": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "selectIngredient": "Odaberi sastojak", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "selectImage": "Odaberi sliku", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "optionsLabel": "Opcije", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "takePicture": "Snimi sliku", - "@takePicture": {}, - "chooseFromLibrary": "Odaberi iz biblioteke slika", - "@chooseFromLibrary": {}, - "gallery": "Galerija", - "@gallery": {}, - "addImage": "Dodaj sliku", - "@addImage": {}, - "dataCopied": "Podaci kopirani u novi unos", - "@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": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "logHelpEntries": "Ako u jednom danu postoji više od jednog unosa s istim brojem ponavljanja, ali različitim težinama, na dijagramu je prikazan samo unos s većom težinom.", - "@logHelpEntries": {}, - "addSet": "Dodaj seriju", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Dodaj obrok", - "@addMeal": {}, - "nutritionalPlan": "Plan prehrane", - "@nutritionalPlan": {}, - "useDefaultServer": "Koristi zadani poslužitelj", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "logout": "Odjavi se", - "@logout": { - "description": "Text for logout button" - }, - "login": "Prijavi se", - "@login": { - "description": "Text for login button" - }, - "register": "Registracija", - "@register": { - "description": "Text for registration button" - }, - "reset": "Resetiraj", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "jumpTo": "Prijeđi na", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "save": "Spremi", - "@save": {}, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "addIngredient": "Dodaj sastojak", - "@addIngredient": {}, - "logMeal": "Zapiši obrok u dnevnik prehrane", - "@logMeal": {}, - "value": "Vrijednost", - "@value": { - "description": "The value of a measurement entry" - }, - "start": "Početak", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "timeStart": "Vrijeme početka", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeStartAhead": "Vrijeme početka ne može biti prije vremena završetka", - "@timeStartAhead": {}, - "ingredient": "Sastojak", - "@ingredient": {}, - "energy": "Energija", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "protein": "Proteini", - "@protein": {}, - "goToToday": "Idi na danas", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "unit": "Jedinica", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "edit": "Uredi", - "@edit": {}, - "confirmDelete": "Stvarno želiš izbrisati „{toDelete}”?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "newNutritionalPlan": "Novi plan prehrane", - "@newNutritionalPlan": {}, - "amount": "Količina", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "newEntry": "Novi unos", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "noWeightEntries": "Nemaš unose težine", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "loadingText": "Učitavanje …", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "delete": "Izbriši", - "@delete": {}, - "goToDetailPage": "Idi na stranicu s detaljima", - "@goToDetailPage": {}, - "aboutDescription": "Hvala što koristiš wger! wger je suradnički projekt otvorenog koda koji su izradili ljubitelji fitnesa iz cijelog svijeta.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "calendar": "Kalendar", - "@calendar": {}, - "musclesSecondary": "Sekundarni mišići", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "equipment": "Oprema", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "category": "Kategorija", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "searchExercise": "Traži vježbe koje želiš dodati", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "muscles": "Mišići", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "dayDescriptionHelp": "Opis onoga što se radi na današnji dan (npr. „dan povlačenja”) ili koji su dijelovi tijela trenirani (npr. „prsa i ramena”)", - "@dayDescriptionHelp": {}, - "setNr": "Serija br. {nr}", - "@setNr": { - "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", - "type": "text", - "placeholders": { - "nr": { - "type": "String" - } - } - }, - "sameRepetitions": "Ako radiš ista ponavljanja i težinu za sve serije, ispuni jedan redak. Na primjer, za 4 serije jednostavno upiši 10 za ponavljanja, to automatski postaje „4 × 10”.", - "@sameRepetitions": {}, - "comment": "Komentar", - "@comment": { - "description": "Comment, additional information" - }, - "impression": "Dojam", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "notes": "Bilješke", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "workoutSession": "Sesija treninga", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "newDay": "Novi dan", - "@newDay": {}, - "newSet": "Nova serija", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "selectExercises": "Ako želiš izraditi nasdkup, traži i odaberi vježbe koje će se grupirati u jednu grupu", - "@selectExercises": {}, - "gymMode": "Modus teretane", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "plateCalculator": "Ploče", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "plateCalculatorNotDivisible": "Nije moguće postići težinu s dostupnim pločastim utezima", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "pause": "Pauza", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "weightUnit": "Jedinica težine", - "@weightUnit": {}, - "appUpdateTitle": "Potrebna je nova verzija", - "@appUpdateTitle": {}, - "appUpdateContent": "Ova verzija aplikacije nije kompatibilna s poslužiteljem. Aktualiziraj svoju aplikaciju.", - "@appUpdateContent": {}, - "set": "Serija", - "@set": { - "description": "A set in a workout plan" - }, - "repetitionUnit": "Jedinica ponavljanja", - "@repetitionUnit": {}, - "recentlyUsedIngredients": "Nedavno dodani sastojci", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "logIngredient": "Zapiši sastojak u dnevnik prehrane", - "@logIngredient": {}, - "searchIngredient": "Traži sastojak", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "weekAverage": "Sedmodnevni prosjek", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "productFound": "Pronađeni proizvod", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productFoundDescription": "Barkod odgovara ovom proizvodu: {productName}. Želiš li nastaviti?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "productNotFound": "Proizvod nije pronađen", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "productNotFoundDescription": "Proizvod sa skeniranim barkodom {barcode} nije pronađen u wger bazi podataka", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Skeniraj barkod", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Zatvori", - "@close": { - "description": "Translation for close" - }, - "enterMinCharacters": "Upiši barem {min} znakova", - "@enterMinCharacters": { - "description": "Error message when the user hasn't entered the minimum amount characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - } - } - }, - "add_exercise_image_license": "Slike moraju biti kompatibilne s licencom CC BY SA. Ako si u nedoumici, prenesi samo svoje vlastite fotografije.", - "@add_exercise_image_license": {}, - "whatVariationsExist": "Koje varijante ove vježbe postoje?", - "@whatVariationsExist": {}, - "images": "Slike", - "@images": {}, - "alternativeNames": "Alternativna imena", - "@alternativeNames": {}, - "previous": "Prethodna", - "@previous": {}, - "oneNamePerLine": "Jedno ime po retku", - "@oneNamePerLine": {}, - "translation": "Prijevod", - "@translation": {}, - "addExercise": "Dodaj vježbu", - "@addExercise": {}, - "translateExercise": "Prevedi ovu vježbu", - "@translateExercise": {}, - "baseData": "Osnovni podaci na engleskom jeziku", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "arms": "Ruke", - "@arms": { - "description": "Generated entry for translation for server strings" - }, - "back": "Leđa", - "@back": { - "description": "Generated entry for translation for server strings" - }, - "chest": "Prsa", - "@chest": { - "description": "Generated entry for translation for server strings" - }, - "sz_bar": "Zaobljena šipka", - "@sz_bar": { - "description": "Generated entry for translation for server strings" - }, - "userProfile": "Tvoj profil", - "@userProfile": {}, - "exerciseList": "Popis vježbi", - "@exerciseList": {}, - "exercises": "Vježbe", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Ime vježbe", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "selectEntry": "Odaberi unos", - "@selectEntry": {}, - "success": "Uspjeh", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "noMeasurementEntries": "Nemaš unose mjerenja", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Dodaj novo mjerenje", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "variations": "Varijante", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "alsoKnownAs": "Poznato i kao: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "todaysWorkout": "Tvoj današnji trening", + "@todaysWorkout": {}, + "mealLogged": "Obrok prijavljen u dnevnik", + "@mealLogged": {}, + "time": "Vrijeme", + "@time": { + "description": "The time of a meal or workout" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmail": "Potvrđena e-mail adresa", - "@verifiedEmail": {}, - "unVerifiedEmail": "Nepotvrđena e-mail adresa", - "@unVerifiedEmail": {}, - "verifiedEmailInfo": "E-mail poruka za potvrdu je poslana na {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } + "timeEnd": "Vrijeme završetka", + "@timeEnd": { + "description": "The end time of a workout" + }, + "username": "Korisničko ime", + "@username": {}, + "passwordsDontMatch": "Lozinke se ne podudaraju", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "Lozinka je prekratka", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "password": "Lozinka", + "@password": {}, + "confirmPassword": "Potvrdi lozinku", + "@confirmPassword": {}, + "invalidEmail": "Upiši valjanu e-mail adresu", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "E-mail adresa", + "@email": {}, + "invalidUrl": "Upiši važeći URL", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "useCustomServer": "Koristi prilagođeni poslužitelj", + "@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": { + "description": "Error message when the user enters an invalid username" + }, + "customServerUrl": "URL wger instance", + "@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": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "registerInstead": "Nemaš račun? Registriraj se", + "@registerInstead": {}, + "loginInstead": "Već imaš račun? Prijavi se", + "@loginInstead": {}, + "labelBottomNavWorkout": "Trening", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "Prehrana", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "Dnevnici treninga", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "Plan treninga", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "Kontrolna ploča", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "successfullyDeleted": "Izbrisano", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "successfullySaved": "Spremljeno", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exercise": "Vježba", + "@exercise": { + "description": "An exercise for a workout" + }, + "logHelpEntriesUnits": "Napomena: prikazuju se samo unosi s jedinicom težine (kg ili lb) i ponavljanja, druge kombinacije kao što su vrijeme ili do neuspjeha se ovdje zanemaruju.", + "@logHelpEntriesUnits": {}, + "description": "Opis", + "@description": {}, + "name": "Ime", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "nutritionalDiary": "Dnevnik prehrane", + "@nutritionalDiary": {}, + "nutritionalPlans": "Planovi prehrane", + "@nutritionalPlans": {}, + "noNutritionalPlans": "Nemaš planove prehrane", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "anErrorOccurred": "Dogodila se greška!", + "@anErrorOccurred": {}, + "weight": "Težina", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "measurement": "Mjerenje", + "@measurement": {}, + "measurements": "Mjerenja", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurementCategoriesHelpText": "Kategorija mjerenja, kao što su „bicepsi” ili „tjelesna mast”", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "Jedinica koja se koristi za mjerenje kategorije kao što su „cm” ili „%”", + "@measurementEntriesHelpText": {}, + "date": "Datum", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "repetitions": "Ponavljanja", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "reps": "Ponavljanja", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "rir": "PUR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "rirNotUsed": "PUR se ne koristi", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "macronutrients": "Makronutrijenti", + "@macronutrients": {}, + "planned": "Planirano", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "logged": "Zabilježeno", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "difference": "Razlika", + "@difference": {}, + "percentEnergy": "Postotak energije", + "@percentEnergy": {}, + "gPerBodyKg": "g po tjelesnom kg", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "total": "Ukupno", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "carbohydrates": "Ugljikohidrati", + "@carbohydrates": {}, + "carbohydratesShort": "U", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "sugars": "Šećeri", + "@sugars": {}, + "fat": "Masti", + "@fat": {}, + "fatShort": "M", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "saturatedFat": "Zasićene masti", + "@saturatedFat": {}, + "fiber": "Vlakna", + "@fiber": {}, + "sodium": "Natrij", + "@sodium": {}, + "toggleDetails": "Prikaži detalje", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "enterValue": "Upiši vrijednost", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "selectExercise": "Odaberi vježbu", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterCharacters": "Upiši {min} do {max} znakova", + "@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" + } + } + }, + "nrOfSets": "Broj serija po vježbi: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "setUnitsAndRir": "Postavi jedinice i PUR", + "@setUnitsAndRir": { + "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": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "selectIngredient": "Odaberi sastojak", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "selectImage": "Odaberi sliku", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "optionsLabel": "Opcije", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "takePicture": "Snimi sliku", + "@takePicture": {}, + "chooseFromLibrary": "Odaberi iz biblioteke slika", + "@chooseFromLibrary": {}, + "gallery": "Galerija", + "@gallery": {}, + "addImage": "Dodaj sliku", + "@addImage": {}, + "dataCopied": "Podaci kopirani u novi unos", + "@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": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "logHelpEntries": "Ako u jednom danu postoji više od jednog unosa s istim brojem ponavljanja, ali različitim težinama, na dijagramu je prikazan samo unos s većom težinom.", + "@logHelpEntries": {}, + "addSet": "Dodaj seriju", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Dodaj obrok", + "@addMeal": {}, + "nutritionalPlan": "Plan prehrane", + "@nutritionalPlan": {}, + "useDefaultServer": "Koristi zadani poslužitelj", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "logout": "Odjavi se", + "@logout": { + "description": "Text for logout button" + }, + "login": "Prijavi se", + "@login": { + "description": "Text for login button" + }, + "register": "Registracija", + "@register": { + "description": "Text for registration button" + }, + "reset": "Resetiraj", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "jumpTo": "Prijeđi na", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "save": "Spremi", + "@save": {}, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "addIngredient": "Dodaj sastojak", + "@addIngredient": {}, + "logMeal": "Zapiši obrok u dnevnik prehrane", + "@logMeal": {}, + "value": "Vrijednost", + "@value": { + "description": "The value of a measurement entry" + }, + "start": "Početak", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "timeStart": "Vrijeme početka", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeStartAhead": "Vrijeme početka ne može biti prije vremena završetka", + "@timeStartAhead": {}, + "ingredient": "Sastojak", + "@ingredient": {}, + "energy": "Energija", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "protein": "Proteini", + "@protein": {}, + "goToToday": "Idi na danas", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "unit": "Jedinica", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "edit": "Uredi", + "@edit": {}, + "confirmDelete": "Stvarno želiš izbrisati „{toDelete}”?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "newNutritionalPlan": "Novi plan prehrane", + "@newNutritionalPlan": {}, + "amount": "Količina", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "newEntry": "Novi unos", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "noWeightEntries": "Nemaš unose težine", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "loadingText": "Učitavanje …", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "delete": "Izbriši", + "@delete": {}, + "goToDetailPage": "Idi na stranicu s detaljima", + "@goToDetailPage": {}, + "aboutDescription": "Hvala što koristiš wger! wger je suradnički projekt otvorenog koda koji su izradili ljubitelji fitnesa iz cijelog svijeta.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "calendar": "Kalendar", + "@calendar": {}, + "musclesSecondary": "Sekundarni mišići", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "equipment": "Oprema", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "category": "Kategorija", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "searchExercise": "Traži vježbe koje želiš dodati", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "muscles": "Mišići", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "dayDescriptionHelp": "Opis onoga što se radi na današnji dan (npr. „dan povlačenja”) ili koji su dijelovi tijela trenirani (npr. „prsa i ramena”)", + "@dayDescriptionHelp": {}, + "setNr": "Serija br. {nr}", + "@setNr": { + "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "sameRepetitions": "Ako radiš ista ponavljanja i težinu za sve serije, ispuni jedan redak. Na primjer, za 4 serije jednostavno upiši 10 za ponavljanja, to automatski postaje „4 × 10”.", + "@sameRepetitions": {}, + "comment": "Komentar", + "@comment": { + "description": "Comment, additional information" + }, + "impression": "Dojam", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "notes": "Bilješke", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "workoutSession": "Sesija treninga", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "newDay": "Novi dan", + "@newDay": {}, + "newSet": "Nova serija", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "selectExercises": "Ako želiš izraditi nasdkup, traži i odaberi vježbe koje će se grupirati u jednu grupu", + "@selectExercises": {}, + "gymMode": "Modus teretane", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculator": "Ploče", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Nije moguće postići težinu s dostupnim pločastim utezima", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "Pauza", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "weightUnit": "Jedinica težine", + "@weightUnit": {}, + "appUpdateTitle": "Potrebna je nova verzija", + "@appUpdateTitle": {}, + "appUpdateContent": "Ova verzija aplikacije nije kompatibilna s poslužiteljem. Aktualiziraj svoju aplikaciju.", + "@appUpdateContent": {}, + "set": "Serija", + "@set": { + "description": "A set in a workout plan" + }, + "repetitionUnit": "Jedinica ponavljanja", + "@repetitionUnit": {}, + "recentlyUsedIngredients": "Nedavno dodani sastojci", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "logIngredient": "Zapiši sastojak u dnevnik prehrane", + "@logIngredient": {}, + "searchIngredient": "Traži sastojak", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "weekAverage": "Sedmodnevni prosjek", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "productFound": "Pronađeni proizvod", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productFoundDescription": "Barkod odgovara ovom proizvodu: {productName}. Želiš li nastaviti?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "productNotFound": "Proizvod nije pronađen", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "productNotFoundDescription": "Proizvod sa skeniranim barkodom {barcode} nije pronađen u wger bazi podataka", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Skeniraj barkod", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Zatvori", + "@close": { + "description": "Translation for close" + }, + "enterMinCharacters": "Upiši barem {min} znakova", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "add_exercise_image_license": "Slike moraju biti kompatibilne s licencom CC BY SA. Ako si u nedoumici, prenesi samo svoje vlastite fotografije.", + "@add_exercise_image_license": {}, + "whatVariationsExist": "Koje varijante ove vježbe postoje?", + "@whatVariationsExist": {}, + "images": "Slike", + "@images": {}, + "alternativeNames": "Alternativna imena", + "@alternativeNames": {}, + "previous": "Prethodna", + "@previous": {}, + "oneNamePerLine": "Jedno ime po retku", + "@oneNamePerLine": {}, + "translation": "Prijevod", + "@translation": {}, + "addExercise": "Dodaj vježbu", + "@addExercise": {}, + "translateExercise": "Prevedi ovu vježbu", + "@translateExercise": {}, + "baseData": "Osnovni podaci na engleskom jeziku", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "arms": "Ruke", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "back": "Leđa", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Prsa", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "sz_bar": "Zaobljena šipka", + "@sz_bar": { + "description": "Generated entry for translation for server strings" + }, + "userProfile": "Tvoj profil", + "@userProfile": {}, + "exerciseList": "Popis vježbi", + "@exerciseList": {}, + "exercises": "Vježbe", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Ime vježbe", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "selectEntry": "Odaberi unos", + "@selectEntry": {}, + "success": "Uspjeh", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "noMeasurementEntries": "Nemaš unose mjerenja", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Dodaj novo mjerenje", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "variations": "Varijante", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "Poznato i kao: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmail": "Potvrđena e-mail adresa", + "@verifiedEmail": {}, + "unVerifiedEmail": "Nepotvrđena e-mail adresa", + "@unVerifiedEmail": {}, + "verifiedEmailInfo": "E-mail poruka za potvrdu je poslana na {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "contributeExerciseWarning": "Vježbe možeš dodati samo ako je tvoj račun stariji od {days} dana i ako si potvrdio/la tvoju e-mail adresu", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "cacheWarning": "Zbog predmemoriranja, vidljivost promjena u aplikaciji može nešto potrajati.", + "@cacheWarning": {}, + "verifiedEmailReason": "Za dodavanje vježbi moraš potvrditi tvoju e-mail adresu", + "@verifiedEmailReason": {}, + "cardio": "Kardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Ekstenzije nogu", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "pull_up_bar": "Šipka za povlačenje", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Ramena", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Triceps", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "swiss_ball": "Gimnastička lopta", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "Do neuspjeha", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "ništa (vježba za tjelesnu težinu)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "Sekunde", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "textPromptTitle": "Spreman?", + "@textPromptTitle": {}, + "barbell": "Šipka", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "calves": "Lisni mišići", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "textPromptSubheading": "Počni pritiskom gumba radnje", + "@textPromptSubheading": {}, + "body_weight": "Tjelesna težina", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Kilometri", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilometara na sat", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Leđni mišići", + "@lats": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Milja na sat", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Minute", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Ploče", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "lb": "funta", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "searchNamesInEnglish": "Također traži imena na engleskom jeziku", + "@searchNamesInEnglish": {}, + "language": "Jezik", + "@language": {}, + "aboutPageTitle": "Wger informacije", + "@aboutPageTitle": {}, + "abs": "Trbuh", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "Podloga za treniranje", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "incline_bench": "Nagnuta klupa", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "baseNameEnglish": "Sve vježbe trebaju osnovno ime na engleskom jeziku", + "@baseNameEnglish": {}, + "next": "Sljedeća", + "@next": {}, + "contributeExercise": "Doprinesi vježbu", + "@contributeExercise": {}, + "bench": "Klupa", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Ručni uteg", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "biceps": "Bicepsi", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Stražnjica", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "hamstrings": "Tetive koljena", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Kuglasti uteg", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "legs": "Noge", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Milje", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Maks. broj ponavljanja", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "verify": "Potvrdi", + "@verify": {}, + "lower_back": "Donji dio leđa", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "noMatchingExerciseFound": "Nisu pronađene odgovarajuće vježbe", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "aboutDonateTitle": "Doniraj", + "@aboutDonateTitle": {}, + "aboutDonateText": "Pomogni projektu: kupi nam kavu, plati troškove poslužitelja i potiči nas u našem radu", + "@aboutDonateText": {}, + "settingsTitle": "Postavke", + "@settingsTitle": {}, + "settingsCacheTitle": "Predmemorija", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Izvrši predmemoriju", + "@settingsExerciseCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Predmemorija je uspješno izbrisana", + "@settingsCacheDeletedSnackbar": {}, + "useMetric": "Koristi metričke jedinice za tjelesnu težinu", + "@useMetric": {}, + "log": "Zapiši", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Obavljeno", + "@done": {}, + "onlyLogging": "Prati samo kalorije", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Označi okvir ako želiš bilježiti samo svoje kalorije i ne želiš postaviti detaljan plan prehrane s određenim obrocima", + "@onlyLoggingHelpText": {}, + "percentValue": "{value} %", + "@percentValue": { + "description": "A value in percent, e.g. 10 %", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "goalEnergy": "Cilj za energiju", + "@goalEnergy": {}, + "goalProtein": "Cilj za proteine", + "@goalProtein": {}, + "goalCarbohydrates": "Cilj za ugljikohidrate", + "@goalCarbohydrates": {}, + "goalFat": "Cilj za mast", + "@goalFat": {}, + "today": "Danas", + "@today": {}, + "loggedToday": "Zapisano danas", + "@loggedToday": {}, + "kcalValue": "{value} kcal", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "gValue": "{value} g", + "@gValue": { + "description": "A value in grams, e.g. 5 g", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "surplus": "višak", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "manjak", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "goalFiber": "Cilj za vlakna", + "@goalFiber": {}, + "goalMacro": "Ciljevi za makronutrijente", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Odaberi obrok za zapis u dnevnik", + "@selectMealToLog": {}, + "ingredientLogged": "Sastojak je upisan u dnevnik", + "@ingredientLogged": {}, + "noIngredientsDefined": "Još nije određen nijedan sastojak", + "@noIngredientsDefined": {}, + "overallChangeWeight": "Sveukupna promjena", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Od obroka", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeBasic": "Osnovni", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Napredni", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "sirovo", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "prosjek", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "Modus teme", + "@themeMode": {}, + "darkMode": "Uvijek tamni modus", + "@darkMode": {}, + "lightMode": "Uvijek svijetli modus", + "@lightMode": {}, + "systemMode": "Postavke sustava", + "@systemMode": {}, + "chartAllTimeTitle": "{name} – svo vrijeme", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartDuringPlanTitle": "{chartName} tijekom prehrambenog plana {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "settingsIngredientCacheDescription": "Predmemorija sastojaka", + "@settingsIngredientCacheDescription": {}, + "chart30DaysTitle": "{name} – zadnjih 30 dana", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "barWeight": "Težina šipke", + "@barWeight": {}, + "useColors": "Koristi boje", + "@useColors": {}, + "selectAvailablePlates": "Odaberi prosjećne ploće", + "@selectAvailablePlates": {}, + "useApiToken": "Koristi API Token", + "@useApiToken": {}, + "useUsernameAndPassword": "Koristi vjerodajenice (Korisničko ime i lozinku)", + "@useUsernameAndPassword": {}, + "apiToken": "API Token", + "@apiToken": {}, + "invalidApiToken": "Molimo provjerite API Token", + "@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": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "routines": "Rutina", + "@routines": {}, + "newRoutine": "Nova rutina", + "@newRoutine": {}, + "noRoutines": "Vi nemate rutine", + "@noRoutines": {}, + "restTime": "Period odmora", + "@restTime": {}, + "sets": "Vježba ima setova", + "@sets": { + "description": "The number of sets to be done for one exercise" } - }, - "contributeExerciseWarning": "Vježbe možeš dodati samo ako je tvoj račun stariji od {days} dana i ako si potvrdio/la tvoju e-mail adresu", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "cacheWarning": "Zbog predmemoriranja, vidljivost promjena u aplikaciji može nešto potrajati.", - "@cacheWarning": {}, - "verifiedEmailReason": "Za dodavanje vježbi moraš potvrditi tvoju e-mail adresu", - "@verifiedEmailReason": {}, - "cardio": "Kardio", - "@cardio": { - "description": "Generated entry for translation for server strings" - }, - "quads": "Ekstenzije nogu", - "@quads": { - "description": "Generated entry for translation for server strings" - }, - "pull_up_bar": "Šipka za povlačenje", - "@pull_up_bar": { - "description": "Generated entry for translation for server strings" - }, - "shoulders": "Ramena", - "@shoulders": { - "description": "Generated entry for translation for server strings" - }, - "triceps": "Triceps", - "@triceps": { - "description": "Generated entry for translation for server strings" - }, - "swiss_ball": "Gimnastička lopta", - "@swiss_ball": { - "description": "Generated entry for translation for server strings" - }, - "until_failure": "Do neuspjeha", - "@until_failure": { - "description": "Generated entry for translation for server strings" - }, - "none__bodyweight_exercise_": "ništa (vježba za tjelesnu težinu)", - "@none__bodyweight_exercise_": { - "description": "Generated entry for translation for server strings" - }, - "seconds": "Sekunde", - "@seconds": { - "description": "Generated entry for translation for server strings" - }, - "textPromptTitle": "Spreman?", - "@textPromptTitle": {}, - "barbell": "Šipka", - "@barbell": { - "description": "Generated entry for translation for server strings" - }, - "calves": "Lisni mišići", - "@calves": { - "description": "Generated entry for translation for server strings" - }, - "textPromptSubheading": "Počni pritiskom gumba radnje", - "@textPromptSubheading": {}, - "body_weight": "Tjelesna težina", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "kilometers": "Kilometri", - "@kilometers": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Kilometara na sat", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "lats": "Leđni mišići", - "@lats": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Milja na sat", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "minutes": "Minute", - "@minutes": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Ploče", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "kg": "kg", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "lb": "funta", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "searchNamesInEnglish": "Također traži imena na engleskom jeziku", - "@searchNamesInEnglish": {}, - "language": "Jezik", - "@language": {}, - "aboutPageTitle": "Wger informacije", - "@aboutPageTitle": {}, - "abs": "Trbuh", - "@abs": { - "description": "Generated entry for translation for server strings" - }, - "gym_mat": "Podloga za treniranje", - "@gym_mat": { - "description": "Generated entry for translation for server strings" - }, - "incline_bench": "Nagnuta klupa", - "@incline_bench": { - "description": "Generated entry for translation for server strings" - }, - "baseNameEnglish": "Sve vježbe trebaju osnovno ime na engleskom jeziku", - "@baseNameEnglish": {}, - "next": "Sljedeća", - "@next": {}, - "contributeExercise": "Doprinesi vježbu", - "@contributeExercise": {}, - "bench": "Klupa", - "@bench": { - "description": "Generated entry for translation for server strings" - }, - "dumbbell": "Ručni uteg", - "@dumbbell": { - "description": "Generated entry for translation for server strings" - }, - "biceps": "Bicepsi", - "@biceps": { - "description": "Generated entry for translation for server strings" - }, - "glutes": "Stražnjica", - "@glutes": { - "description": "Generated entry for translation for server strings" - }, - "hamstrings": "Tetive koljena", - "@hamstrings": { - "description": "Generated entry for translation for server strings" - }, - "kettlebell": "Kuglasti uteg", - "@kettlebell": { - "description": "Generated entry for translation for server strings" - }, - "legs": "Noge", - "@legs": { - "description": "Generated entry for translation for server strings" - }, - "miles": "Milje", - "@miles": { - "description": "Generated entry for translation for server strings" - }, - "max_reps": "Maks. broj ponavljanja", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "verify": "Potvrdi", - "@verify": {}, - "lower_back": "Donji dio leđa", - "@lower_back": { - "description": "Generated entry for translation for server strings" - }, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "noMatchingExerciseFound": "Nisu pronađene odgovarajuće vježbe", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "aboutDonateTitle": "Doniraj", - "@aboutDonateTitle": {}, - "aboutDonateText": "Pomogni projektu: kupi nam kavu, plati troškove poslužitelja i potiči nas u našem radu", - "@aboutDonateText": {}, - "settingsTitle": "Postavke", - "@settingsTitle": {}, - "settingsCacheTitle": "Predmemorija", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Izvrši predmemoriju", - "@settingsExerciseCacheDescription": {}, - "settingsCacheDeletedSnackbar": "Predmemorija je uspješno izbrisana", - "@settingsCacheDeletedSnackbar": {}, - "useMetric": "Koristi metričke jedinice za tjelesnu težinu", - "@useMetric": {}, - "log": "Zapiši", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Obavljeno", - "@done": {}, - "onlyLogging": "Prati samo kalorije", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Označi okvir ako želiš bilježiti samo svoje kalorije i ne želiš postaviti detaljan plan prehrane s određenim obrocima", - "@onlyLoggingHelpText": {}, - "percentValue": "{value} %", - "@percentValue": { - "description": "A value in percent, e.g. 10 %", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "goalEnergy": "Cilj za energiju", - "@goalEnergy": {}, - "goalProtein": "Cilj za proteine", - "@goalProtein": {}, - "goalCarbohydrates": "Cilj za ugljikohidrate", - "@goalCarbohydrates": {}, - "goalFat": "Cilj za mast", - "@goalFat": {}, - "today": "Danas", - "@today": {}, - "loggedToday": "Zapisano danas", - "@loggedToday": {}, - "kcalValue": "{value} kcal", - "@kcalValue": { - "description": "A value in kcal, e.g. 500 kcal", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "gValue": "{value} g", - "@gValue": { - "description": "A value in grams, e.g. 5 g", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "surplus": "višak", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "manjak", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "goalFiber": "Cilj za vlakna", - "@goalFiber": {}, - "goalMacro": "Ciljevi za makronutrijente", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "selectMealToLog": "Odaberi obrok za zapis u dnevnik", - "@selectMealToLog": {}, - "ingredientLogged": "Sastojak je upisan u dnevnik", - "@ingredientLogged": {}, - "noIngredientsDefined": "Još nije određen nijedan sastojak", - "@noIngredientsDefined": {}, - "overallChangeWeight": "Sveukupna promjena", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "Od obroka", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "goalTypeBasic": "Osnovni", - "@goalTypeBasic": { - "description": "added for localization of Class GoalType's filed basic" - }, - "goalTypeAdvanced": "Napredni", - "@goalTypeAdvanced": { - "description": "added for localization of Class GoalType's filed advanced" - }, - "indicatorRaw": "sirovo", - "@indicatorRaw": { - "description": "added for localization of Class Indicator's field text" - }, - "indicatorAvg": "prosjek", - "@indicatorAvg": { - "description": "added for localization of Class Indicator's field text" - }, - "themeMode": "Modus teme", - "@themeMode": {}, - "darkMode": "Uvijek tamni modus", - "@darkMode": {}, - "lightMode": "Uvijek svijetli modus", - "@lightMode": {}, - "systemMode": "Postavke sustava", - "@systemMode": {}, - "chartAllTimeTitle": "{name} – svo vrijeme", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chartDuringPlanTitle": "{chartName} tijekom prehrambenog plana {planName}", - "@chartDuringPlanTitle": { - "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", - "type": "text", - "placeholders": { - "chartName": { - "type": "String" - }, - "planName": { - "type": "String" - } - } - }, - "settingsIngredientCacheDescription": "Predmemorija sastojaka", - "@settingsIngredientCacheDescription": {}, - "chart30DaysTitle": "{name} – zadnjih 30 dana", - "@chart30DaysTitle": { - "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - } } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 96bcc922..398849e8 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -36,9 +36,9 @@ "@passwordTooShort": { "description": "Error message when the user a password that is too short" }, - "password": "Password", + "password": "Kata sandi", "@password": {}, - "confirmPassword": "Konfirmasi Password", + "confirmPassword": "Konfirmasi Kata Sandi", "@confirmPassword": {}, "invalidEmail": "Mohon masukkan E-mail yang valid", "@invalidEmail": { @@ -46,7 +46,7 @@ }, "email": "Alamat E-mail", "@email": {}, - "username": "Username", + "username": "Nama pengguna", "@username": {}, "invalidUsername": "Mohon masukkan username yang valid", "@invalidUsername": { @@ -124,11 +124,11 @@ "@repetitions": { "description": "Repetitions for an exercise set" }, - "reps": "Reps", + "reps": "Repetisi", "@reps": { "description": "Shorthand for repetitions, used when space constraints are tighter" }, - "rir": "RiR", + "rir": "Repetisi tersisa", "@rir": { "description": "Shorthand for Repetitions In Reserve" }, @@ -186,7 +186,7 @@ "@gymMode": { "description": "Label when starting the gym mode" }, - "plateCalculator": "Plates", + "plateCalculator": "Lempeng Beban", "@plateCalculator": { "description": "Label used for the plate calculator in the gym mode" }, @@ -204,9 +204,9 @@ }, "todaysWorkout": "Latihanmu hari ini", "@todaysWorkout": {}, - "logHelpEntries": "If on a single day there is more than one entry with the same number of repetitions, but different weights, only the entry with the higher weight is shown in the diagram.", + "logHelpEntries": "Jika dalam satu hari terdapat lebih dari satu entri dengan jumlah repetisi yang sama namun beban berbeda, hanya entri dengan beban tertinggi yang akan ditampilkan di diagram.", "@logHelpEntries": {}, - "logHelpEntriesUnits": "Note that only entries with a weight unit (kg or lb) and repetitions are charted, other combinations such as time or until failure are ignored here.", + "logHelpEntriesUnits": "Perlu dicatat bahwa hanya entri dengan satuan beban (kg atau lb) dan repetisi yang akan ditampilkan di grafik. Kombinasi lain seperti waktu atau hingga gagal tidak diperhitungkan di sini.", "@logHelpEntriesUnits": {}, "description": "Description", "@description": {}, @@ -222,49 +222,49 @@ }, "addMeal": "Tambah makanan", "@addMeal": {}, - "mealLogged": "Meal logged to diary", + "mealLogged": "Makanan ditambahkan ke buku harian", "@mealLogged": {}, - "logMeal": "Catat makanan ini", + "logMeal": "Catat makanan ke buku harian nutrisi", "@logMeal": {}, "addIngredient": "Tambah komposisi", "@addIngredient": {}, - "logIngredient": "Simpan di diari nutrisi", + "logIngredient": "Catat bahan ke buku harian nutrisi", "@logIngredient": {}, "searchIngredient": "Cari komposisi", "@searchIngredient": { "description": "Label on ingredient search form" }, - "nutritionalPlan": "Nutritional plan", + "nutritionalPlan": "Rencana Nutrisi", "@nutritionalPlan": {}, - "nutritionalDiary": "Nutritional diary", + "nutritionalDiary": "Buku Harian Nutrisi", "@nutritionalDiary": {}, - "nutritionalPlans": "Nutritional plans", + "nutritionalPlans": "Rencana Nutrisi", "@nutritionalPlans": {}, - "noNutritionalPlans": "You have no nutritional plans", + "noNutritionalPlans": "Anda belum memiliki rencana nutrisi", "@noNutritionalPlans": { "description": "Message shown when the user has no nutritional plans" }, - "anErrorOccurred": "An Error Occurred!", + "anErrorOccurred": "Terjadi kesalahan!", "@anErrorOccurred": {}, - "weight": "Weight", + "weight": "Berat", "@weight": { "description": "The weight of a workout log or body weight entry" }, "measurement": "Ukuran", "@measurement": {}, - "measurements": "Measurements", + "measurements": "Pengukuran", "@measurements": { "description": "Categories for the measurements such as biceps size, body fat, etc." }, - "measurementCategoriesHelpText": "Measurement category, such as 'biceps' or 'body fat'", + "measurementCategoriesHelpText": "Kategori pengukuran, seperti 'bisep' atau 'lemak tubuh'", "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "The unit used to measure the category such as 'cm' or '%'", + "measurementEntriesHelpText": "Satuan yang digunakan untuk mengukur kategori, seperti 'cm' atau '%'", "@measurementEntriesHelpText": {}, "date": "Date", "@date": { "description": "The date of a workout log or body weight entry" }, - "value": "Value", + "value": "Nilai", "@value": { "description": "The value of a measurement entry" }, @@ -272,23 +272,23 @@ "@start": { "description": "Label on button to start the gym mode (i.e., an imperative)" }, - "time": "Time", + "time": "Waktu", "@time": { "description": "The time of a meal or workout" }, - "timeStart": "Start time", + "timeStart": "Waktu mulai", "@timeStart": { "description": "The starting time of a workout" }, - "timeEnd": "End time", + "timeEnd": "Waktu selesai", "@timeEnd": { "description": "The end time of a workout" }, - "timeStartAhead": "Start time cannot be ahead of end time", + "timeStartAhead": "Waktu mulai tidak boleh melebihi waktu selesai", "@timeStartAhead": {}, - "ingredient": "Ingredient", + "ingredient": "Komposisi", "@ingredient": {}, - "energy": "Energy", + "energy": "Energi", "@energy": { "description": "Energy in a meal, ingredient etc. e.g. in kJ" }, @@ -296,29 +296,29 @@ "@energyShort": { "description": "The first letter or short name of the word 'Energy', used in overviews" }, - "kcal": "kcal", + "kcal": "kkal", "@kcal": { "description": "Energy in a meal in kilocalories, kcal" }, - "macronutrients": "Macronutrients", + "macronutrients": "Makronutrien", "@macronutrients": {}, - "planned": "Planned", + "planned": "Direncanakan", "@planned": { "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" }, - "logged": "Logged", + "logged": "Dicatat", "@logged": { "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" }, - "weekAverage": "7 day average", + "weekAverage": "Rata-rata 7 hari", "@weekAverage": { "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" }, - "difference": "Difference", + "difference": "Perbedaan", "@difference": {}, "percentEnergy": "Persenan Energi", "@percentEnergy": {}, - "gPerBodyKg": "g per body kg", + "gPerBodyKg": "g per kg tubuh", "@gPerBodyKg": { "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" }, @@ -340,27 +340,27 @@ "@proteinShort": { "description": "The first letter or short name of the word 'Protein', used in overviews" }, - "carbohydrates": "Carbohydrates", + "carbohydrates": "Karbohidrat", "@carbohydrates": {}, "carbohydratesShort": "C", "@carbohydratesShort": { "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" }, - "sugars": "Sugars", + "sugars": "Gula", "@sugars": {}, - "fat": "Fat", + "fat": "Lemak", "@fat": {}, "fatShort": "F", "@fatShort": { "description": "The first letter or short name of the word 'Fat', used in overviews" }, - "saturatedFat": "Saturated fat", + "saturatedFat": "Lemak jenuh", "@saturatedFat": {}, "fiber": "Fibre", "@fiber": {}, "sodium": "Sodium", "@sodium": {}, - "amount": "Amount", + "amount": "Jumlah", "@amount": { "description": "The amount (e.g. in grams) of an ingredient in a meal" }, @@ -368,11 +368,11 @@ "@unit": { "description": "The unit used for a repetition (kg, time, etc.)" }, - "newEntry": "New entry", + "newEntry": "Entri baru", "@newEntry": { "description": "Title when adding a new entry such as a weight or log entry" }, - "noWeightEntries": "You have no weight entries", + "noWeightEntries": "Anda belum memiliki entri berat badan", "@noWeightEntries": { "description": "Message shown when the user has no logged weight entries" }, @@ -384,7 +384,7 @@ }, "delete": "Delete", "@delete": {}, - "confirmDelete": "Are you sure you want to delete '{toDelete}'?", + "confirmDelete": "Apakah anda yakin ingin menghapus '{toDelete}'?", "@confirmDelete": { "description": "Confirmation text before the user deletes an object", "type": "text", @@ -394,33 +394,33 @@ } } }, - "newNutritionalPlan": "New nutritional plan", + "newNutritionalPlan": "Rencana nutrisi baru", "@newNutritionalPlan": {}, - "toggleDetails": "Toggle details", + "toggleDetails": "Toggle rincian", "@toggleDetails": { "description": "Switch to toggle detail / overview" }, "goToDetailPage": "Go to detail page", "@goToDetailPage": {}, - "aboutDescription": "Thank you for using wger! wger is a collaborative open source project, made by fitness enthusiasts from around the world.", + "aboutDescription": "Terima kasih telah menggunakan wger! wger proyek open source kolaboratif, dibuat oleh para penggemar kebugaran dari seluruh dunia.", "@aboutDescription": { "description": "Text in the about dialog" }, - "calendar": "Calendar", + "calendar": "Kalender", "@calendar": {}, - "goToToday": "Go to today", + "goToToday": "Pergi ke hari ini", "@goToToday": { "description": "Label on button to jump back to 'today' in the calendar widget" }, - "enterValue": "Please enter a value", + "enterValue": "Silakan masukan nilai", "@enterValue": { "description": "Error message when the user hasn't entered a value on a required field" }, - "selectExercise": "Please select an exercise", + "selectExercise": "Silakan pilih latihan", "@selectExercise": { "description": "Error message when the user hasn't selected an exercise in the form" }, - "enterCharacters": "Please enter between {min} and {max} characters", + "enterCharacters": "Silakan masukan antara {min} dan {max} karakter", "@enterCharacters": { "description": "Error message when the user hasn't entered the correct number of characters in a form", "type": "text", @@ -433,7 +433,7 @@ } } }, - "nrOfSets": "Sets per exercise: {nrOfSets}", + "nrOfSets": "Sets per latihan: {nrOfSets}", "@nrOfSets": { "description": "Label shown on the slider where the user selects the nr of sets", "type": "text", @@ -443,24 +443,24 @@ } } }, - "setUnitsAndRir": "Set units and RiR", + "setUnitsAndRir": "Unit Set and RiR", "@setUnitsAndRir": { "description": "Label shown on the slider where the user can toggle showing units and RiR", "type": "text" }, - "enterValidNumber": "Please enter a valid number", + "enterValidNumber": "Silakan masukan angka yang valid", "@enterValidNumber": { "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" }, - "selectIngredient": "Please select an ingredient", + "selectIngredient": "Silakan pilih komposisi", "@selectIngredient": { "description": "Error message when the user hasn't selected an ingredient from the autocompleter" }, - "recentlyUsedIngredients": "Recently added ingredients", + "recentlyUsedIngredients": "Komposisi yang baru ditambahkan", "@recentlyUsedIngredients": { "description": "A message when a user adds a new ingredient to a meal." }, - "selectImage": "Please select an image", + "selectImage": "Silakan pilih gambar", "@selectImage": { "description": "Label and error message when the user hasn't selected an image to save" }, @@ -468,27 +468,27 @@ "@optionsLabel": { "description": "Label for the popup with general app options" }, - "takePicture": "Take a picture", + "takePicture": "Ambil gambar", "@takePicture": {}, - "chooseFromLibrary": "Choose from photo library", + "chooseFromLibrary": "Pilih foto dari library", "@chooseFromLibrary": {}, - "gallery": "Gallery", + "gallery": "Galeri", "@gallery": {}, "addImage": "Add image", "@addImage": {}, - "dataCopied": "Data copied to new entry", + "dataCopied": "Data disalin ke entri baru", "@dataCopied": { "description": "Snackbar message to show on copying data to a new log entry" }, - "appUpdateTitle": "Update needed", + "appUpdateTitle": "Pembaruan diperlukan", "@appUpdateTitle": {}, - "appUpdateContent": "This version of the app is not compatible with the server, please update your application.", + "appUpdateContent": "Versi aplikasi ini tidak kompatibel dengan server, silakan perbarui aplikasi Anda.", "@appUpdateContent": {}, - "productFound": "Product found", + "productFound": "Produk ditemukan", "@productFound": { "description": "Header label for dialog when product is found with barcode" }, - "productFoundDescription": "The barcode corresponds to this product: {productName}. Do you want to continue?", + "productFoundDescription": "Kode batang ini sesuai dengan produk: {productName}. Apakah Anda ingin melanjutkan?", "@productFoundDescription": { "description": "Dialog info when product is found with barcode", "type": "text", @@ -498,11 +498,11 @@ } } }, - "productNotFound": "Product not found", + "productNotFound": "Produk tidak ditemukan", "@productNotFound": { "description": "Header label for dialog when product is not found with barcode" }, - "productNotFoundDescription": "The product with the scanned barcode {barcode} was not found in the wger database", + "productNotFoundDescription": "Produk dengan kode batang {barcode} tidak ditemukan dalam database wger", "@productNotFoundDescription": { "description": "Dialog info when product is not found with barcode", "type": "text", @@ -512,15 +512,15 @@ } } }, - "scanBarcode": "Scan barcode", + "scanBarcode": "Pindai kode batang", "@scanBarcode": { "description": "Label for scan barcode button" }, - "close": "Close", + "close": "Tutup", "@close": { "description": "Translation for close" }, - "userProfile": "Profilmu", + "userProfile": "Profil Kamu", "@userProfile": {}, "verify": "Verifikasi", "@verify": {}, @@ -558,10 +558,510 @@ "@searchNamesInEnglish": {}, "noIngredientsDefined": "Belum ada bahan yang ditetapkan", "@noIngredientsDefined": {}, - "ingredientLogged": "Bahan telah dicatat", + "ingredientLogged": "Komposisi telah dicatat", "@ingredientLogged": {}, "triceps": "Trisep", "@triceps": { "description": "Generated entry for translation for server strings" - } -} \ No newline at end of file + }, + "goalFiber": "Target serat", + "@goalFiber": {}, + "abs": "Otot perut", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "selectAvailablePlates": "Pilih lempeng beban yang tersedia", + "@selectAvailablePlates": {}, + "useColors": "Gunakan warna", + "@useColors": {}, + "barWeight": "Berat batang", + "@barWeight": {}, + "routineDays": "Hari dalam rutinitas", + "@routineDays": {}, + "resultingRoutine": "Rutinitas yang dihasilkan", + "@resultingRoutine": {}, + "goalCarbohydrates": "Target karbohidrat", + "@goalCarbohydrates": {}, + "alternativeNames": "Nama lain", + "@alternativeNames": {}, + "back": "Punggung", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "routines": "Rutinitas", + "@routines": {}, + "newRoutine": "Rutinitas baru", + "@newRoutine": {}, + "sets": "Set", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "isRestDayHelp": "Harap diperhatikan bahwa semua set dan latihan akan dihapus ketika Anda menandai suatu hari sebagai hari istirahat.", + "@isRestDayHelp": {}, + "max": "Maksimal", + "@max": {}, + "today": "Hari ini", + "@today": {}, + "noMeasurementEntries": "Anda belum memiliki entri pengukuran apa pun", + "@noMeasurementEntries": {}, + "log": "Catat", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "settingsTitle": "Pengaturan", + "@settingsTitle": {}, + "biceps": "Bisep", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Mil Per Jam", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "selectEntry": "Silakan pilih entri", + "@selectEntry": {}, + "next": "Selanjutnya", + "@next": {}, + "simpleMode": "Mode sederhana", + "@simpleMode": {}, + "body_weight": "Berat Badan", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "incline_bench": "Bangku Incline", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "legs": "Kaki", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "aboutDonateTitle": "Beri donasi", + "@aboutDonateTitle": {}, + "bench": "Bangku", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "useUsernameAndPassword": "Gunakan nama pengguna dan kata sandi", + "@useUsernameAndPassword": {}, + "useApiToken": "Gunakan Token API", + "@useApiToken": {}, + "restTime": "Waktu istirahat", + "@restTime": {}, + "restDay": "Hari istirahat", + "@restDay": {}, + "exerciseNr": "Latihan ke-{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" + } + } + }, + "errorCouldNotConnectToServer": "Tidak dapat terhubung ke server", + "@errorCouldNotConnectToServer": {}, + "errorInfoDescription": "Maaf, terjadi kesalahan. Anda dapat membantu kami memperbaikinya dengan melaporkan masalah ini di GitHub.", + "@errorInfoDescription": {}, + "min": "Minimal", + "@min": {}, + "chartAllTimeTitle": "{name}Sepanjang waktu", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chart30DaysTitle": "{name} 30 hari terakhir", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartDuringPlanTitle": "{chartName} selama rencana nutrisi {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "aboutWhySupportTitle": "Bersifat open source & gratis ❤️", + "@aboutWhySupportTitle": {}, + "aboutSourceListTitle": "Lihat kode sumber", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Gabung komunitas", + "@aboutJoinCommunityTitle": {}, + "previous": "Sebelumnya", + "@previous": {}, + "setHasProgressionWarning": "Perlu diketahui, saat ini pengaturan lengkap untuk set dan konfigurasi progresi otomatis belum bisa dilakukan di aplikasi mobile. Silakan gunakan aplikasi web untuk fitur tersebut.", + "@setHasProgressionWarning": {}, + "settingsExerciseCacheDescription": "Cache latihan", + "@settingsExerciseCacheDescription": {}, + "settingsIngredientCacheDescription": "Cache komposisi", + "@settingsIngredientCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Cache berhasil dibersihkan", + "@settingsCacheDeletedSnackbar": {}, + "aboutPageTitle": "Tentang kami dan dukungan", + "@aboutPageTitle": {}, + "simpleModeHelp": "Sembunyikan beberapa pengaturan lanjutan saat mengedit latihan", + "@simpleModeHelp": {}, + "kilometers": "Kilometer", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Otot Punggung Samping", + "@lats": { + "description": "Generated entry for translation for server strings" + }, + "lower_back": "Punggung Bawah", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Menit", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "Sampai tidak mampu lagi", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "done": "Selesai", + "@done": {}, + "overallChangeWeight": "Perubahan keseluruhan", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Dari makanan", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeBasic": "Dasar", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Lanjutan", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "Mentah", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "rata-rata", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "mode Tema", + "@themeMode": {}, + "systemMode": "Pengaturan sitem", + "@systemMode": {}, + "pull_up_bar": "Palang Pull-up", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "onlyLoggingHelpText": "Centang kotak ini jika Anda hanya ingin mencatat kalori dan tidak ingin menyusun rencana nutrisi secara rinci dengan menu khusus", + "@onlyLoggingHelpText": {}, + "goalEnergy": "Target energi", + "@goalEnergy": {}, + "moreMeasurementEntries": "Tambah pengukuran baru", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "baseNameEnglish": "Semua latihan memerlukan nama dasar dalam Bahasa Inggris", + "@baseNameEnglish": {}, + "add_exercise_image_license": "Gambar harus kompatibel dengan lisensi CC BY SA. Jika ragu, unggah hanya foto yang anda ambil sendiri.", + "@add_exercise_image_license": {}, + "verifiedEmail": "Email terverifikasi", + "@verifiedEmail": {}, + "max_reps": "Repetisi Maksimal", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Mil", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "verifiedEmailReason": "Anda perlu memverifikasi email untuk dapat menambahkan latihan", + "@verifiedEmailReason": {}, + "baseData": "Dasar dalam Bahasa Inggris", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "textPromptSubheading": "Tekan tombol untuk mulai", + "@textPromptSubheading": {}, + "cacheWarning": "Karena sistem cache, perubahan mungkin membutuhkan waktu sebelum terlihat di seluruh aplikasi.", + "@cacheWarning": {}, + "textPromptTitle": "Siap memulai?", + "@textPromptTitle": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Rencana nutrisi Anda saat ini belum memiliki menu yang ditentukan", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Untuk menambahkan menu ke dalam rencana, buka detail rencana nutrisi", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "goalFat": "Target lemak", + "@goalFat": {}, + "errorInfoDescription2": "Anda masih dapat menggunakan aplikasi, namun beberapa fitur mungkin tidak berfungsi.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Rincian teknis", + "@errorViewDetails": {}, + "copyToClipboard": "Salin ke papan klip", + "@copyToClipboard": {}, + "loggedToday": "Dicatat hari ini", + "@loggedToday": {}, + "aboutDonateText": "Meskipun proyek ini gratis dan akan selalu begitu, menjalankan server tetap memerlukan biaya! Pengembangan juga membutuhkan waktu dan tenaga yang tidak sedikit dari para relawan. Kontribusi Anda secara langsung membantu menutup biaya-biaya ini dan menjaga layanan tetap andal.", + "@aboutDonateText": {}, + "aboutContributeText": "Semua jenis kontribusi sangat kami hargai. Baik Anda seorang pengembang, penerjemah, atau sekadar memiliki semangat di bidang kebugaran, setiap bentuk dukungan sangat berarti!", + "@aboutContributeText": {}, + "aboutTranslationListTitle": "Terjemahkan aplikasi", + "@aboutTranslationListTitle": {}, + "others": "Lainnya", + "@others": {}, + "verifiedEmailInfo": "Email verifikasi telah dikirim ke {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "oneNamePerLine": "Satu nama per baris", + "@oneNamePerLine": {}, + "whatVariationsExist": "Apakah ada variasi dari latihan ini? Jika ada, apa saja?", + "@whatVariationsExist": {}, + "images": "Gambar", + "@images": {}, + "fitInWeek": "Bugar dalam seminggu", + "@fitInWeek": {}, + "fitInWeekHelp": "Jika diaktifkan, hari-hari akan berulang dalam siklus mingguan. Jika tidak, hari-hari akan berjalan secara berurutan tanpa memperhatikan awal minggu baru.", + "@fitInWeekHelp": {}, + "calves": "Betis", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "cardio": "Kardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Dumbel", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "Matras Gym", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "hamstrings": "Paha Belakang", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Kettlebell", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilometer Per Jam", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "darkMode": "Selalu mode gelap", + "@darkMode": {}, + "goalMacro": "Target makronutrien", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Pilih makanan untuk dicatat ke dalam buku harian", + "@selectMealToLog": {}, + "surplus": "Surplus", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "kcalValue": "{value} kkal", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "gValue": "{value} g", + "@gValue": { + "description": "A value in grams, e.g. 5 g", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "percentValue": "{value} %", + "@percentValue": { + "description": "A value in percent, e.g. 10 %", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "variations": "Variasi", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "Juga dikenal sebagai: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "language": "Bahasa", + "@language": {}, + "contributeExercise": "Tambahkan latihan", + "@contributeExercise": {}, + "addExercise": "Tambah latihan", + "@addExercise": {}, + "translation": "Terjemahan", + "@translation": {}, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "contributeExerciseWarning": "Anda hanya dapat menambahkan latihan jika akun Anda berusia lebih dari {days} hari dan email Anda telah terverifikasi", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "arms": "Lengan", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Dada", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Lempeng Beban", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Paha Depan", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "Tanpa alat (Latihan Berat Badan Sendiri)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "deficit": "defisit", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "addSuperset": "Tambah superset", + "@addSuperset": {}, + "isRestDay": "Hari ini adalah hari istirahat", + "@isRestDay": {}, + "apiTokenValidChars": "Kunci API hanya boleh berisi huruf a-f, angka 0-9 dan harus berjumlah 40 karakter", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "needsLogsToAdvance": "Perlu log untuk melanjutkan", + "@needsLogsToAdvance": {}, + "invalidApiToken": "Mohon masukan kunci API yang valid", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "goalProtein": "Target protein", + "@goalProtein": {}, + "noRoutines": "Kamu tidak memiliki rutinitas", + "@noRoutines": {}, + "apiToken": "Token API", + "@apiToken": {}, + "supersetNr": "Superset ke-{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" + } + } + }, + "aboutContributeTitle": "Kontribusi", + "@aboutContributeTitle": {}, + "translateExercise": "Terjemahkan latihan ini sekarang", + "@translateExercise": {}, + "enterMinCharacters": "Silakan masukan minimal {min} karakter", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "swiss_ball": "Bola Gym", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "needsLogsToAdvanceHelp": "Pilih opsi ini jika Anda ingin rutinitas berlanjut ke hari berikutnya hanya setelah Anda mencatat latihan pada hari tersebut", + "@needsLogsToAdvanceHelp": {}, + "setHasNoExercises": "Set ini belum memiliki latihan apa pun!", + "@setHasNoExercises": {}, + "aboutBugsListTitle": "Laporkan masalah atau usulkan fitur", + "@aboutBugsListTitle": {}, + "errorCouldNotConnectToServerDetails": "Aplikasi tidak dapat terhubung ke server. Silakan periksa koneksi internet atau URL server anda, lalu coba lagi. Jika masalah terus berlanjut, hubungi administrator server.", + "@errorCouldNotConnectToServerDetails": {}, + "unVerifiedEmail": "Email belum diverifikasi", + "@unVerifiedEmail": {}, + "progressionRules": "Latihan ini memiliki aturan peningkatan dan tidak dapat diedit melalui aplikasi mobile. Silakan gunakan aplikasi web untuk mengedit latihan ini.", + "@progressionRules": {}, + "setHasProgression": "Set memiliki peningkatan", + "@setHasProgression": {}, + "barbell": "Barbel", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Bokong", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "resistance_band": "Karet Latihan", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "lightMode": "Selalu mode terang", + "@lightMode": {} +} diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 83dc1d59..4aab6f94 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -1,986 +1,1044 @@ { - "anErrorOccurred": "È avvenuto un errore!", - "@anErrorOccurred": {}, - "selectIngredient": "Seleziona un ingrediente", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "enterValidNumber": "Inserisci un numero valido", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "enterValue": "Inserisci un valore", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "goToToday": "Seleziona giorno", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "calendar": "Calendario", - "@calendar": {}, - "toggleDetails": "Scegli dettagli", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "newNutritionalPlan": "Nuovo piano nutrizionale", - "@newNutritionalPlan": {}, - "confirmDelete": "Sei sicuro/a di voler cancellare '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "delete": "Elimina", - "@delete": {}, - "loadingText": "Caricamento…", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "edit": "Modifica", - "@edit": {}, - "noWeightEntries": "Non hai nessun dato sul peso", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "newEntry": "Nuovo dato", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "unit": "Unità", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "amount": "Quatità", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "sodium": "Sodio", - "@sodium": {}, - "fiber": "Fibre", - "@fiber": {}, - "saturatedFat": "Grassi saturi", - "@saturatedFat": {}, - "fat": "Grassi", - "@fat": {}, - "sugars": "Zuccheri", - "@sugars": {}, - "carbohydrates": "Carboidrati", - "@carbohydrates": {}, - "protein": "Proteine", - "@protein": {}, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "energy": "Energia", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "ingredient": "Ingrediente", - "@ingredient": {}, - "timeEnd": "Ora di fine", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStart": "Ora di inizio", - "@timeStart": { - "description": "The starting time of a workout" - }, - "time": "Orario", - "@time": { - "description": "The time of a meal or workout" - }, - "date": "Data", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "weight": "Peso", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "noNutritionalPlans": "Non hai nessun piano nutrizionale", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "nutritionalPlans": "Piani nutrizionali", - "@nutritionalPlans": {}, - "nutritionalDiary": "Diario nutrizionale", - "@nutritionalDiary": {}, - "nutritionalPlan": "Piano nutrizionale", - "@nutritionalPlan": {}, - "addIngredient": "Aggiungi ingrediente", - "@addIngredient": {}, - "mealLogged": "Pasto registrato nel diario", - "@mealLogged": {}, - "addMeal": "Aggiungi pasto", - "@addMeal": {}, - "add": "Aggiungi", - "@add": {}, - "cancel": "Cancella", - "@cancel": {}, - "save": "Salva", - "@save": {}, - "description": "Descrizione", - "@description": {}, - "logHelpEntriesUnits": "Da notare che solo i dati con l'unità del peso (kg o lb) e le ripetizioni sono mostrate. Altre combinazioni come tempo o «a cedimento» sono ignorate.", - "@logHelpEntriesUnits": {}, - "logHelpEntries": "Se in una giornata c'è più di esercizio con lo stesso numero di ripetizioni, ma con pesi differenti, solo l'esercizio con il peso più alto viene mostrato nel diagramma.", - "@logHelpEntries": {}, - "gymMode": "Modalità allenamento", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "newSet": "Nuova serie", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "newDay": "Nuovo giorno", - "@newDay": {}, - "workoutSession": "Sessione di allenamento", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "notes": "Note", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "impression": "Sensazione", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "comment": "Commento", - "@comment": { - "description": "Comment, additional information" - }, - "rir": "RiR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "repetitions": "Ripetizioni", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "addExercise": "Aggiungi esercizi", - "@addExercise": {}, - "exercise": "Esercizio", - "@exercise": { - "description": "An exercise for a workout" - }, - "successfullyDeleted": "Cancellato", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "labelDashboard": "Pannello di controllo", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "labelWorkoutPlan": "Piano di allenamento", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "loginInstead": "Hai già un account? Registrati ora", - "@loginInstead": {}, - "registerInstead": "Non hai un account? Registrati ora", - "@registerInstead": {}, - "reset": "Rerimposta", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "customServerHint": "Inserisci l'indirizzo del tuo server personale o quello predefinito verrà utilizzato", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "customServerUrl": "URL istanza wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "invalidUsername": "Inserisci un nome utente valido", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "username": "Nome utente", - "@username": {}, - "email": "Indirizzo e-mail", - "@email": {}, - "invalidEmail": "Inserisci un indirizzo e-mail valido", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "confirmPassword": "Conferma password", - "@confirmPassword": {}, - "password": "Password", - "@password": {}, - "passwordTooShort": "La password è troppo corta", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "passwordsDontMatch": "Le passwords non coincidono", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "invalidUrl": "Inserisci un URL valido", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "useCustomServer": "Usa un server personale", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "useDefaultServer": "Usa il server predefinito", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "register": "Registrati", - "@register": { - "description": "Text for registration button" - }, - "login": "Entra", - "@login": { - "description": "Text for login button" - }, - "nrOfSets": "Serie per esercizio: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "enterCharacters": "Inserisci una stringa tra {min} e {max} caratteri", - "@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" - } - } - }, - "selectExercise": "Prego, seleziona un esercizio", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "todaysWorkout": "Allenamento di oggi", - "@todaysWorkout": {}, - "selectExercises": "Se vuoi fare un circuito (super set), puoi cercare e aggiungere diversi esercizi. Questi verranno collegati come circuito", - "@selectExercises": {}, - "sameRepetitions": "Se fai le stesse ripetizioni e peso per tutte le serie puoi compilare una sola riga. Per esempio per 4 serie inserisci semplicemente 10 per le ripetizioni, automaticamente diventerà una 4x10.", - "@sameRepetitions": {}, - "setNr": "Serie {nr}", - "@setNr": { - "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", - "type": "text", - "placeholders": { - "nr": { - "type": "String" - } - } - }, - "dayDescriptionHelp": "Una descrizione di ciò che è stato fatto. (p.e. «allenamento gambe») o quale parte del corpo sono state allenate (p.e. «petto e spalle»)", - "@dayDescriptionHelp": {}, - "set": "Serie", - "@set": { - "description": "A set in a workout plan" - }, - "repetitionUnit": "Unità ripetizioni", - "@repetitionUnit": {}, - "weightUnit": "Unità peso", - "@weightUnit": {}, - "reps": "Ripetizioni", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "addSet": "Aggiungi serie", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "start": "Inizia", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "successfullySaved": "Salvato", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "labelWorkoutLogs": "Registri allenamenti", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "logout": "Disconnetti", - "@logout": { - "description": "Text for logout button" - }, - "aboutDescription": "Grazie per esserti registrato/a su wger! wger è un progetto collaborativo con codice aperto, creato da entusiasti del fitness in tutto il mondo.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "logMeal": "Registra questo pasto nel diario", - "@logMeal": {}, - "category": "Categoria", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "equipment": "Equipaggiamento", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "musclesSecondary": "Muscoli secondari", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "muscles": "Muscoli", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "addImage": "Aggiungi un'immagine", - "@addImage": {}, - "gallery": "Galleria", - "@gallery": {}, - "chooseFromLibrary": "Scegli dalla raccolta", - "@chooseFromLibrary": {}, - "takePicture": "Scatta una foto", - "@takePicture": {}, - "selectImage": "Si prega di selezionare un'immagine", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "name": "Nome", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "optionsLabel": "Opzioni", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "goToDetailPage": "Vai alla pagina dettagli", - "@goToDetailPage": {}, - "jumpTo": "Vai a", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "pause": "Pausa", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "searchExercise": "Cerca esercizio da aggiungere", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "labelBottomNavWorkout": "Allenamento", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "setUnitsAndRir": "Scegli le unità e le RiR", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "rirNotUsed": "RiR (Repetitions in Reserve) non utilizzato", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "labelBottomNavNutrition": "Nutrizione", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "usernameValidChars": "Un nome utente può contenere solo lettere, cifre e i caratteri @, +, ., - e _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "total": "Totale", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "appUpdateTitle": "Aggiornamento necessario", - "@appUpdateTitle": {}, - "appUpdateContent": "Questa versione dell'applicazione non è compatibile con il server, per favore aggiorna la tua applicazione.", - "@appUpdateContent": {}, - "dataCopied": "Dati copiati nella nuova voce", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "carbohydratesShort": "C", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "percentEnergy": "Percentuale di energia", - "@percentEnergy": {}, - "fatShort": "Gr", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "logged": "Registrato", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "difference": "Differenza", - "@difference": {}, - "gPerBodyKg": "g per kg di corpo", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "timeStartAhead": "L'ora di inizio non può essere più avanti dell'ora di fine", - "@timeStartAhead": {}, - "value": "Valore", - "@value": { - "description": "The value of a measurement entry" - }, - "measurements": "Misure", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurementCategoriesHelpText": "Categoria di misura, come «bicipiti» o «grasso corporeo»", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "L'unità usata per misurare la categoria come «cm» o «%»", - "@measurementEntriesHelpText": {}, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "macronutrients": "Macronutrienti", - "@macronutrients": {}, - "planned": "Pianificato", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "measurement": "Misura", - "@measurement": {}, - "recentlyUsedIngredients": "Ingredienti aggiunti di recente", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "plateCalculator": "Piastre", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "plateCalculatorNotDivisible": "Non è possibile raggiungere il peso con le piastre disponibili", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "productNotFoundDescription": "Il prodotto con il codice a barre scansionato {barcode} non è stato trovato nel database wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "productNotFound": "Prodotto non trovato", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "scanBarcode": "Scansiona il codice a barre", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "weekAverage": "Media di 7 giorni", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "productFound": "Prodotto trovato", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productFoundDescription": "Il codice a barre corrisponde a questo prodotto: {productName}. Vuoi continuare?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "close": "Chiudi", - "@close": { - "description": "Translation for close" - }, - "logIngredient": "Salva l'ingrediente nel diario nutrizionale", - "@logIngredient": {}, - "searchIngredient": "Cerca ingrediente", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "userProfile": "Il tuo profilo", - "@userProfile": {}, - "exerciseList": "Lista esercizi", - "@exerciseList": {}, - "exercises": "Esercizi", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Nome Esercizio", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "previous": "Precedente", - "@previous": {}, - "next": "Successivo", - "@next": {}, - "gym_mat": "Materassino da palestra", - "@gym_mat": { - "description": "Generated entry for translation for server strings" - }, - "verifiedEmailInfo": "Un'email di verifica è stata inviata a {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "oneNamePerLine": "Un nome per linea", - "@oneNamePerLine": {}, - "textPromptTitle": "Pronto a iniziare?", - "@textPromptTitle": {}, - "moreMeasurementEntries": "Aggiungi una nuova misura", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "searchNamesInEnglish": "Cerca anche nei nomi in inglese", - "@searchNamesInEnglish": {}, - "verify": "Verifica", - "@verify": {}, - "legs": "Gambe", - "@legs": { - "description": "Generated entry for translation for server strings" - }, - "miles": "Miglia", - "@miles": { - "description": "Generated entry for translation for server strings" - }, - "seconds": "Secondi", - "@seconds": { - "description": "Generated entry for translation for server strings" - }, - "shoulders": "Spalle", - "@shoulders": { - "description": "Generated entry for translation for server strings" - }, - "max_reps": "Ripetizioni massime", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "kg": "kg", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "triceps": "Tricipiti", - "@triceps": { - "description": "Generated entry for translation for server strings" - }, - "chest": "Petto", - "@chest": { - "description": "Generated entry for translation for server strings" - }, - "selectEntry": "Per favore seleziona un elemento", - "@selectEntry": {}, - "success": "Completato", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "verifiedEmailReason": "Devi verificare la tua email per contribuire agli esercizi", - "@verifiedEmailReason": {}, - "cardio": "Cardio", - "@cardio": { - "description": "Generated entry for translation for server strings" - }, - "quads": "Quadricipiti", - "@quads": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Chilometri all'ora", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "kilometers": "Chilometri", - "@kilometers": { - "description": "Generated entry for translation for server strings" - }, - "glutes": "Glutei", - "@glutes": { - "description": "Generated entry for translation for server strings" - }, - "minutes": "Minuti", - "@minutes": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Miglia per ora", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "noMeasurementEntries": "Non hai voci di misurazione", - "@noMeasurementEntries": {}, - "add_exercise_image_license": "Le immagini devono essere compatibili con la licenza CC BY SA. In caso di dubbi, carica solo le foto che hai scattato tu stesso.", - "@add_exercise_image_license": {}, - "baseNameEnglish": "Tutti gli esercizi necessitano di un nome base in inglese", - "@baseNameEnglish": {}, - "aboutMastodonTitle": "Mastodonte", - "@aboutMastodonTitle": {}, - "enterMinCharacters": "Inserisci almeno {min} caratteri", - "@enterMinCharacters": { - "description": "Error message when the user hasn't entered the minimum amount characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - } - } - }, - "sz_bar": "SZ-Bar", - "@sz_bar": { - "description": "Generated entry for translation for server strings" - }, - "variations": "Variazioni", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "unVerifiedEmail": "Email non Verificata", - "@unVerifiedEmail": {}, - "alsoKnownAs": "Conosciuto anche come: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "anErrorOccurred": "È avvenuto un errore!", + "@anErrorOccurred": {}, + "selectIngredient": "Seleziona un ingrediente", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmail": "Email Verificata", - "@verifiedEmail": {}, - "alternativeNames": "Nomi Alternativi", - "@alternativeNames": {}, - "translation": "Traduzione", - "@translation": {}, - "translateExercise": "Traduci questo esercizio ora", - "@translateExercise": {}, - "baseData": "Informazioni Base in Inglese", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "contributeExercise": "Contribuisci aggiungendo un esercizio", - "@contributeExercise": {}, - "barbell": "Bilanciere", - "@barbell": { - "description": "Generated entry for translation for server strings" - }, - "swiss_ball": "Fitball", - "@swiss_ball": { - "description": "Generated entry for translation for server strings" - }, - "none__bodyweight_exercise_": "nessuno (esercizio con il peso corporeo)", - "@none__bodyweight_exercise_": { - "description": "Generated entry for translation for server strings" - }, - "biceps": "Bicipiti", - "@biceps": { - "description": "Generated entry for translation for server strings" - }, - "calves": "Polpacci", - "@calves": { - "description": "Generated entry for translation for server strings" - }, - "abs": "Addominali", - "@abs": { - "description": "Generated entry for translation for server strings" - }, - "kettlebell": "Kettlebell", - "@kettlebell": { - "description": "Generated entry for translation for server strings" - }, - "images": "Immagini", - "@images": {}, - "incline_bench": "Panca Inclinata", - "@incline_bench": { - "description": "Generated entry for translation for server strings" - }, - "lats": "Muscoli Dorsali", - "@lats": { - "description": "Generated entry for translation for server strings" - }, - "aboutPageTitle": "A proposito di Wger", - "@aboutPageTitle": {}, - "contributeExerciseWarning": "Puoi contribuire agli esercizi solo se il tuo account è più vecchio di {days} giorni e hai verificato la tua email", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } + "enterValidNumber": "Inserisci un numero valido", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "enterValue": "Inserisci un valore", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "goToToday": "Seleziona giorno", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "calendar": "Calendario", + "@calendar": {}, + "toggleDetails": "Scegli dettagli", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "newNutritionalPlan": "Nuovo piano nutrizionale", + "@newNutritionalPlan": {}, + "confirmDelete": "Sei sicuro/a di voler cancellare '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "delete": "Elimina", + "@delete": {}, + "loadingText": "Caricamento…", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "edit": "Modifica", + "@edit": {}, + "noWeightEntries": "Non hai nessun dato sul peso", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "newEntry": "Nuovo dato", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "unit": "Unità", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "amount": "Quatità", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "sodium": "Sodio", + "@sodium": {}, + "fiber": "Fibre", + "@fiber": {}, + "saturatedFat": "Grassi saturi", + "@saturatedFat": {}, + "fat": "Grassi", + "@fat": {}, + "sugars": "Zuccheri", + "@sugars": {}, + "carbohydrates": "Carboidrati", + "@carbohydrates": {}, + "protein": "Proteine", + "@protein": {}, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "energy": "Energia", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "ingredient": "Ingrediente", + "@ingredient": {}, + "timeEnd": "Ora di fine", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStart": "Ora di inizio", + "@timeStart": { + "description": "The starting time of a workout" + }, + "time": "Orario", + "@time": { + "description": "The time of a meal or workout" + }, + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "weight": "Peso", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "noNutritionalPlans": "Non hai nessun piano nutrizionale", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "nutritionalPlans": "Piani nutrizionali", + "@nutritionalPlans": {}, + "nutritionalDiary": "Diario nutrizionale", + "@nutritionalDiary": {}, + "nutritionalPlan": "Piano nutrizionale", + "@nutritionalPlan": {}, + "addIngredient": "Aggiungi ingrediente", + "@addIngredient": {}, + "mealLogged": "Pasto registrato nel diario", + "@mealLogged": {}, + "addMeal": "Aggiungi pasto", + "@addMeal": {}, + "add": "Aggiungi", + "@add": {}, + "cancel": "Cancella", + "@cancel": {}, + "save": "Salva", + "@save": {}, + "description": "Descrizione", + "@description": {}, + "logHelpEntriesUnits": "Da notare che solo i dati con l'unità del peso (kg o lb) e le ripetizioni sono mostrate. Altre combinazioni come tempo o «a cedimento» sono ignorate.", + "@logHelpEntriesUnits": {}, + "logHelpEntries": "Se in una giornata c'è più di esercizio con lo stesso numero di ripetizioni, ma con pesi differenti, solo l'esercizio con il peso più alto viene mostrato nel diagramma.", + "@logHelpEntries": {}, + "gymMode": "Modalità allenamento", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "newSet": "Nuova serie", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "newDay": "Nuovo giorno", + "@newDay": {}, + "workoutSession": "Sessione di allenamento", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "notes": "Note", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "impression": "Sensazione", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "comment": "Comment", + "@comment": { + "description": "Comment, additional information" + }, + "rir": "RiR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "repetitions": "Ripetizioni", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "addExercise": "Aggiungi esercizi", + "@addExercise": {}, + "exercise": "Esercizio", + "@exercise": { + "description": "An exercise for a workout" + }, + "successfullyDeleted": "Cancellato", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "labelDashboard": "Pannello di controllo", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "labelWorkoutPlan": "Piano di allenamento", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "loginInstead": "Hai già un account? Registrati ora", + "@loginInstead": {}, + "registerInstead": "Non hai un account? Registrati ora", + "@registerInstead": {}, + "reset": "Rerimposta", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "customServerHint": "Inserisci l'indirizzo del tuo server personale o quello predefinito verrà utilizzato", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "customServerUrl": "URL istanza wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "invalidUsername": "Inserisci un nome utente valido", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "username": "Nome utente", + "@username": {}, + "email": "Indirizzo e-mail", + "@email": {}, + "invalidEmail": "Inserisci un indirizzo e-mail valido", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "confirmPassword": "Conferma password", + "@confirmPassword": {}, + "password": "Password", + "@password": {}, + "passwordTooShort": "La password è troppo corta", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "passwordsDontMatch": "Le passwords non coincidono", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "invalidUrl": "Inserisci un URL valido", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "useCustomServer": "Usa un server personale", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useDefaultServer": "Usa il server predefinito", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "register": "Registrati", + "@register": { + "description": "Text for registration button" + }, + "login": "Entra", + "@login": { + "description": "Text for login button" + }, + "nrOfSets": "Serie per esercizio: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "enterCharacters": "Inserisci una stringa tra {min} e {max} caratteri", + "@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" + } + } + }, + "selectExercise": "Prego, seleziona un esercizio", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "todaysWorkout": "Allenamento di oggi", + "@todaysWorkout": {}, + "selectExercises": "Se vuoi fare un circuito (super set), puoi cercare e aggiungere diversi esercizi. Questi verranno collegati come circuito", + "@selectExercises": {}, + "sameRepetitions": "Se fai le stesse ripetizioni e peso per tutte le serie puoi compilare una sola riga. Per esempio per 4 serie inserisci semplicemente 10 per le ripetizioni, automaticamente diventerà una 4x10.", + "@sameRepetitions": {}, + "setNr": "Serie {nr}", + "@setNr": { + "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "dayDescriptionHelp": "Una descrizione di ciò che è stato fatto. (p.e. «allenamento gambe») o quale parte del corpo sono state allenate (p.e. «petto e spalle»)", + "@dayDescriptionHelp": {}, + "set": "Serie", + "@set": { + "description": "A set in a workout plan" + }, + "repetitionUnit": "Unità ripetizioni", + "@repetitionUnit": {}, + "weightUnit": "Unità peso", + "@weightUnit": {}, + "reps": "Ripetizioni", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "addSet": "Aggiungi serie", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "start": "Inizia", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "successfullySaved": "Salvato", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "labelWorkoutLogs": "Registri allenamenti", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "logout": "Disconnetti", + "@logout": { + "description": "Text for logout button" + }, + "aboutDescription": "Grazie per esserti registrato/a su wger! wger è un progetto collaborativo con codice aperto, creato da entusiasti del fitness in tutto il mondo.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "logMeal": "Registra questo pasto nel diario", + "@logMeal": {}, + "category": "Categoria", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "equipment": "Equipaggiamento", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "musclesSecondary": "Muscoli secondari", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "muscles": "Muscoli", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "addImage": "Aggiungi un'immagine", + "@addImage": {}, + "gallery": "Galleria", + "@gallery": {}, + "chooseFromLibrary": "Scegli dalla raccolta", + "@chooseFromLibrary": {}, + "takePicture": "Scatta una foto", + "@takePicture": {}, + "selectImage": "Si prega di selezionare un'immagine", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "name": "Nome", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "optionsLabel": "Opzioni", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "goToDetailPage": "Vai alla pagina dettagli", + "@goToDetailPage": {}, + "jumpTo": "Vai a", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "pause": "Pausa", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "searchExercise": "Cerca esercizio da aggiungere", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "labelBottomNavWorkout": "Allenamento", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "setUnitsAndRir": "Scegli le unità e le RiR", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "rirNotUsed": "RiR (Repetitions in Reserve) non utilizzato", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "labelBottomNavNutrition": "Nutrizione", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "usernameValidChars": "Un nome utente può contenere solo lettere, cifre e i caratteri @, +, ., - e _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "total": "Totale", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "appUpdateTitle": "Aggiornamento necessario", + "@appUpdateTitle": {}, + "appUpdateContent": "Questa versione dell'applicazione non è compatibile con il server, per favore aggiorna la tua applicazione.", + "@appUpdateContent": {}, + "dataCopied": "Dati copiati nella nuova voce", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "carbohydratesShort": "C", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "percentEnergy": "Percentuale di energia", + "@percentEnergy": {}, + "fatShort": "Gr", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "logged": "Registrato", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "difference": "Differenza", + "@difference": {}, + "gPerBodyKg": "g per kg di corpo", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "timeStartAhead": "L'ora di inizio non può essere più avanti dell'ora di fine", + "@timeStartAhead": {}, + "value": "Valore", + "@value": { + "description": "The value of a measurement entry" + }, + "measurements": "Misure", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurementCategoriesHelpText": "Categoria di misura, come «bicipiti» o «grasso corporeo»", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "L'unità usata per misurare la categoria come «cm» o «%»", + "@measurementEntriesHelpText": {}, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "macronutrients": "Macronutrienti", + "@macronutrients": {}, + "planned": "Pianificato", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "measurement": "Misura", + "@measurement": {}, + "recentlyUsedIngredients": "Ingredienti aggiunti di recente", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "plateCalculator": "Piastre", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Non è possibile raggiungere il peso con le piastre disponibili", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "productNotFoundDescription": "Il prodotto con il codice a barre scansionato {barcode} non è stato trovato nel database wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "productNotFound": "Prodotto non trovato", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "scanBarcode": "Scansiona il codice a barre", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "weekAverage": "Media di 7 giorni", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "productFound": "Prodotto trovato", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productFoundDescription": "Il codice a barre corrisponde a questo prodotto: {productName}. Vuoi continuare?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "close": "Chiudi", + "@close": { + "description": "Translation for close" + }, + "logIngredient": "Salva l'ingrediente nel diario nutrizionale", + "@logIngredient": {}, + "searchIngredient": "Cerca ingrediente", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "userProfile": "Il tuo profilo", + "@userProfile": {}, + "exerciseList": "Lista esercizi", + "@exerciseList": {}, + "exercises": "Esercizi", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Nome Esercizio", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "previous": "Precedente", + "@previous": {}, + "next": "Successivo", + "@next": {}, + "gym_mat": "Materassino da palestra", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "verifiedEmailInfo": "Un'email di verifica è stata inviata a {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "oneNamePerLine": "Un nome per linea", + "@oneNamePerLine": {}, + "textPromptTitle": "Pronto a iniziare?", + "@textPromptTitle": {}, + "moreMeasurementEntries": "Aggiungi una nuova misura", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "searchNamesInEnglish": "Cerca anche nei nomi in inglese", + "@searchNamesInEnglish": {}, + "verify": "Verifica", + "@verify": {}, + "legs": "Gambe", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Miglia", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "Secondi", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Spalle", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Ripetizioni massime", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Tricipiti", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Petto", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "selectEntry": "Per favore seleziona un elemento", + "@selectEntry": {}, + "success": "Completato", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "verifiedEmailReason": "Devi verificare la tua email per contribuire agli esercizi", + "@verifiedEmailReason": {}, + "cardio": "Cardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Quadricipiti", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Chilometri all'ora", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Chilometri", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Glutei", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Minuti", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Miglia per ora", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "noMeasurementEntries": "Non hai voci di misurazione", + "@noMeasurementEntries": {}, + "add_exercise_image_license": "Le immagini devono essere compatibili con la licenza CC BY SA. In caso di dubbi, carica solo le foto che hai scattato tu stesso.", + "@add_exercise_image_license": {}, + "baseNameEnglish": "Tutti gli esercizi necessitano di un nome base in inglese", + "@baseNameEnglish": {}, + "aboutMastodonTitle": "Mastodonte", + "@aboutMastodonTitle": {}, + "enterMinCharacters": "Inserisci almeno {min} caratteri", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "sz_bar": "SZ-Bar", + "@sz_bar": { + "description": "Generated entry for translation for server strings" + }, + "variations": "Variazioni", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "unVerifiedEmail": "Email non Verificata", + "@unVerifiedEmail": {}, + "alsoKnownAs": "Conosciuto anche come: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmail": "Email Verificata", + "@verifiedEmail": {}, + "alternativeNames": "Nomi Alternativi", + "@alternativeNames": {}, + "translation": "Traduzione", + "@translation": {}, + "translateExercise": "Traduci questo esercizio ora", + "@translateExercise": {}, + "baseData": "Informazioni Base in Inglese", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "contributeExercise": "Contribuisci aggiungendo un esercizio", + "@contributeExercise": {}, + "barbell": "Bilanciere", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "swiss_ball": "Fitball", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "nessuno (esercizio con il peso corporeo)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "biceps": "Bicipiti", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "calves": "Polpacci", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "abs": "Addominali", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Kettlebell", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "images": "Immagini", + "@images": {}, + "incline_bench": "Panca Inclinata", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Muscoli Dorsali", + "@lats": { + "description": "Generated entry for translation for server strings" + }, + "aboutPageTitle": "A proposito di Wger", + "@aboutPageTitle": {}, + "contributeExerciseWarning": "Puoi contribuire agli esercizi solo se il tuo account è più vecchio di {days} giorni e hai verificato la tua email", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "language": "Lingua", + "@language": {}, + "textPromptSubheading": "Premi il pulsante azione per iniziare", + "@textPromptSubheading": {}, + "arms": "Braccia", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "bench": "Panca", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "body_weight": "Peso Corporeo", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Manubrio", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Piastre", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "Fino al fallimento", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "hamstrings": "Cosce", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "pull_up_bar": "Barra per trazioni", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "noMatchingExerciseFound": "Non sono stati trovati esercizi corrispondenti", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "whatVariationsExist": "Ci sono delle variazioni per questo esercizio, se ne esistono?", + "@whatVariationsExist": {}, + "cacheWarning": "A causa del caching potrebbe volerci del tempo affinchè i cambiamenti siano visibili attraverso l'applicazione.", + "@cacheWarning": {}, + "back": "Schiena", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "lower_back": "Zona Lombare", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "useMetric": "Us", + "@useMetric": {}, + "log": "Log", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "aboutDonateTitle": "Donare", + "@aboutDonateTitle": {}, + "aboutDonateText": "Offrici un caffè per aiutare il progetto, pagare i costi del server e mantenerci alimentati", + "@aboutDonateText": {}, + "settingsTitle": "Impostazioni", + "@settingsTitle": {}, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Cache degli esercizi", + "@settingsExerciseCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Cache svuotata con successo", + "@settingsCacheDeletedSnackbar": {}, + "done": "Fatto", + "@done": {}, + "ingredientLogged": "Ingrediente registrato nel diario", + "@ingredientLogged": {}, + "chartDuringPlanTitle": "{chartName} durante il piano nutrizionale {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "chart30DaysTitle": "{name} ultimi 30 giorni", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "goalMacro": "Obiettivi dei macronutrienti", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "goalFiber": "Obbiettivo fibre", + "@goalFiber": {}, + "overallChangeWeight": "Variazione complessiva", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Dai pasti", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeBasic": "Base", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Avanzato", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "grezzo", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "med", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "Modalità del tema", + "@themeMode": {}, + "lightMode": "Sempre in modalità chiara", + "@lightMode": {}, + "systemMode": "Parametri di sistema", + "@systemMode": {}, + "settingsIngredientCacheDescription": "Cache ingredienti", + "@settingsIngredientCacheDescription": {}, + "onlyLogging": "Traccia solo le calorie", + "@onlyLogging": {}, + "goalEnergy": "Obiettivo energetico", + "@goalEnergy": {}, + "goalProtein": "Obbiettivo proteine", + "@goalProtein": {}, + "goalCarbohydrates": "Obbiettivo carboidrati", + "@goalCarbohydrates": {}, + "goalFat": "Obbiettivo grassi", + "@goalFat": {}, + "today": "Oggi", + "@today": {}, + "loggedToday": "Registrato oggi", + "@loggedToday": {}, + "kcalValue": "{value} kcal", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "gValue": "{value} g", + "@gValue": { + "description": "A value in grams, e.g. 5 g", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "percentValue": "{value} %", + "@percentValue": { + "description": "A value in percent, e.g. 10 %", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "onlyLoggingHelpText": "Selezionate la casella se volete registrare solo le calorie e non volete impostare un piano nutrizionale dettagliato con pasti specifici", + "@onlyLoggingHelpText": {}, + "noIngredientsDefined": "Nessun ingrediente ancora definito", + "@noIngredientsDefined": {}, + "selectMealToLog": "Selezionare un pasto da registrare nel diario", + "@selectMealToLog": {}, + "surplus": "eccedenza", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "deficit", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "chartAllTimeTitle": "{name} per tutto il periodo", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "darkMode": "Sempre in modalità scura", + "@darkMode": {}, + "routines": "Routine", + "@routines": {}, + "newRoutine": "Nuova routine", + "@newRoutine": {}, + "noRoutines": "Non hai nessuna routine", + "@noRoutines": {}, + "restTime": "Tempo di riposo", + "@restTime": {}, + "exerciseNr": "Esercizio {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" + } + } + }, + "restDay": "Giorno di riposo", + "@restDay": {}, + "needsLogsToAdvance": "Ha bisogno di registri per avanzare", + "@needsLogsToAdvance": {}, + "isRestDayHelp": "Tieni presente che tutte le serie e gli esercizi verranno rimossi quando contrassegni un giorno come giorno di riposo.", + "@isRestDayHelp": {}, + "useColors": "Usa colori", + "@useColors": {}, + "invalidApiToken": "Per favore inserisci una chiave API valida", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiToken": "API Token", + "@apiToken": {}, + "useApiToken": "Usa il Token API", + "@useApiToken": {}, + "useUsernameAndPassword": "Usa username e password", + "@useUsernameAndPassword": {}, + "apiTokenValidChars": "Una chiave API può contenere solo lettere a-f, numeri 0-9 e deve essere lunga 40 caratteri", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "selectAvailablePlates": "Seleziona i piatti disponibili", + "@selectAvailablePlates": {}, + "barWeight": "Peso della barra", + "@barWeight": {}, + "isRestDay": "È il giorno di riposo", + "@isRestDay": {}, + "needsLogsToAdvanceHelp": "Seleziona se desideri che la routine proceda al giorno programmato successivo solo se hai registrato un allenamento per quel giorno", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Giorni di routine", + "@routineDays": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Il tuo attuale piano nutrizionale non ha pasti definiti", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Per aggiungere pasti al piano, vai ai dettagli del piano nutrizionale", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "errorInfoDescription": "Ci dispiace, ma si è verificato un problema. Puoi aiutarci a risolverlo segnalando il problema su GitHub.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Puoi continuare a utilizzare l'app, ma alcune funzionalità potrebbero non funzionare.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Technical details", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "Impossibile connettersi al server", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "L'applicazione non è riuscita a connettersi al server. Controlla la tua connessione Internet o l'URL del server e riprova. Se il problema persiste, contatta l'amministratore del server.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "Copia negli appunti", + "@copyToClipboard": {}, + "aboutTranslationListTitle": "Tradurre l'applicazione", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Visualizza il codice sorgente", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Unisciti alla comunità", + "@aboutJoinCommunityTitle": {}, + "others": "Altri", + "@others": {}, + "fitInWeekHelp": "Se abilitata, i giorni si ripeteranno in un ciclo settimanale, altrimenti i giorni si susseguiranno in sequenza, senza tener conto dell'inizio di una nuova settimana.", + "@fitInWeekHelp": {}, + "addSuperset": "Aggiungi superset", + "@addSuperset": {}, + "setHasProgression": "Il set ha una progressione", + "@setHasProgression": {}, + "setHasProgressionWarning": "Si prega di notare che al momento non è possibile modificare tutte le impostazioni di un set sull'applicazione mobile o configurare la progressione automatica. Per ora, si prega di utilizzare l'applicazione web.", + "@setHasProgressionWarning": {}, + "setHasNoExercises": "Questo set non contiene ancora esercizi!", + "@setHasNoExercises": {}, + "simpleMode": "Modalità semplice", + "@simpleMode": {}, + "simpleModeHelp": "Nascondi alcune delle impostazioni più avanzate durante la modifica degli esercizi", + "@simpleModeHelp": {}, + "progressionRules": "Questo esercizio ha delle regole di progressione e non può essere modificato sull'app mobile. Per modificare questo esercizio, utilizza l'applicazione web.", + "@progressionRules": {}, + "resistance_band": "Fascia di resistenza", + "@resistance_band": { + "description": "Generated entry for translation for server strings" } - }, - "language": "Lingua", - "@language": {}, - "textPromptSubheading": "Premi il pulsante azione per iniziare", - "@textPromptSubheading": {}, - "arms": "Braccia", - "@arms": { - "description": "Generated entry for translation for server strings" - }, - "bench": "Panca", - "@bench": { - "description": "Generated entry for translation for server strings" - }, - "body_weight": "Peso Corporeo", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "dumbbell": "Manubrio", - "@dumbbell": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Piastre", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "until_failure": "Fino al fallimento", - "@until_failure": { - "description": "Generated entry for translation for server strings" - }, - "lb": "lb", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "hamstrings": "Cosce", - "@hamstrings": { - "description": "Generated entry for translation for server strings" - }, - "pull_up_bar": "Barra per trazioni", - "@pull_up_bar": { - "description": "Generated entry for translation for server strings" - }, - "noMatchingExerciseFound": "Non sono stati trovati esercizi corrispondenti", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "whatVariationsExist": "Ci sono delle variazioni per questo esercizio, se ne esistono?", - "@whatVariationsExist": {}, - "cacheWarning": "A causa del caching potrebbe volerci del tempo affinchè i cambiamenti siano visibili attraverso l'applicazione.", - "@cacheWarning": {}, - "back": "Schiena", - "@back": { - "description": "Generated entry for translation for server strings" - }, - "lower_back": "Zona Lombare", - "@lower_back": { - "description": "Generated entry for translation for server strings" - }, - "useMetric": "Us", - "@useMetric": {}, - "log": "Log", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "aboutDonateTitle": "Donare", - "@aboutDonateTitle": {}, - "aboutDonateText": "Offrici un caffè per aiutare il progetto, pagare i costi del server e mantenerci alimentati", - "@aboutDonateText": {}, - "settingsTitle": "Impostazioni", - "@settingsTitle": {}, - "settingsCacheTitle": "Cache", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Cache degli esercizi", - "@settingsExerciseCacheDescription": {}, - "settingsCacheDeletedSnackbar": "Cache svuotata con successo", - "@settingsCacheDeletedSnackbar": {}, - "done": "Fatto", - "@done": {}, - "ingredientLogged": "Ingrediente registrato nel diario", - "@ingredientLogged": {}, - "chartDuringPlanTitle": "{chartName} durante il piano nutrizionale {planName}", - "@chartDuringPlanTitle": { - "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", - "type": "text", - "placeholders": { - "chartName": { - "type": "String" - }, - "planName": { - "type": "String" - } - } - }, - "chart30DaysTitle": "{name} ultimi 30 giorni", - "@chart30DaysTitle": { - "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "goalMacro": "Obiettivi dei macronutrienti", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "goalFiber": "Obbiettivo fibre", - "@goalFiber": {}, - "overallChangeWeight": "Variazione complessiva", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "Dai pasti", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "goalTypeBasic": "Base", - "@goalTypeBasic": { - "description": "added for localization of Class GoalType's filed basic" - }, - "goalTypeAdvanced": "Avanzato", - "@goalTypeAdvanced": { - "description": "added for localization of Class GoalType's filed advanced" - }, - "indicatorRaw": "grezzo", - "@indicatorRaw": { - "description": "added for localization of Class Indicator's field text" - }, - "indicatorAvg": "med", - "@indicatorAvg": { - "description": "added for localization of Class Indicator's field text" - }, - "themeMode": "Modalità del tema", - "@themeMode": {}, - "lightMode": "Sempre in modalità chiara", - "@lightMode": {}, - "systemMode": "Parametri di sistema", - "@systemMode": {}, - "settingsIngredientCacheDescription": "Cache ingredienti", - "@settingsIngredientCacheDescription": {}, - "onlyLogging": "Traccia solo le calorie", - "@onlyLogging": {}, - "goalEnergy": "Obiettivo energetico", - "@goalEnergy": {}, - "goalProtein": "Obbiettivo proteine", - "@goalProtein": {}, - "goalCarbohydrates": "Obbiettivo carboidrati", - "@goalCarbohydrates": {}, - "goalFat": "Obbiettivo grassi", - "@goalFat": {}, - "today": "Oggi", - "@today": {}, - "loggedToday": "Registrato oggi", - "@loggedToday": {}, - "kcalValue": "{value} kcal", - "@kcalValue": { - "description": "A value in kcal, e.g. 500 kcal", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "gValue": "{value} g", - "@gValue": { - "description": "A value in grams, e.g. 5 g", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "percentValue": "{value} %", - "@percentValue": { - "description": "A value in percent, e.g. 10 %", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "onlyLoggingHelpText": "Selezionate la casella se volete registrare solo le calorie e non volete impostare un piano nutrizionale dettagliato con pasti specifici", - "@onlyLoggingHelpText": {}, - "noIngredientsDefined": "Nessun ingrediente ancora definito", - "@noIngredientsDefined": {}, - "selectMealToLog": "Selezionare un pasto da registrare nel diario", - "@selectMealToLog": {}, - "surplus": "eccedenza", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "deficit", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "chartAllTimeTitle": "{name} per tutto il periodo", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "darkMode": "Sempre in modalità scura", - "@darkMode": {}, - "routines": "Routine", - "@routines": {}, - "newRoutine": "Nuova routine", - "@newRoutine": {}, - "noRoutines": "Non hai nessuna routine", - "@noRoutines": {}, - "restTime": "Tempo di riposo", - "@restTime": {}, - "exerciseNr": "Esercizio {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" - } - } - }, - "restDay": "Giorno di riposo", - "@restDay": {}, - "needsLogsToAdvance": "Ha bisogno di registri per avanzare", - "@needsLogsToAdvance": {}, - "isRestDayHelp": "Tieni presente che tutte le serie e gli esercizi verranno rimossi quando contrassegni un giorno come giorno di riposo.", - "@isRestDayHelp": {}, - "useColors": "Usa colori", - "@useColors": {}, - "invalidApiToken": "Per favore inserisci una chiave API valida", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "apiToken": "API Token", - "@apiToken": {}, - "useApiToken": "Usa il Token API", - "@useApiToken": {}, - "useUsernameAndPassword": "Usa username e password", - "@useUsernameAndPassword": {}, - "apiTokenValidChars": "Una chiave API può contenere solo lettere a-f, numeri 0-9 e deve essere lunga 40 caratteri", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - } } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 3e5c59bf..54fb5a6a 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -113,7 +113,7 @@ "@addMeal": {}, "addIngredient": "Adicionar ingrediente", "@addIngredient": {}, - "logIngredient": "Salvar no gráfico de nutrição", + "logIngredient": "Registar ingrediente no diário de nutrição", "@logIngredient": {}, "nutritionalDiary": "Gráfico nutricional", "@nutritionalDiary": {}, @@ -357,7 +357,7 @@ "@jumpTo": { "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" }, - "logMeal": "Registrar esta refeição", + "logMeal": "Registar esta refeição no diário de nutrição", "@logMeal": {}, "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", "@measurementCategoriesHelpText": {}, @@ -618,7 +618,7 @@ "@kettlebell": {}, "none__bodyweight_exercise_": "nenhum (somente peso do corpo)", "@none__bodyweight_exercise_": {}, - "aboutPageTitle": "Sobre Wger", + "aboutPageTitle": "Sobre nós & suporte", "@aboutPageTitle": {}, "enterMinCharacters": "Por favor, selecione ao menos {min} de caracteres", "@enterMinCharacters": { @@ -742,9 +742,9 @@ }, "aboutMastodonTitle": "Mastodon", "@aboutMastodonTitle": {}, - "aboutDonateTitle": "Doar", + "aboutDonateTitle": "Faz uma doação", "@aboutDonateTitle": {}, - "aboutDonateText": "Nos compre um café para ajudar o projeto, pagar os custos do servidor e nos manter energizados", + "aboutDonateText": "Embora o projeto seja, e será sempre, gratuito, manter o servidor não o é! O desenvolvimento também leva bastante do tempo dos voluntários. O teu contributo suporta diretamente estes custos ajudando a manter o serviço constante.", "@aboutDonateText": {}, "onlyLogging": "Só controlar calorias", "@onlyLogging": {}, @@ -873,7 +873,7 @@ "@lightMode": {}, "systemMode": "Configurações do sistema", "@systemMode": {}, - "themeMode": "Modo temático", + "themeMode": "Tema", "@themeMode": {}, "darkMode": "Modo sempre escuro", "@darkMode": {}, @@ -908,5 +908,105 @@ "restTime": "Tempo de descanso", "@restTime": {}, "isRestDayHelp": "Favor notar que todos os sets e exercícios serão removidos quando você marcar um dia como dia de descanso.", - "@isRestDayHelp": {} + "@isRestDayHelp": {}, + "apiToken": "Códibo API", + "@apiToken": {}, + "errorInfoDescription": "Lamentamos, mas algo correu mal. Podes ajudar a corrigir isto reportando o erro no GitHub.", + "@errorInfoDescription": {}, + "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" + } + } + }, + "needsLogsToAdvance": "Precisa de dados para avançar", + "@needsLogsToAdvance": {}, + "needsLogsToAdvanceHelp": "Seleciona se queres que a rotina progrida para o dia seguinte agendado apenas se registaste um treino no dia", + "@needsLogsToAdvanceHelp": {}, + "min": "Min", + "@min": {}, + "max": "Máximo", + "@max": {}, + "resultingRoutine": "Rotina resultante", + "@resultingRoutine": {}, + "fitInWeekHelp": "Se selecionado, os dias repetir-se-ão num ciclo semanal, caso contrário, os dias seguir-se-ão sequencialmente independentemente do início de nova semana.", + "@fitInWeekHelp": {}, + "fitInWeek": "Encaixa na semana", + "@fitInWeek": {}, + "simpleModeHelp": "Esconde alguns dos parâmetros mais avançados quando editando exercícios", + "@simpleModeHelp": {}, + "addSuperset": "Adiciona um superset", + "@addSuperset": {}, + "setHasNoExercises": "Esta série ainda não tem exercícios!", + "@setHasNoExercises": {}, + "resistance_band": "Banda elástica", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "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" + }, + "errorInfoDescription2": "Podes continuar a usar a aplicação, mas algumas funções podem não funcionar.", + "@errorInfoDescription2": {}, + "errorCouldNotConnectToServer": "Não foi possível ligar ao servidor", + "@errorCouldNotConnectToServer": {}, + "aboutBugsListTitle": "Relata um problema ou sugere uma funcionalidade", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Traduz a aplicação", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Vê o código fonte", + "@aboutSourceListTitle": {}, + "aboutWhySupportTitle": "Código aberto & livre para usar ❤️", + "@aboutWhySupportTitle": {}, + "aboutContributeTitle": "Contribui", + "@aboutContributeTitle": {}, + "aboutContributeText": "Todos os tipos de contribuição são bem-vindos. Quer sejas um desenvolvedor, um tradutor ou apenas um apaixonado pelo exercício, todas as migalhas de suporte são apreciadas!", + "@aboutContributeText": {}, + "aboutJoinCommunityTitle": "Junta-te à comunidade", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Outros", + "@others": {}, + "setHasProgression": "A série tem progressão", + "@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": {}, + "selectAvailablePlates": "Seleciona anilhas disponíveis", + "@selectAvailablePlates": {}, + "useApiToken": "Usa código API", + "@useApiToken": {}, + "barWeight": "Peso da barra", + "@barWeight": {}, + "invalidApiToken": "Por favor, introduz uma chave API válida", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "useColors": "Usa cores", + "@useColors": {}, + "useUsernameAndPassword": "Usa nome de utilizador e palavra passe", + "@useUsernameAndPassword": {}, + "apiTokenValidChars": "Uma chave API pode apenas conter letras a-f, números 0-9 e ter exatamente 40 caracteres", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "errorViewDetails": "Detalhes técnicos", + "@errorViewDetails": {}, + "errorCouldNotConnectToServerDetails": "A aplicação não conseguiu ligar-se ao servidor. Por favor, verifica a ligação à rede ou o URL do servidor e tenta novamente. Se o problema persistir, contacta o administrador do servidor.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "Copia para a memória", + "@copyToClipboard": {}, + "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": {} } diff --git a/lib/l10n/app_pt_BR.arb b/lib/l10n/app_pt_BR.arb index bacc9a10..cb84dcf3 100644 --- a/lib/l10n/app_pt_BR.arb +++ b/lib/l10n/app_pt_BR.arb @@ -1,934 +1,1072 @@ { - "nutritionalPlan": "Plano nutricional", - "@nutritionalPlan": {}, - "weight": "Peso", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "date": "Data", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "value": "Valor", - "@value": { - "description": "The value of a measurement entry" - }, - "unit": "Unidade", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "edit": "Editar", - "@edit": {}, - "delete": "Excluir", - "@delete": {}, - "login": "Entrar", - "@login": { - "description": "Text for login button" - }, - "userProfile": "Seu perfil", - "@userProfile": {}, - "logout": "Sair", - "@logout": { - "description": "Text for logout button" - }, - "notes": "Notas", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "description": "Descrição", - "@description": {}, - "register": "Inscrever-se", - "@register": { - "description": "Text for registration button" - }, - "useDefaultServer": "Usar servidor padrão", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "reset": "Redefinir", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "password": "Senha", - "@password": {}, - "invalidUsername": "Por favor insira um nome de usuário válido", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "passwordTooShort": "A senha é muito curta", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "email": "Endereço de email", - "@email": {}, - "username": "Usuário", - "@username": {}, - "customServerHint": "Digite o endereço do seu próprio servidor, caso contrário o padrão será usado", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "useCustomServer": "Usar servidor customizado", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "registerInstead": "Não tem uma conta? Registrar agora", - "@registerInstead": {}, - "usernameValidChars": "Um usuário deve apenas conter letras, digitos e os caracteres @, +, ., -, ou _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "invalidUrl": "Por favor, digite uma URL válida", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "customServerUrl": "URL da instância wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "passwordsDontMatch": "As senhas não coincidem", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "invalidEmail": "Por favor insira um endereço de e-mail válido", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "confirmPassword": "Confirme sua senha", - "@confirmPassword": {}, - "comment": "Comente", - "@comment": { - "description": "Comment, additional information" - }, - "logIngredient": "Salvar ingrediente no diário nutricional", - "@logIngredient": {}, - "equipment": "Equipamento", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "saturatedFat": "Gordura saturada", - "@saturatedFat": {}, - "mealLogged": "Refeição registrada no diário", - "@mealLogged": {}, - "images": "Imagens", - "@images": {}, - "close": "Fechar", - "@close": { - "description": "Translation for close" - }, - "successfullyDeleted": "Excluído", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "save": "Salvar", - "@save": {}, - "goToToday": "Vá para hoje", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "set": "Definir", - "@set": { - "description": "A set in a workout plan" - }, - "noMeasurementEntries": "Você não tem entradas de medição", - "@noMeasurementEntries": {}, - "newSet": "Novo conjunto", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "impression": "Impressão", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "plateCalculator": "Pratos", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "newNutritionalPlan": "Novo plano nutricional", - "@newNutritionalPlan": {}, - "setNr": "Definir {nr}", - "@setNr": { - "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", - "type": "text", - "placeholders": { - "nr": { - "type": "String" - } - } - }, - "fat": "Gordura", - "@fat": {}, - "timeStartAhead": "O horário de início não pode ser anterior ao horário de término", - "@timeStartAhead": {}, - "carbohydrates": "Carboidratos", - "@carbohydrates": {}, - "muscles": "Músculos", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "total": "Total", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "dayDescriptionHelp": "Uma descrição do que é feito neste dia (por exemplo, 'dia de puxar') ou quais partes do corpo são treinadas (por exemplo, 'peito e ombros')", - "@dayDescriptionHelp": {}, - "gymMode": "Modo Gym", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "logged": "Desconectar", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "amount": "Quantia", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "loginInstead": "Já tem uma conta ? Entre", - "@loginInstead": {}, - "pause": "Pausar", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "success": "Sucesso", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "repetitionUnit": "Unidade de repetição", - "@repetitionUnit": {}, - "weightUnit": "Unidade de peso", - "@weightUnit": {}, - "searchIngredient": "Pesquisar Ingrediente", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "anErrorOccurred": "Ocorreu um erro!", - "@anErrorOccurred": {}, - "enterValue": "por favor insira um valor", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "logMeal": "Registrar refeição para diário de nutrição", - "@logMeal": {}, - "newEntry": "Nova entrada", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "addSet": "Adicionar set", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "name": "Nome", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "percentEnergy": "Porcentagem de energia", - "@percentEnergy": {}, - "searchNamesInEnglish": "Pesquise também por nomes em inglês", - "@searchNamesInEnglish": {}, - "exercise": "Exercício", - "@exercise": { - "description": "An exercise for a workout" - }, - "addIngredient": "Adicionar ingrediente", - "@addIngredient": {}, - "fatShort": "G", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "start": "Começar", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "jumpTo": "Pule para", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "difference": "Diferença", - "@difference": {}, - "fiber": "Fibra", - "@fiber": {}, - "aboutDescription": "Obrigado por usar o Wger! Wger é um projeto colaborativo de código aberto, feito por entusiastas do fitness de todo o mundo.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "timeStart": "Hora de início", - "@timeStart": { - "description": "The starting time of a workout" - }, - "searchExercise": "Exercício de pesquisa para adicionar", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "moreMeasurementEntries": "Adicionar nova medição", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "loadingText": "Carregando...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "selectExercises": "Se quiser fazer um superset você pode procurar vários exercícios, eles estarão agrupados", - "@selectExercises": {}, - "nutritionalDiary": "Diário nutricional", - "@nutritionalDiary": {}, - "protein": "Proteína", - "@protein": {}, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "noWeightEntries": "Você não tem entradas de peso", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "noNutritionalPlans": "Você não tem planos nutricionais", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "goToDetailPage": "Ir para a página de detalhes", - "@goToDetailPage": {}, - "labelWorkoutLogs": "Registros de treinos", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "ingredient": "Ingrediente", - "@ingredient": {}, - "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", - "@measurementCategoriesHelpText": {}, - "rirNotUsed": "RiR não usado", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "todaysWorkout": "Seu treino hoje", - "@todaysWorkout": {}, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "sodium": "Sódio", - "@sodium": {}, - "translation": "Tradução", - "@translation": {}, - "successfullySaved": "Salvo", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "exerciseList": "Lista de exercícios", - "@exerciseList": {}, - "energy": "Energia", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "newDay": "Novo dia", - "@newDay": {}, - "toggleDetails": "Alterar detalhes", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "musclesSecondary": "Músculos secundários", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "labelDashboard": "Painel", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "timeEnd": "Fim do tempo", - "@timeEnd": { - "description": "The end time of a workout" - }, - "planned": "Planejado", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "logHelpEntries": "Se em um mesmo dia houver mais de uma inscrição com o mesmo número de repetições, mas pesos diferentes, apenas a inscrição com maior peso será mostrada no diagrama.", - "@logHelpEntries": {}, - "exerciseName": "Nome do exercício", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "labelBottomNavNutrition": "Nutrição", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "language": "Linguagem", - "@language": {}, - "nutritionalPlans": "Planos nutricionais", - "@nutritionalPlans": {}, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "addMeal": "Adicionar refeição", - "@addMeal": {}, - "sameRepetitions": "Se você fizer as mesmas repetições e peso para todas as séries, poderá preencher apenas uma linha. Por exemplo, para 4 séries basta inserir 10 para as repetições, isso automaticamente se torna \"4 x 10\".", - "@sameRepetitions": {}, - "measurementEntriesHelpText": "A unidade usada para medir a categoria, como 'cm' ou '%'", - "@measurementEntriesHelpText": {}, - "sugars": "Açúcar", - "@sugars": {}, - "carbohydratesShort": "C", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "measurements": "Medidas", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "macronutrients": "Macronutrientes", - "@macronutrients": {}, - "plateCalculatorNotDivisible": "Não é possível atingir o peso com os pratos disponíveis", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "confirmDelete": "Tem certeza de que deseja excluir '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "gPerBodyKg": "g por kg corporal", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "weekAverage": "Média de 7 dias", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "labelWorkoutPlan": "Plano de treino", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "category": "Categoria", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "exercises": "Exercícios", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "time": "Tempo", - "@time": { - "description": "The time of a meal or workout" - }, - "calendar": "Calendário", - "@calendar": {}, - "verify": "Verificar", - "@verify": {}, - "workoutSession": "Sessão de treino", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "logHelpEntriesUnits": "Observe que apenas as entradas com uma unidade de peso (kg ou lb) e repetições são registradas; outras combinações, como tempo ou até a falha, são ignoradas aqui.", - "@logHelpEntriesUnits": {}, - "measurement": "Medição", - "@measurement": {}, - "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" - } - } - }, - "useMetric": "Use unidades métricas para peso corporal", - "@useMetric": {}, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "selectEntry": "Por favor, selecione uma entrada", - "@selectEntry": {}, - "noMatchingExerciseFound": "Nenhum exercício correspondente encontrado", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "selectExercise": "Por favor, selecione um exercício", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterValidNumber": "Por favor, insira um número válido", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "baseNameEnglish": "Todos os exercícios necessitam de um nome base em inglês", - "@baseNameEnglish": {}, - "labelBottomNavWorkout": "Treino", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "reps": "Reps", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "rir": "ReR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "setUnitsAndRir": "Unidades e RIR da série", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "aboutDonateTitle": "Doações", - "@aboutDonateTitle": {}, - "aboutDonateText": "Compre-nos um café para ajudar no projeto, pague pelos custos do servidor e nos mantenha abastecidos", - "@aboutDonateText": {}, - "enterCharacters": "Por favor, utilize 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": "Por favor, utilize 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" - } - } - }, - "gallery": "Galeria", - "@gallery": {}, - "alsoKnownAs": "Também conhecido como:{aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "nutritionalPlan": "Plano nutricional", + "@nutritionalPlan": {}, + "weight": "Peso", + "@weight": { + "description": "The weight of a workout log or body weight entry" }, - "description": "List of alternative names for an exercise" - }, - "recentlyUsedIngredients": "Ingredientes adicionados recentemente", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "addImage": "Adicionar imagem", - "@addImage": {}, - "scanBarcode": "Escaneie o código de barras", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "dataCopied": "Dados copiados para o novo registro", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "appUpdateContent": "Esta versão do aplicativo não é compatível com o servidor, por favor atualize o aplicativo.", - "@appUpdateContent": {}, - "productFound": "Produto encontrado", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "appUpdateTitle": "Atualização necessária", - "@appUpdateTitle": {}, - "takePicture": "Tire uma foto", - "@takePicture": {}, - "selectIngredient": "Por favor, selecione um ingrediente", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "selectImage": "Por favor, selecione uma imagem", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "optionsLabel": "Opções", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "productNotFound": "Produto não encontrado", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "variations": "Variações", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "verifiedEmail": "Email verificado", - "@verifiedEmail": {}, - "chooseFromLibrary": "Escolher na galeria", - "@chooseFromLibrary": {}, - "unVerifiedEmail": "Email não verificado", - "@unVerifiedEmail": {}, - "add_exercise_image_license": "As imagens devem ser compatíveis com a licença CC BY SA. Em caso de dúvida, faça upload apenas de fotos que você mesmo tenha tirado.", - "@add_exercise_image_license": {}, - "next": "Próximo", - "@next": {}, - "settingsCacheTitle": "Cache", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Cache do exercício", - "@settingsExerciseCacheDescription": {}, - "settingsCacheDeletedSnackbar": "Cache limpa com sucesso", - "@settingsCacheDeletedSnackbar": {}, - "translateExercise": "Traduza este exercício agora", - "@translateExercise": {}, - "contributeExerciseWarning": "Você só pode contribuir com exercícios se sua conta tiver mais de {days} dias e se você tiver verificado seu e-mail", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "whatVariationsExist": "Quais variações deste exercício existem, se houver?", - "@whatVariationsExist": {}, - "previous": "Anterior", - "@previous": {}, - "addExercise": "Adicionar exercício", - "@addExercise": {}, - "verifiedEmailInfo": "Um e-mail foi enviado para {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "verifiedEmailReason": "Você precisa verificar seu e-mail para contribuir com exercícios", - "@verifiedEmailReason": {}, - "alternativeNames": "Nomes alternativos", - "@alternativeNames": {}, - "baseData": "Fundamentos em inglês", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "aboutPageTitle": "Sobre o Wger", - "@aboutPageTitle": {}, - "productFoundDescription": "O código de barras corresponde a este produto: {productName}. Deseja continuar?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "productNotFoundDescription": "O produto com o código de barras escaneado {barcode} não foi encontrado no banco de dados da wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "contributeExercise": "Contribuir com um exercício", - "@contributeExercise": {}, - "oneNamePerLine": "Um nome por linha", - "@oneNamePerLine": {}, - "settingsTitle": "Configurações", - "@settingsTitle": {}, - "onlyLogging": "Apenas acompanhe calorias", - "@onlyLogging": {}, - "ingredientLogged": "Ingrediente registrado no diário", - "@ingredientLogged": {}, - "noIngredientsDefined": "Nenhum ingrediente definido ainda", - "@noIngredientsDefined": {}, - "bench": "Banco", - "@bench": { - "description": "Generated entry for translation for server strings" - }, - "goalFiber": "Meta de fibras", - "@goalFiber": {}, - "overallChangeWeight": "Mudança geral", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "De 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": "bruto", - "@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" - }, - "seconds": "Segundos", - "@seconds": { - "description": "Generated entry for translation for server strings" - }, - "textPromptTitle": "Pronto para iniciar?", - "@textPromptTitle": {}, - "textPromptSubheading": "Aperte o botão de ação para começar", - "@textPromptSubheading": {}, - "chest": "Peito", - "@chest": { - "description": "Generated entry for translation for server strings" - }, - "max_reps": "Repetições Máximas", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "pull_up_bar": "Barra de Pull-up", - "@pull_up_bar": { - "description": "Generated entry for translation for server strings" - }, - "quads": "Quadríceps", - "@quads": { - "description": "Generated entry for translation for server strings" - }, - "goalFat": "Meta de gordura", - "@goalFat": {}, - "body_weight": "Peso Corporal", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "kilometers": "Quilômetros", - "@kilometers": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Quilômetros por hora", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Milhas por hora", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "minutes": "Minutos", - "@minutes": { - "description": "Generated entry for translation for server strings" - }, - "sz_bar": "Barra Curvada", - "@sz_bar": { - "description": "Generated entry for translation for server strings" - }, - "goalProtein": "Meta de proteína", - "@goalProtein": {}, - "goalEnergy": "Meta energética", - "@goalEnergy": {}, - "today": "Hoje", - "@today": {}, - "arms": "Braços", - "@arms": { - "description": "Generated entry for translation for server strings" - }, - "calves": "Panturrilha", - "@calves": { - "description": "Generated entry for translation for server strings" - }, - "triceps": "Tríceps", - "@triceps": { - "description": "Generated entry for translation for server strings" - }, - "goalCarbohydrates": "Meta de carbohidratos", - "@goalCarbohydrates": {}, - "onlyLoggingHelpText": "Marque a caixa se você apenas quiser registrar suas calorias e não quer configurar um plano nutricional detalhado com refeições específicas", - "@onlyLoggingHelpText": {}, - "kcalValue": "{value} kcal", - "@kcalValue": { - "description": "A value in kcal, e.g. 500 kcal", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "percentValue": "{value} %", - "@percentValue": { - "description": "A value in percent, e.g. 10 %", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "goalMacro": "Macro Objetivos", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "selectMealToLog": "Selecione uma refeição para registrar no diário", - "@selectMealToLog": {}, - "loggedToday": "Registrado hoje", - "@loggedToday": {}, - "surplus": "excedente", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "déficit", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "gValue": "{value} g", - "@gValue": { - "description": "A value in grams, e.g. 5 g", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "abs": "Abdômen", - "@abs": { - "description": "Generated entry for translation for server strings" - }, - "back": "Costas", - "@back": { - "description": "Generated entry for translation for server strings" - }, - "barbell": "Barra", - "@barbell": { - "description": "Generated entry for translation for server strings" - }, - "cardio": "Cardio", - "@cardio": { - "description": "Generated entry for translation for server strings" - }, - "dumbbell": "Haltere", - "@dumbbell": { - "description": "Generated entry for translation for server strings" - }, - "glutes": "Glúteos", - "@glutes": { - "description": "Generated entry for translation for server strings" - }, - "gym_mat": "Tapete", - "@gym_mat": { - "description": "Generated entry for translation for server strings" - }, - "hamstrings": "Tendões", - "@hamstrings": { - "description": "Generated entry for translation for server strings" - }, - "kettlebell": "Kettlebell", - "@kettlebell": { - "description": "Generated entry for translation for server strings" - }, - "lats": "Dorsal", - "@lats": { - "description": "Generated entry for translation for server strings" - }, - "legs": "Pernas", - "@legs": { - "description": "Generated entry for translation for server strings" - }, - "lower_back": "Lombar", - "@lower_back": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Anilhas", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "repetitions": "Repetições", - "@repetitions": { - "description": "Generated entry for translation for server strings" - }, - "shoulders": "Ombros", - "@shoulders": { - "description": "Generated entry for translation for server strings" - }, - "until_failure": "Até a falha", - "@until_failure": { - "description": "Generated entry for translation for server strings" - }, - "kg": "kg", - "@kg": { - "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" - }, - "lb": "lb", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "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 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" - } - } - }, - "settingsIngredientCacheDescription": "Cache de Ingredientes", - "@settingsIngredientCacheDescription": {}, - "cacheWarning": "Devido ao cache pode demorar algum tempo até que mudanças estejam visíveis na aplicação.", - "@cacheWarning": {}, - "swiss_ball": "Bola Suíça", - "@swiss_ball": { - "description": "Generated entry for translation for server strings" - }, - "log": "Registro", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Feito", - "@done": {}, - "incline_bench": "Banco inclinado", - "@incline_bench": { - "description": "Generated entry for translation for server strings" - }, - "miles": "Milhas", - "@miles": { - "description": "Generated entry for translation for server strings" - }, - "biceps": "Bíceps", - "@biceps": { - "description": "Generated entry for translation for server strings" - } + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "value": "Valor", + "@value": { + "description": "The value of a measurement entry" + }, + "unit": "Unidade", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "edit": "Editar", + "@edit": {}, + "delete": "Excluir", + "@delete": {}, + "login": "Entrar", + "@login": { + "description": "Text for login button" + }, + "userProfile": "Seu perfil", + "@userProfile": {}, + "logout": "Sair", + "@logout": { + "description": "Text for logout button" + }, + "notes": "Comentários", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "description": "Descrição", + "@description": {}, + "register": "Inscrever-se", + "@register": { + "description": "Text for registration button" + }, + "useDefaultServer": "Usar servidor padrão", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "reset": "Redefinir", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "password": "Senha", + "@password": {}, + "invalidUsername": "Por favor insira um nome de usuário válido", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "passwordTooShort": "A senha é muito curta", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "email": "Endereço de email", + "@email": {}, + "username": "Usuário", + "@username": {}, + "customServerHint": "Digite o endereço do seu próprio servidor, caso contrário o padrão será usado", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "useCustomServer": "Usar servidor customizado", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "registerInstead": "Não tem uma conta? Registrar agora", + "@registerInstead": {}, + "usernameValidChars": "Um usuário deve apenas conter letras, digitos e os caracteres @, +, ., -, ou _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "invalidUrl": "Por favor, digite uma URL válida", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "customServerUrl": "URL da instância wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "passwordsDontMatch": "As senhas não coincidem", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "invalidEmail": "Por favor insira um endereço de e-mail válido", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "confirmPassword": "Confirme sua senha", + "@confirmPassword": {}, + "comment": "Comentário", + "@comment": { + "description": "Comment, additional information" + }, + "logIngredient": "Salvar ingrediente no diário nutricional", + "@logIngredient": {}, + "equipment": "Equipamento", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "saturatedFat": "Gordura saturada", + "@saturatedFat": {}, + "mealLogged": "Refeição registrada no diário", + "@mealLogged": {}, + "images": "Imagens", + "@images": {}, + "close": "Fechar", + "@close": { + "description": "Translation for close" + }, + "successfullyDeleted": "Excluído", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "save": "Salvar", + "@save": {}, + "goToToday": "Vá para hoje", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "set": "Definir", + "@set": { + "description": "A set in a workout plan" + }, + "noMeasurementEntries": "Você não tem entradas de medição", + "@noMeasurementEntries": {}, + "newSet": "Novo conjunto", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "impression": "Impressão", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "plateCalculator": "Pratos", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "newNutritionalPlan": "Novo plano nutricional", + "@newNutritionalPlan": {}, + "setNr": "Definir {nr}", + "@setNr": { + "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", + "type": "text", + "placeholders": { + "nr": { + "type": "String" + } + } + }, + "fat": "Gordura", + "@fat": {}, + "timeStartAhead": "O horário de início não pode ser anterior ao horário de término", + "@timeStartAhead": {}, + "carbohydrates": "Carboidratos", + "@carbohydrates": {}, + "muscles": "Músculos", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "total": "Total", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "dayDescriptionHelp": "Uma descrição do que é feito neste dia (por exemplo, 'dia de puxar') ou quais partes do corpo são treinadas (por exemplo, 'peito e ombros')", + "@dayDescriptionHelp": {}, + "gymMode": "Modo Gym", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "logged": "Desconectar", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "amount": "Quantia", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "loginInstead": "Já tem uma conta ? Entre", + "@loginInstead": {}, + "pause": "Pausar", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "success": "Sucesso", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "repetitionUnit": "Unidade de repetição", + "@repetitionUnit": {}, + "weightUnit": "Unidade de peso", + "@weightUnit": {}, + "searchIngredient": "Pesquisar Ingrediente", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "anErrorOccurred": "Ocorreu um erro!", + "@anErrorOccurred": {}, + "enterValue": "por favor insira um valor", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "logMeal": "Registrar refeição para diário de nutrição", + "@logMeal": {}, + "newEntry": "Nova entrada", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "addSet": "Adicionar set", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "name": "Nome", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "percentEnergy": "Porcentagem de energia", + "@percentEnergy": {}, + "searchNamesInEnglish": "Procure também nomes em inglês", + "@searchNamesInEnglish": {}, + "exercise": "Exercício", + "@exercise": { + "description": "An exercise for a workout" + }, + "addIngredient": "Adicionar ingrediente", + "@addIngredient": {}, + "fatShort": "G", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "start": "Começar", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "jumpTo": "Pule para", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "difference": "Diferença", + "@difference": {}, + "fiber": "Fibra", + "@fiber": {}, + "aboutDescription": "Obrigado por usar o Wger! Wger é um projeto colaborativo de código aberto, feito por entusiastas do fitness de todo o mundo.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "timeStart": "Hora de início", + "@timeStart": { + "description": "The starting time of a workout" + }, + "searchExercise": "Exercício de pesquisa para adicionar", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "moreMeasurementEntries": "Adicionar nova medição", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "loadingText": "Carregando...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "selectExercises": "Se quiser fazer um superset você pode procurar vários exercícios, eles estarão agrupados", + "@selectExercises": {}, + "nutritionalDiary": "Diário nutricional", + "@nutritionalDiary": {}, + "protein": "Proteína", + "@protein": {}, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "noWeightEntries": "Você não tem entradas de peso", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "noNutritionalPlans": "Você não tem planos nutricionais", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "goToDetailPage": "Ir para a página de detalhes", + "@goToDetailPage": {}, + "labelWorkoutLogs": "Registros de treinos", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "ingredient": "Ingrediente", + "@ingredient": {}, + "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", + "@measurementCategoriesHelpText": {}, + "rirNotUsed": "RiR não usado", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "todaysWorkout": "Seu treino hoje", + "@todaysWorkout": {}, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "sodium": "Sódio", + "@sodium": {}, + "translation": "Tradução", + "@translation": {}, + "successfullySaved": "Salvo", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exerciseList": "Lista de exercícios", + "@exerciseList": {}, + "energy": "Energia", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "newDay": "Novo dia", + "@newDay": {}, + "toggleDetails": "Alterar detalhes", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "musclesSecondary": "Músculos secundários", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "labelDashboard": "Painel", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "timeEnd": "Fim do tempo", + "@timeEnd": { + "description": "The end time of a workout" + }, + "planned": "Planejado", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "logHelpEntries": "Se em um mesmo dia houver mais de uma inscrição com o mesmo número de repetições, mas pesos diferentes, apenas a inscrição com maior peso será mostrada no diagrama.", + "@logHelpEntries": {}, + "exerciseName": "Nome do exercício", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "labelBottomNavNutrition": "Nutrição", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "language": "Linguagem", + "@language": {}, + "nutritionalPlans": "Planos nutricionais", + "@nutritionalPlans": {}, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "addMeal": "Adicionar refeição", + "@addMeal": {}, + "sameRepetitions": "Se você fizer as mesmas repetições e peso para todas as séries, poderá preencher apenas uma linha. Por exemplo, para 4 séries basta inserir 10 para as repetições, isso automaticamente se torna \"4 x 10\".", + "@sameRepetitions": {}, + "measurementEntriesHelpText": "A unidade usada para medir a categoria, como 'cm' ou '%'", + "@measurementEntriesHelpText": {}, + "sugars": "Açúcar", + "@sugars": {}, + "carbohydratesShort": "C", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "measurements": "Medidas", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "macronutrients": "Macronutrientes", + "@macronutrients": {}, + "plateCalculatorNotDivisible": "Não é possível atingir o peso com os pratos disponíveis", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "confirmDelete": "Tem certeza de que deseja excluir '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "gPerBodyKg": "g por kg corporal", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "weekAverage": "Média de 7 dias", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "labelWorkoutPlan": "Plano de treino", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "category": "Categoria", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "exercises": "Exercícios", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "time": "Tempo", + "@time": { + "description": "The time of a meal or workout" + }, + "calendar": "Calendário", + "@calendar": {}, + "verify": "Verificar", + "@verify": {}, + "workoutSession": "Sessão de treino", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "logHelpEntriesUnits": "Observe que apenas as entradas com uma unidade de peso (kg ou lb) e repetições são registradas; outras combinações, como tempo ou até a falha, são ignoradas aqui.", + "@logHelpEntriesUnits": {}, + "measurement": "Medição", + "@measurement": {}, + "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" + } + } + }, + "useMetric": "Use unidades métricas para peso corporal", + "@useMetric": {}, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "selectEntry": "Por favor, selecione uma entrada", + "@selectEntry": {}, + "noMatchingExerciseFound": "Sem exercícios correspondentes encontrados", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "selectExercise": "Por favor, selecione um exercício", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterValidNumber": "Por favor, insira um número válido", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "baseNameEnglish": "Todos os exercícios necessitam de um nome base em inglês", + "@baseNameEnglish": {}, + "labelBottomNavWorkout": "Treino", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "reps": "Repetições", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "rir": "ReR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "setUnitsAndRir": "Unidades e RIR da série", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "aboutDonateTitle": "Faça uma doação", + "@aboutDonateTitle": {}, + "aboutDonateText": "Enquanto o aplicativo e serviço é de graça, desenvolvê-lo não é. O desenvolvimento tomar tempo e recursos de voluntários. Sua contribuição pode ajudar a tornar o aplicativo melhor e a manter o serviço rodando por mais tempo.", + "@aboutDonateText": {}, + "enterCharacters": "Por favor, utilize 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": "Por favor, utilize 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" + } + } + }, + "gallery": "Galeria", + "@gallery": {}, + "alsoKnownAs": "Também conhecido como:{aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "recentlyUsedIngredients": "Ingredientes adicionados recentemente", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "addImage": "Adicionar imagem", + "@addImage": {}, + "scanBarcode": "Escaneie o código de barras", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "dataCopied": "Dados copiados para o novo registro", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "appUpdateContent": "Esta versão do aplicativo não é compatível com o servidor, por favor atualize o aplicativo.", + "@appUpdateContent": {}, + "productFound": "Produto encontrado", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "appUpdateTitle": "Atualização necessária", + "@appUpdateTitle": {}, + "takePicture": "Tire uma foto", + "@takePicture": {}, + "selectIngredient": "Por favor, selecione um ingrediente", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "selectImage": "Por favor, selecione uma imagem", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "optionsLabel": "Opções", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "productNotFound": "Produto não encontrado", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "variations": "Variações", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "verifiedEmail": "Email verificado", + "@verifiedEmail": {}, + "chooseFromLibrary": "Escolher na galeria", + "@chooseFromLibrary": {}, + "unVerifiedEmail": "Email não verificado", + "@unVerifiedEmail": {}, + "add_exercise_image_license": "As imagens devem ser compatíveis com a licença CC BY SA. Em caso de dúvida, faça upload apenas de fotos que você mesmo tenha tirado.", + "@add_exercise_image_license": {}, + "next": "Próximo", + "@next": {}, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Cache do exercício", + "@settingsExerciseCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Cache limpa com sucesso", + "@settingsCacheDeletedSnackbar": {}, + "translateExercise": "Traduza este exercício agora", + "@translateExercise": {}, + "contributeExerciseWarning": "Você só pode contribuir com exercícios se sua conta tiver mais de {days} dias e se você tiver verificado seu e-mail", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "whatVariationsExist": "Quais variações deste exercício existem, se houver?", + "@whatVariationsExist": {}, + "previous": "Anterior", + "@previous": {}, + "addExercise": "Adicionar exercício", + "@addExercise": {}, + "verifiedEmailInfo": "Um e-mail foi enviado para {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "verifiedEmailReason": "Você precisa verificar seu e-mail para contribuir com exercícios", + "@verifiedEmailReason": {}, + "alternativeNames": "Nomes alternativos", + "@alternativeNames": {}, + "baseData": "Fundamentos em inglês", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "aboutPageTitle": "Sobre o nós & Suporte", + "@aboutPageTitle": {}, + "productFoundDescription": "O código de barras corresponde a este produto: {productName}. Deseja continuar?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "productNotFoundDescription": "O produto com o código de barras escaneado {barcode} não foi encontrado no banco de dados da wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "contributeExercise": "Contribuir com um exercício", + "@contributeExercise": {}, + "oneNamePerLine": "Um nome por linha", + "@oneNamePerLine": {}, + "settingsTitle": "Configurações", + "@settingsTitle": {}, + "onlyLogging": "Apenas acompanhe calorias", + "@onlyLogging": {}, + "ingredientLogged": "Ingrediente registrado no diário", + "@ingredientLogged": {}, + "noIngredientsDefined": "Nenhum ingrediente definido ainda", + "@noIngredientsDefined": {}, + "bench": "Banco", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "goalFiber": "Meta de fibras", + "@goalFiber": {}, + "overallChangeWeight": "Mudança geral", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "De 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": "bruto", + "@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" + }, + "seconds": "Segundos", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "textPromptTitle": "Pronto para iniciar?", + "@textPromptTitle": {}, + "textPromptSubheading": "Aperte o botão de ação para começar", + "@textPromptSubheading": {}, + "chest": "Peito", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Repetições Máximas", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "pull_up_bar": "Barra de Pull-up", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Quadríceps", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "goalFat": "Meta de gordura", + "@goalFat": {}, + "body_weight": "Peso Corporal", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Quilômetros", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Quilômetros por hora", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Milhas por hora", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Minutos", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "sz_bar": "Barra Curvada", + "@sz_bar": { + "description": "Generated entry for translation for server strings" + }, + "goalProtein": "Meta de proteína", + "@goalProtein": {}, + "goalEnergy": "Meta energética", + "@goalEnergy": {}, + "today": "Hoje", + "@today": {}, + "arms": "Braços", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "calves": "Panturrilha", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Tríceps", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "goalCarbohydrates": "Meta de carbohidratos", + "@goalCarbohydrates": {}, + "onlyLoggingHelpText": "Marque a caixa se você apenas quiser registrar suas calorias e não quer configurar um plano nutricional detalhado com refeições específicas", + "@onlyLoggingHelpText": {}, + "kcalValue": "{value} kcal", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "percentValue": "{value} %", + "@percentValue": { + "description": "A value in percent, e.g. 10 %", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "goalMacro": "Macro Objetivos", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Selecione uma refeição para registrar no diário", + "@selectMealToLog": {}, + "loggedToday": "Registrado hoje", + "@loggedToday": {}, + "surplus": "excedente", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "déficit", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "gValue": "{value} g", + "@gValue": { + "description": "A value in grams, e.g. 5 g", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "abs": "Abdômen", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "back": "Costas", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "barbell": "Barra", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "cardio": "Cardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Haltere", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Glúteos", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "Tapete", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "hamstrings": "Tendões", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Kettlebell", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Dorsal", + "@lats": { + "description": "Generated entry for translation for server strings" + }, + "legs": "Pernas", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "lower_back": "Lombar", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Anilhas", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "repetitions": "Repetições", + "@repetitions": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Ombros", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "Até a falha", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "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" + }, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "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 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" + } + } + }, + "settingsIngredientCacheDescription": "Cache de Ingredientes", + "@settingsIngredientCacheDescription": {}, + "cacheWarning": "Devido ao cache pode demorar algum tempo até que mudanças estejam visíveis na aplicação.", + "@cacheWarning": {}, + "swiss_ball": "Bola Suíça", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "log": "Registro", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Feito", + "@done": {}, + "incline_bench": "Banco inclinado", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Milhas", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "biceps": "Bíceps", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "useApiToken": "Usar Token API", + "@useApiToken": {}, + "useUsernameAndPassword": "Usar usuário e senha", + "@useUsernameAndPassword": {}, + "apiToken": "Token API", + "@apiToken": {}, + "invalidApiToken": "Por favor, entre com a API key válida", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "A chave API deve ter apenas letras a-f, números 0-9 e ter exatamente 40 caracteres", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "routines": "Rotinas", + "@routines": {}, + "newRoutine": "Nova rotina", + "@newRoutine": {}, + "noRoutines": "Não tens rotinas", + "@noRoutines": {}, + "restTime": "Tempo de descanso", + "@restTime": {}, + "sets": "Conjuntos", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "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" + } + } + }, + "restDay": "Dia de descanso", + "@restDay": {}, + "isRestDay": "É dia de descanso", + "@isRestDay": {}, + "isRestDayHelp": "Por favor, note que todos os conjuntos e exercícios serão removidos quando marcar um dia como um dia de descanso.", + "@isRestDayHelp": {}, + "needsLogsToAdvance": "Precisa de logs para avançar", + "@needsLogsToAdvance": {}, + "selectAvailablePlates": "Selecione os pesos disponíveis", + "@selectAvailablePlates": {}, + "barWeight": "Peso da barra", + "@barWeight": {}, + "useColors": "Use cores", + "@useColors": {}, + "needsLogsToAdvanceHelp": "Selecione se deseja que a rotina de treino avance para o próximo dia agendado somente se você cadastrou o dia de treino", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Dias de treino", + "@routineDays": {}, + "resultingRoutine": "Treino resultante", + "@resultingRoutine": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Seu plano nutricional não tem refeições definidas", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Para adicionar refeições para o planejamento, vá para Detalhes de Plano Nutricional", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "errorInfoDescription": "Algo de errado aconteceu. Você pode nos ajudar a concertar esse problema reportando o problema no Github", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Você pode continuar usando o applicativo, mas algumas funcionalidades não estarão disponíveis.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Detalhes técnicos", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "Não foi possível conectar ao servidor", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "O aplicativo não conseguiu conectar ao servidor. Verifique sua conexão de internet ou a URL do servidor e tente novamente. Se o problema persistir, contact o administrador.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "Copiar ao clipboard", + "@copyToClipboard": {}, + "min": "Min", + "@min": {}, + "max": "Max", + "@max": {}, + "aboutWhySupportTitle": "Open Source & free to use ❤️", + "@aboutWhySupportTitle": {}, + "aboutContributeTitle": "Contribua", + "@aboutContributeTitle": {}, + "aboutContributeText": "Todos os tipos de contribuidores são bem vindos. Se você é um desenvolvedor, tradutor ou alguém apaixonado pelo fitness, toda ajuda é bem vinda!", + "@aboutContributeText": {}, + "aboutBugsListTitle": "Reportar um problema ou sugerir uma funcionalidade", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Traduzir a aplicação", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Ver o código fonte", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Entre para a comunidade", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Outros", + "@others": {}, + "fitInWeek": "Treino na semana", + "@fitInWeek": {}, + "fitInWeekHelp": "Se ligado, os dias vão se repetir semanalmente, caso contrário os dias seguirão sequencialmente se considerar o começo de uma nova semana.", + "@fitInWeekHelp": {}, + "addSuperset": "Adicionar superset", + "@addSuperset": {}, + "setHasProgression": "Treino tem prograssão", + "@setHasProgression": {}, + "setHasProgressionWarning": "Observe que, no momento, não é possível editar todas as configurações de um conjunto no aplicativo móvel nem configurar a progressão automática. Por enquanto, use o aplicativo web.", + "@setHasProgressionWarning": {}, + "setHasNoExercises": "Este treino ainda não tem exercícios!", + "@setHasNoExercises": {}, + "simpleMode": "Modo simples", + "@simpleMode": {}, + "simpleModeHelp": "Esconder informações avançadas enquanto estiver editando exercicio", + "@simpleModeHelp": {}, + "progressionRules": "Este exercício tem regras de progressão e não pode ser editado no aplicativo móvel. Use o aplicativo web para editá-lo.", + "@progressionRules": {}, + "resistance_band": "Resistance band", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "themeMode": "Tema", + "@themeMode": {}, + "darkMode": "Sempre modo escuro", + "@darkMode": {}, + "lightMode": "Sempre modo claro", + "@lightMode": {}, + "systemMode": "Configurações do sistema", + "@systemMode": {} } diff --git a/lib/l10n/app_pt_PT.arb b/lib/l10n/app_pt_PT.arb new file mode 100644 index 00000000..a5a7c90e --- /dev/null +++ b/lib/l10n/app_pt_PT.arb @@ -0,0 +1,1062 @@ +{ + "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" + } + }, + "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": {} +} diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 5426836d..3db56005 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -385,7 +385,7 @@ }, "saturatedFat": "Насичені жири", "@saturatedFat": {}, - "fiber": "Волокна", + "fiber": "Волокон", "@fiber": {}, "sodium": "Натрій", "@sodium": {}, diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 27b5141d..fd2cda5c 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -91,7 +91,7 @@ "@notes": { "description": "Personal notes, e.g. for a workout session" }, - "comment": "备注", + "comment": "评论", "@comment": { "description": "Comment, additional information" }, @@ -519,7 +519,7 @@ "@logged": { "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" }, - "userProfile": "账户", + "userProfile": "个人资料", "@userProfile": {}, "exerciseName": "锻炼名", "@exerciseName": { @@ -706,7 +706,7 @@ "@biceps": { "description": "Generated entry for translation for server strings" }, - "aboutPageTitle": "关于 Wger", + "aboutPageTitle": "关于我们&支持", "@aboutPageTitle": {}, "selectEntry": "请选择一项", "@selectEntry": {}, @@ -734,9 +734,9 @@ "@sz_bar": { "description": "Generated entry for translation for server strings" }, - "aboutDonateTitle": "捐赠", + "aboutDonateTitle": "进行捐赠", "@aboutDonateTitle": {}, - "aboutDonateText": "向我们打赏来支持此项目,给服务器买单,及激励我们", + "aboutDonateText": "尽管该项目是免费的,且将始终保持免费,但服务器的运营并非如此!开发工作也需要志愿者投入大量的时间和精力。您的捐赠将直接用于支付这些成本,助力维持服务的稳定可靠。", "@aboutDonateText": {}, "none__bodyweight_exercise_": "无(自重动作)", "@none__bodyweight_exercise_": { @@ -1014,5 +1014,53 @@ "apiTokenValidChars": "API 密钥只能包含字母 a-f、数字 0-9,长度为 40 个字符", "@apiTokenValidChars": { "description": "Error message when the user tries to input a API key with forbidden characters" - } + }, + "selectAvailablePlates": "选择可用的杠片", + "@selectAvailablePlates": {}, + "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" + }, + "errorInfoDescription": "很抱歉,出现了一些问题。您可以通过在 GitHub 上报告此问题来帮助我们修复它。", + "@errorInfoDescription": {}, + "errorInfoDescription2": "您可以继续使用这款应用,但部分功能可能无法正常运行。", + "@errorInfoDescription2": {}, + "errorViewDetails": "错误技术详情", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "无法连接到服务器", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "应用程序无法连接到服务器。请检查您的网络连接或服务器网址,然后重试。如果问题持续存在,请联系服务器管理员。", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "复制", + "@copyToClipboard": {}, + "aboutWhySupportTitle": "开源 & 免费使用", + "@aboutWhySupportTitle": {}, + "aboutContributeTitle": "贡献", + "@aboutContributeTitle": {}, + "aboutContributeText": "我们鼓励各种形式的贡献。无论您是开发者、翻译人员,还是单纯热爱健身的人士,每一份支持都值得我们由衷感谢!", + "@aboutContributeText": {}, + "aboutBugsListTitle": "报告问题或提出功能建议", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "翻译此软件", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "查看源代码", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "加入社区", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "其他", + "@others": {}, + "fitInWeek": "一周健身计划", + "@fitInWeek": {}, + "resistance_band": "弹力带", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "resultingRoutine": "最终生成的训练计划", + "@resultingRoutine": {} } diff --git a/lib/l10n/app_zh_Hant.arb b/lib/l10n/app_zh_Hant.arb index 03a2b3fe..4f3c985b 100644 --- a/lib/l10n/app_zh_Hant.arb +++ b/lib/l10n/app_zh_Hant.arb @@ -155,7 +155,7 @@ "@repetitionUnit": {}, "dayDescriptionHelp": "描述這一天做了什麼(例如:拉力日)或訓練了哪些部位(例如:胸部和肩膀)", "@dayDescriptionHelp": {}, - "comment": "註釋", + "comment": "註解", "@comment": { "description": "Comment, additional information" }, @@ -938,5 +938,11 @@ "ingredientLogged": "食材已紀錄到日記", "@ingredientLogged": {}, "selectMealToLog": "選擇要紀錄到日記的餐點", - "@selectMealToLog": {} + "@selectMealToLog": {}, + "errorCouldNotConnectToServerDetails": "無法連接到伺服器", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "複製到剪貼簿", + "@copyToClipboard": {}, + "aboutWhySupportTitle": "開源且免費使用❤️", + "@aboutWhySupportTitle": {} } diff --git a/lib/main.dart b/lib/main.dart index 9c3a2ab6..509c176d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -82,7 +82,6 @@ void main() async { _setupLogging(); final logger = Logger('main'); - //zx.setLogEnabled(kDebugMode); // Locator to initialize exerciseDB await ServiceLocator().configure(); @@ -94,12 +93,12 @@ void main() async { // // NOTE: it seems this sometimes makes problems and even freezes the flutter // process when widgets overflow, so it is disabled in dev mode. - if (kReleaseMode) { + if (!kDebugMode) { FlutterError.onError = (FlutterErrorDetails details) { final stack = details.stack ?? StackTrace.empty; - // if (kDebugMode) { - // FlutterError.dumpErrorToConsole(details); - // } + logger.severe('Error caught by FlutterError.onError: ${details.exception}'); + + FlutterError.dumpErrorToConsole(details); // Don't show the full error dialog for network image loading errors. if (details.exception is NetworkImageLoadException) { @@ -113,15 +112,13 @@ void main() async { // Catch errors that happen outside of the Flutter framework (e.g., in async operations) PlatformDispatcher.instance.onError = (error, stack) { - if (kDebugMode) { - logger.warning('Caught error by PlatformDispatcher: $error'); - logger.warning('Stack trace: $stack'); - } + logger.severe('Error caught by PlatformDispatcher.instance.onError: $error'); + logger.severe('Stack trace: $stack'); + if (error is WgerHttpException) { showHttpExceptionErrorDialog(error); } else { showGeneralErrorDialog(error, stack); - // throw error; } // Return true to indicate that the error has been handled. diff --git a/lib/models/exercises/exercise_api.freezed.dart b/lib/models/exercises/exercise_api.freezed.dart index 711987ac..85554ce8 100644 --- a/lib/models/exercises/exercise_api.freezed.dart +++ b/lib/models/exercises/exercise_api.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -217,6 +216,252 @@ class _$ExerciseApiDataCopyWithImpl<$Res> implements $ExerciseApiDataCopyWith<$R } } +/// Adds pattern-matching-related methods to [ExerciseApiData]. +extension ExerciseApiDataPatterns on ExerciseApiData { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ExerciseBaseData value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ExerciseBaseData() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ExerciseBaseData value) $default, + ) { + final _that = this; + switch (_that) { + case _ExerciseBaseData(): + return $default(_that); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ExerciseBaseData value)? $default, + ) { + final _that = this; + switch (_that) { + case _ExerciseBaseData() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + int id, + String uuid, + @JsonKey(name: 'variations') int? variationId, + @JsonKey(name: 'created') DateTime created, + @JsonKey(name: 'last_update') DateTime lastUpdate, + @JsonKey(name: 'last_update_global') DateTime lastUpdateGlobal, + ExerciseCategory category, + List muscles, + @JsonKey(name: 'muscles_secondary') List musclesSecondary, + List equipment, + @JsonKey(name: 'translations', defaultValue: []) List translations, + List images, + List