diff --git a/.github/workflows/build-apple.yml b/.github/workflows/build-apple.yml index 0ca6888a..4faa7313 100644 --- a/.github/workflows/build-apple.yml +++ b/.github/workflows/build-apple.yml @@ -16,6 +16,8 @@ jobs: ref: ${{ inputs.ref }} # This seems to be related to https://github.com/actions/runner-images/issues/12758 + # Select appropriate Xcode version from + # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md#xcode - name: Xcode setup run: | sudo xcode-select --switch /Applications/Xcode_16.4.app @@ -32,7 +34,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: builds-ios - path: build/ios/iphoneos/Runner.app + path: build/ios/iphoneos/Runner.app.zip build_ipa: name: IPA @@ -47,6 +49,8 @@ jobs: uses: ./.github/actions/flutter-common # This seems to be related to https://github.com/actions/runner-images/issues/12758 + # Select appropriate Xcode version from + # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md#xcode - name: Xcode setup run: | sudo xcode-select --switch /Applications/Xcode_16.4.app diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 5fd0882c..a3d3e461 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -63,7 +63,7 @@ jobs: - name: Bump version and update manifest run: | pip install pyyaml toml packaging - git clone https://github.com/TheAppgineer/flatpak-flutter.git --branch 0.7.2 ../flatpak-flutter + git clone https://github.com/TheAppgineer/flatpak-flutter.git --branch 0.7.3 ../flatpak-flutter python bump-wger-version.py ${{ inputs.ref }} ../flatpak-flutter/flatpak-flutter.py --app-module wger flatpak-flutter.json diff --git a/Gemfile.lock b/Gemfile.lock index f886a26b..a12426e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,8 +11,8 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1152.0) - aws-sdk-core (3.231.0) + aws-partitions (1.1163.0) + aws-sdk-core (3.232.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -23,7 +23,7 @@ GEM aws-sdk-kms (1.112.0) aws-sdk-core (~> 3, >= 3.231.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.198.0) + aws-sdk-s3 (1.199.0) aws-sdk-core (~> 3, >= 3.231.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) @@ -31,7 +31,7 @@ GEM aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.3.0) - bigdecimal (3.2.2) + bigdecimal (3.2.3) claide (1.1.0) colored (1.2) colored2 (3.1.2) @@ -161,7 +161,7 @@ GEM httpclient (2.9.0) mutex_m jmespath (1.6.2) - json (2.13.2) + json (2.15.0) jwt (2.10.2) base64 logger (1.7.0) @@ -183,7 +183,7 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.4.2) + rexml (3.4.4) rouge (3.28.0) ruby2_keywords (0.0.5) rubyzip (2.4.1) diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png index ac7a183f..8eb00d16 100644 Binary files a/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png index f6131b93..58eae411 100644 Binary files a/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png index 780f620a..612cd926 100644 Binary files a/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png index 159bc6cc..efa1a844 100644 Binary files a/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png index d9d13700..1c4efb40 100644 Binary files a/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png index 1cc28691..055c9baa 100644 Binary files a/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png index 7e22506a..0dec5182 100644 Binary files a/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png index 8b23b6f6..b4df3945 100644 Binary files a/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png index edd446ab..a3ae957c 100644 Binary files a/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png index 1bea514f..598ac9e1 100644 Binary files a/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png index ff54cc84..d839cb6d 100644 Binary files a/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png index da2d39a6..07201906 100644 Binary files a/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png index 8d310672..a6ff13b7 100644 Binary files a/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png index e3d12cf9..8cbe77bb 100644 Binary files a/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png index 72aa1e59..283e811a 100644 Binary files a/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png index 97afee40..4cafbbdb 100644 Binary files a/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png index c4e599f7..8bd892d8 100644 Binary files a/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png index d886a2f7..38ec821b 100644 Binary files a/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png index 9a4b5c7a..39025648 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png index 59d98843..4b863968 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png index 1c8204a7..cb69065f 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png index 06fbffce..cc1193b5 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png index 9838a3a7..6c0edb30 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png index 5ead4d3e..98aafa06 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png index ab0b5a01..397b822c 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png index ba7d5eb6..30f8b3fa 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png index 0d0cc8bd..0fa2f6eb 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png index 8f57de35..08b0ef86 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png index 4b98e019..6414d7f1 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png index d6d1e4a9..2e4a8ac0 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png index 7c6beafb..6b4a3f5d 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png index de27ab4b..c4f54fff 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png index 1641cbd0..99fe9f20 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png index eec515ef..e08a1144 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png index 92cc9c82..eee98421 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png index d9f943b0..52a5ced7 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png index f3bfe768..afb31f54 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png index 107fc14c..48159e4b 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png index 820b22bf..85f6530e 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png index da8a046e..ee6e1013 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png index 177ad432..53814b4b 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png index 9c648ac3..ce95448a 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png index 926940c2..3ff9b25a 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png index 73605051..444c00e9 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png index fa2c7c1d..e0b1bb7f 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png index d378343d..51ba6ad0 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png index 666f1d8a..5ad0b00f 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png index 95674f9e..db0dceba 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png index 483f20c9..0254ffc5 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png index 7a73883e..93071ff8 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png index a0065fc7..c2b4159b 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png index 1e6654be..f3521ca6 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png index 6ee3f9d1..d44812b0 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png index d8a91a44..e7f3711a 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png index af4ccdce..7f9ab10d 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png index d812e4e5..2ed36353 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png index 2b3d7ed8..36d05986 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png index 1a3abc7b..b03ac571 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png index 126c1194..f85c55ea 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png index 104fc79e..92154af3 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png index 2d1fd7a5..b1a9020e 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png index cb4afa9d..9c38dd78 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png index 68c1bea6..9e251576 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png index 6103c8d9..32e2b06d 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png index 4b222a59..abfaa4cf 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png index 8069c568..35f9b9b0 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png index 98493943..6f78cbed 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png index 4322651a..278bcebe 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png index 93af36eb..99102631 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png index 5fd85afb..2a7eb1e9 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png index 441cdefb..51130f48 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png index 81d55fe9..fd079f02 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png index 486f859b..ff81630b 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png index 4c88b53f..220793e7 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png index dfdd4b09..91c92b49 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png index 503f8279..28136128 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png index d9d8aac2..d6910c55 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png index 5391f971..a452de1c 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png index 1fea2f87..264c899b 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png index 7bc8d52c..a1404272 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png index 919f904d..0b631fe1 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png index d27d1220..54fd3dfe 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png index 4a08f7aa..c4702dc8 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png index 5e0e1351..f6c034b8 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png index b5aa696e..5f66b00a 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png index 64415390..475be41d 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png index 7bc613ca..6f43309a 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png index faf9dd96..41c0d200 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png index 4a16c444..4b6ad3b8 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png index 75729486..4e56a3fa 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png index 6adb9573..191f32fe 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png index 84d5c473..4e7d43bd 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png index fa38b677..7adc9b6b 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png index e6b4f4c2..de1b35bc 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png index 810a1237..72a6bd5d 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png index 2b8881a2..5fb16610 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png index c127856b..6d1575cd 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png index 49cceb0c..deed1969 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png index d96730be..aeeabd16 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png index f1825bb9..59fa1c1b 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png index ad3df431..a240130b 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png index 65f2f046..0af0d6ef 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png index c9ac9e28..dc4bea3f 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png index f04c955b..7e2d07cc 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png index cab78c4e..9513da98 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png index 814c6b5a..4080120d 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png index caa04b06..42c0a3ed 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png index 87861dfe..5cfc09fc 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png index 0040ce66..8883ab31 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png index e5bd2613..2c2e0ab1 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png index a043f974..4da9907b 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png index 9b1666d3..aa86ff02 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png index 860daa9c..109ca1ab 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png index 41609158..9d05c13b 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png index 3c97508a..1a3e3d6e 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png index d4fd8ef5..ac7ca088 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png index 1cdf60a8..71d958de 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png index d8331768..5320ab0b 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png index 601c0d4b..800bac47 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png index 90571897..e1c81f7d 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png index 28b23bbc..f51e2438 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png index 5c000c23..bd2864ad 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png index d51a6ade..d4d52f2a 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png index 2557d302..14d5548a 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png index 014c60cb..ee514acb 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png index 9efc9731..81be25d8 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png index 83023708..54b55d55 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png index dd2d8950..890ac604 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png index a3955dec..17f44405 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png index a9bcfd5e..7cecf5e7 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png index 8a5004a7..ff199066 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png index b4e6f776..69c43686 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png index a1a2bfae..450d52a5 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png index c0c4311f..d9d0f5a1 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png index d0d4931f..2d923626 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png index f3556cc2..c9ea957e 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png index 7907e92a..ff34ccdb 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png index 18e58bb3..e09796df 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png index f6eb29cc..f1a4792d 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png index 89e2e8f4..7d0477db 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png index 090c57e3..6839cba6 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png index 9609d17f..fb998641 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png index fc3eddfe..09b2ec58 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png index 1c7ab182..eff913ca 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png index c4dcc846..3415d6d6 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png index 6ddecb8b..f2eec02c 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png index 5ee521ba..27be1f22 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png index 4322a6b9..3bf4a29a 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png index 88fd852c..72287f01 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png index a0f3b418..78243b85 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png index e63ddd79..add06c9b 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png index 363de5eb..1b9257f6 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png index 7c0fb83c..004c6104 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png index 87d29176..f8a496a0 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png index 5f5a5904..6dddd621 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png index 9148b124..17b2b755 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png index 957e9e18..1b59831a 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png index be55128c..424a02c5 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png index 2ead8956..921485ce 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png index 3165acbc..c4975a51 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png index c222e159..cc5e9258 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png index e3197d24..3c4e8422 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png index 1a76858d..c0e8d59d 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png index 9cb5f42f..2cb7d62f 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png index 438f7563..a0e9da7d 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png index 42c0d8c4..3b199564 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png index 6e9cb190..a7ea034b 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png index 78a9b06f..481b9f13 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png index e2fa6e26..fb441cee 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png index b06574b7..10b37dc1 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png index 7ab6ca27..aa2d2826 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png index a1fe71de..225bb48e 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png index eb44cb9a..ab71db56 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png index 3a9c3213..075718e1 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png index 822edce1..cb939489 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png index c9149c6c..6fc37ca4 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png index 1ff0a1c0..1208ef0e 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png index bbb76bf0..c163d53d 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png index e1e4e99f..1f084a95 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png index 6af74b03..64ded046 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png index cdc5cc8d..acb44780 100644 Binary files a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png index 269c8bc6..61879299 100644 Binary files a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png index ada6fe6f..5ca2095b 100644 Binary files a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png index a61348f0..2419c66c 100644 Binary files a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png index 8db68d28..641061a6 100644 Binary files a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png index 605b6803..5fc40ad5 100644 Binary files a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png index efbf9f59..9e3558aa 100644 Binary files a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png index 60923882..5bd7b795 100644 Binary files a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png index 95b3f205..8c94e518 100644 Binary files a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png index bbd52bca..e0354376 100644 Binary files a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png index 64243a9f..06b7e567 100644 Binary files a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png index 2192f1d4..d3af3e72 100644 Binary files a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png index da1d8c8a..4fe9be63 100644 Binary files a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png index b0f70130..20d7a01c 100644 Binary files a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png index 168e6618..030065cc 100644 Binary files a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png index 6b55abe8..f47d9931 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png index 64415390..475be41d 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png index 4d1e640f..9a96c782 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png index f3ea2d8c..e027379a 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png index 163b8d6d..de3fb759 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png index b2549558..f3a4aadb 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png index 6adb9573..191f32fe 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png index 2a5d9ebc..01e77fc7 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png index bc1808e0..24dab825 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png index bbe44498..73c58d5b 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png index b6169fc9..db1b88f4 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png index 2b8881a2..5fb16610 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png index c2acba86..35c2cf86 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png index 461d94e4..170d4905 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png index 5d7e2846..72bcd37b 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png index 534094aa..a3c72bda 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png index 0e1f7746..a269a0f1 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png index e88d447f..eb206a3c 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png index 5d5537f5..a3f97e16 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png index dd271280..415c43c0 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png index b8331f51..8c572036 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png index 8613225a..b67cb1e4 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png index 7bfc0a79..3f33dde7 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png index 4edd38e0..7fce499b 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png index a1ab2808..d9be69f1 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png index 56e176ac..d3e68787 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png index b309eb12..d0819992 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png index da4e42ed..91645cf6 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png index 3c29a2e2..abea98ee 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png index 3b29f785..6fb439e7 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png index b20e9738..116ddfc0 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png index c84248e1..d5ce1228 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png index 5f669c52..0acfaee8 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png index cdb7fe82..7274ecba 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png index 4f2d55ea..c75ef094 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png index 3cdf93fa..f6273a2f 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png index 9dc0572a..4b54d618 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png index c59a6f5b..201918e1 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png index e89a0a77..ca551f01 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png index 8e56f838..93de968e 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png index ebbb6c17..3707a49b 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png index 0381b77f..d6dcf30d 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png index 4226d9f2..49e6120f 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png index 9ac26272..1d1860ba 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png index 01749ee9..73a0fdca 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png index 3dca15dc..8497f1cb 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png index 604c69fd..fff2dd82 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png index 7ff7d62d..8fd84c6f 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png index a1c6d60f..4f896917 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png index c84248e1..d5ce1228 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png index 5f669c52..0acfaee8 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png index cdb7fe82..7274ecba 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png index 9010b9b5..779fde40 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png index 3cdf93fa..f6273a2f 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png index 437d5050..1faf1bc5 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png index c59a6f5b..201918e1 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png index e89a0a77..ca551f01 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png index 8e56f838..93de968e 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png index efcfd84d..1d7c226e 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png index 0381b77f..d6dcf30d 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png index f56c8365..24c1f1b7 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png index 9ac26272..1d1860ba 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png index 01749ee9..73a0fdca 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png index 3dca15dc..8497f1cb 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png index 12e52d88..33aad2ef 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png index 7ff7d62d..8fd84c6f 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png index 972def33..0b127940 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png index d0a2ab49..45f69c0c 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png index 3904576a..796640b0 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png index e8e4f6a1..f14d1abe 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png index 392216f5..547fd053 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png index 5f0195f6..f52bbb2b 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png index 061a1027..e0aef9f2 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png index 6e461af0..33481986 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png index 6afa92a8..4d771078 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png index 092a88a5..0eaf67c3 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png index 9f8e2000..f3c49874 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png index 39f4efb2..81762983 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png index 4d3d8dd5..b7cfc899 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png index c61dbcd1..7b49a452 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png index f3b65c46..9bcbe571 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png index 20413927..1856628b 100644 Binary files a/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png index 64415390..475be41d 100644 Binary files a/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png index 7bc613ca..6f43309a 100644 Binary files a/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png index a9db0ba6..93643df4 100644 Binary files a/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png index 4a16c444..4b6ad3b8 100644 Binary files a/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png index 30ff7b2e..30866e69 100644 Binary files a/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png index 6adb9573..191f32fe 100644 Binary files a/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png index 84d5c473..4e7d43bd 100644 Binary files a/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png index 5e9548f6..18237018 100644 Binary files a/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png index e6b4f4c2..de1b35bc 100644 Binary files a/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png index 3f5447cb..c9320d52 100644 Binary files a/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png index 2b8881a2..5fb16610 100644 Binary files a/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png index c127856b..6d1575cd 100644 Binary files a/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png index 6cdc03a5..2982318f 100644 Binary files a/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png index d96730be..aeeabd16 100644 Binary files a/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png index 8f3ff817..4c4dbb86 100644 Binary files a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png index c9b27d89..6111c6a0 100644 Binary files a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png index 79d20b03..874b9b5d 100644 Binary files a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png index 195625cd..901fd50b 100644 Binary files a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png index 13034f8c..012d97e0 100644 Binary files a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png index bd34c2c9..a61136d5 100644 Binary files a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png index c809c328..ded8f167 100644 Binary files a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png index df01dbfd..39d1ace8 100644 Binary files a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png index e1f3174c..b32fba6c 100644 Binary files a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png index 1a971e10..a877cae7 100644 Binary files a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png index 13b1e4eb..ea851fca 100644 Binary files a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png index 8e8caedc..27fa6426 100644 Binary files a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png index 9b671e7f..1bb9c272 100644 Binary files a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png index 3209dfce..951a9652 100644 Binary files a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png index fb78407b..01792d7f 100644 Binary files a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png index 5952b4ac..e0ac786b 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png index 09c4ea38..93687303 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png index 3e09d2b2..7f6a551f 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png index 8b86a1b8..8b62755e 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png index ae5bea53..f46e87a5 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png index c1f20944..7922288b 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png index 9a6a1d20..25f6bc98 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png index 0a410555..fd38e958 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png index 0960b753..0a150ca4 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png index 72bc805a..1d688d9b 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png index 7fa928b4..a3235750 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png index 84409f12..117dd865 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png index b6e7a860..4cc651a9 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png index 1d2eca52..9959ccb8 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png index ddd77d7e..e539343b 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png index 41022f87..5e74455e 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png index d92200b3..9f83a1f3 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png index 7e30233f..b968b3f5 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png index ae80cf3a..d890a911 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png index 345db145..f76fa96c 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png index fc62fd8e..1361b510 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png index af5855d8..b9b4092f 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png index 5d320ee7..939fc93e 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png index 05b18b67..defce40c 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png index f8eb871b..bd0403bd 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png index 01b75bac..7faf5e2d 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png index a5d5aee7..0484fbb2 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png index cbe825e2..9b701a55 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png index 0477e60e..a8d782ef 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png index 3c0c5616..11ba5504 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png index 6e5812e0..9271eaa8 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png index 9166a352..244f29b1 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png index 2debf6f1..f13e11a4 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png index a547b83c..92f46bb0 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png index b66778aa..fce72fdd 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png index cd3fd25d..26cb4793 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png index 69c3b4e6..eb115a18 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png index e99b9111..72a9b75f 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png index 30858e5a..19d75a83 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png index 977ae682..bd21ea45 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png index 8cd199c2..5ef6afe2 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png index 1a568c44..58e8a3f8 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png index 10d3d7b4..b3d17505 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png index 9d4eee5e..fe112a70 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png index 4ff42ea1..7d59de74 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png index 22797632..838436c9 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png index c97ffa66..9b2eb7f5 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png index 514608d1..c4e17457 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png index 642e31d0..7bab9d07 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png index 2ff93d03..ad2a5718 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png index 07a2abef..2bbed93a 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png index 87928b48..0568cf18 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png index 35bc97fe..38887364 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png index 0ab13b8f..56f91e0f 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png index bbd6928f..520bbe0b 100644 Binary files a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png index e99b9111..72a9b75f 100644 Binary files a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png index 30858e5a..19d75a83 100644 Binary files a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png index 977ae682..bd21ea45 100644 Binary files a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png index e618387d..84ce8c1a 100644 Binary files a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png index 1a568c44..58e8a3f8 100644 Binary files a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png index a930a670..f60586b6 100644 Binary files a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png index 9d4eee5e..fe112a70 100644 Binary files a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png index 4ff42ea1..7d59de74 100644 Binary files a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png index 22797632..838436c9 100644 Binary files a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png index 3eab2feb..17a62111 100644 Binary files a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png index 514608d1..c4e17457 100644 Binary files a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png index f66c36f6..729a65cf 100644 Binary files a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png index 2ff93d03..ad2a5718 100644 Binary files a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png index 07a2abef..2bbed93a 100644 Binary files a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png index 87928b48..0568cf18 100644 Binary files a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png index ccd32156..160b798f 100644 Binary files a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png index 0ab13b8f..56f91e0f 100644 Binary files a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/report.xml b/fastlane/report.xml index 4488658e..fa0dbf67 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -1,18 +1,16 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/flatpak/de.wger.flutter.metainfo.xml b/flatpak/de.wger.flutter.metainfo.xml index 3abff699..c7417dc8 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.9.0 +

Bug fixes and improvements.

diff --git a/integration_test/1_dashboard.dart b/integration_test/1_dashboard.dart index e369c0ed..5714320c 100644 --- a/integration_test/1_dashboard.dart +++ b/integration_test/1_dashboard.dart @@ -22,9 +22,11 @@ import '../test_data/nutritional_plans.dart'; import '../test_data/profile.dart'; import '../test_data/routines.dart'; -Widget createDashboardScreen({locale = 'en'}) { +Widget createDashboardScreen({String locale = 'en'}) { final mockWorkoutProvider = MockRoutinesProvider(); when(mockWorkoutProvider.items).thenReturn([getTestRoutine(exercises: getScreenshotExercises())]); + when(mockWorkoutProvider.currentRoutine) + .thenReturn(getTestRoutine(exercises: getScreenshotExercises())); when(mockWorkoutProvider.fetchSessionData()).thenAnswer((a) => Future.value([ WorkoutSession( diff --git a/integration_test/3_gym_mode.dart b/integration_test/3_gym_mode.dart index cf504fe1..76431f08 100644 --- a/integration_test/3_gym_mode.dart +++ b/integration_test/3_gym_mode.dart @@ -17,9 +17,12 @@ Widget createGymModeScreen({locale = 'en'}) { final key = GlobalKey(); final exercises = getTestExercises(); final routine = getTestRoutine(exercises: getScreenshotExercises()); - final mockBaseProvider = MockWgerBaseProvider(); + final mockRoutinesProvider = MockRoutinesProvider(); final mockExerciseProvider = MockExercisesProvider(); + when(mockRoutinesProvider.fetchAndSetRoutineFull(1)).thenAnswer((_) async => routine); + when(mockRoutinesProvider.findById(1)).thenAnswer((_) => routine); + when(mockExerciseProvider.findExerciseById(1)).thenReturn(exercises[0]); // bench press when(mockExerciseProvider.findExerciseById(6)).thenReturn(exercises[5]); // side raises //when(mockExerciseProvider.findExerciseBaseById(2)).thenReturn(bases[1]); // crunches @@ -29,11 +32,7 @@ Widget createGymModeScreen({locale = 'en'}) { child: MultiProvider( providers: [ ChangeNotifierProvider( - create: (context) => RoutinesProvider( - mockBaseProvider, - mockExerciseProvider, - [routine], - ), + create: (context) => mockRoutinesProvider, ), ChangeNotifierProvider( create: (context) => mockExerciseProvider, diff --git a/integration_test/6_weight.dart b/integration_test/6_weight.dart index 967d5742..f02c059d 100644 --- a/integration_test/6_weight.dart +++ b/integration_test/6_weight.dart @@ -12,17 +12,19 @@ import 'package:wger/theme/theme.dart'; import '../test/utils.dart'; import '../test/weight/weight_screen_test.mocks.dart'; import '../test_data/body_weight.dart'; +import '../test_data/nutritional_plans.dart'; import '../test_data/profile.dart'; Widget createWeightScreen({locale = 'en'}) { - final mockWeightProvider = BodyWeightProvider(mockBaseProvider); - mockWeightProvider.items = getScreenshotWeightEntries(); + final weightProvider = BodyWeightProvider(mockBaseProvider); + weightProvider.items = getScreenshotWeightEntries(); final mockUserProvider = MockUserProvider(); when(mockUserProvider.profile).thenReturn(tProfile1); final mockNutritionPlansProvider = MockNutritionPlansProvider(); when(mockNutritionPlansProvider.currentPlan).thenReturn(null); + when(mockNutritionPlansProvider.items).thenReturn([getNutritionalPlan()]); return MultiProvider( providers: [ @@ -30,7 +32,7 @@ Widget createWeightScreen({locale = 'en'}) { create: (context) => mockUserProvider, ), ChangeNotifierProvider( - create: (context) => mockWeightProvider, + create: (context) => weightProvider, ), ChangeNotifierProvider( create: (context) => mockNutritionPlansProvider, diff --git a/integration_test/make_screenshots_test.dart b/integration_test/make_screenshots_test.dart index e1a9b09a..c4a94e68 100644 --- a/integration_test/make_screenshots_test.dart +++ b/integration_test/make_screenshots_test.dart @@ -22,7 +22,12 @@ enum DeviceType { final destination = DeviceType.phoneScreenshots.name; -Future takeScreenshot(tester, binding, String language, String name) async { +Future takeScreenshot( + WidgetTester tester, + IntegrationTestWidgetsFlutterBinding binding, + String language, + String name, +) async { if (Platform.isAndroid) { await tester.pumpAndSettle(); await binding.convertFlutterSurfaceToImage(); diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index 350474d8..5447a46b 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -174,7 +174,7 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.3.9) + rexml (3.4.2) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) diff --git a/lib/helpers/consts.dart b/lib/helpers/consts.dart index 7d538e02..52ca907d 100644 --- a/lib/helpers/consts.dart +++ b/lib/helpers/consts.dart @@ -137,3 +137,9 @@ enum WeightUnitEnum { kg, lb } const textInputTypeDecimal = TextInputType.numberWithOptions(decimal: true); const String API_MAX_PAGE_SIZE = '999'; + +const String API_RESULTS_PAGE_SIZE = '100'; + +/// Marker used for identifying interpolated values in a list, e.g. for measurements +/// the milliseconds in the entry date are set to this value +const INTERPOLATION_MARKER = 123; diff --git a/lib/helpers/measurements.dart b/lib/helpers/measurements.dart new file mode 100644 index 00000000..f3cd5462 --- /dev/null +++ b/lib/helpers/measurements.dart @@ -0,0 +1,113 @@ +/* + * This file is part of wger Workout Manager . + * Copyright (C) 2020, 2021 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. + * + * This program 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 . + */ + +import 'package:wger/helpers/consts.dart'; +import 'package:wger/helpers/date.dart'; +import 'package:wger/widgets/measurements/charts.dart'; + +extension MeasurementChartEntryListExtensions on List { + List whereDate(DateTime start, DateTime? end) { + return where((e) => e.date.isAfter(start) && (end == null || e.date.isBefore(end))).toList(); + } + +// assures values on the start (and optionally end) dates exist, by interpolating if needed +// this is used for when you are looking at a specific time frame (e.g. for a nutrition plan) +// while gaps in the middle of a chart can be "visually interpolated", it's good to have a clearer +// explicit interpolation for the start and end dates (if needed) +// this also helps with computing delta's across the entire window + List whereDateWithInterpolation(DateTime start, DateTime? end) { + // Make sure our list is sorted by date + sort((a, b) => a.date.compareTo(b.date)); + + // Initialize result list + final List result = []; + + // Check if we have any entries on the same day as start/end + bool hasEntryOnStartDay = false; + bool hasEntryOnEndDay = false; + + // Track entries for potential interpolation + MeasurementChartEntry? lastBeforeStart; + MeasurementChartEntry? lastBeforeEnd; + + // Single pass through the data + for (final entry in this) { + if (entry.date.isSameDayAs(start)) { + hasEntryOnStartDay = true; + } + if (end != null && entry.date.isSameDayAs(end)) { + hasEntryOnEndDay = true; + } + + if (end != null && entry.date.isBefore(end)) { + lastBeforeEnd = entry; + } + + if (entry.date.isBefore(start)) { + lastBeforeStart = entry; + } else { + // insert interpolated start value if needed + if (!hasEntryOnStartDay && lastBeforeStart != null) { + result.insert(0, interpolateBetween(lastBeforeStart, entry, start)); + hasEntryOnStartDay = true; + } + + if (end == null || entry.date.isBefore(end)) { + result.add(entry); + } + if (end != null && entry.date.isAfter(end)) { + // insert interpolated end value if needed + // note: we only interpolate end if we have data going beyond end + // if let's say your plan ends in a week from now, we wouldn't want to fake data until next week. + if (!hasEntryOnEndDay && lastBeforeEnd != null) { + result.add(interpolateBetween(lastBeforeEnd, entry, end)); + hasEntryOnEndDay = true; + } + // we added all our values and did all interpolations + // surely all input values from here on are irrelevant. + return result; + } + } + } + return result; + } +} + +// caller needs to make sure that before.date < date < after.date +MeasurementChartEntry interpolateBetween( + MeasurementChartEntry before, MeasurementChartEntry after, DateTime date) { + final totalDuration = after.date.difference(before.date).inMilliseconds; + final startDuration = date.difference(before.date).inMilliseconds; + + // Create a special DateTime with milliseconds ending in 123 to mark it as interpolated + // which we leverage in the UI + final markedDate = DateTime( + date.year, + date.month, + date.day, + date.hour, + date.minute, + date.second, + INTERPOLATION_MARKER, + ); + + return MeasurementChartEntry( + before.value + (after.value - before.value) * (startDuration / totalDuration), + markedDate, + ); +} diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 3a44c195..de4efe24 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -1,1019 +1,1025 @@ { - "@@last_modified": "2020-11-11T15:04:05.523531", - "labelWorkoutPlan": "Trainingsplan", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan", - "type": "text", - "placeholders": {} - }, - "labelDashboard": "Übersicht", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "rir": "RiR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "repetitions": "Wiederholungen", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "exercise": "Übung", - "@exercise": { - "description": "An exercise for a workout" - }, - "successfullyDeleted": "Gelöscht", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "toggleDetails": "Details ein/ausblenden", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "newNutritionalPlan": "Neuer Ernährungsplan", - "@newNutritionalPlan": {}, - "delete": "Löschen", - "@delete": {}, - "loadingText": "Wird geladen …", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "edit": "Bearbeiten", - "@edit": {}, - "newEntry": "Neuer Eintrag", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "amount": "Betrag", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "sodium": "Natrium", - "@sodium": {}, - "fiber": "Ballaststoff", - "@fiber": {}, - "saturatedFat": "Gesättigte Fettsäuren", - "@saturatedFat": {}, - "fat": "Fett", - "@fat": {}, - "sugars": "Zucker", - "@sugars": {}, - "carbohydrates": "Kohlenhydrate", - "@carbohydrates": {}, - "protein": "Eiweiß", - "@protein": {}, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "mealLogged": "Mahlzeit im Tagebuch protokolliert", - "@mealLogged": {}, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "energy": "Energie", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "ingredient": "Zutat", - "@ingredient": {}, - "timeEnd": "Endzeit", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStart": "Startzeit", - "@timeStart": { - "description": "The starting time of a workout" - }, - "time": "Zeit", - "@time": { - "description": "The time of a meal or workout" - }, - "date": "Datum", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "weight": "Gewicht", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "anErrorOccurred": "Es ist ein Fehler aufgetreten!", - "@anErrorOccurred": {}, - "nutritionalPlans": "Ernährungspläne", - "@nutritionalPlans": {}, - "nutritionalDiary": "Ernährungstagebuch", - "@nutritionalDiary": {}, - "nutritionalPlan": "Ernährungsplan", - "@nutritionalPlan": {}, - "addIngredient": "Zutat hinzufügen", - "@addIngredient": {}, - "gymMode": "Studiomodus", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "addMeal": "Mahlzeit hinzufügen", - "@addMeal": {}, - "add": "Hinzufügen", - "@add": {}, - "cancel": "Abbrechen", - "@cancel": {}, - "save": "Speichern", - "@save": {}, - "description": "Beschreibung", - "@description": {}, - "newSet": "Neuer Satz", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "newDay": "Neuer Tag", - "@newDay": {}, - "workoutSession": "Trainingseinheit", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "notes": "Notizen", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "impression": "Eindruck", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "comment": "Kommentar", - "@comment": { - "description": "Comment, additional information" - }, - "goToToday": "Zu heute gehen", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "selectIngredient": "Bitte wähle eine Zutat", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "enterValidNumber": "Bitte gebe eine gültige Zahl ein", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "enterValue": "Bitte gebe einen Wert ein", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "calendar": "Kalender", - "@calendar": {}, - "noWeightEntries": "Du hast keine Gewichtseinträge", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "unit": "Einheit", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "logHelpEntriesUnits": "Beachte, dass nur Einträge mit einer Gewichtseinheit (kg oder lb) und Wiederholungen aufgezeichnet werden, andere Kombinationen wie Zeit oder „bis zum Versagen“ werden hier ignoriert.", - "@logHelpEntriesUnits": {}, - "logHelpEntries": "Gibt es an einem Tag mehrere Einträge mit der gleichen Anzahl von Wiederholungen, aber unterschiedlichen Gewichten, wird nur der Eintrag mit dem höheren Gewicht im Diagramm angezeigt.", - "@logHelpEntries": {}, - "loginInstead": "Du hast bereits einen Account? Stattdessen anmelden", - "@loginInstead": {}, - "registerInstead": "Du hast keinen Account? Jetzt registrieren", - "@registerInstead": {}, - "reset": "Zurücksetzen", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "customServerHint": "Geben Sie die Adresse deines eigenen Servers ein, ansonsten wird die Standardadresse verwendet", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "customServerUrl": "URL der wger-Instanz", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "invalidUsername": "Bitte geben Sie einen gültigen Benutzernamen ein", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "username": "Benutzername", - "@username": {}, - "email": "E-Mail Adresse", - "@email": {}, - "invalidEmail": "Bitte geben Sie eine gültige E-Mail-Adresse ein", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "confirmPassword": "Passwort bestätigen", - "@confirmPassword": {}, - "password": "Passwort", - "@password": {}, - "passwordTooShort": "Das Passwort ist zu kurz", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "passwordsDontMatch": "Die Passwörter stimmen nicht überein", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "invalidUrl": "Bitte gebe eine gültige URL ein", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "useCustomServer": "Benutzerdefinierten Server verwenden", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "useDefaultServer": "Standard-Server verwenden", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "register": "Registrieren", - "@register": { - "description": "Text for registration button" - }, - "login": "Anmelden", - "@login": { - "description": "Text for login button" - }, - "addExercise": "Eine Übung hinzufügen", - "@addExercise": {}, - "confirmDelete": "Bist du sicher, dass du '{toDelete}' löschen möchtest?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "noNutritionalPlans": "Du hast keine Ernährungspläne", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "todaysWorkout": "Dein Training heute", - "@todaysWorkout": {}, - "nrOfSets": "Sätze pro Übung: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "enterCharacters": "Bitte gebe zwischen {min} und {max} Zeichen ein", - "@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": "Bitte wähle eine Übung aus", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "selectExercises": "Wenn du einen Supersatz machen willst, kannst du nach mehreren Übungen suchen, sie werden dann gruppiert", - "@selectExercises": {}, - "sameRepetitions": "Wenn du für alle Sätze die gleichen Wiederholungen und das gleiche Gewicht verwendest, kannst du nur eine Zeile ausfüllen. Gebe z. B. für 4 Sätze einfach 10 für die Wiederholungen ein, daraus wird automatisch „4 × 10“.", - "@sameRepetitions": {}, - "setNr": "Satz {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": "Eine Beschreibung, was an diesem Tag gemacht wird (z. B. „Zugtag“) oder welche Körperteile trainiert werden (z. B. „Brust und Schultern“)", - "@dayDescriptionHelp": {}, - "set": "Satz", - "@set": { - "description": "A set in a workout plan" - }, - "repetitionUnit": "Wiederholungseinheit", - "@repetitionUnit": {}, - "weightUnit": "Gewichtseinheit", - "@weightUnit": {}, - "reps": "Wdh.", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "start": "Starten", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "addSet": "Satz hinzufügen", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "successfullySaved": "Gespeichert", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "labelWorkoutLogs": "Trainingsprotokolle", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "logout": "Abmelden", - "@logout": { - "description": "Text for logout button" - }, - "aboutDescription": "Danke, dass du wger verwendest! wger ist ein gemeinschaftliches quelloffenes Projekt, das von Fitness-Enthusiasten aus der ganzen Welt entwickelt wurde.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "logMeal": "Gericht im Ernährungstagebuch protokollieren", - "@logMeal": {}, - "category": "Kategorie", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "equipment": "Gerät", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "musclesSecondary": "Sekundäre Muskeln", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "muscles": "Muskeln", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "addImage": "Bild hinzufügen", - "@addImage": {}, - "gallery": "Galerie", - "@gallery": {}, - "chooseFromLibrary": "Wähle aus der Bibliothek", - "@chooseFromLibrary": {}, - "takePicture": "Bild aufnehmen", - "@takePicture": {}, - "selectImage": "Bitte wähle ein Bild aus", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "name": "Name", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "goToDetailPage": "Weiter zur Detailseite", - "@goToDetailPage": {}, - "labelBottomNavNutrition": "Ernährung", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavWorkout": "Training", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "optionsLabel": "Optionen", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "setUnitsAndRir": "Einheiten und RiR einstellen", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "searchExercise": "Suche Übung zum Hinzufügen", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "rirNotUsed": "RiR nicht verwendet", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "jumpTo": "Springen zu", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "pause": "Pause", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "usernameValidChars": "Ein Benutzername darf nur Buchstaben, Ziffern und die Zeichen @, +, ., - und _ enthalten", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "plateCalculatorNotDivisible": "Mit den vorhandenen Platten kann das Gewicht nicht erreicht werden", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "plateCalculator": "Platten", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "timeStartAhead": "Die Startzeit kann nicht vor der Endzeit liegen", - "@timeStartAhead": {}, - "total": "Gesamt", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "gPerBodyKg": "g pro Körper-kg", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "percentEnergy": "Prozent der Energie", - "@percentEnergy": {}, - "difference": "Differenz", - "@difference": {}, - "logged": "Protokolliert", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "planned": "Geplant", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "macronutrients": "Makronährstoffe", - "@macronutrients": {}, - "value": "Wert", - "@value": { - "description": "The value of a measurement entry" - }, - "measurementCategoriesHelpText": "Messkategorie, z. B. „Bizeps“ oder „Körperfett“", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "Die Einheit, die verwendet wird, um die Kategorie zu messen, wie z.B. „cm“ oder „%“", - "@measurementEntriesHelpText": {}, - "fatShort": "F", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "measurement": "Messung", - "@measurement": {}, - "appUpdateContent": "Diese Version der Anwendung ist nicht mit dem Server kompatibel, bitte aktualisieren Sie Ihre Anwendung.", - "@appUpdateContent": {}, - "appUpdateTitle": "Aktualisierung erforderlich", - "@appUpdateTitle": {}, - "measurements": "Messungen", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "dataCopied": "Daten in neuen Eintrag kopiert", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "carbohydratesShort": "K", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "recentlyUsedIngredients": "Kürzlich hinzugefügte Zutaten", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "searchIngredient": "Zutat suchen", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "logIngredient": "Zutat im Ernährungstagebuch protokollieren", - "@logIngredient": {}, - "close": "Schließen", - "@close": { - "description": "Translation for close" - }, - "productNotFoundDescription": "Das Produkt mit dem gescannten Strichcode {barcode} wurde nicht in der wger-Datenbank gefunden", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "productFound": "Produkt gefunden", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productFoundDescription": "Der Strichcode gehört zu diesem Produkt: {productName}. Möchten Sie fortfahren?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "productNotFound": "Produkt nicht gefunden", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "weekAverage": "7-Tage-Durchschnitt", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "scanBarcode": "Strichcode scannen", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "abs": "Bauch", - "@abs": {}, - "arms": "Arme", - "@arms": {}, - "back": "Rücken", - "@back": {}, - "calves": "Waden", - "@calves": {}, - "chest": "Brust", - "@chest": {}, - "legs": "Beine", - "@legs": {}, - "shoulders": "Schultern", - "@shoulders": {}, - "barbell": "Langhantel", - "@barbell": {}, - "noMeasurementEntries": "Du hast keine Messeingaben", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Neue Messung hinzufügen", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "selectEntry": "Bitte einen Eintrag auswählen", - "@selectEntry": {}, - "exercises": "Übungen", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "userProfile": "Dein Profil", - "@userProfile": {}, - "exerciseList": "Liste der Übungen", - "@exerciseList": {}, - "exerciseName": "Name der Übung", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "translation": "Übersetzung", - "@translation": {}, - "translateExercise": "Diese Übung jetzt übersetzen", - "@translateExercise": {}, - "baseData": "Grundlagen auf Englisch", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "images": "Bilder", - "@images": {}, - "language": "Sprache", - "@language": {}, - "add_exercise_image_license": "Bilder müssen mit der CC BY SA Lizenz vereinbar sein. Wenn du dir unsicher bist lade nur Bilder hoch, welche du selbst gemacht hast.", - "@add_exercise_image_license": {}, - "variations": "Variationen", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "contributeExercise": "Eine Übung beisteuern", - "@contributeExercise": {}, - "hamstrings": "Oberschenkelmuskeln", - "@hamstrings": {}, - "lower_back": "Unterer Rücken", - "@lower_back": {}, - "aboutPageTitle": "Über uns & Support", - "@aboutPageTitle": {}, - "alsoKnownAs": "Auch bekannt als:{aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "@@last_modified": "2020-11-11T15:04:05.523531", + "labelWorkoutPlan": "Trainingsplan", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan", + "type": "text", + "placeholders": {} }, - "description": "List of alternative names for an exercise" - }, - "biceps": "Bizeps", - "@biceps": {}, - "dumbbell": "Kurzhantel", - "@dumbbell": {}, - "gym_mat": "Gymnastikmatte", - "@gym_mat": {}, - "incline_bench": "Schrägbank", - "@incline_bench": {}, - "lats": "Latissimus", - "@lats": {}, - "enterMinCharacters": "Bitte gebe mindestens {min} Zeichen ein", - "@enterMinCharacters": { - "description": "Error message when the user hasn't entered the minimum amount characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - } - } - }, - "baseNameEnglish": "Alle Übungen brauchen einen Basisnamen in Englisch", - "@baseNameEnglish": {}, - "contributeExerciseWarning": "Sie können nur Übungen beitragen, wenn Ihr Konto älter als {days} Tage ist und Sie Ihre E-Mail verifiziert haben", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "cacheWarning": "Aufgrund von Caching kann es einige Zeit dauern, bis die Änderungen in der gesamten Anwendung sichtbar sind.", - "@cacheWarning": {}, - "bench": "Bank", - "@bench": {}, - "glutes": "Gesäßmuskeln", - "@glutes": {}, - "kilometers": "Kilometer", - "@kilometers": {}, - "miles": "Meilen", - "@miles": {}, - "quads": "Quadrizeps", - "@quads": {}, - "sz_bar": "SZ-Stange", - "@sz_bar": {}, - "seconds": "Sekunden", - "@seconds": {}, - "triceps": "Trizeps", - "@triceps": {}, - "until_failure": "Bis zum Versagen", - "@until_failure": {}, - "cardio": "Kardio", - "@cardio": {}, - "success": "Erfolgreich", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "pull_up_bar": "Klimmzugstange", - "@pull_up_bar": {}, - "verifiedEmailReason": "Du musst deine E-Mail verifizieren, um Übungen hinzuzufügen", - "@verifiedEmailReason": {}, - "kettlebell": "Kugelhantel", - "@kettlebell": {}, - "verifiedEmail": "Verifizierte E-Mail", - "@verifiedEmail": {}, - "unVerifiedEmail": "Unverifizierte E-Mail", - "@unVerifiedEmail": {}, - "alternativeNames": "Alternative Namen", - "@alternativeNames": {}, - "verifiedEmailInfo": "Eine Bestätigungs-E-Mail wurde an {email} gesendet", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "minutes": "Minuten", - "@minutes": {}, - "oneNamePerLine": "Ein Name pro Zeile", - "@oneNamePerLine": {}, - "whatVariationsExist": "Welche Varianten dieser Übung gibt es eventuell?", - "@whatVariationsExist": {}, - "previous": "Vorherige", - "@previous": {}, - "next": "Weiter", - "@next": {}, - "swiss_ball": "Gymnastikball", - "@swiss_ball": {}, - "none__bodyweight_exercise_": "keine (Körpergewichtsübung)", - "@none__bodyweight_exercise_": {}, - "body_weight": "Körpergewicht", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "kg": "kg", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Kilometer pro Stunde", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Meilen pro Stunde", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "verify": "Verifizieren", - "@verify": {}, - "textPromptTitle": "Bereit zu starten?", - "@textPromptTitle": {}, - "settingsTitle": "Einstellungen", - "@settingsTitle": {}, - "textPromptSubheading": "Drücken Sie die Aktionstaste, um zu beginnen", - "@textPromptSubheading": {}, - "max_reps": "Max. Wiederholungen", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "noMatchingExerciseFound": "Diese Übung wurde nicht gefunden", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "plates": "Platten", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "aboutDonateTitle": "Mach eine Spende", - "@aboutDonateTitle": {}, - "aboutDonateText": "Das Projekt ist kostenlos und wird es auch bleiben, der Betrieb des Servers hingegen nicht! Die Entwicklung erfordert zudem viel Zeit und Mühe von Freiwilligen. Ihr Beitrag deckt diese Kosten direkt und trägt zur Zuverlässigkeit des Dienstes bei.", - "@aboutDonateText": {}, - "settingsCacheTitle": "Zwischenspeicher", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Übungs-Zwischenspeicher", - "@settingsExerciseCacheDescription": {}, - "settingsCacheDeletedSnackbar": "Zwischenspeicher erfolgreich gelöscht", - "@settingsCacheDeletedSnackbar": {}, - "lb": "lb", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "useMetric": "Metrische Einheiten für das Körpergewicht verwenden", - "@useMetric": {}, - "done": "Fertig", - "@done": {}, - "searchNamesInEnglish": "Namen auch auf Englisch suchen", - "@searchNamesInEnglish": {}, - "goalMacro": "Makroziele", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "goalFiber": "Ballaststoffziel", - "@goalFiber": {}, - "loggedToday": "Heute protokolliert", - "@loggedToday": {}, - "onlyLogging": "Nur Kalorien eintragen", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Setze das Häkchen, wenn du nur deine Kalorien protokollieren möchtest und keinen detaillierten Ernährungsplan mit spezifischen Mahlzeiten einrichten willst", - "@onlyLoggingHelpText": {}, - "goalEnergy": "Energieziel", - "@goalEnergy": {}, - "goalProtein": "Eiweißziel", - "@goalProtein": {}, - "goalCarbohydrates": "Kohlenhydratziel", - "@goalCarbohydrates": {}, - "goalFat": "Fettziel", - "@goalFat": {}, - "today": "Heute", - "@today": {}, - "log": "Protokollieren", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "noIngredientsDefined": "Noch keine Zutaten definiert", - "@noIngredientsDefined": {}, - "ingredientLogged": "Zutat im Tagebuch protokolliert", - "@ingredientLogged": {}, - "selectMealToLog": "Wähle eine Mahlzeit, um sie im Tagebuch zu protokollieren", - "@selectMealToLog": {}, - "chartAllTimeTitle": "{name} aller Zeiten", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chart30DaysTitle": "{name} der letzten 30 Tage", - "@chart30DaysTitle": { - "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chartDuringPlanTitle": "{chartName} während des Ernährungsplans {planName}", - "@chartDuringPlanTitle": { - "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", - "type": "text", - "placeholders": { - "chartName": { - "type": "String" - }, - "planName": { - "type": "String" - } - } - }, - "surplus": "Überschuss", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "Defizit", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "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" - } - } - }, - "settingsIngredientCacheDescription": "Zutaten-Cache", - "@settingsIngredientCacheDescription": {}, - "routines": "Routinen", - "@routines": {}, - "newRoutine": "Neue Routine", - "@newRoutine": {}, - "noRoutines": "Du hast keine Routinen", - "@noRoutines": {}, - "sets": "Sätze", - "@sets": { - "description": "The number of sets to be done for one exercise" - }, - "restTime": "Pausenzeit", - "@restTime": {}, - "restDay": "Ruhetag", - "@restDay": {}, - "copyToClipboard": "In Zwischenablage kopieren", - "@copyToClipboard": {}, - "min": "Min", - "@min": {}, - "apiToken": "API Token", - "@apiToken": {}, - "useApiToken": "API Token benutzen", - "@useApiToken": {}, - "useUsernameAndPassword": "Nutzername und Passwort benutzen", - "@useUsernameAndPassword": {}, - "invalidApiToken": "Bitte geben Sie einen gültigen API-Schlüssel ein", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "apiTokenValidChars": "Ein API-Schlüssel darf nur die Buchstaben a-f und die Zahlen 0-9 enthalten und genau 40 Zeichen lang sein", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - }, - "exerciseNr": "Übung {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": "Supersatz {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" - } - } - }, - "isRestDay": "Ist Ruhetag", - "@isRestDay": {}, - "goalTypeMeals": "Von Mahlzeiten", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "goalTypeAdvanced": "Fortgeschritten", - "@goalTypeAdvanced": { - "description": "added for localization of Class GoalType's filed advanced" - }, - "addSuperset": "Supersatz hinzufügen", - "@addSuperset": {}, - "setHasNoExercises": "Dieser Satz enthält noch keine Übungen!", - "@setHasNoExercises": {}, - "simpleMode": "Einfacher Modus", - "@simpleMode": {}, - "darkMode": "Immer Dunkelmodus", - "@darkMode": {}, - "errorViewDetails": "Technische Details", - "@errorViewDetails": {}, - "simpleModeHelp": "Blenden Sie einige der erweiterten Einstellungen beim Bearbeiten von Übungen aus", - "@simpleModeHelp": {}, - "isRestDayHelp": "Bitte beachten Sie, dass alle Sätze und Übungen entfernt werden, wenn Sie einen Tag als Ruhetag markieren.", - "@isRestDayHelp": {}, - "needsLogsToAdvance": "Benötigt Eintrag, um fortzufahren", - "@needsLogsToAdvance": {}, - "needsLogsToAdvanceHelp": "Wählen Sie aus, ob die Routine nur dann zum nächsten geplanten Tag fortgesetzt werden soll, wenn Sie für diesen Tag ein Training protokolliert haben", - "@needsLogsToAdvanceHelp": {}, - "routineDays": "Tage in der Routine", - "@routineDays": {}, - "resultingRoutine": "Resultierende Routine", - "@resultingRoutine": {}, - "errorInfoDescription": "Es tut uns leid, aber etwas ist schiefgelaufen. Sie können uns helfen, das Problem zu beheben, indem Sie es auf GitHub melden.", - "@errorInfoDescription": {}, - "errorInfoDescription2": "Sie können die App weiterhin verwenden, einige Funktionen funktionieren jedoch möglicherweise nicht.", - "@errorInfoDescription2": {}, - "errorCouldNotConnectToServer": "Verbindung zum Server konnte nicht hergestellt werden", - "@errorCouldNotConnectToServer": {}, - "max": "Max", - "@max": {}, - "aboutWhySupportTitle": "Open Source und kostenlos nutzbar ❤️", - "@aboutWhySupportTitle": {}, - "aboutBugsListTitle": "Ein Problem melden oder eine Funktion vorschlagen", - "@aboutBugsListTitle": {}, - "aboutTranslationListTitle": "Übersetzen Sie die Anwendung", - "@aboutTranslationListTitle": {}, - "aboutSourceListTitle": "Quellcode anzeigen", - "@aboutSourceListTitle": {}, - "aboutJoinCommunityTitle": "Treten Sie der Community bei", - "@aboutJoinCommunityTitle": {}, - "aboutDiscordTitle": "Discord", - "@aboutDiscordTitle": {}, - "others": "Sonstiges", - "@others": {}, - "setHasProgression": "Set hat Fortschritt", - "@setHasProgression": {}, - "progressionRules": "Diese Übung unterliegt Fortschrittsregeln und kann in der mobilen App nicht bearbeitet werden. Bitte verwenden Sie die Webanwendung, um diese Übung zu bearbeiten.", - "@progressionRules": {}, - "goalTypeBasic": "Normal", - "@goalTypeBasic": { - "description": "added for localization of Class GoalType's filed basic" - }, - "indicatorRaw": "raw", - "@indicatorRaw": { - "description": "added for localization of Class Indicator's field text" - }, - "overallChangeWeight": "Allgemeine Veränderung", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "indicatorAvg": "Durchschn.", - "@indicatorAvg": { - "description": "added for localization of Class Indicator's field text" - }, - "themeMode": "Theme Modus", - "@themeMode": {}, - "lightMode": "Immer Hellmodus", - "@lightMode": {}, - "systemMode": "Systemeinstellungen", - "@systemMode": {}, - "errorCouldNotConnectToServerDetails": "Die Anwendung konnte keine Verbindung zum Server herstellen. Bitte überprüfen Sie Ihre Internetverbindung oder die Server-URL und versuchen Sie es erneut. Sollte das Problem weiterhin bestehen, wenden Sie sich an den Serveradministrator.", - "@errorCouldNotConnectToServerDetails": {}, - "fitInWeek": "Ruhetage in der Woche", - "@fitInWeek": {}, - "fitInWeekHelp": "Wenn diese Option aktiviert ist, wiederholen sich die Tage in einem wöchentlichen Zyklus, andernfalls folgen die Tage der Reihe nach, ohne Rücksicht auf den Beginn einer neuen Woche.", - "@fitInWeekHelp": {}, - "aboutContributeText": "Beiträge aller Art sind willkommen. Egal, ob Sie Entwickler, Übersetzer oder einfach nur Fitnessbegeisterter sind – jede Unterstützung ist willkommen!", - "@aboutContributeText": {}, - "aboutContributeTitle": "Beitragen", - "@aboutContributeTitle": {}, - "resistance_band": "Widerstandsband", - "@resistance_band": { - "description": "Generated entry for translation for server strings" - }, - "setHasProgressionWarning": "Bitte beachten Sie, dass es derzeit nicht möglich ist, alle Einstellungen für ein Set in der mobilen Anwendung zu bearbeiten oder den automatischen Fortschritt zu konfigurieren. Nutzen Sie vorerst bitte die Webanwendung.", - "@setHasProgressionWarning": {}, - "useColors": "farbig", - "@useColors": {}, - "barWeight": "Gewicht der Stange", - "@barWeight": {}, - "selectAvailablePlates": "Verfügbare Platten auswählen", - "@selectAvailablePlates": {}, - "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Dein aktueller Ernährungsplan enthält keine Gerichte", - "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { - "description": "Message shown when a nutrition plan doesn't have any meals" - }, - "toAddMealsToThePlanGoToNutritionalPlanDetails": "Gehe zum Ernährungsplaner um Gerichte hinzuzufügen", - "@toAddMealsToThePlanGoToNutritionalPlanDetails": { - "description": "Message shown to guide users to the nutritional plan details page to add meals" - } + "labelDashboard": "Übersicht", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "rir": "RiR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "repetitions": "Wiederholungen", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "exercise": "Übung", + "@exercise": { + "description": "An exercise for a workout" + }, + "successfullyDeleted": "Gelöscht", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "toggleDetails": "Details ein/ausblenden", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "newNutritionalPlan": "Neuer Ernährungsplan", + "@newNutritionalPlan": {}, + "delete": "Löschen", + "@delete": {}, + "loadingText": "Wird geladen …", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "edit": "Bearbeiten", + "@edit": {}, + "newEntry": "Neuer Eintrag", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "amount": "Betrag", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "sodium": "Natrium", + "@sodium": {}, + "fiber": "Ballaststoff", + "@fiber": {}, + "saturatedFat": "Gesättigte Fettsäuren", + "@saturatedFat": {}, + "fat": "Fett", + "@fat": {}, + "sugars": "Zucker", + "@sugars": {}, + "carbohydrates": "Kohlenhydrate", + "@carbohydrates": {}, + "protein": "Eiweiß", + "@protein": {}, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "mealLogged": "Mahlzeit im Tagebuch protokolliert", + "@mealLogged": {}, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "energy": "Energie", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "ingredient": "Zutat", + "@ingredient": {}, + "timeEnd": "Endzeit", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStart": "Startzeit", + "@timeStart": { + "description": "The starting time of a workout" + }, + "time": "Zeit", + "@time": { + "description": "The time of a meal or workout" + }, + "date": "Datum", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "weight": "Gewicht", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "anErrorOccurred": "Es ist ein Fehler aufgetreten!", + "@anErrorOccurred": {}, + "nutritionalPlans": "Ernährungspläne", + "@nutritionalPlans": {}, + "nutritionalDiary": "Ernährungstagebuch", + "@nutritionalDiary": {}, + "nutritionalPlan": "Ernährungsplan", + "@nutritionalPlan": {}, + "addIngredient": "Zutat hinzufügen", + "@addIngredient": {}, + "gymMode": "Studiomodus", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "addMeal": "Mahlzeit hinzufügen", + "@addMeal": {}, + "add": "Hinzufügen", + "@add": {}, + "cancel": "Abbrechen", + "@cancel": {}, + "save": "Speichern", + "@save": {}, + "description": "Beschreibung", + "@description": {}, + "newSet": "Neuer Satz", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "newDay": "Neuer Tag", + "@newDay": {}, + "workoutSession": "Trainingseinheit", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "notes": "Notizen", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "impression": "Eindruck", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "comment": "Kommentar", + "@comment": { + "description": "Comment, additional information" + }, + "goToToday": "Zu heute gehen", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "selectIngredient": "Bitte wähle eine Zutat", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "enterValidNumber": "Bitte gebe eine gültige Zahl ein", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "enterValue": "Bitte gebe einen Wert ein", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "calendar": "Kalender", + "@calendar": {}, + "noWeightEntries": "Du hast keine Gewichtseinträge", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "unit": "Einheit", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "logHelpEntriesUnits": "Beachte, dass nur Einträge mit einer Gewichtseinheit (kg oder lb) und Wiederholungen aufgezeichnet werden, andere Kombinationen wie Zeit oder „bis zum Versagen“ werden hier ignoriert.", + "@logHelpEntriesUnits": {}, + "logHelpEntries": "Gibt es an einem Tag mehrere Einträge mit der gleichen Anzahl von Wiederholungen, aber unterschiedlichen Gewichten, wird nur der Eintrag mit dem höheren Gewicht im Diagramm angezeigt.", + "@logHelpEntries": {}, + "loginInstead": "Du hast bereits einen Account? Stattdessen anmelden", + "@loginInstead": {}, + "registerInstead": "Du hast keinen Account? Jetzt registrieren", + "@registerInstead": {}, + "reset": "Zurücksetzen", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "customServerHint": "Geben Sie die Adresse deines eigenen Servers ein, ansonsten wird die Standardadresse verwendet", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "customServerUrl": "URL der wger-Instanz", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "invalidUsername": "Bitte geben Sie einen gültigen Benutzernamen ein", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "username": "Benutzername", + "@username": {}, + "email": "E-Mail Adresse", + "@email": {}, + "invalidEmail": "Bitte geben Sie eine gültige E-Mail-Adresse ein", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "confirmPassword": "Passwort bestätigen", + "@confirmPassword": {}, + "password": "Passwort", + "@password": {}, + "passwordTooShort": "Das Passwort ist zu kurz", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "passwordsDontMatch": "Die Passwörter stimmen nicht überein", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "invalidUrl": "Bitte gebe eine gültige URL ein", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "useCustomServer": "Verwende Benutzerdefinierten Server", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useDefaultServer": "Verwende Standard-Server", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "register": "Registrieren", + "@register": { + "description": "Text for registration button" + }, + "login": "Anmelden", + "@login": { + "description": "Text for login button" + }, + "addExercise": "Eine Übung hinzufügen", + "@addExercise": {}, + "confirmDelete": "Bist du sicher, dass du '{toDelete}' löschen möchtest?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "noNutritionalPlans": "Du hast keine Ernährungspläne", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "todaysWorkout": "Dein Training heute", + "@todaysWorkout": {}, + "nrOfSets": "Sätze pro Übung: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "enterCharacters": "Bitte gebe zwischen {min} und {max} Zeichen ein", + "@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": "Bitte wähle eine Übung aus", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "selectExercises": "Wenn du einen Supersatz machen willst, kannst du nach mehreren Übungen suchen, sie werden dann gruppiert", + "@selectExercises": {}, + "sameRepetitions": "Wenn du für alle Sätze die gleichen Wiederholungen und das gleiche Gewicht verwendest, kannst du nur eine Zeile ausfüllen. Gebe z. B. für 4 Sätze einfach 10 für die Wiederholungen ein, daraus wird automatisch „4 × 10“.", + "@sameRepetitions": {}, + "setNr": "Satz {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": "Eine Beschreibung, was an diesem Tag gemacht wird (z. B. „Zugtag“) oder welche Körperteile trainiert werden (z. B. „Brust und Schultern“)", + "@dayDescriptionHelp": {}, + "set": "Satz", + "@set": { + "description": "A set in a workout plan" + }, + "repetitionUnit": "Wiederholungseinheit", + "@repetitionUnit": {}, + "weightUnit": "Gewichtseinheit", + "@weightUnit": {}, + "reps": "Wdh.", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "start": "Start", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "addSet": "Satz hinzufügen", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "successfullySaved": "Gespeichert", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "labelWorkoutLogs": "Trainingsprotokolle", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "logout": "Abmelden", + "@logout": { + "description": "Text for logout button" + }, + "aboutDescription": "Danke, dass du wger verwendest! wger ist ein gemeinschaftliches quelloffenes Projekt, das von Fitness-Enthusiasten aus der ganzen Welt entwickelt wurde.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "logMeal": "Gericht im Ernährungstagebuch protokollieren", + "@logMeal": {}, + "category": "Kategorie", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "equipment": "Gerät", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "musclesSecondary": "Sekundäre Muskeln", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "muscles": "Muskeln", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "addImage": "Bild hinzufügen", + "@addImage": {}, + "gallery": "Galerie", + "@gallery": {}, + "chooseFromLibrary": "Wähle aus der Bibliothek", + "@chooseFromLibrary": {}, + "takePicture": "Bild aufnehmen", + "@takePicture": {}, + "selectImage": "Bitte wähle ein Bild aus", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "name": "Name", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "goToDetailPage": "Weiter zur Detailseite", + "@goToDetailPage": {}, + "labelBottomNavNutrition": "Ernährung", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavWorkout": "Training", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "optionsLabel": "Optionen", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "setUnitsAndRir": "Einheiten und RiR einstellen", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "searchExercise": "Suche Übung zum Hinzufügen", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "rirNotUsed": "RiR nicht verwendet", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "jumpTo": "Springen zu", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "pause": "Pause", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "usernameValidChars": "Ein Benutzername darf nur Buchstaben, Ziffern und die Zeichen @, +, ., - und _ enthalten", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "plateCalculatorNotDivisible": "Mit den vorhandenen Platten kann das Gewicht nicht erreicht werden", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "plateCalculator": "Platten", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "timeStartAhead": "Die Startzeit kann nicht vor der Endzeit liegen", + "@timeStartAhead": {}, + "total": "Gesamt", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "gPerBodyKg": "g pro Körper-kg", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "percentEnergy": "Prozent der Energie", + "@percentEnergy": {}, + "difference": "Differenz", + "@difference": {}, + "logged": "Protokolliert", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "planned": "Geplant", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "macronutrients": "Makronährstoffe", + "@macronutrients": {}, + "value": "Wert", + "@value": { + "description": "The value of a measurement entry" + }, + "measurementCategoriesHelpText": "Messkategorie, z. B. „Bizeps“ oder „Körperfett“", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "Die Einheit, die verwendet wird, um die Kategorie zu messen, wie z.B. „cm“ oder „%“", + "@measurementEntriesHelpText": {}, + "fatShort": "F", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "measurement": "Messung", + "@measurement": {}, + "appUpdateContent": "Diese Version der Anwendung ist nicht mit dem Server kompatibel, bitte aktualisieren Sie Ihre Anwendung.", + "@appUpdateContent": {}, + "appUpdateTitle": "Aktualisierung erforderlich", + "@appUpdateTitle": {}, + "measurements": "Messungen", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "dataCopied": "Daten in neuen Eintrag kopiert", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "carbohydratesShort": "K", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "recentlyUsedIngredients": "Kürzlich hinzugefügte Zutaten", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "searchIngredient": "Zutat suchen", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "logIngredient": "Zutat im Ernährungstagebuch protokollieren", + "@logIngredient": {}, + "close": "Schließen", + "@close": { + "description": "Translation for close" + }, + "productNotFoundDescription": "Das Produkt mit dem gescannten Strichcode {barcode} wurde nicht in der wger-Datenbank gefunden", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "productFound": "Produkt gefunden", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productFoundDescription": "Der Strichcode gehört zu diesem Produkt: {productName}. Möchten Sie fortfahren?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "productNotFound": "Produkt nicht gefunden", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "weekAverage": "7-Tage-Durchschnitt", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "scanBarcode": "Strichcode scannen", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "abs": "Bauch", + "@abs": {}, + "arms": "Arme", + "@arms": {}, + "back": "Rücken", + "@back": {}, + "calves": "Waden", + "@calves": {}, + "chest": "Brust", + "@chest": {}, + "legs": "Beine", + "@legs": {}, + "shoulders": "Schultern", + "@shoulders": {}, + "barbell": "Langhantel", + "@barbell": {}, + "noMeasurementEntries": "Du hast keine Messeingaben", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Neue Messung hinzufügen", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "selectEntry": "Bitte einen Eintrag auswählen", + "@selectEntry": {}, + "exercises": "Übungen", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "userProfile": "Dein Profil", + "@userProfile": {}, + "exerciseList": "Liste der Übungen", + "@exerciseList": {}, + "exerciseName": "Name der Übung", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "translation": "Übersetzung", + "@translation": {}, + "translateExercise": "Diese Übung jetzt übersetzen", + "@translateExercise": {}, + "baseData": "Grundlagen auf Englisch", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "images": "Bilder", + "@images": {}, + "language": "Sprache", + "@language": {}, + "add_exercise_image_license": "Bilder müssen mit der CC BY SA Lizenz vereinbar sein. Wenn du dir unsicher bist lade nur Bilder hoch, welche du selbst gemacht hast.", + "@add_exercise_image_license": {}, + "variations": "Variationen", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "contributeExercise": "Eine Übung beisteuern", + "@contributeExercise": {}, + "hamstrings": "Oberschenkelmuskeln", + "@hamstrings": {}, + "lower_back": "Unterer Rücken", + "@lower_back": {}, + "aboutPageTitle": "Über uns & Support", + "@aboutPageTitle": {}, + "alsoKnownAs": "Auch bekannt als:{aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "biceps": "Bizeps", + "@biceps": {}, + "dumbbell": "Kurzhantel", + "@dumbbell": {}, + "gym_mat": "Gymnastikmatte", + "@gym_mat": {}, + "incline_bench": "Schrägbank", + "@incline_bench": {}, + "lats": "Latissimus", + "@lats": {}, + "enterMinCharacters": "Bitte gebe mindestens {min} Zeichen ein", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "baseNameEnglish": "Alle Übungen brauchen einen Basisnamen in Englisch", + "@baseNameEnglish": {}, + "contributeExerciseWarning": "Sie können nur Übungen beitragen, wenn Ihr Konto älter als {days} Tage ist und Sie Ihre E-Mail verifiziert haben", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "cacheWarning": "Aufgrund von Caching kann es einige Zeit dauern, bis die Änderungen in der gesamten Anwendung sichtbar sind.", + "@cacheWarning": {}, + "bench": "Bank", + "@bench": {}, + "glutes": "Gesäßmuskeln", + "@glutes": {}, + "kilometers": "Kilometer", + "@kilometers": {}, + "miles": "Meilen", + "@miles": {}, + "quads": "Quadrizeps", + "@quads": {}, + "sz_bar": "SZ-Stange", + "@sz_bar": {}, + "seconds": "Sekunden", + "@seconds": {}, + "triceps": "Trizeps", + "@triceps": {}, + "until_failure": "Bis zum Versagen", + "@until_failure": {}, + "cardio": "Kardio", + "@cardio": {}, + "success": "Erfolgreich", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "pull_up_bar": "Klimmzugstange", + "@pull_up_bar": {}, + "verifiedEmailReason": "Du musst deine E-Mail verifizieren, um Übungen hinzuzufügen", + "@verifiedEmailReason": {}, + "kettlebell": "Kugelhantel", + "@kettlebell": {}, + "verifiedEmail": "Verifizierte E-Mail", + "@verifiedEmail": {}, + "unVerifiedEmail": "Unverifizierte E-Mail", + "@unVerifiedEmail": {}, + "alternativeNames": "Alternative Namen", + "@alternativeNames": {}, + "verifiedEmailInfo": "Eine Bestätigungs-E-Mail wurde an {email} gesendet", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "minutes": "Minuten", + "@minutes": {}, + "oneNamePerLine": "Ein Name pro Zeile", + "@oneNamePerLine": {}, + "whatVariationsExist": "Welche Varianten dieser Übung gibt es eventuell?", + "@whatVariationsExist": {}, + "previous": "Vorherige", + "@previous": {}, + "next": "Nächste", + "@next": {}, + "swiss_ball": "Gymnastikball", + "@swiss_ball": {}, + "none__bodyweight_exercise_": "keine (Körpergewichtsübung)", + "@none__bodyweight_exercise_": {}, + "body_weight": "Körpergewicht", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilometer pro Stunde", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Meilen pro Stunde", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "verify": "Verifizieren", + "@verify": {}, + "textPromptTitle": "Bereit zu starten?", + "@textPromptTitle": {}, + "settingsTitle": "Einstellungen", + "@settingsTitle": {}, + "textPromptSubheading": "Drücken Sie die Aktionstaste, um zu beginnen", + "@textPromptSubheading": {}, + "max_reps": "Max. Wiederholungen", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "noMatchingExerciseFound": "Diese Übung wurde nicht gefunden", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "plates": "Platten", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "aboutDonateTitle": "Mach eine Spende", + "@aboutDonateTitle": {}, + "aboutDonateText": "Das Projekt ist kostenlos und wird es auch bleiben, der Betrieb des Servers hingegen nicht! Die Entwicklung erfordert zudem viel Zeit und Mühe von Freiwilligen. Ihr Beitrag deckt diese Kosten direkt und trägt zur Zuverlässigkeit des Dienstes bei.", + "@aboutDonateText": {}, + "settingsCacheTitle": "Zwischenspeicher", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Übungs-Zwischenspeicher", + "@settingsExerciseCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Zwischenspeicher erfolgreich gelöscht", + "@settingsCacheDeletedSnackbar": {}, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "useMetric": "Metrische Einheiten für das Körpergewicht verwenden", + "@useMetric": {}, + "done": "Fertig", + "@done": {}, + "searchNamesInEnglish": "Namen auch auf Englisch suchen", + "@searchNamesInEnglish": {}, + "goalMacro": "Makroziele", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "goalFiber": "Ballaststoffziel", + "@goalFiber": {}, + "loggedToday": "Heute protokolliert", + "@loggedToday": {}, + "onlyLogging": "Nur Kalorien eintragen", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Setze das Häkchen, wenn du nur deine Kalorien protokollieren möchtest und keinen detaillierten Ernährungsplan mit spezifischen Mahlzeiten einrichten willst", + "@onlyLoggingHelpText": {}, + "goalEnergy": "Energieziel", + "@goalEnergy": {}, + "goalProtein": "Eiweißziel", + "@goalProtein": {}, + "goalCarbohydrates": "Kohlenhydratziel", + "@goalCarbohydrates": {}, + "goalFat": "Fettziel", + "@goalFat": {}, + "today": "Heute", + "@today": {}, + "log": "Protokollieren", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "noIngredientsDefined": "Noch keine Zutaten definiert", + "@noIngredientsDefined": {}, + "ingredientLogged": "Zutat im Tagebuch protokolliert", + "@ingredientLogged": {}, + "selectMealToLog": "Wähle eine Mahlzeit, um sie im Tagebuch zu protokollieren", + "@selectMealToLog": {}, + "chartAllTimeTitle": "{name} aller Zeiten", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chart30DaysTitle": "{name} der letzten 30 Tage", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartDuringPlanTitle": "{chartName} während des Ernährungsplans {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "surplus": "Überschuss", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "Defizit", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "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" + } + } + }, + "settingsIngredientCacheDescription": "Zutaten-Cache", + "@settingsIngredientCacheDescription": {}, + "routines": "Routinen", + "@routines": {}, + "newRoutine": "Neue Routine", + "@newRoutine": {}, + "noRoutines": "Du hast keine Routinen", + "@noRoutines": {}, + "sets": "Sätze", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "restTime": "Pausenzeit", + "@restTime": {}, + "restDay": "Ruhetag", + "@restDay": {}, + "copyToClipboard": "In Zwischenablage kopieren", + "@copyToClipboard": {}, + "min": "Min", + "@min": {}, + "apiToken": "API Token", + "@apiToken": {}, + "useApiToken": "API Token benutzen", + "@useApiToken": {}, + "useUsernameAndPassword": "Nutzername und Passwort benutzen", + "@useUsernameAndPassword": {}, + "invalidApiToken": "Bitte geben Sie einen gültigen API-Schlüssel ein", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "Ein API-Schlüssel darf nur die Buchstaben a-f und die Zahlen 0-9 enthalten und genau 40 Zeichen lang sein", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "exerciseNr": "Übung {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": "Supersatz {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" + } + } + }, + "isRestDay": "Ist Ruhetag", + "@isRestDay": {}, + "goalTypeMeals": "Von Mahlzeiten", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeAdvanced": "Fortgeschritten", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "addSuperset": "Supersatz hinzufügen", + "@addSuperset": {}, + "setHasNoExercises": "Dieser Satz enthält noch keine Übungen!", + "@setHasNoExercises": {}, + "simpleMode": "Einfacher Modus", + "@simpleMode": {}, + "darkMode": "Immer Dunkelmodus", + "@darkMode": {}, + "errorViewDetails": "Technische Details", + "@errorViewDetails": {}, + "simpleModeHelp": "Blenden Sie einige der erweiterten Einstellungen beim Bearbeiten von Übungen aus", + "@simpleModeHelp": {}, + "isRestDayHelp": "Bitte beachten Sie, dass alle Sätze und Übungen entfernt werden, wenn Sie einen Tag als Ruhetag markieren.", + "@isRestDayHelp": {}, + "needsLogsToAdvance": "Benötigt Eintrag, um fortzufahren", + "@needsLogsToAdvance": {}, + "needsLogsToAdvanceHelp": "Wählen Sie aus, ob die Routine nur dann zum nächsten geplanten Tag fortgesetzt werden soll, wenn Sie für diesen Tag ein Training protokolliert haben", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Tage in der Routine", + "@routineDays": {}, + "resultingRoutine": "Resultierende Routine", + "@resultingRoutine": {}, + "errorInfoDescription": "Es tut uns leid, aber etwas ist schiefgelaufen. Sie können uns helfen, das Problem zu beheben, indem Sie es auf GitHub melden.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Sie können die App weiterhin verwenden, einige Funktionen funktionieren jedoch möglicherweise nicht.", + "@errorInfoDescription2": {}, + "errorCouldNotConnectToServer": "Verbindung zum Server konnte nicht hergestellt werden", + "@errorCouldNotConnectToServer": {}, + "max": "Max", + "@max": {}, + "aboutWhySupportTitle": "Open Source und kostenlos nutzbar ❤️", + "@aboutWhySupportTitle": {}, + "aboutBugsListTitle": "Ein Problem melden oder eine Funktion vorschlagen", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Übersetzen Sie die Anwendung", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Quellcode anzeigen", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Treten Sie der Community bei", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Sonstiges", + "@others": {}, + "setHasProgression": "Set hat Fortschritt", + "@setHasProgression": {}, + "progressionRules": "Diese Übung unterliegt Fortschrittsregeln und kann in der mobilen App nicht bearbeitet werden. Bitte verwenden Sie die Webanwendung, um diese Übung zu bearbeiten.", + "@progressionRules": {}, + "goalTypeBasic": "Normal", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "indicatorRaw": "raw", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "overallChangeWeight": "Allgemeine Veränderung", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "indicatorAvg": "Durchschn.", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "Theme Modus", + "@themeMode": {}, + "lightMode": "Immer Hellmodus", + "@lightMode": {}, + "systemMode": "Systemeinstellungen", + "@systemMode": {}, + "errorCouldNotConnectToServerDetails": "Die Anwendung konnte keine Verbindung zum Server herstellen. Bitte überprüfen Sie Ihre Internetverbindung oder die Server-URL und versuchen Sie es erneut. Sollte das Problem weiterhin bestehen, wenden Sie sich an den Serveradministrator.", + "@errorCouldNotConnectToServerDetails": {}, + "fitInWeek": "Tage in die Woche einpassen", + "@fitInWeek": {}, + "fitInWeekHelp": "Wenn diese Option aktiviert ist, wiederholen sich die Tage in einem wöchentlichen Zyklus, andernfalls folgen die Tage der Reihe nach, ohne Rücksicht auf den Beginn einer neuen Woche.", + "@fitInWeekHelp": {}, + "aboutContributeText": "Beiträge aller Art sind willkommen. Egal, ob Sie Entwickler, Übersetzer oder einfach nur Fitnessbegeisterter sind – jede Unterstützung ist willkommen!", + "@aboutContributeText": {}, + "aboutContributeTitle": "Beitragen", + "@aboutContributeTitle": {}, + "resistance_band": "Widerstandsband", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "setHasProgressionWarning": "Bitte beachten Sie, dass es derzeit nicht möglich ist, alle Einstellungen für ein Set in der mobilen Anwendung zu bearbeiten oder den automatischen Fortschritt zu konfigurieren. Nutzen Sie vorerst bitte die Webanwendung.", + "@setHasProgressionWarning": {}, + "useColors": "farbig", + "@useColors": {}, + "barWeight": "Gewicht der Stange", + "@barWeight": {}, + "selectAvailablePlates": "Verfügbare Platten auswählen", + "@selectAvailablePlates": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Dein aktueller Ernährungsplan enthält keine Gerichte", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Gehe zum Ernährungsplaner um Gerichte hinzuzufügen", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "endDate": "Enddatum", + "@endDate": {}, + "startDate": "Anfangsdatum", + "@startDate": {}, + "applicationLogs": "Anwendungsprotokolle", + "@applicationLogs": {} } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 3cc82f34..163674e2 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -387,6 +387,18 @@ "@date": { "description": "The date of a workout log or body weight entry" }, + "creationDate": "Start date", + "@creationDate": { + "description": "The Start date of a nutritional plan" + }, + "endDate": "End date", + "@endDate": { + "description": "The End date of a nutritional plan" + }, + "openEnded": "Open ended", + "@openEnded": { + "description": "When a nutrition plan has no pre-defined end date" + }, "value": "Value", "@value": { "description": "The value of a measurement entry" diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 4a7635dd..908c1a46 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -1,751 +1,1020 @@ { - "exercise": "Ejercicio", - "@exercise": { - "description": "An exercise for a workout" - }, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "reps": "Repeticiones", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "selectIngredient": "Por favor selecciona un ingrediente", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "enterValidNumber": "Por favor ingresa un número válido", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "nrOfSets": "Series por ejercicio: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "enterCharacters": "Por favor ingresa entre {min} y {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" - } - } - }, - "selectExercise": "Por favor selecciona un ejercicio", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterValue": "Por favor ingresa un valor", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "goToToday": "Ir a \"hoy\"", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "calendar": "Calendario", - "@calendar": {}, - "aboutDescription": "¡Gracias por usar wger! wger es un proyecto colaborativo de código abierto, realizado por entusiastas del fitness de todo el planeta.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "toggleDetails": "Alternar detalles", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "newNutritionalPlan": "Nuevo plan nutricional", - "@newNutritionalPlan": {}, - "confirmDelete": "¿Estás seguro de que deseas borrar '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "delete": "Borrar", - "@delete": {}, - "loadingText": "Cargando...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "edit": "Editar", - "@edit": {}, - "noWeightEntries": "No tienes entradas de peso registradas", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "newEntry": "Nueva entrada", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "unit": "Unidad", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "amount": "Cantidad", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "sodium": "Sodio", - "@sodium": {}, - "fiber": "Fibra", - "@fiber": {}, - "saturatedFat": "Grasas saturadas", - "@saturatedFat": {}, - "fat": "Grasas", - "@fat": {}, - "sugars": "Azúcares", - "@sugars": {}, - "carbohydrates": "Carbohidratos", - "@carbohydrates": {}, - "protein": "Proteína", - "@protein": {}, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "energy": "Energía", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "ingredient": "Ingrediente", - "@ingredient": {}, - "timeEnd": "Tiempo de fin", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStart": "Tiempo de inicio", - "@timeStart": { - "description": "The starting time of a workout" - }, - "time": "Tiempo", - "@time": { - "description": "The time of a meal or workout" - }, - "start": "Iniciar", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "date": "Fecha", - "@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" - }, - "anErrorOccurred": "¡Un error ha ocurrido!", - "@anErrorOccurred": {}, - "noNutritionalPlans": "No tienes planes nutricionales", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "nutritionalPlans": "Planes nutricionales", - "@nutritionalPlans": {}, - "nutritionalDiary": "Diario nutricional", - "@nutritionalDiary": {}, - "nutritionalPlan": "Plan nutricional", - "@nutritionalPlan": {}, - "addIngredient": "Agregar ingrediente", - "@addIngredient": {}, - "logMeal": "Registar esta comida", - "@logMeal": {}, - "mealLogged": "Comida registrada en el diario", - "@mealLogged": {}, - "addMeal": "Agregar comida", - "@addMeal": {}, - "addSet": "Agregar serie", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "cancel": "Cancelar", - "@cancel": {}, - "save": "Guardar", - "@save": {}, - "description": "Descripción", - "@description": {}, - "logHelpEntriesUnits": "Tenga en cuenta que solo se registran las entradas con una unidad de peso (kg o lb) y las repeticiones; aquí se ignoran otras combinaciones, como el tiempo o hasta el fallo.", - "@logHelpEntriesUnits": {}, - "logHelpEntries": "Si en un solo día hay más de una entrada con el mismo número de repeticiones, pero diferentes pesos, solo la entrada con mayor peso se mostrará en el diagrama.", - "@logHelpEntries": {}, - "todaysWorkout": "Tu rutina de hoy", - "@todaysWorkout": {}, - "gymMode": "Modo gimansio", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "selectExercises": "Si quieres hacer una superserie puedes buscar varios ejercicios, se agruparán juntos", - "@selectExercises": {}, - "newSet": "Nueva serie", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "newDay": "Nuevo día", - "@newDay": {}, - "workoutSession": "Sesión de entrenamiento", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "notes": "Notas personales", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "impression": "Impresión general", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "sameRepetitions": "Si haces las mismas repeticiones y el mismo peso para todas las series, solo puedes completar una fila. Por ejemplo, para 4 series solo ingrese 10 para las repeticiones, esto automáticamente se convierte en \"4 x 10\".", - "@sameRepetitions": {}, - "comment": "Comentario", - "@comment": { - "description": "Comment, additional information" - }, - "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 descripción de lo que se hace este día (ej. 'día de levantamientos') o qué partes del cuerpo se entrenan (ej. 'pecho y hombros')", - "@dayDescriptionHelp": {}, - "set": "Serie", - "@set": { - "description": "A set in a workout plan" - }, - "repetitionUnit": "Unidad de repetición", - "@repetitionUnit": {}, - "weightUnit": "Unidad de peso", - "@weightUnit": {}, - "rir": "ReR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "repetitions": "Repeticiones", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "addExercise": "Añadir ejercicio", - "@addExercise": {}, - "category": "Categoría", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "equipment": "Equipamiento", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "successfullySaved": "Guardado correctamente", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "successfullyDeleted": "Borrado correctamente", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "labelDashboard": "Tablero", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "labelWorkoutPlan": "Plan de ejercicios", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "labelWorkoutLogs": "Registros de entrenamientos", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "loginInstead": "¿Ya tiene una cuenta? Inicia sesión", - "@loginInstead": {}, - "registerInstead": "¿No tienes una cuenta? Regístrate ahora", - "@registerInstead": {}, - "reset": "Reiniciar", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "customServerHint": "Ingresa la dirección de tu propio servidor, de lo contrario se utilizará la dirección por default", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "customServerUrl": "URL de la instancia de wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "invalidUsername": "Por favor ingrese un nombre de usuario válido", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "username": "Nombre de usuario", - "@username": {}, - "email": "Dirección de correo electrónico", - "@email": {}, - "invalidEmail": "Por favor ingrese una dirección de correo electrónico válida", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "confirmPassword": "Confirmar contraseña", - "@confirmPassword": {}, - "password": "Contraseña", - "@password": {}, - "passwordTooShort": "La contraseña es demasiado corta", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "passwordsDontMatch": "Las contraseñas no coinciden", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "invalidUrl": "Por favor ingrese una URL válida", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "useCustomServer": "Usar servidor personalizado", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "useDefaultServer": "Usar servidor por defecto", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "register": "Registrarse", - "@register": { - "description": "Text for registration button" - }, - "logout": "Cerrar sesión", - "@logout": { - "description": "Text for logout button" - }, - "login": "Iniciar sesión", - "@login": { - "description": "Text for login button" - }, - "addImage": "Añadir imagen", - "@addImage": {}, - "gallery": "Galería", - "@gallery": {}, - "chooseFromLibrary": "Elije de la biblioteca de fotos", - "@chooseFromLibrary": {}, - "takePicture": "Toma una foto", - "@takePicture": {}, - "optionsLabel": "Opciones", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "selectImage": "Por favor selecciona una imagen", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "goToDetailPage": "Ir a la página de detalles", - "@goToDetailPage": {}, - "name": "Nombre", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "jumpTo": "Saltar 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" - }, - "musclesSecondary": "Músculos secundarios", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "muscles": "Músculos", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "labelBottomNavNutrition": "Nutrición", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavWorkout": "Rutina", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "usernameValidChars": "El nombre de usuario sólo puede contener letras, dígitos y los caracteres @, +, ., - y _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "total": "Total", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "percentEnergy": "Porcentaje de energía", - "@percentEnergy": {}, - "difference": "Diferencia", - "@difference": {}, - "macronutrients": "Macronutrientes", - "@macronutrients": {}, - "timeStartAhead": "La hora de inicio no puede adelantarse a la hora de finalización", - "@timeStartAhead": {}, - "measurements": "Medidas", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurement": "Medida", - "@measurement": {}, - "measurementCategoriesHelpText": "Categoría de medición, como \"bíceps\" o \"grasa corporal", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "La unidad utilizada para medir la categoría, como \"cm\" o \"%\"", - "@measurementEntriesHelpText": {}, - "value": "Valor", - "@value": { - "description": "The value of a measurement entry" - }, - "dataCopied": "Datos copiados a la nueva entrada", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "searchExercise": "Busca el ejercicio para añadirlo", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "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" - }, - "fatShort": "G", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "logIngredient": "Guardar en el diario nutricional", - "@logIngredient": {}, - "plateCalculatorNotDivisible": "No se puede obtener el peso con las placas disponbles", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "plateCalculator": "Placas", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "searchIngredient": "Buscar ingrediente", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "rirNotUsed": "Valor ReR sin usar", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "planned": "Previsto", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "logged": "Registrado", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "gPerBodyKg": "g por kg de peso corporal", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "setUnitsAndRir": "Unidades de serie y ReR", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "recentlyUsedIngredients": "Ingredientes añadidos recientemente", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "appUpdateTitle": "Es necesario actualizar", - "@appUpdateTitle": {}, - "appUpdateContent": "Esta versión de la aplicación no es compatible con el servidor. Por favor, actualízala.", - "@appUpdateContent": {}, - "productFoundDescription": "El código de barras corresponde a este producto: {productName}. ¿Deseas continuar?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "weekAverage": "Promedio de 7 días", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "productFound": "Producto encontrado", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productNotFound": "Producto no encontrado", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "productNotFoundDescription": "El producto con el código de barras escaneado {barcode} no se ha encontrado en la base de datos de wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Escanear código de barras", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Cerrar", - "@close": { - "description": "Translation for close" - }, - "noMeasurementEntries": "No has ingresado medidas", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Agrega una nueva medida", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "variations": "Variantes", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "alsoKnownAs": "También conocido como: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "exercise": "Ejercicio", + "@exercise": { + "description": "An exercise for a workout" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmail": "Correo electrónico verificado", - "@verifiedEmail": {}, - "alternativeNames": "Nombres alternativos", - "@alternativeNames": {}, - "unVerifiedEmail": "Correo electrónico no verificado", - "@unVerifiedEmail": {}, - "verifiedEmailInfo": "Se envió un correo electrónico de verificación a {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "oneNamePerLine": "Un nombre por línea", - "@oneNamePerLine": {}, - "whatVariationsExist": "¿Qué variantes de este ejercicio existen, si las hay?", - "@whatVariationsExist": {}, - "previous": "Anterior", - "@previous": {}, - "next": "Siguiente", - "@next": {}, - "images": "Imágenes", - "@images": {}, - "language": "Lenguaje", - "@language": {}, - "contributeExercise": "Aporta un ejercicio", - "@contributeExercise": {}, - "translation": "Traducción", - "@translation": {}, - "translateExercise": "Traduce este ejercicio ahora", - "@translateExercise": {}, - "baseData": "Conceptos básicos en Inglés", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "minutes": "Minutos", - "@minutes": {}, - "glutes": "Glúteos", - "@glutes": {}, - "kilometers": "Kilómetros", - "@kilometers": {}, - "until_failure": "Hasta el fallo", - "@until_failure": {}, - "seconds": "Segundos", - "@seconds": {}, - "bench": "Banco", - "@bench": {}, - "barbell": "Barra con pesas", - "@barbell": {}, - "triceps": "Tríceps", - "@triceps": {}, - "swiss_ball": "Pelota Suiza", - "@swiss_ball": {}, - "none__bodyweight_exercise_": "Ninguno (ejercicio de peso corporal)", - "@none__bodyweight_exercise_": {}, - "lower_back": "Espalda baja", - "@lower_back": {}, - "hamstrings": "Isquiotibiales", - "@hamstrings": {}, - "calves": "Pantorrillas", - "@calves": {}, - "chest": "Pecho", - "@chest": {}, - "kettlebell": "Pesa rusa", - "@kettlebell": {}, - "dumbbell": "Mancuerna", - "@dumbbell": {}, - "gym_mat": "Colchoneta", - "@gym_mat": {}, - "abs": "Abdominales", - "@abs": {}, - "incline_bench": "Banco inclinado", - "@incline_bench": {}, - "miles": "Millas", - "@miles": {}, - "legs": "Piernas", - "@legs": {}, - "back": "Espalda", - "@back": {}, - "quads": "Cuádriceps", - "@quads": {}, - "arms": "Brazos", - "@arms": {}, - "aboutPageTitle": "Acerca de Wger", - "@aboutPageTitle": {}, - "userProfile": "Tu perfil", - "@userProfile": {}, - "exerciseList": "Lista de ejercicios", - "@exerciseList": {}, - "exercises": "Ejercicios", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Nombre del Ejercicio", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "selectEntry": "Por favor selecciona una entrada", - "@selectEntry": {}, - "baseNameEnglish": "Todos los ejercicios necesitan un nombre base en Inglés", - "@baseNameEnglish": {}, - "lats": "Laterales", - "@lats": {}, - "enterMinCharacters": "Por favor ingresa al 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" - } - } - }, - "add_exercise_image_license": "Las imágenes deben ser compatibles con la licencia CC BY SA. Si tienes dudas, sube solamente fotos que hayas tomado tú mismo.", - "@add_exercise_image_license": {}, - "biceps": "Bíceps", - "@biceps": {}, - "verifiedEmailReason": "Necesitas verificar tu correo electrónico para contribuir con ejercicios", - "@verifiedEmailReason": {}, - "pull_up_bar": "Barra de dominadas", - "@pull_up_bar": {}, - "shoulders": "Hombros", - "@shoulders": {}, - "sz_bar": "Barra SZ", - "@sz_bar": {}, - "searchNamesInEnglish": "También busque nombres en Ingles", - "@searchNamesInEnglish": {}, - "cacheWarning": "Debido al cache, puede tomar un tiempo hasta que los cambios sean visibles en toda la aplicación.", - "@cacheWarning": {}, - "cardio": "Aerobico", - "@cardio": {}, - "contributeExerciseWarning": "Podes contribuir ejercicios únicamente si tu cuenta tiene más de {days} días y tu email fue verificado", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "success": "Éxito", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "verify": "Verificar", - "@verify": {}, - "textPromptTitle": "¿Listo para comenzar?", - "@textPromptTitle": {}, - "textPromptSubheading": "Presione el botón para continuar", - "@textPromptSubheading": {}, - "lb": "lb", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "max_reps": "Reps Max", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "body_weight": "Peso Corporal", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Kilómetros por Hora", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Millas por Hora", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Platos", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "kg": "Kg", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "useMetric": "Utilizar unidades metricas para el peso corporal", - "@useMetric": {}, - "settingsTitle": "Configuraciones", - "@settingsTitle": {}, - "settingsCacheTitle": "Cache", - "@settingsCacheTitle": {}, - "settingsCacheDeletedSnackbar": "Cache borrado exitosamente", - "@settingsCacheDeletedSnackbar": {}, - "log": "Registro", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Listo", - "@done": {}, - "noMatchingExerciseFound": "No se encontraron ejercicios que coincidan", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "settingsExerciseCacheDescription": "Cache de ejercicios", - "@settingsExerciseCacheDescription": {}, - "aboutDonateTitle": "Donar", - "@aboutDonateTitle": {}, - "aboutDonateText": "Invítanos un café para ayudar al proyecto, cubrir los costos del servidor y mantenernos activos", - "@aboutDonateText": {} + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "reps": "Repeticiones", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "selectIngredient": "Por favor selecciona un ingrediente", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "enterValidNumber": "Por favor ingresa un número válido", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "nrOfSets": "Series por ejercicio: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "enterCharacters": "Por favor ingresa entre {min} y {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" + } + } + }, + "selectExercise": "Por favor selecciona un ejercicio", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterValue": "Por favor ingresa un valor", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "goToToday": "Ir a \"hoy\"", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "calendar": "Calendario", + "@calendar": {}, + "aboutDescription": "¡Gracias por usar wger! wger es un proyecto colaborativo de código abierto, realizado por entusiastas del fitness de todo el planeta.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "toggleDetails": "Alternar detalles", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "newNutritionalPlan": "Nuevo plan nutricional", + "@newNutritionalPlan": {}, + "confirmDelete": "¿Estás seguro de que deseas borrar '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "delete": "Borrar", + "@delete": {}, + "loadingText": "Cargando...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "edit": "Editar", + "@edit": {}, + "noWeightEntries": "No tienes entradas de peso registradas", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "newEntry": "Nueva entrada", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "unit": "Unidad", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "amount": "Cantidad", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "sodium": "Sodio", + "@sodium": {}, + "fiber": "Fibra", + "@fiber": {}, + "saturatedFat": "Grasas saturadas", + "@saturatedFat": {}, + "fat": "Grasas", + "@fat": {}, + "sugars": "Azúcares", + "@sugars": {}, + "carbohydrates": "Carbohidratos", + "@carbohydrates": {}, + "protein": "Proteína", + "@protein": {}, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "energy": "Energía", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "ingredient": "Ingrediente", + "@ingredient": {}, + "timeEnd": "Tiempo de fin", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStart": "Tiempo de inicio", + "@timeStart": { + "description": "The starting time of a workout" + }, + "time": "Tiempo", + "@time": { + "description": "The time of a meal or workout" + }, + "start": "Comenzar", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "date": "Fecha", + "@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" + }, + "anErrorOccurred": "¡Un error ha ocurrido!", + "@anErrorOccurred": {}, + "noNutritionalPlans": "No tienes planes nutricionales", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "nutritionalPlans": "Planes nutricionales", + "@nutritionalPlans": {}, + "nutritionalDiary": "Diario nutricional", + "@nutritionalDiary": {}, + "nutritionalPlan": "Plan nutricional", + "@nutritionalPlan": {}, + "addIngredient": "Agregar ingrediente", + "@addIngredient": {}, + "logMeal": "Registrar esta comida", + "@logMeal": {}, + "mealLogged": "Comida registrada en el diario", + "@mealLogged": {}, + "addMeal": "Agregar comida", + "@addMeal": {}, + "addSet": "Agregar serie", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "cancel": "Cancelar", + "@cancel": {}, + "save": "Guardar", + "@save": {}, + "description": "Descripción", + "@description": {}, + "logHelpEntriesUnits": "Tenga en cuenta que solo se registran las entradas con una unidad de peso (kg o lb) y las repeticiones; aquí se ignoran otras combinaciones, como el tiempo o hasta el fallo.", + "@logHelpEntriesUnits": {}, + "logHelpEntries": "Si en un solo día hay más de una entrada con el mismo número de repeticiones, pero diferentes pesos, solo la entrada con mayor peso se mostrará en el diagrama.", + "@logHelpEntries": {}, + "todaysWorkout": "Tu rutina de hoy", + "@todaysWorkout": {}, + "gymMode": "Modo gimansio", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "selectExercises": "Si quieres hacer una superserie puedes buscar varios ejercicios, se agruparán juntos", + "@selectExercises": {}, + "newSet": "Nueva serie", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "newDay": "Nuevo día", + "@newDay": {}, + "workoutSession": "Sesión de entrenamiento", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "notes": "Notas personales", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "impression": "Impresión general", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "sameRepetitions": "Si haces las mismas repeticiones y el mismo peso para todas las series, solo puedes completar una fila. Por ejemplo, para 4 series solo ingrese 10 para las repeticiones, esto automáticamente se convierte en \"4 x 10\".", + "@sameRepetitions": {}, + "comment": "Comentar", + "@comment": { + "description": "Comment, additional information" + }, + "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 descripción de lo que se hace este día (ej. 'día de levantamientos') o qué partes del cuerpo se entrenan (ej. 'pecho y hombros')", + "@dayDescriptionHelp": {}, + "set": "Serie", + "@set": { + "description": "A set in a workout plan" + }, + "repetitionUnit": "Unidad de repetición", + "@repetitionUnit": {}, + "weightUnit": "Unidad de peso", + "@weightUnit": {}, + "rir": "ReR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "repetitions": "Repeticiones", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "addExercise": "Añadir ejercicio", + "@addExercise": {}, + "category": "Categoría", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "equipment": "Equipamiento", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "successfullySaved": "Guardado correctamente", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "successfullyDeleted": "Borrado", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "labelDashboard": "Tablero", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "labelWorkoutPlan": "Plan de ejercicios", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelWorkoutLogs": "Registros de entrenamientos", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "loginInstead": "¿Ya tiene una cuenta? Inicia sesión", + "@loginInstead": {}, + "registerInstead": "¿No tienes una cuenta? Regístrate ahora", + "@registerInstead": {}, + "reset": "Reiniciar", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "customServerHint": "Ingresa la dirección de tu propio servidor, de lo contrario se utilizará la dirección por default", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "customServerUrl": "URL de la instancia de wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "invalidUsername": "Por favor, ingrese un nombre de usuario válido", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "username": "Nombre de usuario", + "@username": {}, + "email": "Dirección de correo electrónico", + "@email": {}, + "invalidEmail": "Por favor, introduce una dirección de correo electrónico válida", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "confirmPassword": "Confirmar contraseña", + "@confirmPassword": {}, + "password": "Contraseña", + "@password": {}, + "passwordTooShort": "La contraseña es demasiado corta", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "passwordsDontMatch": "Las contraseñas no coinciden", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "invalidUrl": "Por favor, introduzca una URL válida", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "useCustomServer": "Utilizar un servidor personalizado", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useDefaultServer": "Usar el servidor predeterminado", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "register": "Registrarse", + "@register": { + "description": "Text for registration button" + }, + "logout": "Cerrar sesión", + "@logout": { + "description": "Text for logout button" + }, + "login": "Iniciar sesión", + "@login": { + "description": "Text for login button" + }, + "addImage": "Añadir imagen", + "@addImage": {}, + "gallery": "Galería", + "@gallery": {}, + "chooseFromLibrary": "Elije de la biblioteca de fotos", + "@chooseFromLibrary": {}, + "takePicture": "Toma una foto", + "@takePicture": {}, + "optionsLabel": "Opciones", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "selectImage": "Por favor selecciona una imagen", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "goToDetailPage": "Ir a la página de detalles", + "@goToDetailPage": {}, + "name": "Nombre", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "jumpTo": "Saltar 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" + }, + "musclesSecondary": "Músculos secundarios", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "muscles": "Músculos", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "labelBottomNavNutrition": "Nutrición", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavWorkout": "Rutina", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "usernameValidChars": "Un nombre de usuario solo puede contener letras, dígitos y los caracteres @, +, ., - y _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "total": "Total", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "percentEnergy": "Porcentaje de energía", + "@percentEnergy": {}, + "difference": "Diferencia", + "@difference": {}, + "macronutrients": "Macronutrientes", + "@macronutrients": {}, + "timeStartAhead": "La hora de inicio no puede adelantarse a la hora de finalización", + "@timeStartAhead": {}, + "measurements": "Medidas", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurement": "Medida", + "@measurement": {}, + "measurementCategoriesHelpText": "Categoría de medición, como \"bíceps\" o \"grasa corporal\"", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "La unidad utilizada para medir la categoría, como \"cm\" o \"%\"", + "@measurementEntriesHelpText": {}, + "value": "Valor", + "@value": { + "description": "The value of a measurement entry" + }, + "dataCopied": "Datos copiados a la nueva entrada", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "searchExercise": "Busca el ejercicio para añadirlo", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "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" + }, + "fatShort": "G", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "logIngredient": "Registrar en el diario nutricional", + "@logIngredient": {}, + "plateCalculatorNotDivisible": "No se puede obtener el peso con las placas disponbles", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "plateCalculator": "Placas", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "searchIngredient": "Buscar ingrediente", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "rirNotUsed": "Valor ReR sin usar", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "planned": "Previsto", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "logged": "Registrado", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "gPerBodyKg": "g por kg de peso corporal", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "setUnitsAndRir": "Unidades de serie y ReR", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "recentlyUsedIngredients": "Ingredientes añadidos recientemente", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "appUpdateTitle": "Es necesario actualizar", + "@appUpdateTitle": {}, + "appUpdateContent": "Esta versión de la aplicación no es compatible con el servidor. Por favor, actualízala.", + "@appUpdateContent": {}, + "productFoundDescription": "El código de barras corresponde a este producto: {productName}. ¿Deseas continuar?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "weekAverage": "Promedio de 7 días", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "productFound": "Producto encontrado", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productNotFound": "Producto no encontrado", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "productNotFoundDescription": "El producto con el código de barras escaneado {barcode} no se ha encontrado en la base de datos de wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Escanear código de barras", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Cerrar", + "@close": { + "description": "Translation for close" + }, + "noMeasurementEntries": "No has ingresado medidas", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Agrega una nueva medida", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "variations": "Variantes", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "También conocido como: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmail": "Correo electrónico verificado", + "@verifiedEmail": {}, + "alternativeNames": "Nombres alternativos", + "@alternativeNames": {}, + "unVerifiedEmail": "Correo electrónico no verificado", + "@unVerifiedEmail": {}, + "verifiedEmailInfo": "Se envió un correo electrónico de verificación a {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "oneNamePerLine": "Un nombre por línea", + "@oneNamePerLine": {}, + "whatVariationsExist": "¿Qué variantes de este ejercicio existen, si las hay?", + "@whatVariationsExist": {}, + "previous": "Anterior", + "@previous": {}, + "next": "Siguiente", + "@next": {}, + "images": "Imágenes", + "@images": {}, + "language": "Lenguaje", + "@language": {}, + "contributeExercise": "Aporta un ejercicio", + "@contributeExercise": {}, + "translation": "Traducción", + "@translation": {}, + "translateExercise": "Traduce este ejercicio ahora", + "@translateExercise": {}, + "baseData": "Conceptos básicos en Inglés", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "minutes": "Minutos", + "@minutes": {}, + "glutes": "Glúteos", + "@glutes": {}, + "kilometers": "Kilómetros", + "@kilometers": {}, + "until_failure": "Hasta el fallo", + "@until_failure": {}, + "seconds": "Segundos", + "@seconds": {}, + "bench": "Banco", + "@bench": {}, + "barbell": "Barra con pesas", + "@barbell": {}, + "triceps": "Tríceps", + "@triceps": {}, + "swiss_ball": "Pelota Suiza", + "@swiss_ball": {}, + "none__bodyweight_exercise_": "Ninguno (ejercicio de peso corporal)", + "@none__bodyweight_exercise_": {}, + "lower_back": "Espalda baja", + "@lower_back": {}, + "hamstrings": "Isquiotibiales", + "@hamstrings": {}, + "calves": "Pantorrillas", + "@calves": {}, + "chest": "Pecho", + "@chest": {}, + "kettlebell": "Pesa rusa", + "@kettlebell": {}, + "dumbbell": "Mancuerna", + "@dumbbell": {}, + "gym_mat": "Colchoneta", + "@gym_mat": {}, + "abs": "Abdominales", + "@abs": {}, + "incline_bench": "Banco inclinado", + "@incline_bench": {}, + "miles": "Millas", + "@miles": {}, + "legs": "Piernas", + "@legs": {}, + "back": "Espalda", + "@back": {}, + "quads": "Cuádriceps", + "@quads": {}, + "arms": "Brazos", + "@arms": {}, + "aboutPageTitle": "Acerca de Wger y soporte", + "@aboutPageTitle": {}, + "userProfile": "Tu perfil", + "@userProfile": {}, + "exerciseList": "Lista de ejercicios", + "@exerciseList": {}, + "exercises": "Ejercicios", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Nombre del Ejercicio", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "selectEntry": "Por favor selecciona una entrada", + "@selectEntry": {}, + "baseNameEnglish": "Todos los ejercicios necesitan un nombre base en Inglés", + "@baseNameEnglish": {}, + "lats": "Laterales", + "@lats": {}, + "enterMinCharacters": "Por favor ingresa al 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" + } + } + }, + "add_exercise_image_license": "Las imágenes deben ser compatibles con la licencia CC BY SA. Si tienes dudas, sube solamente fotos que hayas tomado tú mismo.", + "@add_exercise_image_license": {}, + "biceps": "Bíceps", + "@biceps": {}, + "verifiedEmailReason": "Necesitas verificar tu correo electrónico para contribuir con ejercicios", + "@verifiedEmailReason": {}, + "pull_up_bar": "Barra de dominadas", + "@pull_up_bar": {}, + "shoulders": "Hombros", + "@shoulders": {}, + "sz_bar": "Barra SZ", + "@sz_bar": {}, + "searchNamesInEnglish": "También busque nombres en Ingles", + "@searchNamesInEnglish": {}, + "cacheWarning": "Debido al cache, puede tomar un tiempo hasta que los cambios sean visibles en toda la aplicación.", + "@cacheWarning": {}, + "cardio": "Aerobico", + "@cardio": {}, + "contributeExerciseWarning": "Podes contribuir ejercicios únicamente si tu cuenta tiene más de {days} días y tu email fue verificado", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "success": "Éxito", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "verify": "Verificar", + "@verify": {}, + "textPromptTitle": "¿Listo para comenzar?", + "@textPromptTitle": {}, + "textPromptSubheading": "Presione el botón para continuar", + "@textPromptSubheading": {}, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Reps Max", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "body_weight": "Peso Corporal", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilómetros por Hora", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Millas por Hora", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Platos", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "kg": "Kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "useMetric": "Utilizar unidades metricas para el peso corporal", + "@useMetric": {}, + "settingsTitle": "Configuraciones", + "@settingsTitle": {}, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "settingsCacheDeletedSnackbar": "Cache borrado exitosamente", + "@settingsCacheDeletedSnackbar": {}, + "log": "Registro", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Listo", + "@done": {}, + "noMatchingExerciseFound": "No se encontraron ejercicios que coincidan", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "settingsExerciseCacheDescription": "Cache de ejercicios", + "@settingsExerciseCacheDescription": {}, + "aboutDonateTitle": "Realizar una donación", + "@aboutDonateTitle": {}, + "aboutDonateText": "Si bien el proyecto es gratuito y siempre lo seguirá siendo, ¡ejecutar el servidor no lo es! El desarrollo también requiere mucho tiempo y esfuerzo por parte de los voluntarios. Su contribución respalda directamente estos costos, lo que ayuda a mantener el servicio confiable.", + "@aboutDonateText": {}, + "selectAvailablePlates": "Elige los discos disponibles", + "@selectAvailablePlates": {}, + "barWeight": "Peso de la barra", + "@barWeight": {}, + "useColors": "Usar colores", + "@useColors": {}, + "useApiToken": "Usar tokens API", + "@useApiToken": {}, + "useUsernameAndPassword": "Utilizar usuario y contraseña", + "@useUsernameAndPassword": {}, + "apiToken": "Token API", + "@apiToken": {}, + "invalidApiToken": "Por favor, Introduzca una clave API válida", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "Una clave API solo puede contener las letras a-f, números 0-9 y tener exactamente 40 caracteres de longitud", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "noIngredientsDefined": "Aún no se definen ingredientes", + "@noIngredientsDefined": {}, + "routines": "Rutinas", + "@routines": {}, + "newRoutine": "Nueva rutina", + "@newRoutine": {}, + "noRoutines": "No hay rutinas", + "@noRoutines": {}, + "restTime": "Tiempo de descanso", + "@restTime": {}, + "sets": "El número de rondas para cada ejercicio", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "exerciseNr": "Ejercicio {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": "Día de descanso", + "@restDay": {}, + "isRestDay": "Descanso", + "@isRestDay": {}, + "isRestDayHelp": "Favor de considerar que todos los sets y ejercicios se eliminarán al marcar el día como descanso.", + "@isRestDayHelp": {}, + "needsLogsToAdvance": "Necesita registros para avanzar", + "@needsLogsToAdvance": {}, + "needsLogsToAdvanceHelp": "Seleccione esta opción si desea que la rutina avance al siguiente día programado solo si ha registrado un entrenamiento para ese día", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Días en rutina", + "@routineDays": {}, + "resultingRoutine": "Rutina resultante", + "@resultingRoutine": {}, + "ingredientLogged": "Ingrediente registrado en el diario", + "@ingredientLogged": {}, + "onlyLogging": "Solo registrar las calorías", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Marque la casilla si solo desea registrar sus calorías y no desea configurar un plan nutricional detallado con comidas específicas", + "@onlyLoggingHelpText": {}, + "goalMacro": "Meta de Macros", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Selecciona una comida para registrar en el diario", + "@selectMealToLog": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Tu plan de nutrición no tiene comidas definidas", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Para agregar comidas al plan, vaya a los detalles del plan 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 proteina", + "@goalProtein": {}, + "goalCarbohydrates": "Objetivo de carbohidratos", + "@goalCarbohydrates": {}, + "goalFat": "Objetivo de grasas", + "@goalFat": {}, + "goalFiber": "Objetivo de fibra", + "@goalFiber": {}, + "errorInfoDescription": "Lo sentimos pero algo no ha funcionado como esperábamos. Puedes ayudarnos a arreglarlo reportando el problema en GitHub.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Puedes seguir utilizando la aplicación pero algunas características pueden no funcionar.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Detalles técnicos", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "No se pudo conectar con el servidor", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "La aplicación no se pudo conectar con el servidor. Por favor, comprueba to conexión a internet o la URL del servidor y prueba de nuevo. Si el problema persiste, contacta con el administrador del servidor.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "Copiar al portapapeles", + "@copyToClipboard": {}, + "max": "Máximo", + "@max": {}, + "aboutContributeTitle": "Contribuir", + "@aboutContributeTitle": {}, + "aboutContributeText": "Todos los tipos de contribuciones son bien recibidas. Ya seas desarrollador, traductor o un apasionado por el deporte, toda ayuda es bien recibida.", + "@aboutContributeText": {}, + "endDate": "Fecha de finalización", + "@endDate": {}, + "startDate": "Fecha de inicio", + "@startDate": {}, + "min": "Mínimo", + "@min": {}, + "chart30DaysTitle": "{name} ultimos 30 días", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartDuringPlanTitle": "{chartName} durante el plan 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" + } + } + }, + "today": "Hoy", + "@today": {}, + "loggedToday": "Registrado hoy", + "@loggedToday": {}, + "surplus": "exceso calórico", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "déficit calórico", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "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" + } + } + }, + "aboutWhySupportTitle": "Código abierto y de uso gratuito ❤️", + "@aboutWhySupportTitle": {}, + "aboutBugsListTitle": "Informar un problema o sugerir una característica", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Traducir la aplicación", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Ver código fuente", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Unirse a la comunidad", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Otros", + "@others": {}, + "fitInWeek": "En forma en una semana", + "@fitInWeek": {}, + "fitInWeekHelp": "Si está activado, los días se repetirán en un ciclo semanal, de la otra manera, los días serán secuenciales sin importar el inicio de una nueva semana.", + "@fitInWeekHelp": {}, + "addSuperset": "Añadir superserie", + "@addSuperset": {}, + "setHasNoExercises": "¡Esta rutina no tiene ejercicios!", + "@setHasNoExercises": {}, + "settingsIngredientCacheDescription": "Cache de ingredientes", + "@settingsIngredientCacheDescription": {}, + "simpleMode": "Modo simple", + "@simpleMode": {}, + "simpleModeHelp": "Ocultar ajustes avanzados cuando se editan los ejercicios", + "@simpleModeHelp": {}, + "progressionRules": "Este ejercicio tiene reglas de progresión y no puede ser editado en la aplicación móvil. Por favor, usa la aplicación web para editarlo.", + "@progressionRules": {}, + "resistance_band": "Banda de resistencia", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "overallChangeWeight": "Cambio general", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "De las comidas", + "@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": "Avanzado", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "raw", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "medio", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "Modo del tema", + "@themeMode": {}, + "darkMode": "Siempre en modo oscuro", + "@darkMode": {}, + "lightMode": "Siempre en modo claro", + "@lightMode": {}, + "systemMode": "Configuracion del sistema", + "@systemMode": {}, + "chartAllTimeTitle": "Histórico {name}", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "setHasProgression": "Set con progresión", + "@setHasProgression": {}, + "setHasProgressionWarning": "Tenga en cuenta que, por el momento, no es posible editar todos los ajustes de un set en la aplicación móvil ni configurar la progresión automática. Por ahora, utilice la aplicación web.", + "@setHasProgressionWarning": {}, + "applicationLogs": "Registro de la aplicación", + "@applicationLogs": {} } diff --git a/lib/l10n/app_fa.arb b/lib/l10n/app_fa.arb new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/lib/l10n/app_fa.arb @@ -0,0 +1 @@ +{} diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 52814b66..6300ff8c 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -1,1016 +1,1020 @@ { - "logHelpEntries": "Si durant une journée il y a plusieurs entrées avec le même nombre de répétitions, mais avec un poids différent, seule l’entrée avec le poids le plus haut sera affichée.", - "@logHelpEntries": {}, - "logHelpEntriesUnits": "Notez que seules les entrées comportant une unité de poids (kg ou lb) et des répétitions sont représentées dans le graphique. Les autres combinaisons, telles que le temps ou le niveau d’échec, sont ignorées ici.", - "@logHelpEntriesUnits": {}, - "weight": "Poids", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "confirmDelete": "Êtes-vous sûre de vouloir supprimer « {toDelete} » ?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "selectIngredient": "Veuillez sélectionner un ingrédient", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "enterValidNumber": "Veuillez entrer un nombre valide", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "enterValue": "Insérer un valeur", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "goToToday": "Aller à aujourd’hui", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "calendar": "Calendrier", - "@calendar": {}, - "toggleDetails": "Afficher les détails", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "newNutritionalPlan": "Nouveau programme nutritionnel", - "@newNutritionalPlan": {}, - "delete": "Supprimer", - "@delete": {}, - "loadingText": "Chargement…", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "edit": "Modifier", - "@edit": {}, - "noWeightEntries": "Aucune entrée de poids", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "newEntry": "Nouvelle entrée", - "@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": "Quantité", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "sodium": "Sodium", - "@sodium": {}, - "fiber": "fiber", - "@fiber": {}, - "saturatedFat": "Graisses saturées", - "@saturatedFat": {}, - "fat": "Graisses", - "@fat": {}, - "sugars": "Sucres", - "@sugars": {}, - "carbohydrates": "Glucides", - "@carbohydrates": {}, - "protein": "Protéines", - "@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": "Énergie", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "ingredient": "Ingrédient", - "@ingredient": {}, - "timeEnd": "Horaire de fin", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStart": "Horaire de départ", - "@timeStart": { - "description": "The starting time of a workout" - }, - "time": "Horaire", - "@time": { - "description": "The time of a meal or workout" - }, - "date": "Date", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "anErrorOccurred": "Une erreur s’est produite !", - "@anErrorOccurred": {}, - "noNutritionalPlans": "Aucun programme nutritionnel", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "nutritionalPlans": "Programmes nutritionnels", - "@nutritionalPlans": {}, - "nutritionalDiary": "Journal nutritionnel", - "@nutritionalDiary": {}, - "nutritionalPlan": "Programme nutritionnel", - "@nutritionalPlan": {}, - "addIngredient": "Ajouter ingrédients", - "@addIngredient": {}, - "mealLogged": "Repas journalisé", - "@mealLogged": {}, - "addMeal": "Ajouter un repas", - "@addMeal": {}, - "add": "Ajouter", - "@add": {}, - "cancel": "Supprimer", - "@cancel": {}, - "save": "Sauvegarder", - "@save": {}, - "description": "Description", - "@description": {}, - "gymMode": "Mode entraînement", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "newSet": "Nouvelle série", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "newDay": "Nouvelle journée", - "@newDay": {}, - "workoutSession": "Session d’entraînement", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "notes": "Notes", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "impression": "Impression", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "comment": "Commentaire", - "@comment": { - "description": "Comment, additional information" - }, - "rir": "RsR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "repetitions": "Répetitions", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "addExercise": "Ajouter un exercice", - "@addExercise": {}, - "exercise": "Exercice", - "@exercise": { - "description": "An exercise for a workout" - }, - "successfullyDeleted": "Supprimé", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "labelDashboard": "Accueil", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "labelWorkoutPlan": "Plan d’entraînement", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "registerInstead": "Vous n'avez pas de compte ? Inscrivez-vous maintenant", - "@registerInstead": {}, - "loginInstead": "Déjà un compte ? Connectez-vous", - "@loginInstead": {}, - "reset": "Réinitialiser", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "useCustomServer": "Utiliser le serveur personnalisé", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "customServerHint": "Entrez l’adresse de votre propre serveur, sinon le serveur par défaut sera utilisé", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "customServerUrl": "URL de l’instance wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "invalidUsername": "Veuillez entrer un nom d’utilisateur valide", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "username": "Nom d’utilisateur", - "@username": {}, - "email": "Adresse courriel", - "@email": {}, - "invalidEmail": "Veuillez entrer une adresse courriel valide", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "confirmPassword": "Confirmer le mot de passe", - "@confirmPassword": {}, - "password": "Mot de passe", - "@password": {}, - "passwordTooShort": "Le mot de passe est trop court", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "passwordsDontMatch": "Les mots de passe sont différents", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "invalidUrl": "Veuillez entrer une URL valide", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "useDefaultServer": "Utiliser le serveur par défaut", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "register": "S’inscrire", - "@register": { - "description": "Text for registration button" - }, - "login": "Se connecter", - "@login": { - "description": "Text for login button" - }, - "set": "Série", - "@set": { - "description": "A set in a workout plan" - }, - "repetitionUnit": "Unité des répétitions", - "@repetitionUnit": {}, - "weightUnit": "Unité de poids", - "@weightUnit": {}, - "reps": "Réps", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "nrOfSets": "Séries par exercice : {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "enterCharacters": "Veuillez saisir un nombre de caractères compris entre {min} et {max}", - "@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": "Veuillez sélectionner un exercice", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "aboutDescription": "Merci d’utiliser wger ! wger est un projet collaboratif à code source ouvert, réalisé par des passionnés de fitness du monde entier.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "start": "Démarrer", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "logMeal": "Journaliser ce repas dans l'agenda", - "@logMeal": {}, - "addSet": "Ajouter une série", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "todaysWorkout": "Entraînement d’aujourd’hui", - "@todaysWorkout": {}, - "selectExercises": "Si vous voulez faire une supersérie, vous pouvez rechercher plusieurs exercices, ils seront regroupés", - "@selectExercises": {}, - "sameRepetitions": "Si vous faites les mêmes répétitions et le même poids pour toutes les séries, vous pouvez simplement remplir une ligne. Par exemple, pour 4 séries, il suffit d’entrer 10 pour les répétitions, ce qui devient automatiquement « 4 × 10 ».", - "@sameRepetitions": {}, - "setNr": "Série {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": "Une description de ce qui est fait ce jour-ci (par exemple : « journée de tractions ») ou des parties du corps qui sont entraînées (par exemple : « poitrine et épaules »)", - "@dayDescriptionHelp": {}, - "category": "Catégorie", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "musclesSecondary": "Muscles secondaires", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "muscles": "Muscles", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "equipment": "Équippement", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "successfullySaved": "Enregistré", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "labelWorkoutLogs": "Journaux d’entraînement", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "logout": "Se déconnecter", - "@logout": { - "description": "Text for logout button" - }, - "addImage": "Ajouter une image", - "@addImage": {}, - "gallery": "Galerie", - "@gallery": {}, - "chooseFromLibrary": "Choisir depuis la bibliothèque", - "@chooseFromLibrary": {}, - "takePicture": "Prendre une photo", - "@takePicture": {}, - "selectImage": "Veuillez sélectionner une image", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "name": "Nom", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "optionsLabel": "Options", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "setUnitsAndRir": "Définir les unités et RiR", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "goToDetailPage": "Aller à la page de détails", - "@goToDetailPage": {}, - "jumpTo": "Aller à", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "pause": "Pause", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "rirNotUsed": "RiR non utilisé", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "searchExercise": "Chercher des exos à ajouter", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "labelBottomNavNutrition": "Nutrition", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavWorkout": "Entraînement", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "usernameValidChars": "Un nom d'utilisateur ne peut contenir que des lettres, des chiffres et les caractères @, +, ., - et _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "timeStartAhead": "L'heure de début ne peut pas être après à l'heure de fin", - "@timeStartAhead": {}, - "plateCalculatorNotDivisible": "Impossible d'atteindre le poids avec les disques disponibles", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "plateCalculator": "Disques", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "total": "Total", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "gPerBodyKg": "g par kg corporel", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "percentEnergy": "Pourcentage de l'énergie", - "@percentEnergy": {}, - "difference": "Différence", - "@difference": {}, - "logged": "Mangé", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "planned": "Prévu", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "macronutrients": "Macronutriments", - "@macronutrients": {}, - "value": "Valeur", - "@value": { - "description": "The value of a measurement entry" - }, - "measurementEntriesHelpText": "L'unité utilisée pour mesurer la catégorie, comme cm ou %", - "@measurementEntriesHelpText": {}, - "measurementCategoriesHelpText": "Catégorie de mesure, comme « biceps » ou « graisse corporelle »", - "@measurementCategoriesHelpText": {}, - "measurements": "Mesures", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurement": "Mesure", - "@measurement": {}, - "dataCopied": "Données copiées dans la nouvelle entrée", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "carbohydratesShort": "Gl", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "fatShort": "Gr", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "appUpdateTitle": "Mise à jour nécessaire", - "@appUpdateTitle": {}, - "appUpdateContent": "Cette version de l'application n'est pas compatible avec le serveur, veuillez mettre à jour votre application.", - "@appUpdateContent": {}, - "recentlyUsedIngredients": "Ingrédients récemment ajoutés", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "searchIngredient": "Rechercher un ingrédient", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "logIngredient": "Journaliser l'ingrédient dans l'agenda nutritionnel", - "@logIngredient": {}, - "close": "Fermer", - "@close": { - "description": "Translation for close" - }, - "productFound": "Produit trouvé", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "weekAverage": "Moyenne sur 7 jours", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "success": "Succès", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "alternativeNames": "Noms alternatifs", - "@alternativeNames": {}, - "oneNamePerLine": "Un nom par ligne", - "@oneNamePerLine": {}, - "selectEntry": "Veuillez sélectionner une entrée", - "@selectEntry": {}, - "variations": "Variantes", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "productFoundDescription": "Le code-barres correspond à ce produit : {productName}. Voulez-vous continuer ?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "productNotFoundDescription": "Le produit dont le code-barres a été scanné {barcode} n'a pas été trouvé dans la base de données wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "contributeExerciseWarning": "Vous ne pouvez contribuer aux exercices que si votre compte a plus de {days} jours et si vous avez vérifié votre adresse email", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "back": "Dos", - "@back": {}, - "enterMinCharacters": "Veuillez entrer au moins {min} caractères", - "@enterMinCharacters": { - "description": "Error message when the user hasn't entered the minimum amount characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - } - } - }, - "baseNameEnglish": "Tous les exercices doivent avoir un nom de base en anglais", - "@baseNameEnglish": {}, - "productNotFound": "Produit non trouvé", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "scanBarcode": "Scanner le code barre", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "add_exercise_image_license": "Les images doivent être compatibles avec la licence CC BY SA. En cas de doute, ne téléchargez que des photos que vous avez prises vous-même.", - "@add_exercise_image_license": {}, - "alsoKnownAs": "Aussi connu sous le nom de : {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "logHelpEntries": "Si durant une journée il y a plusieurs entrées avec le même nombre de répétitions, mais avec un poids différent, seule l’entrée avec le poids le plus haut sera affichée.", + "@logHelpEntries": {}, + "logHelpEntriesUnits": "Notez que seules les entrées comportant une unité de poids (kg ou lb) et des répétitions sont représentées dans le graphique. Les autres combinaisons, telles que le temps ou le niveau d’échec, sont ignorées ici.", + "@logHelpEntriesUnits": {}, + "weight": "Poids", + "@weight": { + "description": "The weight of a workout log or body weight entry" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmailReason": "Vous devez vérifier votre adresse e-mail pour contribuer aux exercices", - "@verifiedEmailReason": {}, - "verifiedEmailInfo": "Un email de vérification a été envoyé à {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "whatVariationsExist": "Quelles sont les variantes de cet exercice, s'il en existe ?", - "@whatVariationsExist": {}, - "previous": "Précédent", - "@previous": {}, - "next": "Suivant", - "@next": {}, - "images": "Photos", - "@images": {}, - "language": "Langues", - "@language": {}, - "contributeExercise": "Contribuer à un exercice", - "@contributeExercise": {}, - "translation": "Traduction", - "@translation": {}, - "translateExercise": "Traduire cet exercice maintenant", - "@translateExercise": {}, - "baseData": "Les bases en anglais", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "bench": "Banc", - "@bench": {}, - "glutes": "Fessiers", - "@glutes": {}, - "kilometers": "Kilomètres", - "@kilometers": {}, - "barbell": "Barre", - "@barbell": {}, - "lower_back": "Bas du dos", - "@lower_back": {}, - "swiss_ball": "Ballon de gymnastique", - "@swiss_ball": {}, - "triceps": "Triceps", - "@triceps": {}, - "none__bodyweight_exercise_": "aucun (exercice au poids du corps)", - "@none__bodyweight_exercise_": {}, - "biceps": "Biceps", - "@biceps": {}, - "chest": "Poitrine", - "@chest": {}, - "kettlebell": "Kettlebell", - "@kettlebell": {}, - "abs": "Abdos", - "@abs": {}, - "dumbbell": "Haltères", - "@dumbbell": {}, - "gym_mat": "Tapis de gymnastique", - "@gym_mat": {}, - "incline_bench": "Banc incliné", - "@incline_bench": {}, - "lats": "Grand dorsal", - "@lats": {}, - "miles": "Miles", - "@miles": {}, - "legs": "Jambes", - "@legs": {}, - "quads": "Quadriceps", - "@quads": {}, - "noMeasurementEntries": "Vous n'avez pas d'entrées de mesure", - "@noMeasurementEntries": {}, - "aboutPageTitle": "À propos de nous et assistance", - "@aboutPageTitle": {}, - "userProfile": "Votre profil", - "@userProfile": {}, - "exerciseList": "Liste d'exercices", - "@exerciseList": {}, - "exercises": "Exercices", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Nom de l'exercice", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "arms": "Bras", - "@arms": {}, - "sz_bar": "Barre EZ", - "@sz_bar": {}, - "moreMeasurementEntries": "Ajouter une mesure", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "hamstrings": "Ischio-jambiers", - "@hamstrings": {}, - "pull_up_bar": "Barre de traction", - "@pull_up_bar": {}, - "shoulders": "Epaules", - "@shoulders": {}, - "calves": "Mollets", - "@calves": {}, - "verifiedEmail": "Email vérifié", - "@verifiedEmail": {}, - "unVerifiedEmail": "Email non vérifié", - "@unVerifiedEmail": {}, - "cacheWarning": "En raison de la mise en cache, il peut s'écouler un certain temps avant que les changements soient visibles dans toute l'application.", - "@cacheWarning": {}, - "cardio": "Cardio", - "@cardio": {}, - "minutes": "Minutes", - "@minutes": {}, - "seconds": "Secondes", - "@seconds": {}, - "until_failure": "Jusqu'à l'échec", - "@until_failure": {}, - "textPromptTitle": "Prêt à commencer ?", - "@textPromptTitle": {}, - "textPromptSubheading": "Cliquez sur le bouton pour commencer", - "@textPromptSubheading": {}, - "body_weight": "Poids corporel", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Kilomètres Par Heure", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Miles Par Heure", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Disques de poids", - "@plates": { - "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" - }, - "searchNamesInEnglish": "Recherchez également des noms en anglais", - "@searchNamesInEnglish": {}, - "max_reps": "Reps Maxi", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "verify": "Vérifier", - "@verify": {}, - "noMatchingExerciseFound": "Aucun exercice correspondant n'a été trouvé", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "today": "Aujourd'hui", - "@today": {}, - "useMetric": "Utiliser le système métrique pour le poids du corps", - "@useMetric": {}, - "onlyLogging": "Suivre uniquement les calories", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Cochez la case si vous souhaitez uniquement enregistrer vos calories et ne souhaitez pas établir un plan nutritionnel détaillé avec des repas spécifiques", - "@onlyLoggingHelpText": {}, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "aboutDonateTitle": "Faire un don", - "@aboutDonateTitle": {}, - "goalEnergy": "Objectif énergétique", - "@goalEnergy": {}, - "loggedToday": "Journalisé aujourd'hui", - "@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" - } - } - }, - "noIngredientsDefined": "Aucun ingrédient défini pour le moment", - "@noIngredientsDefined": {}, - "ingredientLogged": "Ingrédient journalisé dans l'agenda", - "@ingredientLogged": {}, - "goalMacro": "Objectif de macronutriments", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "selectMealToLog": "Sélectionner un repas à journaliser dans l'agenda", - "@selectMealToLog": {}, - "goalCarbohydrates": "Objectif glucides", - "@goalCarbohydrates": {}, - "goalProtein": "Objectif protéines", - "@goalProtein": {}, - "goalFat": "Objectif gras", - "@goalFat": {}, - "goalFiber": "Objectif fibre", - "@goalFiber": {}, - "surplus": "surplus", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "déficit", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "aboutDonateText": "Si le projet est gratuit et le restera, l'exploitation du serveur ne l'est pas ! Le développement requiert également beaucoup de temps et d'efforts de la part des bénévoles. Votre contribution finance directement ces coûts et contribue à la fiabilité du service.", - "@aboutDonateText": {}, - "settingsTitle": "Paramètres", - "@settingsTitle": {}, - "settingsCacheTitle": "Cache", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Cache d'exercices", - "@settingsExerciseCacheDescription": {}, - "settingsCacheDeletedSnackbar": "Cache nettoyé avec succès", - "@settingsCacheDeletedSnackbar": {}, - "log": "Journaliser", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Fait", - "@done": {}, - "lightMode": "Mode clair permanent", - "@lightMode": {}, - "darkMode": "Mode sombre permanent", - "@darkMode": {}, - "systemMode": "Paramètres du système", - "@systemMode": {}, - "chart30DaysTitle": "{name} les 30 derniers jours", - "@chart30DaysTitle": { - "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chartAllTimeTitle": "{name} depuis le début", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "selectAvailablePlates": "Sélectionnez les poids disponibles", - "@selectAvailablePlates": {}, - "barWeight": "Poids de la barre", - "@barWeight": {}, - "useColors": "Utiliser des couleurs", - "@useColors": {}, - "newRoutine": "Nouvelle routine", - "@newRoutine": {}, - "noRoutines": "Vous n’avez aucune de routine", - "@noRoutines": {}, - "useUsernameAndPassword": "Utiliser le nom d’utilisateur et mot de passe", - "@useUsernameAndPassword": {}, - "routines": "Routines", - "@routines": {}, - "restTime": "Temps de repos", - "@restTime": {}, - "restDay": "Jour de repos", - "@restDay": {}, - "isRestDay": "Est un jour de repos", - "@isRestDay": {}, - "supersetNr": "Supersérie {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" - } - } - }, - "apiToken": "Jeton API", - "@apiToken": {}, - "routineDays": "Jours de routine", - "@routineDays": {}, - "resultingRoutine": "Routine résultante", - "@resultingRoutine": {}, - "errorInfoDescription": "Nous sommes désolés, mais quelque chose s'est mal passé. Vous pouvez nous aider à résoudre ce problème en le signalant sur GitHub.", - "@errorInfoDescription": {}, - "errorInfoDescription2": "Vous pouvez continuer à utiliser l'application, mais certaines fonctions risquent de ne pas fonctionner.", - "@errorInfoDescription2": {}, - "errorViewDetails": "Détails techniques", - "@errorViewDetails": {}, - "aboutDiscordTitle": "Discord", - "@aboutDiscordTitle": {}, - "others": "Autres", - "@others": {}, - "aboutJoinCommunityTitle": "Rejoindre la communauté", - "@aboutJoinCommunityTitle": {}, - "indicatorAvg": "moy", - "@indicatorAvg": { - "description": "added for localization of Class Indicator's field text" - }, - "resistance_band": "Bande de résistance", - "@resistance_band": { - "description": "Generated entry for translation for server strings" - }, - "overallChangeWeight": "Changement global", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "needsLogsToAdvanceHelp": "Sélectionnez si vous souhaitez que la routine passe au jour programmé suivant uniquement si vous avez enregistré une séance d'entraînement pour la journée", - "@needsLogsToAdvanceHelp": {}, - "min": "Min", - "@min": {}, - "themeMode": "Thème", - "@themeMode": {}, - "chartDuringPlanTitle": "{chartName} pendant le plan nutritionnel {planName}", - "@chartDuringPlanTitle": { - "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", - "type": "text", - "placeholders": { - "chartName": { - "type": "String" - }, - "planName": { - "type": "String" - } - } - }, - "fitInWeek": "Ajouter à la semaine", - "@fitInWeek": {}, - "addSuperset": "Ajouter une supersérie", - "@addSuperset": {}, - "useApiToken": "Utiliser un jeton API", - "@useApiToken": {}, - "apiTokenValidChars": "Une clé API ne peut contenir que les lettres a-f, les chiffres 0-9 et 40 caractères exactement", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - }, - "invalidApiToken": "Veuillez saisir une clé API valide", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "exerciseNr": "Exercice {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" - } - } - }, - "sets": "Séries", - "@sets": { - "description": "The number of sets to be done for one exercise" - }, - "isRestDayHelp": "Veuillez noter que toutes les séries et tous les exercices seront supprimés lorsque vous marquerez un jour comme jour de repos.", - "@isRestDayHelp": {}, - "needsLogsToAdvance": "Nécessite des journaux pour avancer", - "@needsLogsToAdvance": {}, - "errorCouldNotConnectToServer": "Impossible de se connecter au serveur", - "@errorCouldNotConnectToServer": {}, - "errorCouldNotConnectToServerDetails": "L'application n'a pas pu se connecter au serveur. Veuillez vérifier votre connexion internet ou l'URL du serveur et réessayer. Si le problème persiste, contactez l'administrateur du serveur.", - "@errorCouldNotConnectToServerDetails": {}, - "copyToClipboard": "Copier dans le presse-papiers", - "@copyToClipboard": {}, - "max": "Max", - "@max": {}, - "aboutWhySupportTitle": "Open Source et gratuit ❤️", - "@aboutWhySupportTitle": {}, - "aboutContributeText": "Toutes les contributions sont les bienvenues. Que vous soyez développeur, traducteur ou simplement passionné de fitness, chaque contribution est appréciée !", - "@aboutContributeText": {}, - "aboutBugsListTitle": "Signaler un problème ou suggérer une fonctionnalité", - "@aboutBugsListTitle": {}, - "aboutTranslationListTitle": "Traduire l'application", - "@aboutTranslationListTitle": {}, - "aboutSourceListTitle": "Voir le code source", - "@aboutSourceListTitle": {}, - "fitInWeekHelp": "Si cette option est activée, les jours se répéteront selon un cycle hebdomadaire, sinon les jours se suivront séquentiellement sans tenir compte du début d'une nouvelle semaine.", - "@fitInWeekHelp": {}, - "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Votre plan nutritionnel actuel ne comporte pas de repas définis", - "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { - "description": "Message shown when a nutrition plan doesn't have any meals" - }, - "toAddMealsToThePlanGoToNutritionalPlanDetails": "Pour ajouter des repas au plan, allez dans les détails du plan nutritionnel", - "@toAddMealsToThePlanGoToNutritionalPlanDetails": { - "description": "Message shown to guide users to the nutritional plan details page to add meals" - }, - "setHasProgression": "La série a une progression", - "@setHasProgression": {}, - "aboutContributeTitle": "Contribuer", - "@aboutContributeTitle": {}, - "setHasProgressionWarning": "Veuillez noter qu'il n'est actuellement pas possible de modifier tous les paramètres d'une série sur l'application mobile ni de configurer la progression automatique. Pour l'instant, veuillez utiliser l'application web.", - "@setHasProgressionWarning": {}, - "setHasNoExercises": "Cette série n'a pas encore d'exercices !", - "@setHasNoExercises": {}, - "settingsIngredientCacheDescription": "Cache d'ingrédients", - "@settingsIngredientCacheDescription": {}, - "simpleMode": "Mode simple", - "@simpleMode": {}, - "simpleModeHelp": "Masquer certains des paramètres les plus avancés lors de l'édition des exercices", - "@simpleModeHelp": {}, - "progressionRules": "Cet exercice a des règles de progression et ne peut pas être édité sur l'application mobile. Veuillez utiliser l'application web pour éditer cet exercice.", - "@progressionRules": {}, - "goalTypeMeals": "Des repas", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "goalTypeBasic": "Basique", - "@goalTypeBasic": { - "description": "added for localization of Class GoalType's filed basic" - }, - "goalTypeAdvanced": "Avancé", - "@goalTypeAdvanced": { - "description": "added for localization of Class GoalType's filed advanced" - }, - "indicatorRaw": "brut", - "@indicatorRaw": { - "description": "added for localization of Class Indicator's field text" - } + "confirmDelete": "Êtes-vous sûre de vouloir supprimer « {toDelete} » ?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "selectIngredient": "Veuillez sélectionner un ingrédient", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "enterValidNumber": "Veuillez entrer un nombre valide", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "enterValue": "Insérer un valeur", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "goToToday": "Aller à aujourd’hui", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "calendar": "Calendrier", + "@calendar": {}, + "toggleDetails": "Afficher les détails", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "newNutritionalPlan": "Nouveau programme nutritionnel", + "@newNutritionalPlan": {}, + "delete": "Supprimer", + "@delete": {}, + "loadingText": "Chargement…", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "edit": "Modifier", + "@edit": {}, + "noWeightEntries": "Aucune entrée de poids", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "newEntry": "Nouvelle entrée", + "@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": "Quantité", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "sodium": "Sodium", + "@sodium": {}, + "fiber": "fiber", + "@fiber": {}, + "saturatedFat": "Graisses saturées", + "@saturatedFat": {}, + "fat": "Graisses", + "@fat": {}, + "sugars": "Sucres", + "@sugars": {}, + "carbohydrates": "Glucides", + "@carbohydrates": {}, + "protein": "Protéines", + "@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": "Énergie", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "ingredient": "Ingrédient", + "@ingredient": {}, + "timeEnd": "Horaire de fin", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStart": "Horaire de départ", + "@timeStart": { + "description": "The starting time of a workout" + }, + "time": "Horaire", + "@time": { + "description": "The time of a meal or workout" + }, + "date": "Date", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "anErrorOccurred": "Une erreur s’est produite !", + "@anErrorOccurred": {}, + "noNutritionalPlans": "Aucun programme nutritionnel", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "nutritionalPlans": "Programmes nutritionnels", + "@nutritionalPlans": {}, + "nutritionalDiary": "Journal nutritionnel", + "@nutritionalDiary": {}, + "nutritionalPlan": "Programme nutritionnel", + "@nutritionalPlan": {}, + "addIngredient": "Ajouter ingrédients", + "@addIngredient": {}, + "mealLogged": "Repas journalisé", + "@mealLogged": {}, + "addMeal": "Ajouter un repas", + "@addMeal": {}, + "add": "Ajouter", + "@add": {}, + "cancel": "Supprimer", + "@cancel": {}, + "save": "Sauvegarder", + "@save": {}, + "description": "Description", + "@description": {}, + "gymMode": "Mode entraînement", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "newSet": "Nouvelle série", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "newDay": "Nouvelle journée", + "@newDay": {}, + "workoutSession": "Session d’entraînement", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "notes": "Notes", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "impression": "Impression", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "comment": "Commentaire", + "@comment": { + "description": "Comment, additional information" + }, + "rir": "RsR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "repetitions": "Répetitions", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "addExercise": "Ajouter un exercice", + "@addExercise": {}, + "exercise": "Exercice", + "@exercise": { + "description": "An exercise for a workout" + }, + "successfullyDeleted": "Supprimé", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "labelDashboard": "Accueil", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "labelWorkoutPlan": "Plan d’entraînement", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "registerInstead": "Vous n'avez pas de compte ? Inscrivez-vous maintenant", + "@registerInstead": {}, + "loginInstead": "Déjà un compte ? Connectez-vous", + "@loginInstead": {}, + "reset": "Réinitialiser", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "useCustomServer": "Utiliser le serveur personnalisé", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "customServerHint": "Entrez l’adresse de votre propre serveur, sinon le serveur par défaut sera utilisé", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "customServerUrl": "URL de l’instance wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "invalidUsername": "Veuillez entrer un nom d’utilisateur valide", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "username": "Nom d’utilisateur", + "@username": {}, + "email": "Adresse courriel", + "@email": {}, + "invalidEmail": "Veuillez entrer une adresse courriel valide", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "confirmPassword": "Confirmer le mot de passe", + "@confirmPassword": {}, + "password": "Mot de passe", + "@password": {}, + "passwordTooShort": "Le mot de passe est trop court", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "passwordsDontMatch": "Les mots de passe sont différents", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "invalidUrl": "Veuillez entrer une URL valide", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "useDefaultServer": "Utiliser le serveur par défaut", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "register": "S’inscrire", + "@register": { + "description": "Text for registration button" + }, + "login": "Se connecter", + "@login": { + "description": "Text for login button" + }, + "set": "Série", + "@set": { + "description": "A set in a workout plan" + }, + "repetitionUnit": "Unité des répétitions", + "@repetitionUnit": {}, + "weightUnit": "Unité de poids", + "@weightUnit": {}, + "reps": "Réps", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "nrOfSets": "Séries par exercice : {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "enterCharacters": "Veuillez saisir un nombre de caractères compris entre {min} et {max}", + "@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": "Veuillez sélectionner un exercice", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "aboutDescription": "Merci d’utiliser wger ! wger est un projet collaboratif à code source ouvert, réalisé par des passionnés de fitness du monde entier.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "start": "Démarrer", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "logMeal": "Journaliser ce repas dans l'agenda", + "@logMeal": {}, + "addSet": "Ajouter une série", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "todaysWorkout": "Entraînement d’aujourd’hui", + "@todaysWorkout": {}, + "selectExercises": "Si vous voulez faire une supersérie, vous pouvez rechercher plusieurs exercices, ils seront regroupés", + "@selectExercises": {}, + "sameRepetitions": "Si vous faites les mêmes répétitions et le même poids pour toutes les séries, vous pouvez simplement remplir une ligne. Par exemple, pour 4 séries, il suffit d’entrer 10 pour les répétitions, ce qui devient automatiquement « 4 × 10 ».", + "@sameRepetitions": {}, + "setNr": "Série {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": "Une description de ce qui est fait ce jour-ci (par exemple : « journée de tractions ») ou des parties du corps qui sont entraînées (par exemple : « poitrine et épaules »)", + "@dayDescriptionHelp": {}, + "category": "Catégorie", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "musclesSecondary": "Muscles secondaires", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "muscles": "Muscles", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "equipment": "Équippement", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "successfullySaved": "Enregistré", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "labelWorkoutLogs": "Journaux d’entraînement", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "logout": "Se déconnecter", + "@logout": { + "description": "Text for logout button" + }, + "addImage": "Ajouter une image", + "@addImage": {}, + "gallery": "Galerie", + "@gallery": {}, + "chooseFromLibrary": "Choisir depuis la bibliothèque", + "@chooseFromLibrary": {}, + "takePicture": "Prendre une photo", + "@takePicture": {}, + "selectImage": "Veuillez sélectionner une image", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "name": "Nom", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "optionsLabel": "Options", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "setUnitsAndRir": "Définir les unités et RiR", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "goToDetailPage": "Aller à la page de détails", + "@goToDetailPage": {}, + "jumpTo": "Aller à", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "pause": "Pause", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "rirNotUsed": "RiR non utilisé", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "searchExercise": "Chercher des exos à ajouter", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "labelBottomNavNutrition": "Nutrition", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavWorkout": "Entraînement", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "usernameValidChars": "Un nom d'utilisateur ne peut contenir que des lettres, des chiffres et les caractères @, +, ., - et _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "timeStartAhead": "L'heure de début ne peut pas être après à l'heure de fin", + "@timeStartAhead": {}, + "plateCalculatorNotDivisible": "Impossible d'atteindre le poids avec les disques disponibles", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "plateCalculator": "Disques", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "total": "Total", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "gPerBodyKg": "g par kg corporel", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "percentEnergy": "Pourcentage de l'énergie", + "@percentEnergy": {}, + "difference": "Différence", + "@difference": {}, + "logged": "Mangé", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "planned": "Prévu", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "macronutrients": "Macronutriments", + "@macronutrients": {}, + "value": "Valeur", + "@value": { + "description": "The value of a measurement entry" + }, + "measurementEntriesHelpText": "L'unité utilisée pour mesurer la catégorie, comme cm ou %", + "@measurementEntriesHelpText": {}, + "measurementCategoriesHelpText": "Catégorie de mesure, comme « biceps » ou « graisse corporelle »", + "@measurementCategoriesHelpText": {}, + "measurements": "Mesures", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurement": "Mesure", + "@measurement": {}, + "dataCopied": "Données copiées dans la nouvelle entrée", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "carbohydratesShort": "Gl", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "fatShort": "Gr", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "appUpdateTitle": "Mise à jour nécessaire", + "@appUpdateTitle": {}, + "appUpdateContent": "Cette version de l'application n'est pas compatible avec le serveur, veuillez mettre à jour votre application.", + "@appUpdateContent": {}, + "recentlyUsedIngredients": "Ingrédients récemment ajoutés", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "searchIngredient": "Rechercher un ingrédient", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "logIngredient": "Journaliser l'ingrédient dans l'agenda nutritionnel", + "@logIngredient": {}, + "close": "Fermer", + "@close": { + "description": "Translation for close" + }, + "productFound": "Produit trouvé", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "weekAverage": "Moyenne sur 7 jours", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "success": "Succès", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "alternativeNames": "Noms alternatifs", + "@alternativeNames": {}, + "oneNamePerLine": "Un nom par ligne", + "@oneNamePerLine": {}, + "selectEntry": "Veuillez sélectionner une entrée", + "@selectEntry": {}, + "variations": "Variantes", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "productFoundDescription": "Le code-barres correspond à ce produit : {productName}. Voulez-vous continuer ?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "productNotFoundDescription": "Le produit dont le code-barres a été scanné {barcode} n'a pas été trouvé dans la base de données wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "contributeExerciseWarning": "Vous ne pouvez contribuer aux exercices que si votre compte a plus de {days} jours et si vous avez vérifié votre adresse email", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "back": "Dos", + "@back": {}, + "enterMinCharacters": "Veuillez entrer au moins {min} caractères", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "baseNameEnglish": "Tous les exercices doivent avoir un nom de base en anglais", + "@baseNameEnglish": {}, + "productNotFound": "Produit non trouvé", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "scanBarcode": "Scanner le code barre", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "add_exercise_image_license": "Les images doivent être compatibles avec la licence CC BY SA. En cas de doute, ne téléchargez que des photos que vous avez prises vous-même.", + "@add_exercise_image_license": {}, + "alsoKnownAs": "Aussi connu sous le nom de : {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmailReason": "Vous devez vérifier votre adresse e-mail pour contribuer aux exercices", + "@verifiedEmailReason": {}, + "verifiedEmailInfo": "Un email de vérification a été envoyé à {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "whatVariationsExist": "Quelles sont les variantes de cet exercice, s'il en existe ?", + "@whatVariationsExist": {}, + "previous": "Précédent", + "@previous": {}, + "next": "Suivant", + "@next": {}, + "images": "Photos", + "@images": {}, + "language": "Langues", + "@language": {}, + "contributeExercise": "Contribuer à un exercice", + "@contributeExercise": {}, + "translation": "Traduction", + "@translation": {}, + "translateExercise": "Traduire cet exercice maintenant", + "@translateExercise": {}, + "baseData": "Les bases en anglais", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "bench": "Banc", + "@bench": {}, + "glutes": "Fessiers", + "@glutes": {}, + "kilometers": "Kilomètres", + "@kilometers": {}, + "barbell": "Barre", + "@barbell": {}, + "lower_back": "Bas du dos", + "@lower_back": {}, + "swiss_ball": "Ballon de gymnastique", + "@swiss_ball": {}, + "triceps": "Triceps", + "@triceps": {}, + "none__bodyweight_exercise_": "aucun (exercice au poids du corps)", + "@none__bodyweight_exercise_": {}, + "biceps": "Biceps", + "@biceps": {}, + "chest": "Poitrine", + "@chest": {}, + "kettlebell": "Kettlebell", + "@kettlebell": {}, + "abs": "Abdos", + "@abs": {}, + "dumbbell": "Haltères", + "@dumbbell": {}, + "gym_mat": "Tapis de gymnastique", + "@gym_mat": {}, + "incline_bench": "Banc incliné", + "@incline_bench": {}, + "lats": "Grand dorsal", + "@lats": {}, + "miles": "Miles", + "@miles": {}, + "legs": "Jambes", + "@legs": {}, + "quads": "Quadriceps", + "@quads": {}, + "noMeasurementEntries": "Vous n'avez pas d'entrées de mesure", + "@noMeasurementEntries": {}, + "aboutPageTitle": "À propos de nous et assistance", + "@aboutPageTitle": {}, + "userProfile": "Votre profil", + "@userProfile": {}, + "exerciseList": "Liste d'exercices", + "@exerciseList": {}, + "exercises": "Exercices", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Nom de l'exercice", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "arms": "Bras", + "@arms": {}, + "sz_bar": "Barre EZ", + "@sz_bar": {}, + "moreMeasurementEntries": "Ajouter une mesure", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "hamstrings": "Ischio-jambiers", + "@hamstrings": {}, + "pull_up_bar": "Barre de traction", + "@pull_up_bar": {}, + "shoulders": "Epaules", + "@shoulders": {}, + "calves": "Mollets", + "@calves": {}, + "verifiedEmail": "Email vérifié", + "@verifiedEmail": {}, + "unVerifiedEmail": "Email non vérifié", + "@unVerifiedEmail": {}, + "cacheWarning": "En raison de la mise en cache, il peut s'écouler un certain temps avant que les changements soient visibles dans toute l'application.", + "@cacheWarning": {}, + "cardio": "Cardio", + "@cardio": {}, + "minutes": "Minutes", + "@minutes": {}, + "seconds": "Secondes", + "@seconds": {}, + "until_failure": "Jusqu'à l'échec", + "@until_failure": {}, + "textPromptTitle": "Prêt à commencer ?", + "@textPromptTitle": {}, + "textPromptSubheading": "Cliquez sur le bouton pour commencer", + "@textPromptSubheading": {}, + "body_weight": "Poids corporel", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilomètres Par Heure", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Miles Par Heure", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Disques de poids", + "@plates": { + "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" + }, + "searchNamesInEnglish": "Recherchez également des noms en anglais", + "@searchNamesInEnglish": {}, + "max_reps": "Reps Maxi", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "verify": "Vérifier", + "@verify": {}, + "noMatchingExerciseFound": "Aucun exercice correspondant n'a été trouvé", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "today": "Aujourd'hui", + "@today": {}, + "useMetric": "Utiliser le système métrique pour le poids du corps", + "@useMetric": {}, + "onlyLogging": "Suivre uniquement les calories", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Cochez la case si vous souhaitez uniquement enregistrer vos calories et ne souhaitez pas établir un plan nutritionnel détaillé avec des repas spécifiques", + "@onlyLoggingHelpText": {}, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "aboutDonateTitle": "Faire un don", + "@aboutDonateTitle": {}, + "goalEnergy": "Objectif énergétique", + "@goalEnergy": {}, + "loggedToday": "Journalisé aujourd'hui", + "@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" + } + } + }, + "noIngredientsDefined": "Aucun ingrédient défini pour le moment", + "@noIngredientsDefined": {}, + "ingredientLogged": "Ingrédient journalisé dans l'agenda", + "@ingredientLogged": {}, + "goalMacro": "Objectif de macronutriments", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Sélectionner un repas à journaliser dans l'agenda", + "@selectMealToLog": {}, + "goalCarbohydrates": "Objectif glucides", + "@goalCarbohydrates": {}, + "goalProtein": "Objectif protéines", + "@goalProtein": {}, + "goalFat": "Objectif gras", + "@goalFat": {}, + "goalFiber": "Objectif fibre", + "@goalFiber": {}, + "surplus": "surplus", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "déficit", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "aboutDonateText": "Si le projet est gratuit et le restera, l'exploitation du serveur ne l'est pas ! Le développement requiert également beaucoup de temps et d'efforts de la part des bénévoles. Votre contribution finance directement ces coûts et contribue à la fiabilité du service.", + "@aboutDonateText": {}, + "settingsTitle": "Paramètres", + "@settingsTitle": {}, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Cache d'exercices", + "@settingsExerciseCacheDescription": {}, + "settingsCacheDeletedSnackbar": "Cache nettoyé avec succès", + "@settingsCacheDeletedSnackbar": {}, + "log": "Journaliser", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Fait", + "@done": {}, + "lightMode": "Mode clair permanent", + "@lightMode": {}, + "darkMode": "Mode sombre permanent", + "@darkMode": {}, + "systemMode": "Paramètres du système", + "@systemMode": {}, + "chart30DaysTitle": "{name} les 30 derniers jours", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chartAllTimeTitle": "{name} depuis le début", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "selectAvailablePlates": "Sélectionnez les poids disponibles", + "@selectAvailablePlates": {}, + "barWeight": "Poids de la barre", + "@barWeight": {}, + "useColors": "Utiliser des couleurs", + "@useColors": {}, + "newRoutine": "Nouvelle routine", + "@newRoutine": {}, + "noRoutines": "Vous n’avez aucune de routine", + "@noRoutines": {}, + "useUsernameAndPassword": "Utiliser le nom d’utilisateur et mot de passe", + "@useUsernameAndPassword": {}, + "routines": "Routines", + "@routines": {}, + "restTime": "Temps de repos", + "@restTime": {}, + "restDay": "Jour de repos", + "@restDay": {}, + "isRestDay": "Est un jour de repos", + "@isRestDay": {}, + "supersetNr": "Supersérie {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" + } + } + }, + "apiToken": "Jeton API", + "@apiToken": {}, + "routineDays": "Jours de routine", + "@routineDays": {}, + "resultingRoutine": "Routine résultante", + "@resultingRoutine": {}, + "errorInfoDescription": "Nous sommes désolés, mais quelque chose s'est mal passé. Vous pouvez nous aider à résoudre ce problème en le signalant sur GitHub.", + "@errorInfoDescription": {}, + "errorInfoDescription2": "Vous pouvez continuer à utiliser l'application, mais certaines fonctions risquent de ne pas fonctionner.", + "@errorInfoDescription2": {}, + "errorViewDetails": "Détails techniques", + "@errorViewDetails": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Autres", + "@others": {}, + "aboutJoinCommunityTitle": "Rejoindre la communauté", + "@aboutJoinCommunityTitle": {}, + "indicatorAvg": "moy", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "resistance_band": "Bande de résistance", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "overallChangeWeight": "Changement global", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "needsLogsToAdvanceHelp": "Sélectionnez si vous souhaitez que la routine passe au jour programmé suivant uniquement si vous avez enregistré une séance d'entraînement pour la journée", + "@needsLogsToAdvanceHelp": {}, + "min": "Min", + "@min": {}, + "themeMode": "Thème", + "@themeMode": {}, + "chartDuringPlanTitle": "{chartName} pendant le plan nutritionnel {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "fitInWeek": "Ajouter à la semaine", + "@fitInWeek": {}, + "addSuperset": "Ajouter une supersérie", + "@addSuperset": {}, + "useApiToken": "Utiliser un jeton API", + "@useApiToken": {}, + "apiTokenValidChars": "Une clé API ne peut contenir que les lettres a-f, les chiffres 0-9 et 40 caractères exactement", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "invalidApiToken": "Veuillez saisir une clé API valide", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "exerciseNr": "Exercice {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" + } + } + }, + "sets": "Séries", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "isRestDayHelp": "Veuillez noter que toutes les séries et tous les exercices seront supprimés lorsque vous marquerez un jour comme jour de repos.", + "@isRestDayHelp": {}, + "needsLogsToAdvance": "Nécessite des journaux pour avancer", + "@needsLogsToAdvance": {}, + "errorCouldNotConnectToServer": "Impossible de se connecter au serveur", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "L'application n'a pas pu se connecter au serveur. Veuillez vérifier votre connexion internet ou l'URL du serveur et réessayer. Si le problème persiste, contactez l'administrateur du serveur.", + "@errorCouldNotConnectToServerDetails": {}, + "copyToClipboard": "Copier dans le presse-papiers", + "@copyToClipboard": {}, + "max": "Max", + "@max": {}, + "aboutWhySupportTitle": "Open Source et gratuit ❤️", + "@aboutWhySupportTitle": {}, + "aboutContributeText": "Toutes les contributions sont les bienvenues. Que vous soyez développeur, traducteur ou simplement passionné de fitness, chaque contribution est appréciée !", + "@aboutContributeText": {}, + "aboutBugsListTitle": "Signaler un problème ou suggérer une fonctionnalité", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Traduire l'application", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Voir le code source", + "@aboutSourceListTitle": {}, + "fitInWeekHelp": "Si cette option est activée, les jours se répéteront selon un cycle hebdomadaire, sinon les jours se suivront séquentiellement sans tenir compte du début d'une nouvelle semaine.", + "@fitInWeekHelp": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Votre plan nutritionnel actuel ne comporte pas de repas définis", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Pour ajouter des repas au plan, allez dans les détails du plan nutritionnel", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "setHasProgression": "La série a une progression", + "@setHasProgression": {}, + "aboutContributeTitle": "Contribuer", + "@aboutContributeTitle": {}, + "setHasProgressionWarning": "Veuillez noter qu'il n'est actuellement pas possible de modifier tous les paramètres d'une série sur l'application mobile ni de configurer la progression automatique. Pour l'instant, veuillez utiliser l'application web.", + "@setHasProgressionWarning": {}, + "setHasNoExercises": "Cette série n'a pas encore d'exercices !", + "@setHasNoExercises": {}, + "settingsIngredientCacheDescription": "Cache d'ingrédients", + "@settingsIngredientCacheDescription": {}, + "simpleMode": "Mode simple", + "@simpleMode": {}, + "simpleModeHelp": "Masquer certains des paramètres les plus avancés lors de l'édition des exercices", + "@simpleModeHelp": {}, + "progressionRules": "Cet exercice a des règles de progression et ne peut pas être édité sur l'application mobile. Veuillez utiliser l'application web pour éditer cet exercice.", + "@progressionRules": {}, + "goalTypeMeals": "Des repas", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeBasic": "Basique", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Avancé", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "brut", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "endDate": "Date de fin", + "@endDate": {}, + "startDate": "Date de début", + "@startDate": {} } diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 4aab6f94..d45f77f7 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -161,7 +161,7 @@ "@impression": { "description": "General impression (e.g. for a workout session) such as good, bad, etc." }, - "comment": "Comment", + "comment": "Commento", "@comment": { "description": "Comment, additional information" }, @@ -722,7 +722,7 @@ "@lats": { "description": "Generated entry for translation for server strings" }, - "aboutPageTitle": "A proposito di Wger", + "aboutPageTitle": "Chi siamo & Supporto", "@aboutPageTitle": {}, "contributeExerciseWarning": "Puoi contribuire agli esercizi solo se il tuo account è più vecchio di {days} giorni e hai verificato la tua email", "@contributeExerciseWarning": { @@ -796,9 +796,9 @@ "@log": { "description": "Log a specific meal (imperative form)" }, - "aboutDonateTitle": "Donare", + "aboutDonateTitle": "Fai una donazione", "@aboutDonateTitle": {}, - "aboutDonateText": "Offrici un caffè per aiutare il progetto, pagare i costi del server e mantenerci alimentati", + "aboutDonateText": "Mentre il progetto è gratuito e lo sarà sempre, tenere il server attivo no! Lo sviluppo richiede molto tempo e sforzo dai volontari. Il tuo contributo supporta direttamente questi costi, aiutando a tenere il servizio affidabile.", "@aboutDonateText": {}, "settingsTitle": "Impostazioni", "@settingsTitle": {}, @@ -931,7 +931,7 @@ "@deficit": { "description": "Caloric deficit (either planned or unplanned)" }, - "chartAllTimeTitle": "{name} per tutto il periodo", + "chartAllTimeTitle": "{name} totale", "@chartAllTimeTitle": { "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", "type": "text", @@ -1005,7 +1005,7 @@ "@errorInfoDescription": {}, "errorInfoDescription2": "Puoi continuare a utilizzare l'app, ma alcune funzionalità potrebbero non funzionare.", "@errorInfoDescription2": {}, - "errorViewDetails": "Technical details", + "errorViewDetails": "Dettagli Tecnici", "@errorViewDetails": {}, "errorCouldNotConnectToServer": "Impossibile connettersi al server", "@errorCouldNotConnectToServer": {}, @@ -1040,5 +1040,41 @@ "resistance_band": "Fascia di resistenza", "@resistance_band": { "description": "Generated entry for translation for server strings" - } + }, + "endDate": "Data di fine", + "@endDate": {}, + "startDate": "Data di inizio", + "@startDate": {}, + "sets": "Serie", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "supersetNr": "Serie combinata{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" + } + } + }, + "resultingRoutine": "Risultato Routine", + "@resultingRoutine": {}, + "min": "Min", + "@min": {}, + "max": "Max", + "@max": {}, + "aboutWhySupportTitle": "Open Source & uso gratuito ❤️", + "@aboutWhySupportTitle": {}, + "aboutContributeTitle": "Contribuisci", + "@aboutContributeTitle": {}, + "aboutContributeText": "Incoraggiamo ogni tipo di contributo. Che tu sia uno sviluppatore, un traduttore, o semplicemente appassionato di fitness, ogni piccolo supporto verrà apprezzato!", + "@aboutContributeText": {}, + "aboutBugsListTitle": "Segnala un problema o suggerisci una funzionalità", + "@aboutBugsListTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "fitInWeek": "Settimana Fit in", + "@fitInWeek": {} } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 4512e9ad..4348b5ac 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -1,580 +1,662 @@ { - "login": "ログイン", - "@login": { - "description": "Text for login button" - }, - "logout": "ログアウト", - "@logout": { - "description": "Text for logout button" - }, - "register": "登録", - "@register": { - "description": "Text for registration button" - }, - "useDefaultServer": "デフォルトサーバを使用する", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "useCustomServer": "カスタムサーバを使用する", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "invalidUrl": "有効なURLを入力してください", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "usernameValidChars": "ユーザー名に含められるのは文字,数字と@, +, ., -, _の記号のみです", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "passwordsDontMatch": "パスワードが合致しません", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "passwordTooShort": "パスワードが短すぎます", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "password": "パスワード", - "@password": {}, - "confirmPassword": "パスワードを決定する", - "@confirmPassword": {}, - "invalidEmail": "有効なメールアドレスを入力してください", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "email": "Eメールアドレス", - "@email": {}, - "username": "ユーザー名", - "@username": {}, - "invalidUsername": "有効なユーザー名を入力してください", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "customServerUrl": "wgerのインスタンスURL", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "customServerHint": "あなたのサーバのアドレスを入力するか, そうでなければデフォルトのサーバが使用されます", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "reset": "リセット", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "registerInstead": "新規登録", - "@registerInstead": {}, - "loginInstead": "Log in instead", - "@loginInstead": {}, - "labelBottomNavWorkout": "運動", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavNutrition": "栄養", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelWorkoutLogs": "トレーニング履歴", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "labelWorkoutPlan": "運動メニュー", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "labelDashboard": "ダッシュボード", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "successfullyDeleted": "削除されました", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "successfullySaved": "保存されました", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "exercise": "運動", - "@exercise": { - "description": "An exercise for a workout" - }, - "searchExercise": "運動を探す", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "equipment": "器具", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "muscles": "メインとなる筋肉", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "musclesSecondary": "補助的な筋肉", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "category": "分類", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "repetitions": "繰り返し", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "reps": "反復", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "rir": "予備レップ", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "rirNotUsed": "予備レップは保存されていません", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "weightUnit": "重量単位", - "@weightUnit": {}, - "repetitionUnit": "反復単位", - "@repetitionUnit": {}, - "set": "セット", - "@set": { - "description": "A set in a workout plan" - }, - "dayDescriptionHelp": "A description of what is done on this day (e.g. 'pull day') or what body parts are trained (e.g. 'chest and shoulders')", - "@dayDescriptionHelp": {}, - "setNr": "Set {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": "If you do the same repetitions and weight for all sets you can just fill in one row. For example for 4 sets just enter 10 for the repetitions, this automatically becomes \"4 x 10\".", - "@sameRepetitions": {}, - "comment": "コメント", - "@comment": { - "description": "Comment, additional information" - }, - "impression": "評価", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "notes": "メモ", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "workoutSession": "Workout session", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "newDay": "新しい日", - "@newDay": {}, - "newSet": "新しいセット", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "selectExercises": "If you want to do a superset you can search for several exercises, they will be grouped together", - "@selectExercises": {}, - "gymMode": "ジムモード", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "plateCalculator": "プレート", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "plateCalculatorNotDivisible": "Not possible to reach weight with available plates", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "pause": "休止", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "jumpTo": "ジャンプ", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "todaysWorkout": "あなたの今日の運動", - "@todaysWorkout": {}, - "logHelpEntries": "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": {}, - "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": {}, - "description": "説明", - "@description": {}, - "name": "名称", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "save": "保存", - "@save": {}, - "addSet": "セットを追加", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "食事を追加", - "@addMeal": {}, - "mealLogged": "食事が日記に記録されました", - "@mealLogged": {}, - "logMeal": "この食事を記録する", - "@logMeal": {}, - "addIngredient": "食材を追加する", - "@addIngredient": {}, - "logIngredient": "栄養日記に記録する", - "@logIngredient": {}, - "searchIngredient": "食材を探す", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "nutritionalPlan": "栄養メニュー", - "@nutritionalPlan": {}, - "nutritionalDiary": "栄養日記", - "@nutritionalDiary": {}, - "nutritionalPlans": "栄養メニュー一覧", - "@nutritionalPlans": {}, - "noNutritionalPlans": "栄養メニューがありません", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "anErrorOccurred": "エラーが発生しました", - "@anErrorOccurred": {}, - "weight": "重量", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "measurement": "測定", - "@measurement": {}, - "measurements": "測定結果", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurementCategoriesHelpText": "Measurement category, such as 'biceps' or 'body fat'", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "The unit used to measure the category such as 'cm' or '%'", - "@measurementEntriesHelpText": {}, - "date": "日付", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "value": "値", - "@value": { - "description": "The value of a measurement entry" - }, - "start": "開始", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "time": "時間", - "@time": { - "description": "The time of a meal or workout" - }, - "timeStart": "開始時刻", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeEnd": "終了時刻", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStartAhead": "終了時刻を開始時刻より前にすることはできません", - "@timeStartAhead": {}, - "ingredient": "食材", - "@ingredient": {}, - "energy": "エネルギー", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "macronutrients": "大栄養素", - "@macronutrients": {}, - "planned": "計画された", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "logged": "記録された", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "weekAverage": "1週間平均", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "difference": "違い", - "@difference": {}, - "percentEnergy": "エネルギーの割合(%)", - "@percentEnergy": {}, - "gPerBodyKg": "体重(kg)に対するエネルギー(g)の割合", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "total": "合計", - "@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" - }, - "protein": "タンパク質", - "@protein": {}, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "carbohydrates": "炭水化物", - "@carbohydrates": {}, - "carbohydratesShort": "C", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "sugars": "糖分", - "@sugars": {}, - "fat": "脂肪", - "@fat": {}, - "fatShort": "F", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "saturatedFat": "Saturated fat", - "@saturatedFat": {}, - "fiber": "Fibre", - "@fiber": {}, - "sodium": "Sodium", - "@sodium": {}, - "amount": "Amount", - "@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.)" - }, - "newEntry": "New entry", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "noWeightEntries": "You have no weight entries", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "edit": "Edit", - "@edit": {}, - "loadingText": "Loading...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "delete": "Delete", - "@delete": {}, - "confirmDelete": "Are you sure you want to delete '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "newNutritionalPlan": "New nutritional plan", - "@newNutritionalPlan": {}, - "toggleDetails": "Toggle details", - "@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": { - "description": "Text in the about dialog" - }, - "calendar": "Calendar", - "@calendar": {}, - "goToToday": "Go to today", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "enterValue": "Please enter a value", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "selectExercise": "Please select an exercise", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterCharacters": "Please enter between {min} and {max} characters", - "@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": "Sets per exercise: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "setUnitsAndRir": "Set units 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": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "selectIngredient": "Please select an ingredient", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "recentlyUsedIngredients": "Recently added ingredients", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "selectImage": "Please select an image", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "optionsLabel": "Options", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "takePicture": "Take a picture", - "@takePicture": {}, - "chooseFromLibrary": "Choose from photo library", - "@chooseFromLibrary": {}, - "gallery": "Gallery", - "@gallery": {}, - "addImage": "Add image", - "@addImage": {}, - "dataCopied": "Data copied to new entry", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "appUpdateTitle": "Update needed", - "@appUpdateTitle": {}, - "appUpdateContent": "This version of the app is not compatible with the server, please update your application.", - "@appUpdateContent": {}, - "productFound": "Product found", - "@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": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "productNotFound": "Product not found", - "@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": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Scan barcode", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Close", - "@close": { - "description": "Translation for close" - }, - "userProfile": "あなたのプロフィール", - "@userProfile": {}, - "barbell": "バーベル", - "@barbell": { - "description": "Generated entry for translation for server strings" - }, - "arms": "腕", - "@arms": { - "description": "Generated entry for translation for server strings" - }, - "chest": "胸", - "@chest": { - "description": "Generated entry for translation for server strings" - }, - "dumbbell": "ダンベル", - "@dumbbell": { - "description": "Generated entry for translation for server strings" - }, - "success": "成功", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "cardio": "有酸素運動", - "@cardio": { - "description": "Generated entry for translation for server strings" - }, - "bench": "ベンチ", - "@bench": { - "description": "Generated entry for translation for server strings" - }, - "settingsExerciseCacheDescription": "エクササイズキャッシュ", - "@settingsExerciseCacheDescription": {}, - "settingsTitle": "設定", - "@settingsTitle": {}, - "settingsCacheTitle": "キャッシュ", - "@settingsCacheTitle": {}, - "back": "戻る", - "@back": { - "description": "Generated entry for translation for server strings" - }, - "abs": "腹筋", - "@abs": { - "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" - }, - "verify": "確認する", - "@verify": {}, - "calves": "ふくらはぎ", - "@calves": { - "description": "Generated entry for translation for server strings" - } -} \ No newline at end of file + "login": "ログイン", + "@login": { + "description": "Text for login button" + }, + "logout": "ログアウト", + "@logout": { + "description": "Text for logout button" + }, + "register": "登録", + "@register": { + "description": "Text for registration button" + }, + "useDefaultServer": "デフォルトサーバを使用する", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useCustomServer": "カスタムサーバを使用する", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "invalidUrl": "有効なURLを入力してください", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "usernameValidChars": "ユーザー名に含められるのは文字,数字と@, +, ., -, _の記号のみです", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "passwordsDontMatch": "パスワードが合致しません", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "パスワードが短すぎます", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "password": "パスワード", + "@password": {}, + "confirmPassword": "パスワードを決定する", + "@confirmPassword": {}, + "invalidEmail": "有効なメールアドレスを入力してください", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "Eメールアドレス", + "@email": {}, + "username": "ユーザー名", + "@username": {}, + "invalidUsername": "有効なユーザー名を入力してください", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "customServerUrl": "wgerのインスタンスURL", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "customServerHint": "あなたのサーバのアドレスを入力してください(入力しない場合、デフォルトのサーバアドレスが使用されます)", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "リセット", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "registerInstead": "新規登録", + "@registerInstead": {}, + "loginInstead": "既にアカウントをお持ちの方はこちらからログイン", + "@loginInstead": {}, + "labelBottomNavWorkout": "運動", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "栄養", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "トレーニング履歴", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "運動メニュー", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "ダッシュボード", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "successfullyDeleted": "削除されました", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "successfullySaved": "保存されました", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exercise": "運動", + "@exercise": { + "description": "An exercise for a workout" + }, + "searchExercise": "運動を探す", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "equipment": "器具", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "muscles": "メインとなる筋肉", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "musclesSecondary": "補助的な筋肉", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "category": "分類", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "repetitions": "繰り返し", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "reps": "反復", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "rir": "予備レップ", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "rirNotUsed": "予備レップは保存されていません", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "weightUnit": "重量単位", + "@weightUnit": {}, + "repetitionUnit": "反復単位", + "@repetitionUnit": {}, + "set": "セット", + "@set": { + "description": "A set in a workout plan" + }, + "dayDescriptionHelp": "A description of what is done on this day (e.g. 'pull day') or what body parts are trained (e.g. 'chest and shoulders')", + "@dayDescriptionHelp": {}, + "setNr": "Set {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": "If you do the same repetitions and weight for all sets you can just fill in one row. For example for 4 sets just enter 10 for the repetitions, this automatically becomes \"4 x 10\".", + "@sameRepetitions": {}, + "comment": "コメント", + "@comment": { + "description": "Comment, additional information" + }, + "impression": "評価", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "notes": "メモ", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "workoutSession": "Workout session", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "newDay": "新しい日", + "@newDay": {}, + "newSet": "新しいセット", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "selectExercises": "If you want to do a superset you can search for several exercises, they will be grouped together", + "@selectExercises": {}, + "gymMode": "ジムモード", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculator": "プレート", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Not possible to reach weight with available plates", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "休止", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "jumpTo": "ジャンプ", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "todaysWorkout": "あなたの今日の運動", + "@todaysWorkout": {}, + "logHelpEntries": "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": {}, + "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": {}, + "description": "説明", + "@description": {}, + "name": "名称", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "save": "保存", + "@save": {}, + "addSet": "セットを追加", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "食事を追加", + "@addMeal": {}, + "mealLogged": "食事が日記に記録されました", + "@mealLogged": {}, + "logMeal": "この食事を記録する", + "@logMeal": {}, + "addIngredient": "食材を追加する", + "@addIngredient": {}, + "logIngredient": "栄養日記に記録する", + "@logIngredient": {}, + "searchIngredient": "食材を探す", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalPlan": "栄養メニュー", + "@nutritionalPlan": {}, + "nutritionalDiary": "栄養日記", + "@nutritionalDiary": {}, + "nutritionalPlans": "栄養メニュー一覧", + "@nutritionalPlans": {}, + "noNutritionalPlans": "栄養メニューがありません", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "anErrorOccurred": "エラーが発生しました", + "@anErrorOccurred": {}, + "weight": "重量", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "measurement": "測定", + "@measurement": {}, + "measurements": "測定結果", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurementCategoriesHelpText": "Measurement category, such as 'biceps' or 'body fat'", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "The unit used to measure the category such as 'cm' or '%'", + "@measurementEntriesHelpText": {}, + "date": "日付", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "value": "値", + "@value": { + "description": "The value of a measurement entry" + }, + "start": "開始", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "time": "時間", + "@time": { + "description": "The time of a meal or workout" + }, + "timeStart": "開始時刻", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "終了時刻", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStartAhead": "終了時刻を開始時刻より前にすることはできません", + "@timeStartAhead": {}, + "ingredient": "食材", + "@ingredient": {}, + "energy": "エネルギー", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "macronutrients": "大栄養素", + "@macronutrients": {}, + "planned": "計画された", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "logged": "記録された", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "weekAverage": "1週間平均", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "difference": "違い", + "@difference": {}, + "percentEnergy": "エネルギーの割合(%)", + "@percentEnergy": {}, + "gPerBodyKg": "体重(kg)に対するエネルギー(g)の割合", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "total": "合計", + "@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" + }, + "protein": "タンパク質", + "@protein": {}, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "carbohydrates": "炭水化物", + "@carbohydrates": {}, + "carbohydratesShort": "C", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "sugars": "糖分", + "@sugars": {}, + "fat": "脂肪", + "@fat": {}, + "fatShort": "F", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "saturatedFat": "Saturated fat", + "@saturatedFat": {}, + "fiber": "Fibre", + "@fiber": {}, + "sodium": "Sodium", + "@sodium": {}, + "amount": "Amount", + "@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.)" + }, + "newEntry": "New entry", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "noWeightEntries": "You have no weight entries", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "edit": "Edit", + "@edit": {}, + "loadingText": "Loading...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "delete": "Delete", + "@delete": {}, + "confirmDelete": "Are you sure you want to delete '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "newNutritionalPlan": "New nutritional plan", + "@newNutritionalPlan": {}, + "toggleDetails": "Toggle details", + "@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": { + "description": "Text in the about dialog" + }, + "calendar": "Calendar", + "@calendar": {}, + "goToToday": "Go to today", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "enterValue": "Please enter a value", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "selectExercise": "Please select an exercise", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterCharacters": "Please enter between {min} and {max} characters", + "@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": "Sets per exercise: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "setUnitsAndRir": "Set units 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": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "selectIngredient": "Please select an ingredient", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "recentlyUsedIngredients": "Recently added ingredients", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "selectImage": "Please select an image", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "optionsLabel": "Options", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "takePicture": "Take a picture", + "@takePicture": {}, + "chooseFromLibrary": "Choose from photo library", + "@chooseFromLibrary": {}, + "gallery": "Gallery", + "@gallery": {}, + "addImage": "Add image", + "@addImage": {}, + "dataCopied": "Data copied to new entry", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "appUpdateTitle": "Update needed", + "@appUpdateTitle": {}, + "appUpdateContent": "This version of the app is not compatible with the server, please update your application.", + "@appUpdateContent": {}, + "productFound": "Product found", + "@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": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "productNotFound": "Product not found", + "@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": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Scan barcode", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Close", + "@close": { + "description": "Translation for close" + }, + "userProfile": "あなたのプロフィール", + "@userProfile": {}, + "barbell": "バーベル", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "arms": "腕", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "chest": "胸", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "ダンベル", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "success": "成功", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "cardio": "有酸素運動", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "bench": "ベンチ", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "settingsExerciseCacheDescription": "エクササイズキャッシュ", + "@settingsExerciseCacheDescription": {}, + "settingsTitle": "設定", + "@settingsTitle": {}, + "settingsCacheTitle": "キャッシュ", + "@settingsCacheTitle": {}, + "back": "戻る", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "abs": "腹筋", + "@abs": { + "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" + }, + "verify": "確認する", + "@verify": {}, + "calves": "ふくらはぎ", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "selectAvailablePlates": "利用可能なプレートを選択してください", + "@selectAvailablePlates": {}, + "barWeight": "バーの重さ", + "@barWeight": {}, + "useColors": "色を使用する", + "@useColors": {}, + "useApiToken": "APIトークンを使用する", + "@useApiToken": {}, + "useUsernameAndPassword": "ユーザー名とパスワードを使用する", + "@useUsernameAndPassword": {}, + "apiToken": "APIトークン", + "@apiToken": {}, + "invalidApiToken": "有効なAPIキーを入力してください", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "APIキーはアルファベットのa~f、数字の0~9のみで構成されており、ちょうど40文字の長さです", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "exerciseList": "エクササイズ一覧", + "@exerciseList": {}, + "exercises": "ワークアウトを構成する複数のエクササイズ", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "ワークアウトエクササイズの名前にラベルを付ける", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "noIngredientsDefined": "要素が定義されていません", + "@noIngredientsDefined": {}, + "noMatchingExerciseFound": "一致するエクササイズがありません", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "searchNamesInEnglish": "英語での名前検索", + "@searchNamesInEnglish": {}, + "endDate": "終了日", + "@endDate": {}, + "startDate": "開始日", + "@startDate": {}, + "routines": "ルーティン", + "@routines": {}, + "newRoutine": "新しいルーティン", + "@newRoutine": {}, + "noRoutines": "ルーティンがありません", + "@noRoutines": {}, + "restTime": "休憩時間", + "@restTime": {}, + "sets": "セット", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "useMetric": "体重の単位", + "@useMetric": {}, + "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" + } + } + }, + "supersetNr": "スーパーセット {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": "休息日", + "@restDay": {}, + "isRestDay": "休息日", + "@isRestDay": {}, + "isRestDayHelp": "休憩日を設定する際はすべてのセットとエクササイズが削除されていることを確認してください。", + "@isRestDayHelp": {} +} diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index ec4dcaf7..4cba50c4 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -1,889 +1,1016 @@ { - "invalidUsername": "Podaj poprawną nazwę użytkownika", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "username": "Nazwa użytkownika", - "@username": {}, - "email": "Adres email", - "@email": {}, - "invalidEmail": "Podaj poprawny adres email", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "confirmPassword": "Potwierdź hasło", - "@confirmPassword": {}, - "password": "Hasło", - "@password": {}, - "passwordTooShort": "Hasło jest zbyt krótkie", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "passwordsDontMatch": "Hasła nie są identyczne", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "usernameValidChars": "Nazwa użytkownika może zawierać tylko litery, cyfry i znaki specjalne: @,+,.,-, _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "invalidUrl": "Wpisz poprawny adres URL", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "useCustomServer": "Używaj niestandardowego serwera", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "useDefaultServer": "Używaj domyślnego serwera", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "register": "Zarejestruj się", - "@register": { - "description": "Text for registration button" - }, - "logout": "Wyloguj się", - "@logout": { - "description": "Text for logout button" - }, - "login": "Zaloguj się", - "@login": { - "description": "Text for login button" - }, - "save": "Zapisz", - "@save": {}, - "customServerUrl": "Adres URL instancji wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "customServerHint": "Wpisz adres własnego serwera, w przeciwnym razie zostanie użyty domyślny", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "reset": "Reset", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "macronutrients": "Makroelementy", - "@macronutrients": {}, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "logged": "Zapisane", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "addImage": "Dodaj obraz", - "@addImage": {}, - "weekAverage": "Średnia z poprzedniego tygodnia", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "total": "Sumarycznie", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "unit": "Jednostka", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "aboutDescription": "Dziękujemy za używanie wger! Wger jest projektem open-source stworzonym przy współpracy entuzjastów fitnessu z całego świata.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "productFoundDescription": "Kod kreskowy odpowiada temu produktowi: {productName}. Czy chcesz kontynuować?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "dataCopied": "Dane skopiowane do nowego dziennika", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "noWeightEntries": "Nie masz wpisów dotyczących wagi", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "loadingText": "Ładowanie...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "calendar": "Kalendarz", - "@calendar": {}, - "selectExercise": "Wybierz ćwiczenie", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterCharacters": "Wprowadź od {min} do {max} znaków", - "@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": "Ilość serii ćwiczenia: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "rirNotUsed": "Bez rezerwy powtórzeń", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "weightUnit": "Jednostka wagi", - "@weightUnit": {}, - "repetitionUnit": "Jednostka powtórzeń", - "@repetitionUnit": {}, - "set": "Seria", - "@set": { - "description": "A set in a workout plan" - }, - "dayDescriptionHelp": "Opis tego, co jest robione w tym dniu (np. „dzień podciągania”) lub jakie części ciała są trenowane (np. „klatka piersiowa i ramiona”)", - "@dayDescriptionHelp": {}, - "setNr": "{nr} serii", - "@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": "Jeśli wykonasz tą sama liczbę powtórzenia z tym samym ciężarem dla wszystkich serii, możesz po prostu wypełnić jeden wiersz. Na przykład dla 4 serii wystarczy wpisać 10 dla powtórzeń, automatycznie zmieni się to na „4 x 10”.", - "@sameRepetitions": {}, - "comment": "Komentarz", - "@comment": { - "description": "Comment, additional information" - }, - "impression": "Ocena treningu", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "workoutSession": "Sesja treningowa", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "newSet": "Nowa seria", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "selectExercises": "Jeśli chcesz zrobić super serię, możesz wyszukać kilka ćwiczeń, zostaną one zgrupowane razem", - "@selectExercises": {}, - "gymMode": "Tryb treningu", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "equipment": "Sprzęt", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "muscles": "Mięśnie", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "musclesSecondary": "Mięśnie pomocnicze", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "category": "Kategoria", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "repetitions": "Powtórzenia", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "reps": "Powtórzenia", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "rir": "Liczba powtórzeń w rezerwie", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "successfullySaved": "Zapisane", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "exercise": "Ćwiczenie", - "@exercise": { - "description": "An exercise for a workout" - }, - "searchExercise": "Wyszukaj ćwiczenie do dodania", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "logHelpEntries": "Jeśli w ciągu jednego dnia jest więcej niż jeden wpis z tą samą liczbą powtórzeń, ale z różnymi wagami, na wykresie pokazany jest tylko wpis o wyższej wadze.", - "@logHelpEntries": {}, - "logHelpEntriesUnits": "Zwróć uwagę, że na wykresie są tylko wpisy z jednostką masy (kg lub lb) i powtórzeniami, inne kombinacje, takie jak czas lub czas do błędu, są tutaj ignorowane.", - "@logHelpEntriesUnits": {}, - "description": "Opis", - "@description": {}, - "name": "Nazwa", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "addSet": "Dodaj serię", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Dodaj posiłek", - "@addMeal": {}, - "fat": "Tłuszcz", - "@fat": {}, - "measurement": "Pomiar", - "@measurement": {}, - "measurements": "Pomiar", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "registerInstead": "Nie posiadasz konta? Zarejestruj się teraz", - "@registerInstead": {}, - "loginInstead": "Posiadasz konto? Zaloguj się", - "@loginInstead": {}, - "labelBottomNavWorkout": "Trening", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelBottomNavNutrition": "Żywienie", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelWorkoutLogs": "Dzienniki treningowe", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "labelWorkoutPlan": "Plan treningu", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "successfullyDeleted": "Usunięto", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "labelDashboard": "Pulpit", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "notes": "Notatki", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "newDay": "Nowy dzień", - "@newDay": {}, - "pause": "Przerwa", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "todaysWorkout": "Twój dzisiejszy trening", - "@todaysWorkout": {}, - "date": "Data", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "jumpTo": "Wybierz ćwiczenie", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "noNutritionalPlans": "Nie masz planów żywieniowych", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "plateCalculator": "Obciążnik", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "plateCalculatorNotDivisible": "Nie można osiągnąć wagi z dostępnymi obciążeniami", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "mealLogged": "Posiłek zarejestrowany w dzienniku", - "@mealLogged": {}, - "logMeal": "Zapisz ten posiłek w dzienniku", - "@logMeal": {}, - "addIngredient": "Dodaj składnik", - "@addIngredient": {}, - "nutritionalPlan": "Plan diety", - "@nutritionalPlan": {}, - "nutritionalDiary": "Dziennik żywieniowy", - "@nutritionalDiary": {}, - "nutritionalPlans": "Plany żywieniowe", - "@nutritionalPlans": {}, - "start": "Rozpocznij", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "timeStart": "Czas rozpoczęcia", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeEnd": "Czas zakończenia", - "@timeEnd": { - "description": "The end time of a workout" - }, - "ingredient": "Składnik", - "@ingredient": {}, - "energy": "Energia", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "time": "Czas", - "@time": { - "description": "The time of a meal or workout" - }, - "anErrorOccurred": "Wystąpił błąd!", - "@anErrorOccurred": {}, - "weight": "Waga", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "protein": "Białko", - "@protein": {}, - "carbohydrates": "Węglowodany", - "@carbohydrates": {}, - "confirmDelete": "Czy na pewno chcesz usunąć '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "planned": "Zaplanowane", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "difference": "Różnice", - "@difference": {}, - "percentEnergy": "Procent energii", - "@percentEnergy": {}, - "gPerBodyKg": "g / kg", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "proteinShort": "B", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "carbohydratesShort": "W", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "sugars": "Cukier", - "@sugars": {}, - "fatShort": "T", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "saturatedFat": "Tłuszcz nasycony", - "@saturatedFat": {}, - "fiber": "Błonnik", - "@fiber": {}, - "sodium": "Sód", - "@sodium": {}, - "amount": "Ilość", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "newEntry": "Nowy", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "edit": "Edytuj", - "@edit": {}, - "delete": "Usuń", - "@delete": {}, - "newNutritionalPlan": "Nowy plan żywieniowy", - "@newNutritionalPlan": {}, - "toggleDetails": "Przełącz szczegóły", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "goToDetailPage": "Przejdź do strony szczegółów", - "@goToDetailPage": {}, - "takePicture": "Zrób zdjęcie", - "@takePicture": {}, - "chooseFromLibrary": "Wybierz z galerii zdjęć", - "@chooseFromLibrary": {}, - "gallery": "Galeria", - "@gallery": {}, - "appUpdateTitle": "Wymagana aktualizacja", - "@appUpdateTitle": {}, - "appUpdateContent": "Ta wersja aplikacji nie jest kompatybilna z serwerem, zaktualizuj swoją aplikację.", - "@appUpdateContent": {}, - "productFound": "Znaleziono produkt", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productNotFound": "Produkt nie znaleziony", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "productNotFoundDescription": "Produkt z zeskanowanym kodem kreskowym {barcode} nie został znaleziony w bazie danych wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Zeskanuj kod kreskowy", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Zamknij", - "@close": { - "description": "Translation for close" - }, - "logIngredient": "Zapisz składnik w dzienniku żywieniowym", - "@logIngredient": {}, - "searchIngredient": "Wyszukaj składnik", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "measurementCategoriesHelpText": "Kategoria pomiaru, np. „biceps” lub „pomiar warstwy podskórnej tłuszczu”", - "@measurementCategoriesHelpText": {}, - "measurementEntriesHelpText": "Jednostka pomiaru np. „cm” lub „%”", - "@measurementEntriesHelpText": {}, - "value": "Wartość", - "@value": { - "description": "The value of a measurement entry" - }, - "timeStartAhead": "Czas rozpoczęcia nie może być wcześniejszy niż czas zakończenia", - "@timeStartAhead": {}, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "selectIngredient": "Wybierz składnik", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "recentlyUsedIngredients": "Ostatnio dodane składniki", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "selectImage": "Wybierz obraz", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "optionsLabel": "Opcje", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "goToToday": "Przejdź do dziś", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "enterValue": "proszę wprowadzić wartość", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "setUnitsAndRir": "Ustaw jednostki oraz rezerwę liczby powtórzeń", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "enterValidNumber": "Proszę wprowadzić poprawny numer", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "noMeasurementEntries": "Nie masz wpisów pomiarowych", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Dodaj nowy pomiar", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "enterMinCharacters": "Proszę wpisać co najmniej {min} znaków", - "@enterMinCharacters": { - "description": "Error message when the user hasn't entered the minimum amount characters in a form", - "type": "text", - "placeholders": { - "min": { - "type": "String" - } - } - }, - "baseNameEnglish": "Wszystkie ćwiczenia wymagają nazwy podstawowej w języku angielskim", - "@baseNameEnglish": {}, - "images": "Obrazy", - "@images": {}, - "language": "Język", - "@language": {}, - "add_exercise_image_license": "Obrazy muszą być zgodne z licencją CC BY SA. Jeśli masz wątpliwości przesyłaj tylko zdjęcia które sam zrobiłeś.", - "@add_exercise_image_license": {}, - "variations": "Wariacje", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "alsoKnownAs": "Znany również jako: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "invalidUsername": "Podaj poprawną nazwę użytkownika", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" }, - "description": "List of alternative names for an exercise" - }, - "unVerifiedEmail": "Niezweryfikowany adres e-mail", - "@unVerifiedEmail": {}, - "verifiedEmail": "Zweryfikowany adres e-mail", - "@verifiedEmail": {}, - "verifiedEmailReason": "Aby współtworzyć ćwiczenia musisz zweryfikować swój adres e-mail", - "@verifiedEmailReason": {}, - "verifiedEmailInfo": "Wiadomość weryfikacyjna została wysłana na adres {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "alternativeNames": "Alternatywne nazwy", - "@alternativeNames": {}, - "oneNamePerLine": "Jedna nazwa w wierszu", - "@oneNamePerLine": {}, - "whatVariationsExist": "Czy istnieją wariacje tego ćwiczenia?", - "@whatVariationsExist": {}, - "previous": "Wstecz", - "@previous": {}, - "next": "Następny", - "@next": {}, - "addExercise": "Dodaj ćwiczenie", - "@addExercise": {}, - "translation": "Tłumaczenie", - "@translation": {}, - "contributeExercise": "Przekaż ćwiczenie", - "@contributeExercise": {}, - "translateExercise": "Przetłumacz to ćwiczenie teraz", - "@translateExercise": {}, - "minutes": "Minuty", - "@minutes": {}, - "kilometers": "Kilometry", - "@kilometers": {}, - "until_failure": "Aż do awarii", - "@until_failure": {}, - "seconds": "Sekundy", - "@seconds": {}, - "bench": "Ławka", - "@bench": {}, - "triceps": "Triceps", - "@triceps": {}, - "swiss_ball": "Piłka lekarska", - "@swiss_ball": {}, - "none__bodyweight_exercise_": "brak (ćwiczenie z masą ciała)", - "@none__bodyweight_exercise_": {}, - "pull_up_bar": "Drążek do podciągania", - "@pull_up_bar": {}, - "biceps": "Biceps", - "@biceps": {}, - "userProfile": "Twój profil", - "@userProfile": {}, - "exerciseList": "Lista ćwiczeń", - "@exerciseList": {}, - "exercises": "Ćwiczenia", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Nazwa ćwiczenia", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "selectEntry": "Wybierz wpis", - "@selectEntry": {}, - "incline_bench": "Ławka skośna", - "@incline_bench": {}, - "gym_mat": "Mata gimnastyczna", - "@gym_mat": {}, - "aboutPageTitle": "Więcej o Wger", - "@aboutPageTitle": {}, - "glutes": "Pośladki", - "@glutes": {}, - "baseData": "Podstawy po angielsku", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "barbell": "Sztanga", - "@barbell": {}, - "lats": "Mięsień najszerszy pleców", - "@lats": {}, - "legs": "Nogi", - "@legs": {}, - "arms": "Ręce", - "@arms": {}, - "sz_bar": "Gryf łamany", - "@sz_bar": {}, - "miles": "Mile", - "@miles": {}, - "shoulders": "Barki", - "@shoulders": {}, - "calves": "Łydki", - "@calves": {}, - "hamstrings": "Mięsień dwugłowy uda", - "@hamstrings": {}, - "chest": "Klatka piersiowa", - "@chest": {}, - "back": "Plecy", - "@back": {}, - "lower_back": "Dolna część pleców", - "@lower_back": {}, - "kettlebell": "Kettle", - "@kettlebell": {}, - "dumbbell": "Hantla", - "@dumbbell": {}, - "abs": "Brzuch", - "@abs": {}, - "quads": "Mięsień czworogłowy uda", - "@quads": {}, - "cardio": "Kardio", - "@cardio": {}, - "contributeExerciseWarning": "Możesz dodawać ćwiczenia tylko wtedy, gdy Twoje konto jest starsze niż {days} dni i zweryfikowałeś swój adres e-mail", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "success": "Sukces", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "cacheWarning": "Ze względu na buforowanie może minąć trochę czasu zanim zmiany będą widoczne w całej aplikacji.", - "@cacheWarning": {}, - "useMetric": "Używaj systemu metrycznego (kg) dla masy ciała", - "@useMetric": {}, - "verify": "Zweryfikuj", - "@verify": {}, - "settingsTitle": "Ustawienia", - "@settingsTitle": {}, - "settingsCacheDeletedSnackbar": "Pamięć podręczna pomyślnie została wyczyszczona", - "@settingsCacheDeletedSnackbar": {}, - "settingsExerciseCacheDescription": "Pamięć podręczna ćwiczeń", - "@settingsExerciseCacheDescription": {}, - "log": "Zarejestruj", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "kilometers_per_hour": "Kilometrów na godzinę", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "done": "Ukończone", - "@done": {}, - "noMatchingExerciseFound": "Nie znaleziono ćwiczeń", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "searchNamesInEnglish": "Szukaj również w języku angielskim", - "@searchNamesInEnglish": {}, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "plates": "Talerze", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "lb": "lb", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "textPromptTitle": "Gotowy do startu?", - "@textPromptTitle": {}, - "onlyLogging": "Tylko licz kalorie", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Zaznacz to pole jeśli wyłącznie chcesz śledzić kalorie i nie chcesz tworzyć szczegółowego planu diety z poszczególnymi posiłkami", - "@onlyLoggingHelpText": {}, - "goalEnergy": "Cel energii", - "@goalEnergy": {}, - "goalProtein": "Cel białka", - "@goalProtein": {}, - "goalCarbohydrates": "Cel węglowodanów", - "@goalCarbohydrates": {}, - "goalFat": "Cel tłuszczów", - "@goalFat": {}, - "today": "Dzisiaj", - "@today": {}, - "loggedToday": "Zarejestrowane dzisiaj", - "@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" - } - } - }, - "settingsCacheTitle": "Pamięć podręczna", - "@settingsCacheTitle": {}, - "body_weight": "Masa ciała", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "textPromptSubheading": "Naciśnij przycisk, aby rozpocząć", - "@textPromptSubheading": {}, - "aboutDonateText": "Dopóki nasz projekt jest darmowy i tak zostanie na zawsze, ale działanie serweru nie jest! Także tworzenie naszego projektu zajmuje dużo czasu i wysiłku od wolontariuszów. Twoja kontrybucja bezpośrednią pokrywa te koszty, sprawia że nasz projekt się rowzija.", - "@aboutDonateText": {}, - "aboutDonateTitle": "Wspomóż", - "@aboutDonateTitle": {}, - "max_reps": "Maksymalna ilość powtórzeń", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Mil na godzinę", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "kg": "kg", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "goalMacro": "Cele makro", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "surplus": "nadwyżka", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "goalFiber": "Cel błonnikowy", - "@goalFiber": {}, - "noIngredientsDefined": "Nie zdefiniowano jeszcze żadnych składników", - "@noIngredientsDefined": {}, - "ingredientLogged": "Składnik zarejestrowany w dzienniku", - "@ingredientLogged": {}, - "selectMealToLog": "Wybierz posiłek, który chcesz zapisać w dzienniku", - "@selectMealToLog": {}, - "deficit": "deficyt", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "chartAllTimeTitle": "{name} Z całego okresu", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "chart30DaysTitle": "{name} ostatnie 30 dni", - "@chart30DaysTitle": { - "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "useApiToken": "Użyj API Token", - "@useApiToken": {}, - "apiToken": "API Token", - "@apiToken": {}, - "restTime": "Czas odpoczynku", - "@restTime": {}, - "errorCouldNotConnectToServer": "Nie możemy połączyć się z serwerem", - "@errorCouldNotConnectToServer": {}, - "errorCouldNotConnectToServerDetails": "Aplikacja nie może połączyć się z serwerem. Prosimy sprawdzić swoje połączenie z internetem lub adres URL i spróbować ponownie. Jeżeli problem nadal występuje, skontaktuj się z administratorem.", - "@errorCouldNotConnectToServerDetails": {}, - "aboutWhySupportTitle": "Open Source & za darmo ❤️", - "@aboutWhySupportTitle": {}, - "routines": "Rutyny", - "@routines": {}, - "newRoutine": "Nowa rutyna", - "@newRoutine": {}, - "min": "Min", - "@min": {}, - "max": "Max", - "@max": {}, - "copyToClipboard": "Skopiuj do schowku (clipboard)", - "@copyToClipboard": {}, - "errorInfoDescription": "Przepraszamy coś poszło źle. Możesz pomóc nam rozwiązać ten problem zgłaszając go na GitHub.", - "@errorInfoDescription": {}, - "invalidApiToken": "Wpisz poprawny token API", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "errorViewDetails": "Techniczne szczegóły", - "@errorViewDetails": {}, - "exerciseNr": "Ćwiczenie {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" - } - } - }, - "apiTokenValidChars": "Klucz API może zawierać wyłącznie litery od a-f (ang.), i cyrfy (0-9) i musi mieć długość dokładnie 40 znaków", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - }, - "noRoutines": "Ty nie masz żadnej rutyny", - "@noRoutines": {}, - "restDay": "Dzień odpoczynkowy", - "@restDay": {}, - "errorInfoDescription2": "Możesz kontynuować używanie tej aplikacji, ale niektóre funkcje mogą być niedostępne.", - "@errorInfoDescription2": {}, - "resistance_band": "Guma oporowa", - "@resistance_band": { - "description": "Generated entry for translation for server strings" - } + "username": "Nazwa użytkownika", + "@username": {}, + "email": "Adres email", + "@email": {}, + "invalidEmail": "Podaj poprawny adres email", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "confirmPassword": "Potwierdź hasło", + "@confirmPassword": {}, + "password": "Hasło", + "@password": {}, + "passwordTooShort": "Hasło jest zbyt krótkie", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "passwordsDontMatch": "Hasła nie są identyczne", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "usernameValidChars": "Nazwa użytkownika może zawierać tylko litery, cyfry i znaki specjalne: @,+,.,-, _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "invalidUrl": "Wpisz poprawny adres URL", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "useCustomServer": "Używaj niestandardowego serwera", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useDefaultServer": "Używaj domyślnego serwera", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "register": "Zarejestruj się", + "@register": { + "description": "Text for registration button" + }, + "logout": "Wyloguj się", + "@logout": { + "description": "Text for logout button" + }, + "login": "Zaloguj się", + "@login": { + "description": "Text for login button" + }, + "save": "Zapisz", + "@save": {}, + "customServerUrl": "Adres URL instancji wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "customServerHint": "Wpisz adres własnego serwera, w przeciwnym razie zostanie użyty domyślny", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "Reset", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "macronutrients": "Makroelementy", + "@macronutrients": {}, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "logged": "Zapisane", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "addImage": "Dodaj obraz", + "@addImage": {}, + "weekAverage": "Średnia z poprzedniego tygodnia", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "total": "Sumarycznie", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "unit": "Jednostka", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "aboutDescription": "Dziękujemy za używanie wger! Wger jest projektem open-source stworzonym przy współpracy entuzjastów fitnessu z całego świata.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "productFoundDescription": "Kod kreskowy odpowiada temu produktowi: {productName}. Czy chcesz kontynuować?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "dataCopied": "Dane skopiowane do nowego dziennika", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "noWeightEntries": "Nie masz wpisów dotyczących wagi", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "loadingText": "Ładowanie...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "calendar": "Kalendarz", + "@calendar": {}, + "selectExercise": "Wybierz ćwiczenie", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterCharacters": "Wprowadź od {min} do {max} znaków", + "@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": "Ilość serii ćwiczenia: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "rirNotUsed": "Bez rezerwy powtórzeń", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "weightUnit": "Jednostka wagi", + "@weightUnit": {}, + "repetitionUnit": "Jednostka powtórzeń", + "@repetitionUnit": {}, + "set": "Seria", + "@set": { + "description": "A set in a workout plan" + }, + "dayDescriptionHelp": "Opis tego, co jest robione w tym dniu (np. „dzień podciągania”) lub jakie części ciała są trenowane (np. „klatka piersiowa i ramiona”)", + "@dayDescriptionHelp": {}, + "setNr": "{nr} serii", + "@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": "Jeśli wykonasz tą sama liczbę powtórzenia z tym samym ciężarem dla wszystkich serii, możesz po prostu wypełnić jeden wiersz. Na przykład dla 4 serii wystarczy wpisać 10 dla powtórzeń, automatycznie zmieni się to na „4 x 10”.", + "@sameRepetitions": {}, + "comment": "Komentarz", + "@comment": { + "description": "Comment, additional information" + }, + "impression": "Ocena treningu", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "workoutSession": "Sesja treningowa", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "newSet": "Nowa seria", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "selectExercises": "Jeśli chcesz zrobić super serię, możesz wyszukać kilka ćwiczeń, zostaną one zgrupowane razem", + "@selectExercises": {}, + "gymMode": "Tryb treningu", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "equipment": "Sprzęt", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "muscles": "Mięśnie", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "musclesSecondary": "Mięśnie pomocnicze", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "category": "Kategoria", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "repetitions": "Powtórzenia", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "reps": "Powtórzenia", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "rir": "Liczba powtórzeń w rezerwie", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "successfullySaved": "Zapisane", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exercise": "Ćwiczenie", + "@exercise": { + "description": "An exercise for a workout" + }, + "searchExercise": "Wyszukaj ćwiczenie do dodania", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "logHelpEntries": "Jeśli w ciągu jednego dnia jest więcej niż jeden wpis z tą samą liczbą powtórzeń, ale z różnymi wagami, na wykresie pokazany jest tylko wpis o wyższej wadze.", + "@logHelpEntries": {}, + "logHelpEntriesUnits": "Zwróć uwagę, że na wykresie są tylko wpisy z jednostką masy (kg lub lb) i powtórzeniami, inne kombinacje, takie jak czas lub czas do błędu, są tutaj ignorowane.", + "@logHelpEntriesUnits": {}, + "description": "Opis", + "@description": {}, + "name": "Nazwa", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "addSet": "Dodaj serię", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Dodaj posiłek", + "@addMeal": {}, + "fat": "Tłuszcz", + "@fat": {}, + "measurement": "Pomiar", + "@measurement": {}, + "measurements": "Pomiar", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "registerInstead": "Nie posiadasz konta? Zarejestruj się teraz", + "@registerInstead": {}, + "loginInstead": "Posiadasz konto? Zaloguj się", + "@loginInstead": {}, + "labelBottomNavWorkout": "Trening", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "Żywienie", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "Dzienniki treningowe", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "Plan treningu", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "successfullyDeleted": "Usunięto", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "labelDashboard": "Pulpit", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "notes": "Notatki", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "newDay": "Nowy dzień", + "@newDay": {}, + "pause": "Przerwa", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "todaysWorkout": "Twój dzisiejszy trening", + "@todaysWorkout": {}, + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "jumpTo": "Wybierz ćwiczenie", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "noNutritionalPlans": "Nie masz planów żywieniowych", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "plateCalculator": "Obciążnik", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Nie można osiągnąć wagi z dostępnymi obciążeniami", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "mealLogged": "Posiłek zarejestrowany w dzienniku", + "@mealLogged": {}, + "logMeal": "Zapisz ten posiłek w dzienniku", + "@logMeal": {}, + "addIngredient": "Dodaj składnik", + "@addIngredient": {}, + "nutritionalPlan": "Plan diety", + "@nutritionalPlan": {}, + "nutritionalDiary": "Dziennik żywieniowy", + "@nutritionalDiary": {}, + "nutritionalPlans": "Plany żywieniowe", + "@nutritionalPlans": {}, + "start": "Uruchom", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "timeStart": "Czas rozpoczęcia", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "Czas zakończenia", + "@timeEnd": { + "description": "The end time of a workout" + }, + "ingredient": "Składnik", + "@ingredient": {}, + "energy": "Energia", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "time": "Czas", + "@time": { + "description": "The time of a meal or workout" + }, + "anErrorOccurred": "Wystąpił błąd!", + "@anErrorOccurred": {}, + "weight": "Waga", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "protein": "Białko", + "@protein": {}, + "carbohydrates": "Węglowodany", + "@carbohydrates": {}, + "confirmDelete": "Czy na pewno chcesz usunąć '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "planned": "Zaplanowane", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "difference": "Różnice", + "@difference": {}, + "percentEnergy": "Procent energii", + "@percentEnergy": {}, + "gPerBodyKg": "g / kg", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "proteinShort": "B", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "carbohydratesShort": "W", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "sugars": "Cukier", + "@sugars": {}, + "fatShort": "T", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "saturatedFat": "Tłuszcz nasycony", + "@saturatedFat": {}, + "fiber": "Błonnik", + "@fiber": {}, + "sodium": "Sód", + "@sodium": {}, + "amount": "Ilość", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "newEntry": "Nowy", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "edit": "Edytuj", + "@edit": {}, + "delete": "Usuń", + "@delete": {}, + "newNutritionalPlan": "Nowy plan żywieniowy", + "@newNutritionalPlan": {}, + "toggleDetails": "Przełącz szczegóły", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "goToDetailPage": "Przejdź do strony szczegółów", + "@goToDetailPage": {}, + "takePicture": "Zrób zdjęcie", + "@takePicture": {}, + "chooseFromLibrary": "Wybierz z galerii zdjęć", + "@chooseFromLibrary": {}, + "gallery": "Galeria", + "@gallery": {}, + "appUpdateTitle": "Wymagana aktualizacja", + "@appUpdateTitle": {}, + "appUpdateContent": "Ta wersja aplikacji nie jest kompatybilna z serwerem, zaktualizuj swoją aplikację.", + "@appUpdateContent": {}, + "productFound": "Znaleziono produkt", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productNotFound": "Produkt nie znaleziony", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "productNotFoundDescription": "Produkt z zeskanowanym kodem kreskowym {barcode} nie został znaleziony w bazie danych wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Zeskanuj kod kreskowy", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Zamknij", + "@close": { + "description": "Translation for close" + }, + "logIngredient": "Zapisz składnik w dzienniku żywieniowym", + "@logIngredient": {}, + "searchIngredient": "Wyszukaj składnik", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "measurementCategoriesHelpText": "Kategoria pomiaru, np. „biceps” lub „pomiar warstwy podskórnej tłuszczu”", + "@measurementCategoriesHelpText": {}, + "measurementEntriesHelpText": "Jednostka pomiaru np. „cm” lub „%”", + "@measurementEntriesHelpText": {}, + "value": "Wartość", + "@value": { + "description": "The value of a measurement entry" + }, + "timeStartAhead": "Czas rozpoczęcia nie może być wcześniejszy niż czas zakończenia", + "@timeStartAhead": {}, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "selectIngredient": "Wybierz składnik", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "recentlyUsedIngredients": "Ostatnio dodane składniki", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "selectImage": "Wybierz obraz", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "optionsLabel": "Opcje", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "goToToday": "Przejdź do dziś", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "enterValue": "proszę wprowadzić wartość", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "setUnitsAndRir": "Ustaw jednostki oraz rezerwę liczby powtórzeń", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "enterValidNumber": "Proszę wprowadzić poprawny numer", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "noMeasurementEntries": "Nie masz wpisów pomiarowych", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Dodaj nowy pomiar", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "enterMinCharacters": "Proszę wpisać co najmniej {min} znaków", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": { + "type": "String" + } + } + }, + "baseNameEnglish": "Wszystkie ćwiczenia wymagają nazwy podstawowej w języku angielskim", + "@baseNameEnglish": {}, + "images": "Obrazy", + "@images": {}, + "language": "Język", + "@language": {}, + "add_exercise_image_license": "Obrazy muszą być zgodne z licencją CC BY SA. Jeśli masz wątpliwości przesyłaj tylko zdjęcia które sam zrobiłeś.", + "@add_exercise_image_license": {}, + "variations": "Wariacje", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "Znany również jako: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "unVerifiedEmail": "Niezweryfikowany adres e-mail", + "@unVerifiedEmail": {}, + "verifiedEmail": "Zweryfikowany adres e-mail", + "@verifiedEmail": {}, + "verifiedEmailReason": "Aby współtworzyć ćwiczenia musisz zweryfikować swój adres e-mail", + "@verifiedEmailReason": {}, + "verifiedEmailInfo": "Wiadomość weryfikacyjna została wysłana na adres {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "alternativeNames": "Alternatywne nazwy", + "@alternativeNames": {}, + "oneNamePerLine": "Jedna nazwa w wierszu", + "@oneNamePerLine": {}, + "whatVariationsExist": "Czy istnieją wariacje tego ćwiczenia?", + "@whatVariationsExist": {}, + "previous": "Wstecz", + "@previous": {}, + "next": "Następny", + "@next": {}, + "addExercise": "Dodaj ćwiczenie", + "@addExercise": {}, + "translation": "Tłumaczenie", + "@translation": {}, + "contributeExercise": "Przekaż ćwiczenie", + "@contributeExercise": {}, + "translateExercise": "Przetłumacz to ćwiczenie teraz", + "@translateExercise": {}, + "minutes": "Minuty", + "@minutes": {}, + "kilometers": "Kilometry", + "@kilometers": {}, + "until_failure": "Aż do awarii", + "@until_failure": {}, + "seconds": "Sekundy", + "@seconds": {}, + "bench": "Ławka", + "@bench": {}, + "triceps": "Triceps", + "@triceps": {}, + "swiss_ball": "Piłka lekarska", + "@swiss_ball": {}, + "none__bodyweight_exercise_": "brak (ćwiczenie z masą ciała)", + "@none__bodyweight_exercise_": {}, + "pull_up_bar": "Drążek do podciągania", + "@pull_up_bar": {}, + "biceps": "Biceps", + "@biceps": {}, + "userProfile": "Twój profil", + "@userProfile": {}, + "exerciseList": "Lista ćwiczeń", + "@exerciseList": {}, + "exercises": "Ćwiczenia", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Nazwa ćwiczenia", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "selectEntry": "Wybierz wpis", + "@selectEntry": {}, + "incline_bench": "Ławka skośna", + "@incline_bench": {}, + "gym_mat": "Mata gimnastyczna", + "@gym_mat": {}, + "aboutPageTitle": "O nas i wsparcie", + "@aboutPageTitle": {}, + "glutes": "Pośladki", + "@glutes": {}, + "baseData": "Podstawy po angielsku", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "barbell": "Sztanga", + "@barbell": {}, + "lats": "Mięsień najszerszy pleców", + "@lats": {}, + "legs": "Nogi", + "@legs": {}, + "arms": "Ręce", + "@arms": {}, + "sz_bar": "Gryf łamany", + "@sz_bar": {}, + "miles": "Mile", + "@miles": {}, + "shoulders": "Barki", + "@shoulders": {}, + "calves": "Łydki", + "@calves": {}, + "hamstrings": "Mięsień dwugłowy uda", + "@hamstrings": {}, + "chest": "Klatka piersiowa", + "@chest": {}, + "back": "Plecy", + "@back": {}, + "lower_back": "Dolna część pleców", + "@lower_back": {}, + "kettlebell": "Kettle", + "@kettlebell": {}, + "dumbbell": "Hantla", + "@dumbbell": {}, + "abs": "Brzuch", + "@abs": {}, + "quads": "Mięsień czworogłowy uda", + "@quads": {}, + "cardio": "Kardio", + "@cardio": {}, + "contributeExerciseWarning": "Możesz dodawać ćwiczenia tylko wtedy, gdy Twoje konto jest starsze niż {days} dni i zweryfikowałeś swój adres e-mail", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "success": "Sukces", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "cacheWarning": "Ze względu na buforowanie może minąć trochę czasu zanim zmiany będą widoczne w całej aplikacji.", + "@cacheWarning": {}, + "useMetric": "Używaj systemu metrycznego (kg) dla masy ciała", + "@useMetric": {}, + "verify": "Zweryfikuj", + "@verify": {}, + "settingsTitle": "Ustawienia", + "@settingsTitle": {}, + "settingsCacheDeletedSnackbar": "Pamięć podręczna pomyślnie została wyczyszczona", + "@settingsCacheDeletedSnackbar": {}, + "settingsExerciseCacheDescription": "Pamięć podręczna ćwiczeń", + "@settingsExerciseCacheDescription": {}, + "log": "Zarejestruj", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "kilometers_per_hour": "Kilometrów na godzinę", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "done": "Ukończone", + "@done": {}, + "noMatchingExerciseFound": "Nie znaleziono ćwiczeń", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "searchNamesInEnglish": "Szukaj również w języku angielskim", + "@searchNamesInEnglish": {}, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "plates": "Talerze", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "lb": "lb", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "textPromptTitle": "Gotowy do startu?", + "@textPromptTitle": {}, + "onlyLogging": "Tylko licz kalorie", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Zaznacz to pole jeśli wyłącznie chcesz śledzić kalorie i nie chcesz tworzyć szczegółowego planu diety z poszczególnymi posiłkami", + "@onlyLoggingHelpText": {}, + "goalEnergy": "Cel energii", + "@goalEnergy": {}, + "goalProtein": "Cel białka", + "@goalProtein": {}, + "goalCarbohydrates": "Cel węglowodanów", + "@goalCarbohydrates": {}, + "goalFat": "Cel tłuszczów", + "@goalFat": {}, + "today": "Dzisiaj", + "@today": {}, + "loggedToday": "Zarejestrowane dzisiaj", + "@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" + } + } + }, + "settingsCacheTitle": "Pamięć podręczna", + "@settingsCacheTitle": {}, + "body_weight": "Masa ciała", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "textPromptSubheading": "Naciśnij przycisk, aby rozpocząć", + "@textPromptSubheading": {}, + "aboutDonateText": "Dopóki nasz projekt jest darmowy i tak zostanie na zawsze, ale działanie serweru nie jest! Także tworzenie naszego projektu zajmuje dużo czasu i wysiłku od wolontariuszów. Twoja kontrybucja bezpośrednią pokrywa te koszty, sprawia że nasz projekt się rowzija.", + "@aboutDonateText": {}, + "aboutDonateTitle": "Wspomóż", + "@aboutDonateTitle": {}, + "max_reps": "Maksymalna ilość powtórzeń", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Mil na godzinę", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "goalMacro": "Cele makro", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "surplus": "nadwyżka", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "goalFiber": "Cel błonnikowy", + "@goalFiber": {}, + "noIngredientsDefined": "Nie zdefiniowano jeszcze żadnych składników", + "@noIngredientsDefined": {}, + "ingredientLogged": "Składnik zarejestrowany w dzienniku", + "@ingredientLogged": {}, + "selectMealToLog": "Wybierz posiłek, który chcesz zapisać w dzienniku", + "@selectMealToLog": {}, + "deficit": "deficyt", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "chartAllTimeTitle": "{name} Z całego okresu", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "chart30DaysTitle": "{name} ostatnie 30 dni", + "@chart30DaysTitle": { + "description": "last 30 days chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "useApiToken": "Użyj API Token", + "@useApiToken": {}, + "apiToken": "API Token", + "@apiToken": {}, + "restTime": "Czas odpoczynku", + "@restTime": {}, + "errorCouldNotConnectToServer": "Nie możemy połączyć się z serwerem", + "@errorCouldNotConnectToServer": {}, + "errorCouldNotConnectToServerDetails": "Aplikacja nie może połączyć się z serwerem. Prosimy sprawdzić swoje połączenie z internetem lub adres URL i spróbować ponownie. Jeżeli problem nadal występuje, skontaktuj się z administratorem.", + "@errorCouldNotConnectToServerDetails": {}, + "aboutWhySupportTitle": "Open Source & za darmo ❤️", + "@aboutWhySupportTitle": {}, + "routines": "Rutyny", + "@routines": {}, + "newRoutine": "Nowa rutyna", + "@newRoutine": {}, + "min": "Min", + "@min": {}, + "max": "Max", + "@max": {}, + "copyToClipboard": "Skopiuj do schowku (clipboard)", + "@copyToClipboard": {}, + "errorInfoDescription": "Przepraszamy coś poszło źle. Możesz pomóc nam rozwiązać ten problem zgłaszając go na GitHub.", + "@errorInfoDescription": {}, + "invalidApiToken": "Wpisz poprawny token API", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "errorViewDetails": "Techniczne szczegóły", + "@errorViewDetails": {}, + "exerciseNr": "Ćwiczenie {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" + } + } + }, + "apiTokenValidChars": "Klucz API może zawierać wyłącznie litery od a-f (ang.), i cyrfy (0-9) i musi mieć długość dokładnie 40 znaków", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "noRoutines": "Ty nie masz żadnej rutyny", + "@noRoutines": {}, + "restDay": "Dzień odpoczynkowy", + "@restDay": {}, + "errorInfoDescription2": "Możesz kontynuować używanie tej aplikacji, ale niektóre funkcje mogą być niedostępne.", + "@errorInfoDescription2": {}, + "resistance_band": "Guma oporowa", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "selectAvailablePlates": "Wybierz dostępne obciążenie", + "@selectAvailablePlates": {}, + "barWeight": "Waga sztangi", + "@barWeight": {}, + "useColors": "Użyj kolorów", + "@useColors": {}, + "useUsernameAndPassword": "Użyj nazwy użytkownika i hasła", + "@useUsernameAndPassword": {}, + "endDate": "Data zakończenia", + "@endDate": {}, + "startDate": "Data rozpoczęcia", + "@startDate": {}, + "sets": "Liczba serii do wykonania dla jednego ćwiczenia", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "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" + } + } + }, + "isRestDay": "Czy to dzień odpoczynku", + "@isRestDay": {}, + "isRestDayHelp": "Pamiętaj, że wszystkie zestawy i ćwiczenia zostaną usunięte, gdy oznaczysz dzień jako dzień odpoczynku.", + "@isRestDayHelp": {}, + "needsLogsToAdvance": "Potrzebuje dzienników, aby przejść dalej", + "@needsLogsToAdvance": {}, + "needsLogsToAdvanceHelp": "Wybierz tę opcję, jeśli chcesz, aby program przechodził do następnego zaplanowanego dnia tylko wtedy, gdy zarejestrowałeś trening w danym dniu", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Dni w danym planie", + "@routineDays": {}, + "resultingRoutine": "Rezultaty planu", + "@resultingRoutine": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Twój obecny plan żywieniowy nie zawiera żadnych posiłków", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Aby dodać posiłki do planu, przejdź do szczegółów planu żywieniowego", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "chartDuringPlanTitle": "{chartName} w planie żywieniowym {planName}", + "@chartDuringPlanTitle": { + "description": "chart of 'chartName' (e.g. 'weight', 'body fat' etc.) logged during plan", + "type": "text", + "placeholders": { + "chartName": { + "type": "String" + }, + "planName": { + "type": "String" + } + } + }, + "aboutContributeTitle": "Współtwórz", + "@aboutContributeTitle": {}, + "aboutContributeText": "Zachęcamy do wszelkiego rodzaju wkładu. Niezależnie od tego, czy jesteś programistą, tłumaczem, czy po prostu pasjonatem fitnessu, każda forma wsparcia jest mile widziana!", + "@aboutContributeText": {}, + "aboutBugsListTitle": "Zgłoś problem lub zaproponuj funkcję", + "@aboutBugsListTitle": {}, + "aboutTranslationListTitle": "Przetłumacz aplikację", + "@aboutTranslationListTitle": {}, + "aboutSourceListTitle": "Wyświetl kod źródłowy", + "@aboutSourceListTitle": {}, + "aboutJoinCommunityTitle": "Dołącz do społeczności", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Discord", + "@aboutDiscordTitle": {}, + "others": "Inne", + "@others": {}, + "fitInWeekHelp": "Jeśli opcja jest włączona, dni będą się powtarzać w cyklu tygodniowym, w przeciwnym razie dni będą następować po sobie sekwencyjnie, bez względu na początek nowego tygodnia.", + "@fitInWeekHelp": {}, + "addSuperset": "Dodaj superset", + "@addSuperset": {}, + "setHasProgression": "Set ma progresję", + "@setHasProgression": {}, + "setHasProgressionWarning": "Należy pamiętać, że obecnie nie ma możliwości edycji wszystkich ustawień zestawu w aplikacji mobilnej ani skonfigurowania automatycznego postępu. Na razie prosimy korzystać z aplikacji internetowej.", + "@setHasProgressionWarning": {}, + "setHasNoExercises": "Ten zestaw nie zawiera jeszcze żadnych ćwiczeń!", + "@setHasNoExercises": {}, + "settingsIngredientCacheDescription": "Pamięć podręczna składników", + "@settingsIngredientCacheDescription": {}, + "simpleMode": "Tryb prosty", + "@simpleMode": {}, + "simpleModeHelp": "Ukryj niektóre z bardziej zaawansowanych ustawień podczas edycji ćwiczeń", + "@simpleModeHelp": {}, + "progressionRules": "To ćwiczenie ma zasady progresji i nie można go edytować w aplikacji mobilnej. Aby edytować to ćwiczenie, należy skorzystać z aplikacji internetowej.", + "@progressionRules": {}, + "overallChangeWeight": "Zmiana wagi", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Z posiłków", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "goalTypeBasic": "Proste", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Zaawansowane", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "indicatorRaw": "surowe", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "średnio", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "themeMode": "Tryb tematyczny", + "@themeMode": {}, + "darkMode": "Zawsze używaj trybu ciemnego", + "@darkMode": {}, + "lightMode": "Zawsze używaj trybu jasnego", + "@lightMode": {}, + "systemMode": "Ustawienia systemu", + "@systemMode": {}, + "fitInWeek": "Dopasuj w tygodniu", + "@fitInWeek": {} } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 54fb5a6a..26297cb3 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -1,1012 +1,1014 @@ { - "logout": "Sair", - "@logout": { - "description": "Text for logout button" - }, - "usernameValidChars": "Um nome de usuário pode conter apenas letras, dígitos e os caracteres @, +, ., - e _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "passwordsDontMatch": "As senhas não correspondem", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "passwordTooShort": "A senha é muito curta", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "password": "Senha", - "@password": {}, - "confirmPassword": "Confirmar senha", - "@confirmPassword": {}, - "invalidEmail": "Por favor insira um endereço de e-mail válido", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "email": "Endereço de e-mail", - "@email": {}, - "invalidUsername": "Insira um nome de usuário válido", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "customServerHint": "Digite o endereço do seu próprio servidor, ou então o padrão será usado", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "loginInstead": "Já tem uma conta? Faça login", - "@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": "Registros de treinamento", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "labelWorkoutPlan": "Plano de treino", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "labelDashboard": "Painel", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "successfullyDeleted": "Excluído", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "exercise": "Exercício", - "@exercise": { - "description": "An exercise for a workout" - }, - "equipment": "Equipamento", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "muscles": "Músculos", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "category": "Categoria", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "repetitions": "Repetições", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "rir": "ReR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "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" - }, - "set": "Set", - "@set": { - "description": "A set in a workout plan" - }, - "comment": "Comentário", - "@comment": { - "description": "Comment, additional information" - }, - "newDay": "Novo dia", - "@newDay": {}, - "newSet": "Novo set", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "selectExercises": "Se você quiser fazer um conjunto, você pode procurar vários exercícios, eles serão agrupados", - "@selectExercises": {}, - "todaysWorkout": "Seu treino hoje", - "@todaysWorkout": {}, - "addSet": "Adicionar set", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Adicionar refeição", - "@addMeal": {}, - "addIngredient": "Adicionar ingrediente", - "@addIngredient": {}, - "logIngredient": "Registar ingrediente no diário de nutrição", - "@logIngredient": {}, - "nutritionalDiary": "Gráfico nutricional", - "@nutritionalDiary": {}, - "nutritionalPlans": "Planos nutricionais", - "@nutritionalPlans": {}, - "weight": "Peso", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "measurement": "Medição", - "@measurement": {}, - "date": "Data", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "value": "Valor", - "@value": { - "description": "The value of a measurement entry" - }, - "timeStart": "Hora de início", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeEnd": "Hora do final", - "@timeEnd": { - "description": "The end time of a workout" - }, - "timeStartAhead": "A hora de início não pode ser anterior à hora de término", - "@timeStartAhead": {}, - "energy": "Energia", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "macronutrients": "Macronutrientes", - "@macronutrients": {}, - "planned": "Planejado", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "weekAverage": "Média dos 7 dias", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "gPerBodyKg": "g por kg", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "carbohydrates": "Carboidratos", - "@carbohydrates": {}, - "carbohydratesShort": "C", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "fiber": "Fibra", - "@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" - }, - "loadingText": "Carregando...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "delete": "Deletar", - "@delete": {}, - "newNutritionalPlan": "Novo plano nutricional", - "@newNutritionalPlan": {}, - "toggleDetails": "Alternar detalhes", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "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" - }, - "calendar": "Calendário", - "@calendar": {}, - "goToToday": "Voltar para hoje", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "enterValue": "por favor insira um valor", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "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" - } - } - }, - "recentlyUsedIngredients": "Ingredientes adicionados recentemente", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "selectImage": "Selecione uma imagem", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "addImage": "Adicionar imagem", - "@addImage": {}, - "dataCopied": "Dados copiados para nova entrada", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "appUpdateTitle": "Atualização necessária", - "@appUpdateTitle": {}, - "appUpdateContent": "Esta versão do aplicativo não é compatível com o servidor, atualize seu aplicativo.", - "@appUpdateContent": {}, - "login": "Entrar", - "@login": { - "description": "Text for login button" - }, - "useCustomServer": "Usar servidor personalizado", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "productNotFound": "Produto não encontrado", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "scanBarcode": "Digitalizar código de barras", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "register": "Registrar", - "@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" - }, - "invalidUrl": "Por favor, insira um URL válido", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "username": "Nome do usuário", - "@username": {}, - "notes": "Notas", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "customServerUrl": "URL da instância wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "reset": "Redefinir", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "successfullySaved": "Salvou", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "registerInstead": "Não tem uma conta? Registre agora", - "@registerInstead": {}, - "weightUnit": "Unidade de peso", - "@weightUnit": {}, - "searchExercise": "Procurar exercício", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "plateCalculator": "Pratos", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "musclesSecondary": "Músculos secundários", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "reps": "Reps", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "impression": "Impressão", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "repetitionUnit": "Unidade de repetição", - "@repetitionUnit": {}, - "dayDescriptionHelp": "Uma descrição do que é feito neste dia (por exemplo, 'dia de treino') ou quais partes do corpo são treinadas (por exemplo, 'peito e ombros')", - "@dayDescriptionHelp": {}, - "setNr": "Set {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": "Se você fizer as mesmas repetições e peso para todos os conjuntos, você pode preencher apenas uma linha. Por exemplo, para 4 séries, basta digitar 10 para as repetições, isso se torna automaticamente \"4 x 10\".", - "@sameRepetitions": {}, - "gymMode": "Modo treino", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "logHelpEntries": "Se em um mesmo dia houver mais de uma entrada com o mesmo número de repetições, mas com pesos diferentes, apenas a entrada com maior peso é mostrada no gráfico.", - "@logHelpEntries": {}, - "description": "Descrição", - "@description": {}, - "workoutSession": "Sessão de treino", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "measurements": "Medidas", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "energyShort": "E", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "plateCalculatorNotDivisible": "Não é possível atingir o peso com as placas disponíveis", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "pause": "Pausar", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "saturatedFat": "Gordura saturada", - "@saturatedFat": {}, - "jumpTo": "Pular", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "logMeal": "Registar esta refeição no diário de nutrição", - "@logMeal": {}, - "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", - "@measurementCategoriesHelpText": {}, - "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é falha são ignoradas aqui.", - "@logHelpEntriesUnits": {}, - "searchIngredient": "Procurar ingrediente", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "nutritionalPlan": "Plano nutricional", - "@nutritionalPlan": {}, - "name": "Nome", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "save": "Salvar", - "@save": {}, - "mealLogged": "Refeição registrada no gráfico", - "@mealLogged": {}, - "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": {}, - "anErrorOccurred": "Um erro ocorreu!", - "@anErrorOccurred": {}, - "start": "Iniciar", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "measurementEntriesHelpText": "A unidade usada para medir a categoria, como 'cm' ou '%'", - "@measurementEntriesHelpText": {}, - "time": "Tempo", - "@time": { - "description": "The time of a meal or workout" - }, - "ingredient": "Ingrediente", - "@ingredient": {}, - "percentEnergy": "Porcentagem de energia", - "@percentEnergy": {}, - "kcal": "kcal", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "logged": "Registrado", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "difference": "Diferença", - "@difference": {}, - "total": "Total", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "proteinShort": "p", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "kJ": "kJ", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "g": "g", - "@g": { - "description": "Abbreviation for gram" - }, - "protein": "Proteína", - "@protein": {}, - "sugars": "Açúcares", - "@sugars": {}, - "fat": "Gordura", - "@fat": {}, - "fatShort": "G", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "noWeightEntries": "Você não tem entradas de peso", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "enterValidNumber": "Por favor insira um número válido", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "selectIngredient": "Selecione um ingrediente", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "edit": "Editar", - "@edit": {}, - "confirmDelete": "Tem certeza que deseja excluir '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "setUnitsAndRir": "Definir unidades e ReR", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "productFound": "Produto encontrado", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productNotFoundDescription": "O produto com o código de barras digitalizado {barcode} não foi encontrado no banco de dados", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "selectExercise": "Selecione um exercício", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterCharacters": "Insira 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" - } - } - }, - "optionsLabel": "Opções", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "productFoundDescription": "O código de barras corresponde a este produto: {productName}. Você quer continuar?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "alsoKnownAs": "Também chamado de: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "logout": "Sair", + "@logout": { + "description": "Text for logout button" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmail": "Email verificado", - "@verifiedEmail": {}, - "unVerifiedEmail": "Verificação pendente", - "@unVerifiedEmail": {}, - "verifiedEmailReason": "É necessário verificar seu email para contribuir com exercícios", - "@verifiedEmailReason": {}, - "verifiedEmailInfo": "Um email de verificação foi enviado para {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "close": "Fechar", - "@close": { - "description": "Translation for close" - }, - "variations": "Variações", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "oneNamePerLine": "Somente um nome por linha", - "@oneNamePerLine": {}, - "whatVariationsExist": "Se houver alguma, quais as possíveis variações para esse exercício?", - "@whatVariationsExist": {}, - "takePicture": "Tirar uma foto", - "@takePicture": {}, - "chooseFromLibrary": "Escolher da galeria", - "@chooseFromLibrary": {}, - "gallery": "Galeria de fotos", - "@gallery": {}, - "addExercise": "Adicionar exercício", - "@addExercise": {}, - "translation": "Tradução", - "@translation": {}, - "translateExercise": "Traduzir este exercício", - "@translateExercise": {}, - "alternativeNames": "Outros nomes", - "@alternativeNames": {}, - "images": "Imagens", - "@images": {}, - "language": "Idioma", - "@language": {}, - "previous": "Anterior", - "@previous": {}, - "next": "Próximo", - "@next": {}, - "minutes": "Minutos", - "@minutes": {}, - "seconds": "Segundos", - "@seconds": {}, - "until_failure": "Até a falha", - "@until_failure": {}, - "kilometers": "Quilômetros", - "@kilometers": {}, - "glutes": "Glúteos", - "@glutes": {}, - "bench": "Supino", - "@bench": {}, - "barbell": "Barra", - "@barbell": {}, - "triceps": "Tríceps", - "@triceps": {}, - "biceps": "Bíceps", - "@biceps": {}, - "dumbbell": "Haltere", - "@dumbbell": {}, - "abs": "Abdominal", - "@abs": {}, - "chest": "Peito", - "@chest": {}, - "shoulders": "Ombro", - "@shoulders": {}, - "gym_mat": "Colchonete", - "@gym_mat": {}, - "incline_bench": "Supino inclinado", - "@incline_bench": {}, - "calves": "Panturrilha", - "@calves": {}, - "legs": "Pernas", - "@legs": {}, - "lats": "Dorsal", - "@lats": {}, - "quads": "Quadríceps", - "@quads": {}, - "hamstrings": "Posterior de coxa", - "@hamstrings": {}, - "arms": "Braços", - "@arms": {}, - "pull_up_bar": "Barra fixa", - "@pull_up_bar": {}, - "lower_back": "Lombar", - "@lower_back": {}, - "swiss_ball": "Bola suíça", - "@swiss_ball": {}, - "kettlebell": "Kettlebell", - "@kettlebell": {}, - "none__bodyweight_exercise_": "nenhum (somente peso do corpo)", - "@none__bodyweight_exercise_": {}, - "aboutPageTitle": "Sobre nós & suporte", - "@aboutPageTitle": {}, - "enterMinCharacters": "Por favor, selecione ao menos {min} de 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 um nome base em inglês", - "@baseNameEnglish": {}, - "miles": "Milhas", - "@miles": {}, - "noMeasurementEntries": "Você não tem entradas de medição", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Adicionar nova medição", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "contributeExercise": "Contribua um exercício", - "@contributeExercise": {}, - "baseData": "Básico em inglês", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "sz_bar": "Barra SZ", - "@sz_bar": {}, - "back": "Costas", - "@back": {}, - "userProfile": "Seu perfil", - "@userProfile": {}, - "exercises": "Exercícios", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseList": "Lista de Exercício", - "@exerciseList": {}, - "exerciseName": "Nome do exercício", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "add_exercise_image_license": "As imagens devem ser compatíveis com a licença CC BY SA. Em caso de dúvida, carregue apenas fotos que você mesmo tirou.", - "@add_exercise_image_license": {}, - "selectEntry": "Por favor selecione uma entrada", - "@selectEntry": {}, - "cacheWarning": "Devido ao caching, pode levar algum tempo até que as alterações sejam visíveis em todo o aplicativo.", - "@cacheWarning": {}, - "success": "Sucesso", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "contributeExerciseWarning": "Você só pode contribuir com exercícios se sua conta tiver mais de {days} dias e tiver verificado seu e-mail", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "cardio": "Cardio", - "@cardio": {}, - "textPromptTitle": "Podemos começar?", - "@textPromptTitle": {}, - "textPromptSubheading": "Aperte o botão de ação para começar", - "@textPromptSubheading": {}, - "body_weight": "Peso Corporal", - "@body_weight": { - "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" - }, - "plates": "Pratos", - "@plates": { - "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" - }, - "searchNamesInEnglish": "Também buscar nomes em inglês", - "@searchNamesInEnglish": {}, - "verify": "Verificar", - "@verify": {}, - "max_reps": "Repetição Máxima", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "settingsCacheTitle": "Cache", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Cache do exercício", - "@settingsExerciseCacheDescription": {}, - "useMetric": "Use unidades métricas para o peso corpora", - "@useMetric": {}, - "settingsTitle": "Configurações", - "@settingsTitle": {}, - "settingsCacheDeletedSnackbar": "Cache limpo com sucesso", - "@settingsCacheDeletedSnackbar": {}, - "log": "Log", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Feito", - "@done": {}, - "noMatchingExerciseFound": "Nenhum exercício correspondente encontrado", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "aboutMastodonTitle": "Mastodon", - "@aboutMastodonTitle": {}, - "aboutDonateTitle": "Faz uma doação", - "@aboutDonateTitle": {}, - "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": {}, - "goalEnergy": "Meta energética", - "@goalEnergy": {}, - "goalProtein": "Meta proteica", - "@goalProtein": {}, - "goalCarbohydrates": "Meta de carboidratos", - "@goalCarbohydrates": {}, - "goalFat": "Meta de gordura", - "@goalFat": {}, - "today": "Hoje", - "@today": {}, - "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" - } - } - }, - "noIngredientsDefined": "Sem ingredientes definido ainda", - "@noIngredientsDefined": {}, - "ingredientLogged": "Ingrediente ativo registrado diariamente", - "@ingredientLogged": {}, - "onlyLoggingHelpText": "Marque a caixa se você desejar apenas o seu registo de calorias e não quer a configuração de um detalhado plano nutricional com refeições", - "@onlyLoggingHelpText": {}, - "goalMacro": "Macro objetivos", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "selectMealToLog": "Selecione uma refeição para entrar no diário", - "@selectMealToLog": {}, - "goalFiber": "Meta de fibra", - "@goalFiber": {}, - "deficit": "Défice", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "surplus": "Excedente", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "chart30DaysTitle": "{name} Ultimos 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" - } - } - }, - "loggedToday": "Registrado hoje", - "@loggedToday": {}, - "chartAllTimeTitle": "{name} de todo o tempo", - "@chartAllTimeTitle": { - "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", - "type": "text", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "overallChangeWeight": "Mudança geral", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "A partir 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": "Crua", - "@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" - }, - "lightMode": "Modo sempre a luz de", - "@lightMode": {}, - "systemMode": "Configurações do sistema", - "@systemMode": {}, - "themeMode": "Tema", - "@themeMode": {}, - "darkMode": "Modo sempre escuro", - "@darkMode": {}, - "settingsIngredientCacheDescription": "Princípio de cache", - "@settingsIngredientCacheDescription": {}, - "routines": "Rotinas", - "@routines": {}, - "newRoutine": "Nova rotina", - "@newRoutine": {}, - "noRoutines": "Você não tem rotinas", - "@noRoutines": {}, - "sets": "Séries", - "@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" - } - } - }, - "restDay": "Dia de descanso", - "@restDay": {}, - "isRestDay": "É tempo de descanso", - "@isRestDay": {}, - "routineDays": "Dias na rotina", - "@routineDays": {}, - "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": {}, - "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": {} + "usernameValidChars": "Um nome de usuário pode conter apenas letras, dígitos e os caracteres @, +, ., - e _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "passwordsDontMatch": "As senhas não correspondem", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "A senha é muito curta", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "password": "Senha", + "@password": {}, + "confirmPassword": "Confirmar senha", + "@confirmPassword": {}, + "invalidEmail": "Por favor insira um endereço de e-mail válido", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "Endereço de e-mail", + "@email": {}, + "invalidUsername": "Insira um nome de usuário válido", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "customServerHint": "Digite o endereço do seu próprio servidor, ou então o padrão será usado", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "loginInstead": "Já tem uma conta? Faça login", + "@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": "Registros de treinamento", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "Plano de treino", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "Painel", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "successfullyDeleted": "Excluído", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "exercise": "Exercício", + "@exercise": { + "description": "An exercise for a workout" + }, + "equipment": "Equipamento", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "muscles": "Músculos", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "category": "Categoria", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "repetitions": "Repetições", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "rir": "ReR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "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" + }, + "set": "Set", + "@set": { + "description": "A set in a workout plan" + }, + "comment": "Comentário", + "@comment": { + "description": "Comment, additional information" + }, + "newDay": "Novo dia", + "@newDay": {}, + "newSet": "Novo set", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "selectExercises": "Se você quiser fazer um conjunto, você pode procurar vários exercícios, eles serão agrupados", + "@selectExercises": {}, + "todaysWorkout": "Seu treino hoje", + "@todaysWorkout": {}, + "addSet": "Adicionar set", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Adicionar refeição", + "@addMeal": {}, + "addIngredient": "Adicionar ingrediente", + "@addIngredient": {}, + "logIngredient": "Registar ingrediente no diário de nutrição", + "@logIngredient": {}, + "nutritionalDiary": "Gráfico nutricional", + "@nutritionalDiary": {}, + "nutritionalPlans": "Planos nutricionais", + "@nutritionalPlans": {}, + "weight": "Peso", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "measurement": "Medição", + "@measurement": {}, + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "value": "Valor", + "@value": { + "description": "The value of a measurement entry" + }, + "timeStart": "Hora de início", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "Hora do final", + "@timeEnd": { + "description": "The end time of a workout" + }, + "timeStartAhead": "A hora de início não pode ser anterior à hora de término", + "@timeStartAhead": {}, + "energy": "Energia", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "macronutrients": "Macronutrientes", + "@macronutrients": {}, + "planned": "Planejado", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "weekAverage": "Média dos 7 dias", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "gPerBodyKg": "g por kg", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "carbohydrates": "Carboidratos", + "@carbohydrates": {}, + "carbohydratesShort": "C", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "fiber": "Fibra", + "@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" + }, + "loadingText": "Carregando...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "delete": "Deletar", + "@delete": {}, + "newNutritionalPlan": "Novo plano nutricional", + "@newNutritionalPlan": {}, + "toggleDetails": "Alternar detalhes", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "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" + }, + "calendar": "Calendário", + "@calendar": {}, + "goToToday": "Voltar para hoje", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "enterValue": "por favor insira um valor", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "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" + } + } + }, + "recentlyUsedIngredients": "Ingredientes adicionados recentemente", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "selectImage": "Selecione uma imagem", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "addImage": "Adicionar imagem", + "@addImage": {}, + "dataCopied": "Dados copiados para nova entrada", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "appUpdateTitle": "Atualização necessária", + "@appUpdateTitle": {}, + "appUpdateContent": "Esta versão do aplicativo não é compatível com o servidor, atualize seu aplicativo.", + "@appUpdateContent": {}, + "login": "Entrar", + "@login": { + "description": "Text for login button" + }, + "useCustomServer": "Usar servidor personalizado", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "productNotFound": "Produto não encontrado", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "scanBarcode": "Digitalizar código de barras", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "register": "Registrar", + "@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" + }, + "invalidUrl": "Por favor, insira um URL válido", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "username": "Nome do usuário", + "@username": {}, + "notes": "Notas", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "customServerUrl": "URL da instância wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "reset": "Redefinir", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "successfullySaved": "Salvou", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "registerInstead": "Não tem uma conta? Registre agora", + "@registerInstead": {}, + "weightUnit": "Unidade de peso", + "@weightUnit": {}, + "searchExercise": "Procurar exercício", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "plateCalculator": "Pratos", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "musclesSecondary": "Músculos secundários", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "reps": "Reps", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "impression": "Impressão", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "repetitionUnit": "Unidade de repetição", + "@repetitionUnit": {}, + "dayDescriptionHelp": "Uma descrição do que é feito neste dia (por exemplo, 'dia de treino') ou quais partes do corpo são treinadas (por exemplo, 'peito e ombros')", + "@dayDescriptionHelp": {}, + "setNr": "Set {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": "Se você fizer as mesmas repetições e peso para todos os conjuntos, você pode preencher apenas uma linha. Por exemplo, para 4 séries, basta digitar 10 para as repetições, isso se torna automaticamente \"4 x 10\".", + "@sameRepetitions": {}, + "gymMode": "Modo treino", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "logHelpEntries": "Se em um mesmo dia houver mais de uma entrada com o mesmo número de repetições, mas com pesos diferentes, apenas a entrada com maior peso é mostrada no gráfico.", + "@logHelpEntries": {}, + "description": "Descrição", + "@description": {}, + "workoutSession": "Sessão de treino", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "measurements": "Medidas", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "energyShort": "E", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "plateCalculatorNotDivisible": "Não é possível atingir o peso com as placas disponíveis", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "Pausar", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "saturatedFat": "Gordura saturada", + "@saturatedFat": {}, + "jumpTo": "Pular", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "logMeal": "Registar esta refeição no diário de nutrição", + "@logMeal": {}, + "measurementCategoriesHelpText": "Categoria de medição, como 'bíceps' ou 'gordura corporal'", + "@measurementCategoriesHelpText": {}, + "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é falha são ignoradas aqui.", + "@logHelpEntriesUnits": {}, + "searchIngredient": "Procurar ingrediente", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalPlan": "Plano nutricional", + "@nutritionalPlan": {}, + "name": "Nome", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "save": "Salvar", + "@save": {}, + "mealLogged": "Refeição registrada no gráfico", + "@mealLogged": {}, + "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": {}, + "anErrorOccurred": "Um erro ocorreu!", + "@anErrorOccurred": {}, + "start": "Iniciar", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "measurementEntriesHelpText": "A unidade usada para medir a categoria, como 'cm' ou '%'", + "@measurementEntriesHelpText": {}, + "time": "Tempo", + "@time": { + "description": "The time of a meal or workout" + }, + "ingredient": "Ingrediente", + "@ingredient": {}, + "percentEnergy": "Porcentagem de energia", + "@percentEnergy": {}, + "kcal": "kcal", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "logged": "Registrado", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "difference": "Diferença", + "@difference": {}, + "total": "Total", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "proteinShort": "p", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "kJ": "kJ", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "g": "g", + "@g": { + "description": "Abbreviation for gram" + }, + "protein": "Proteína", + "@protein": {}, + "sugars": "Açúcares", + "@sugars": {}, + "fat": "Gordura", + "@fat": {}, + "fatShort": "G", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "noWeightEntries": "Você não tem entradas de peso", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "enterValidNumber": "Por favor insira um número válido", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "selectIngredient": "Selecione um ingrediente", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "edit": "Editar", + "@edit": {}, + "confirmDelete": "Tem certeza que deseja excluir '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "setUnitsAndRir": "Definir unidades e ReR", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "productFound": "Produto encontrado", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productNotFoundDescription": "O produto com o código de barras digitalizado {barcode} não foi encontrado no banco de dados", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "selectExercise": "Selecione um exercício", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterCharacters": "Insira 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" + } + } + }, + "optionsLabel": "Opções", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "productFoundDescription": "O código de barras corresponde a este produto: {productName}. Você quer continuar?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "alsoKnownAs": "Também chamado de: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmail": "Email verificado", + "@verifiedEmail": {}, + "unVerifiedEmail": "Verificação pendente", + "@unVerifiedEmail": {}, + "verifiedEmailReason": "É necessário verificar seu email para contribuir com exercícios", + "@verifiedEmailReason": {}, + "verifiedEmailInfo": "Um email de verificação foi enviado para {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "close": "Fechar", + "@close": { + "description": "Translation for close" + }, + "variations": "Variações", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "oneNamePerLine": "Somente um nome por linha", + "@oneNamePerLine": {}, + "whatVariationsExist": "Se houver alguma, quais as possíveis variações para esse exercício?", + "@whatVariationsExist": {}, + "takePicture": "Tirar uma foto", + "@takePicture": {}, + "chooseFromLibrary": "Escolher da galeria", + "@chooseFromLibrary": {}, + "gallery": "Galeria de fotos", + "@gallery": {}, + "addExercise": "Adicionar exercício", + "@addExercise": {}, + "translation": "Tradução", + "@translation": {}, + "translateExercise": "Traduzir este exercício", + "@translateExercise": {}, + "alternativeNames": "Outros nomes", + "@alternativeNames": {}, + "images": "Imagens", + "@images": {}, + "language": "Idioma", + "@language": {}, + "previous": "Anterior", + "@previous": {}, + "next": "Próximo", + "@next": {}, + "minutes": "Minutos", + "@minutes": {}, + "seconds": "Segundos", + "@seconds": {}, + "until_failure": "Até a falha", + "@until_failure": {}, + "kilometers": "Quilômetros", + "@kilometers": {}, + "glutes": "Glúteos", + "@glutes": {}, + "bench": "Supino", + "@bench": {}, + "barbell": "Barra", + "@barbell": {}, + "triceps": "Tríceps", + "@triceps": {}, + "biceps": "Bíceps", + "@biceps": {}, + "dumbbell": "Haltere", + "@dumbbell": {}, + "abs": "Abdominal", + "@abs": {}, + "chest": "Peito", + "@chest": {}, + "shoulders": "Ombro", + "@shoulders": {}, + "gym_mat": "Colchonete", + "@gym_mat": {}, + "incline_bench": "Supino inclinado", + "@incline_bench": {}, + "calves": "Panturrilha", + "@calves": {}, + "legs": "Pernas", + "@legs": {}, + "lats": "Dorsal", + "@lats": {}, + "quads": "Quadríceps", + "@quads": {}, + "hamstrings": "Posterior de coxa", + "@hamstrings": {}, + "arms": "Braços", + "@arms": {}, + "pull_up_bar": "Barra fixa", + "@pull_up_bar": {}, + "lower_back": "Lombar", + "@lower_back": {}, + "swiss_ball": "Bola suíça", + "@swiss_ball": {}, + "kettlebell": "Kettlebell", + "@kettlebell": {}, + "none__bodyweight_exercise_": "nenhum (somente peso do corpo)", + "@none__bodyweight_exercise_": {}, + "aboutPageTitle": "Sobre nós & suporte", + "@aboutPageTitle": {}, + "enterMinCharacters": "Por favor, selecione ao menos {min} de 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 um nome base em inglês", + "@baseNameEnglish": {}, + "miles": "Milhas", + "@miles": {}, + "noMeasurementEntries": "Você não tem entradas de medição", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Adicionar nova medição", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "contributeExercise": "Contribua um exercício", + "@contributeExercise": {}, + "baseData": "Básico em inglês", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "sz_bar": "Barra SZ", + "@sz_bar": {}, + "back": "Costas", + "@back": {}, + "userProfile": "Seu perfil", + "@userProfile": {}, + "exercises": "Exercícios", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseList": "Lista de Exercício", + "@exerciseList": {}, + "exerciseName": "Nome do exercício", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "add_exercise_image_license": "As imagens devem ser compatíveis com a licença CC BY SA. Em caso de dúvida, carregue apenas fotos que você mesmo tirou.", + "@add_exercise_image_license": {}, + "selectEntry": "Por favor selecione uma entrada", + "@selectEntry": {}, + "cacheWarning": "Devido ao caching, pode levar algum tempo até que as alterações sejam visíveis em todo o aplicativo.", + "@cacheWarning": {}, + "success": "Sucesso", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "contributeExerciseWarning": "Você só pode contribuir com exercícios se sua conta tiver mais de {days} dias e tiver verificado seu e-mail", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "cardio": "Cardio", + "@cardio": {}, + "textPromptTitle": "Podemos começar?", + "@textPromptTitle": {}, + "textPromptSubheading": "Aperte o botão de ação para começar", + "@textPromptSubheading": {}, + "body_weight": "Peso Corporal", + "@body_weight": { + "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" + }, + "plates": "Pratos", + "@plates": { + "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" + }, + "searchNamesInEnglish": "Também buscar nomes em inglês", + "@searchNamesInEnglish": {}, + "verify": "Verificar", + "@verify": {}, + "max_reps": "Repetição Máxima", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "settingsCacheTitle": "Cache", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Cache do exercício", + "@settingsExerciseCacheDescription": {}, + "useMetric": "Use unidades métricas para o peso corpora", + "@useMetric": {}, + "settingsTitle": "Configurações", + "@settingsTitle": {}, + "settingsCacheDeletedSnackbar": "Cache limpo com sucesso", + "@settingsCacheDeletedSnackbar": {}, + "log": "Log", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Feito", + "@done": {}, + "noMatchingExerciseFound": "Nenhum exercício correspondente encontrado", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "aboutMastodonTitle": "Mastodon", + "@aboutMastodonTitle": {}, + "aboutDonateTitle": "Faz uma doação", + "@aboutDonateTitle": {}, + "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": {}, + "goalEnergy": "Meta energética", + "@goalEnergy": {}, + "goalProtein": "Meta proteica", + "@goalProtein": {}, + "goalCarbohydrates": "Meta de carboidratos", + "@goalCarbohydrates": {}, + "goalFat": "Meta de gordura", + "@goalFat": {}, + "today": "Hoje", + "@today": {}, + "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" + } + } + }, + "noIngredientsDefined": "Sem ingredientes definido ainda", + "@noIngredientsDefined": {}, + "ingredientLogged": "Ingrediente ativo registrado diariamente", + "@ingredientLogged": {}, + "onlyLoggingHelpText": "Marque a caixa se você desejar apenas o seu registo de calorias e não quer a configuração de um detalhado plano nutricional com refeições", + "@onlyLoggingHelpText": {}, + "goalMacro": "Macro objetivos", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Selecione uma refeição para entrar no diário", + "@selectMealToLog": {}, + "goalFiber": "Meta de fibra", + "@goalFiber": {}, + "deficit": "Défice", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "surplus": "Excedente", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "chart30DaysTitle": "{name} Ultimos 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" + } + } + }, + "loggedToday": "Registrado hoje", + "@loggedToday": {}, + "chartAllTimeTitle": "{name} de todo o tempo", + "@chartAllTimeTitle": { + "description": "All-time chart of 'name' (e.g. 'weight', 'body fat' etc.)", + "type": "text", + "placeholders": { + "name": { + "type": "String" + } + } + }, + "overallChangeWeight": "Mudança geral", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "A partir 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": "Crua", + "@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" + }, + "lightMode": "Modo sempre a luz de", + "@lightMode": {}, + "systemMode": "Configurações do sistema", + "@systemMode": {}, + "themeMode": "Tema", + "@themeMode": {}, + "darkMode": "Modo sempre escuro", + "@darkMode": {}, + "settingsIngredientCacheDescription": "Princípio de cache", + "@settingsIngredientCacheDescription": {}, + "routines": "Rotinas", + "@routines": {}, + "newRoutine": "Nova rotina", + "@newRoutine": {}, + "noRoutines": "Você não tem rotinas", + "@noRoutines": {}, + "sets": "Séries", + "@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" + } + } + }, + "restDay": "Dia de descanso", + "@restDay": {}, + "isRestDay": "É tempo de descanso", + "@isRestDay": {}, + "routineDays": "Dias na rotina", + "@routineDays": {}, + "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": {}, + "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": {}, + "startDate": "Data de início", + "@startDate": {} } diff --git a/lib/l10n/app_ro.arb b/lib/l10n/app_ro.arb index a9895b9e..d22c04b3 100644 --- a/lib/l10n/app_ro.arb +++ b/lib/l10n/app_ro.arb @@ -1,314 +1,330 @@ { - "comment": "Comentariu", - "@comment": { - "description": "Comment, additional information" - }, - "equipment": "Echipament", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "useDefaultServer": "Folosește serverul implicit", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "successfullyDeleted": "S-a șters", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "set": "Serie", - "@set": { - "description": "A set in a workout plan" - }, - "labelBottomNavWorkout": "Antrenament", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "reset": "Resetare", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "password": "Parolă", - "@password": {}, - "invalidUsername": "Introdu, te rugăm, un nume de utilizator valid", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "impression": "Impresie", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "setNr": "Seria {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" - } - } - }, - "muscles": "Mușchi", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "dayDescriptionHelp": "O descriere a ceea ce se face în această zi (de exemplu, „zi de tragere”) sau ce părți ale corpului sunt antrenate (de ex.: „piept și umeri”)", - "@dayDescriptionHelp": {}, - "loginInstead": "Ai deja un cont? Log in", - "@loginInstead": {}, - "success": "Succes", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "passwordTooShort": "Parola e prea scurtă", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "repetitionUnit": "Unitatea de repetiții", - "@repetitionUnit": {}, - "weightUnit": "Unitate de greutate", - "@weightUnit": {}, - "email": "Adresă de e-mail", - "@email": {}, - "searchNamesInEnglish": "Caută nume și în engleză", - "@searchNamesInEnglish": {}, - "username": "Nume de utilizator", - "@username": {}, - "exercise": "Exercițiu", - "@exercise": { - "description": "An exercise for a workout" - }, - "customServerHint": "Introdu adresa propriului server, altfel va fi folosită cea implicită", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "useCustomServer": "Folosește un server personalizat", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "notes": "Notițe", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "register": "Înregistrează-te", - "@register": { - "description": "Text for registration button" - }, - "searchExercise": "Caută un exercițiu pentru a-l adăuga", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "registerInstead": "Nu ai un cont? Înregistrează-te acum", - "@registerInstead": {}, - "usernameValidChars": "Un nume de utilizator poate conține numai litere, cifre și caracterele @, +, ., - și _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "proteinShort": "P", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "userProfile": "Profilul tău", - "@userProfile": {}, - "labelWorkoutLogs": "Jurnale de antrenament", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "rirNotUsed": "RîR nu e folosit", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "successfullySaved": "S-a salvat", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "exerciseList": "Lista exercițiilor", - "@exerciseList": {}, - "musclesSecondary": "Mușchi ajutători", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "labelDashboard": "Tablou de bord", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "exerciseName": "Numele exercițiului", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "labelBottomNavNutrition": "Nutriție", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "invalidUrl": "Te rugăm să introduci o adresă URL validă", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "sameRepetitions": "Dacă faci n.r de repetări și greutatea la fel pentru toate seriile, poți completa doar un rând. De exemplu, pentru 4 serii, introdu 10 la repetări și devine automat „4 x 10”.", - "@sameRepetitions": {}, - "logout": "Deconectează-te", - "@logout": { - "description": "Text for logout button" - }, - "customServerUrl": "URL-ul instanței wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "login": "Log in", - "@login": { - "description": "Text for login button" - }, - "reps": "Repetiții", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "passwordsDontMatch": "Parolele nu se potrivesc", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "invalidEmail": "Te rugăm să introduci o adresă de email validă", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "labelWorkoutPlan": "Plan de antrenament", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "category": "Catogorie", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "rir": "RîR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "exercises": "Exerciții", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "workoutSession": "Sesiune de antrenament", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "confirmPassword": "Confirmă parola", - "@confirmPassword": {}, - "newDay": "Zi nouă", - "@newDay": {}, - "selectExercises": "Dacă vrei să faci un superset poți căuta mai multe exerciții, acestea vor fi grupate împreună", - "@selectExercises": {}, - "logHelpEntries": "Dacă într-o singură zi există mai multe înregistrări cu același număr de repetări, dar greutăți diferite, în diagramă este prezentată doar intrarea cu greutatea mai mare.", - "@logHelpEntries": {}, - "description": "Descriere", - "@description": {}, - "name": "Nume", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "measurements": "Măsurători", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurementEntriesHelpText": "Unitatea utilizată pentru măsurarea categoriei, cum ar fi „cm” sau „%”", - "@measurementEntriesHelpText": {}, - "useMetric": "Utilizați unități metrice pentru greutatea corporală", - "@useMetric": {}, - "plateCalculator": "Discuri", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "jumpTo": "Sari la", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "logHelpEntriesUnits": "Rețineți că numai intrările cu o unitate de greutate (kg sau lb) și repetări sunt grafice, alte combinații precum timpul sau până la eșec sunt ignorate aici.", - "@logHelpEntriesUnits": {}, - "save": "Salvează", - "@save": {}, - "verify": "Verifică", - "@verify": {}, - "addIngredient": "Adaugă ingredient", - "@addIngredient": {}, - "logIngredient": "Salvează în jurnalul de nutriție", - "@logIngredient": {}, - "nutritionalDiary": "Jurnal de nutriție", - "@nutritionalDiary": {}, - "nutritionalPlans": "Planuri nutriționale", - "@nutritionalPlans": {}, - "weight": "Greutate", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "timeStart": "Timpul de începere", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeEnd": "Sfârșitul timpului", - "@timeEnd": { - "description": "The end time of a workout" - }, - "noMatchingExerciseFound": "Nu s-au găsit exerciții potrivite", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "gymMode": "Modul sală", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "plateCalculatorNotDivisible": "Nu se poate atinge greutatea cu plăcile disponibile", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "pause": "Pauză", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "todaysWorkout": "Antrenamentul tău de astăzi", - "@todaysWorkout": {}, - "addSet": "Adaugă set", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Adaugă masa", - "@addMeal": {}, - "mealLogged": "Masa înregistrată în jurnal", - "@mealLogged": {}, - "logMeal": "Înregistrează această masă", - "@logMeal": {}, - "searchIngredient": "Caută ingredient", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "nutritionalPlan": "Planul nutrițional", - "@nutritionalPlan": {}, - "noNutritionalPlans": "Nu ai planuri nutriționale", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "anErrorOccurred": "A aparut o eroare!", - "@anErrorOccurred": {}, - "timeStartAhead": "Ora de început nu poate fi înaintea orei de încheiere", - "@timeStartAhead": {}, - "newSet": "Set nou", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "measurement": "Măsurare", - "@measurement": {}, - "measurementCategoriesHelpText": "Categoria de măsurare, cum ar fi „biceps” sau „grăsimi corporale”", - "@measurementCategoriesHelpText": {}, - "date": "Data", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "value": "Valoare", - "@value": { - "description": "The value of a measurement entry" - }, - "start": "Start", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "time": "Timp", - "@time": { - "description": "The time of a meal or workout" - } -} \ No newline at end of file + "comment": "Comentariu", + "@comment": { + "description": "Comment, additional information" + }, + "equipment": "Echipament", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "useDefaultServer": "Folosește serverul implicit", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "successfullyDeleted": "S-a șters", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "set": "Serie", + "@set": { + "description": "A set in a workout plan" + }, + "labelBottomNavWorkout": "Antrenament", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "reset": "Resetare", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "password": "Parolă", + "@password": {}, + "invalidUsername": "Introdu, te rugăm, un nume de utilizator valid", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "impression": "Impresie", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "setNr": "Seria {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" + } + } + }, + "muscles": "Mușchi", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "dayDescriptionHelp": "O descriere a ceea ce se face în această zi (de exemplu, „zi de tragere”) sau ce părți ale corpului sunt antrenate (de ex.: „piept și umeri”)", + "@dayDescriptionHelp": {}, + "loginInstead": "Ai deja un cont? Log in", + "@loginInstead": {}, + "success": "Succes", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "passwordTooShort": "Parola e prea scurtă", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "repetitionUnit": "Unitatea de repetiții", + "@repetitionUnit": {}, + "weightUnit": "Unitate de greutate", + "@weightUnit": {}, + "email": "Adresă de e-mail", + "@email": {}, + "searchNamesInEnglish": "Caută nume și în engleză", + "@searchNamesInEnglish": {}, + "username": "Nume de utilizator", + "@username": {}, + "exercise": "Exercițiu", + "@exercise": { + "description": "An exercise for a workout" + }, + "customServerHint": "Introdu adresa propriului server, altfel va fi folosită cea implicită", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "useCustomServer": "Folosește un server personalizat", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "notes": "Notițe", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "register": "Înregistrează-te", + "@register": { + "description": "Text for registration button" + }, + "searchExercise": "Caută un exercițiu pentru a-l adăuga", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "registerInstead": "Nu ai un cont? Înregistrează-te acum", + "@registerInstead": {}, + "usernameValidChars": "Un nume de utilizator poate conține numai litere, cifre și caracterele @, +, ., - și _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "proteinShort": "P", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "userProfile": "Profilul tău", + "@userProfile": {}, + "labelWorkoutLogs": "Jurnale de antrenament", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "rirNotUsed": "RîR nu e folosit", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "successfullySaved": "S-a salvat", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exerciseList": "Lista exercițiilor", + "@exerciseList": {}, + "musclesSecondary": "Mușchi ajutători", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "labelDashboard": "Tablou de bord", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "exerciseName": "Numele exercițiului", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "labelBottomNavNutrition": "Nutriție", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "invalidUrl": "Te rugăm să introduci o adresă URL validă", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "sameRepetitions": "Dacă faci n.r de repetări și greutatea la fel pentru toate seriile, poți completa doar un rând. De exemplu, pentru 4 serii, introdu 10 la repetări și devine automat „4 x 10”.", + "@sameRepetitions": {}, + "logout": "Deconectează-te", + "@logout": { + "description": "Text for logout button" + }, + "customServerUrl": "URL-ul instanței wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "login": "Log in", + "@login": { + "description": "Text for login button" + }, + "reps": "Repetiții", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "passwordsDontMatch": "Parolele nu se potrivesc", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "invalidEmail": "Te rugăm să introduci o adresă de email validă", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "labelWorkoutPlan": "Plan de antrenament", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "category": "Catogorie", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "rir": "RîR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "exercises": "Exerciții", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "workoutSession": "Sesiune de antrenament", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "confirmPassword": "Confirmă parola", + "@confirmPassword": {}, + "newDay": "Zi nouă", + "@newDay": {}, + "selectExercises": "Dacă vrei să faci un superset poți căuta mai multe exerciții, acestea vor fi grupate împreună", + "@selectExercises": {}, + "logHelpEntries": "Dacă într-o singură zi există mai multe înregistrări cu același număr de repetări, dar greutăți diferite, în diagramă este prezentată doar intrarea cu greutatea mai mare.", + "@logHelpEntries": {}, + "description": "Descriere", + "@description": {}, + "name": "Nume", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "measurements": "Măsurători", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurementEntriesHelpText": "Unitatea utilizată pentru măsurarea categoriei, cum ar fi „cm” sau „%”", + "@measurementEntriesHelpText": {}, + "useMetric": "Utilizați unități metrice pentru greutatea corporală", + "@useMetric": {}, + "plateCalculator": "Discuri", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "jumpTo": "Sari la", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "logHelpEntriesUnits": "Rețineți că numai intrările cu o unitate de greutate (kg sau lb) și repetări sunt grafice, alte combinații precum timpul sau până la eșec sunt ignorate aici.", + "@logHelpEntriesUnits": {}, + "save": "Salvează", + "@save": {}, + "verify": "Verifică", + "@verify": {}, + "addIngredient": "Adaugă ingredient", + "@addIngredient": {}, + "logIngredient": "Salvează în jurnalul de nutriție", + "@logIngredient": {}, + "nutritionalDiary": "Jurnal de nutriție", + "@nutritionalDiary": {}, + "nutritionalPlans": "Planuri nutriționale", + "@nutritionalPlans": {}, + "weight": "Greutate", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "timeStart": "Timpul de începere", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "Sfârșitul timpului", + "@timeEnd": { + "description": "The end time of a workout" + }, + "noMatchingExerciseFound": "Nu s-au găsit exerciții potrivite", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "gymMode": "Modul sală", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculatorNotDivisible": "Nu se poate atinge greutatea cu plăcile disponibile", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "Pauză", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "todaysWorkout": "Antrenamentul tău de astăzi", + "@todaysWorkout": {}, + "addSet": "Adaugă set", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Adaugă masa", + "@addMeal": {}, + "mealLogged": "Masa înregistrată în jurnal", + "@mealLogged": {}, + "logMeal": "Înregistrează această masă", + "@logMeal": {}, + "searchIngredient": "Caută ingredient", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalPlan": "Planul nutrițional", + "@nutritionalPlan": {}, + "noNutritionalPlans": "Nu ai planuri nutriționale", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "anErrorOccurred": "A aparut o eroare!", + "@anErrorOccurred": {}, + "timeStartAhead": "Ora de început nu poate fi înaintea orei de încheiere", + "@timeStartAhead": {}, + "newSet": "Set nou", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "measurement": "Măsurare", + "@measurement": {}, + "measurementCategoriesHelpText": "Categoria de măsurare, cum ar fi „biceps” sau „grăsimi corporale”", + "@measurementCategoriesHelpText": {}, + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "value": "Valoare", + "@value": { + "description": "The value of a measurement entry" + }, + "start": "Start", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "time": "Timp", + "@time": { + "description": "The time of a meal or workout" + }, + "useApiToken": "Folosește Token-ul API", + "@useApiToken": {}, + "useUsernameAndPassword": "Folosește numele de utilizator și parola", + "@useUsernameAndPassword": {}, + "apiToken": "Token API", + "@apiToken": {}, + "invalidApiToken": "Te rugăm să introduci o cheie API validă", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "Cheia API poate conține doar litere a-f, numere 0-9 și trebuie să aibă exact 40 de caractere", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "noIngredientsDefined": "Nici un ingredient definit", + "@noIngredientsDefined": {} +} diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index e080d9cd..52e7c955 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -1,998 +1,1008 @@ { - "useCustomServer": "Использовать пользовательский сервер", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "email": "Адрес электронной почты", - "@email": {}, - "registerInstead": "У вас нет аккаунта? Зарегистрируйтесь сейчас", - "@registerInstead": {}, - "loginInstead": "Уже есть аккаунт? Войти", - "@loginInstead": {}, - "labelDashboard": "Панель управления", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "muscles": "Мышцы", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "reps": "Повтор", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "rir": "ПвЗ", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "rirNotUsed": "ПвЗ не используется", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "notes": "Заметки", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "workoutSession": "Записанная тренировка", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "newDay": "Новый день", - "@newDay": {}, - "selectExercises": "Если вы хотите сделать супер подход (сет), вы можете найти несколько упражнений, они будут сгруппированы вместе", - "@selectExercises": {}, - "plateCalculator": "Пластины (блины)", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "save": "Сохранить", - "@save": {}, - "logMeal": "Запишите прием пищи в дневник питания", - "@logMeal": {}, - "nutritionalPlan": "План питания", - "@nutritionalPlan": {}, - "noNutritionalPlans": "У вас нет планов питания", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "measurementEntriesHelpText": "Единица, используемая для измерения в категории, например 'см' или '%'", - "@measurementEntriesHelpText": {}, - "value": "Значение", - "@value": { - "description": "The value of a measurement entry" - }, - "time": "Время", - "@time": { - "description": "The time of a meal or workout" - }, - "timeStart": "Время начала", - "@timeStart": { - "description": "The starting time of a workout" - }, - "ingredient": "Ингредиент", - "@ingredient": {}, - "energy": "Энергия", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "energyShort": "Э", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "macronutrients": "Макроэлементы", - "@macronutrients": {}, - "logged": "Записано", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "difference": "Разница", - "@difference": {}, - "kJ": "кДж", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "g": "г", - "@g": { - "description": "Abbreviation for gram" - }, - "goToDetailPage": "Перейти на страницу сведений", - "@goToDetailPage": {}, - "calendar": "Календарь", - "@calendar": {}, - "enterValue": "Пожалуйста, введите значение", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "selectExercise": "Пожалуйста, выберите упражнение", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "enterCharacters": "Пожалуйста, введите между {min} и {max} символами", - "@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": "Количество сетов на упражнение: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "selectIngredient": "Пожалуйста, выберите ингредиент", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "recentlyUsedIngredients": "Недавно добавленные ингредиенты", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "selectImage": "Пожалуйста, выберите изображение", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "takePicture": "Сфотографировать", - "@takePicture": {}, - "chooseFromLibrary": "Выбрать из библиотеки фотографий", - "@chooseFromLibrary": {}, - "gallery": "Галерея", - "@gallery": {}, - "addImage": "Добавить изображение", - "@addImage": {}, - "appUpdateTitle": "Требуется обновление", - "@appUpdateTitle": {}, - "passwordTooShort": "Пароль слишком короткий", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "category": "Категория", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "login": "Войти", - "@login": { - "description": "Text for login button" - }, - "register": "Зарегистрироваться", - "@register": { - "description": "Text for registration button" - }, - "password": "Пароль", - "@password": {}, - "logout": "Выйти", - "@logout": { - "description": "Text for logout button" - }, - "useDefaultServer": "Использовать сервер по умолчанию", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "invalidUrl": "Пожалуйста, введите действительный URL", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "usernameValidChars": "Имя пользователя может содержать только буквы, цифры и символы @, +, ., - и _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "passwordsDontMatch": "Пароли не совпадают", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "confirmPassword": "Подтверждение пароля", - "@confirmPassword": {}, - "invalidEmail": "Пожалуйста, введите действительный адрес электронной почты", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "username": "Имя пользователя", - "@username": {}, - "invalidUsername": "Пожалуйста, введите действительное имя пользователя", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "customServerHint": "Введите адрес вашего собственного сервера, иначе будет использован адрес по умолчанию", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "reset": "Сброс", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "labelBottomNavWorkout": "Тренировка", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "customServerUrl": "URL-адрес экземпляра wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "labelBottomNavNutrition": "Питание", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelWorkoutPlan": "План тренировки", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "labelWorkoutLogs": "Журналы тренировок", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "exercise": "Упражнение", - "@exercise": { - "description": "An exercise for a workout" - }, - "successfullySaved": "Сохранено", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "successfullyDeleted": "Удалено", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "searchExercise": "Найдите упражнение, которое нужно добавить", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "equipment": "Оборудование", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "musclesSecondary": "Вторичные мышцы", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "dayDescriptionHelp": "Описание того, что делается в этот день (например, 'день подтягиваний') или какие части тела тренируются (например, 'грудь и плечи')", - "@dayDescriptionHelp": {}, - "weightUnit": "Единица веса", - "@weightUnit": {}, - "repetitionUnit": "Единица повторения", - "@repetitionUnit": {}, - "repetitions": "Повторений", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "comment": "Комментарий", - "@comment": { - "description": "Comment, additional information" - }, - "impression": "Впечатление", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "set": "Подход", - "@set": { - "description": "A set in a workout plan" - }, - "gymMode": "Режим тренажерного зала", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "jumpTo": "Перейти к", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "logHelpEntriesUnits": "Обратите внимание, что на графиках отображаются только записи с указанием веса (кг или фунты) и повторений. Другие комбинации, такие как время или \"до отказа\", здесь игнорируются.", - "@logHelpEntriesUnits": {}, - "pause": "Пауза", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "plateCalculatorNotDivisible": "Невозможно достичь веса с имеющимися пластинами (весами)", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "todaysWorkout": "Ваша сегодняшняя тренировка", - "@todaysWorkout": {}, - "logHelpEntries": "Если в один день есть несколько записей с одинаковым количеством повторений, но разными весами, то на диаграмме отображается только запись с большим весом.", - "@logHelpEntries": {}, - "description": "Описание", - "@description": {}, - "weight": "Вес", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "name": "Имя", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "addIngredient": "Добавить ингредиент", - "@addIngredient": {}, - "nutritionalPlans": "Планы питания", - "@nutritionalPlans": {}, - "timeStartAhead": "Время начала не может быть раньше времени окончания", - "@timeStartAhead": {}, - "logIngredient": "Записать в дневнике питания", - "@logIngredient": {}, - "searchIngredient": "Поиск ингредиента", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "nutritionalDiary": "Дневник питания", - "@nutritionalDiary": {}, - "measurements": "Измерения", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "anErrorOccurred": "Произошла ошибка!", - "@anErrorOccurred": {}, - "measurement": "Измерение", - "@measurement": {}, - "measurementCategoriesHelpText": "Категория измерения, например 'бицепс' или 'жир'", - "@measurementCategoriesHelpText": {}, - "date": "Дата", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "start": "Старт", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "timeEnd": "Время окончания", - "@timeEnd": { - "description": "The end time of a workout" - }, - "kcal": "ккал", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "edit": "Редактировать", - "@edit": {}, - "delete": "Удалить", - "@delete": {}, - "confirmDelete": "Вы уверены, что хотите удалить '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "setUnitsAndRir": "Установите единицы измерения и ПвЗ", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "planned": "Запланировано", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "fatShort": "Ж", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "gPerBodyKg": "г на кг тела", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "total": "Всего", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "fiber": "Клетчатка", - "@fiber": {}, - "percentEnergy": "Процент энергии", - "@percentEnergy": {}, - "proteinShort": "Б", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "carbohydratesShort": "У", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "sugars": "Сахар", - "@sugars": {}, - "saturatedFat": "Насыщенные жиры", - "@saturatedFat": {}, - "sodium": "Натрий", - "@sodium": {}, - "amount": "Количество", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "unit": "Единица", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "noWeightEntries": "У вас нет записей о весе", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "newEntry": "Новая запись", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "loadingText": "Загрузка…", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "newNutritionalPlan": "Новый план питания", - "@newNutritionalPlan": {}, - "toggleDetails": "Переключить сведения", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "aboutDescription": "Спасибо за использование wger! wger - это совместный проект с открытым исходным кодом, созданный фитнес энтузиастами со всего мира.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "enterValidNumber": "Пожалуйста, введите правильное число", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "goToToday": "Перейти на сегодня", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "optionsLabel": "Опции", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "sameRepetitions": "Если количество повторений и вес не меняются от подхода к подходу, достаточно указать данные один раз. Например, для 4 подходов введите 10 повторений, и это автоматически преобразуется в '4 x 10'.", - "@sameRepetitions": {}, - "newSet": "Новый подход (сет)", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "dataCopied": "Данные копируются в новую запись", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "appUpdateContent": "Эта версия приложения не совместима с сервером, пожалуйста, обновите ваше приложение.", - "@appUpdateContent": {}, - "setNr": "Сет {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" - } - } - }, - "addSet": "Добавить сет", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Добавить блюдо", - "@addMeal": {}, - "mealLogged": "Блюдо записано в дневник", - "@mealLogged": {}, - "protein": "Белки", - "@protein": {}, - "carbohydrates": "Углеводы", - "@carbohydrates": {}, - "fat": "Жиры", - "@fat": {}, - "productNotFound": "Продукт не найден", - "@productNotFound": { - "description": "Header label for dialog when product is not found with barcode" - }, - "productNotFoundDescription": "Продукт со отсканированным штрихкодом {barcode} не найден в базе данных wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Сканировать штрихкод", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Закрыть", - "@close": { - "description": "Translation for close" - }, - "weekAverage": "В среднем за 7 дней", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "productFound": "Продукт найден", - "@productFound": { - "description": "Header label for dialog when product is found with barcode" - }, - "productFoundDescription": "Штрихкод соответствует этому продукту: {productName}. Вы хотите продолжить?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "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" - } - } - }, - "noMeasurementEntries": "У вас нет записей измерений", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Добавить новое измерение", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "userProfile": "Ваш профиль", - "@userProfile": {}, - "exerciseList": "Список упражнений", - "@exerciseList": {}, - "baseNameEnglish": "Для всех упражнений необходимо базовое название на английском языке", - "@baseNameEnglish": {}, - "verifiedEmail": "Подтвержденный адрес электронной почты", - "@verifiedEmail": {}, - "swiss_ball": "Гимнастический мяч", - "@swiss_ball": { - "description": "Generated entry for translation for server strings" - }, - "chest": "Грудь", - "@chest": { - "description": "Generated entry for translation for server strings" - }, - "kettlebell": "Гиря", - "@kettlebell": { - "description": "Generated entry for translation for server strings" - }, - "calves": "Икры", - "@calves": { - "description": "Generated entry for translation for server strings" - }, - "success": "Успешно", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "exerciseName": "Название упражнения", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "textPromptTitle": "Готовы начать?", - "@textPromptTitle": {}, - "body_weight": "Вес тела", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "cardio": "Кардио", - "@cardio": { - "description": "Generated entry for translation for server strings" - }, - "dumbbell": "Гантели", - "@dumbbell": { - "description": "Generated entry for translation for server strings" - }, - "gym_mat": "Спортивный коврик", - "@gym_mat": { - "description": "Generated entry for translation for server strings" - }, - "incline_bench": "Наклонная скамья", - "@incline_bench": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "км/ч", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "lats": "Широчайшие", - "@lats": { - "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" - }, - "plates": "Блины", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "quads": "Четырехглавые", - "@quads": { - "description": "Generated entry for translation for server strings" - }, - "sz_bar": "SZ-гриф", - "@sz_bar": { - "description": "Generated entry for translation for server strings" - }, - "kg": "кг", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "lb": "фунт", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "images": "Изображения", - "@images": {}, - "language": "Язык", - "@language": {}, - "abs": "Пресс", - "@abs": { - "description": "Generated entry for translation for server strings" - }, - "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" - }, - "translation": "Перевод", - "@translation": {}, - "baseData": "Основы на английском", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "glutes": "Ягодицы", - "@glutes": { - "description": "Generated entry for translation for server strings" - }, - "kilometers": "Километры", - "@kilometers": { - "description": "Generated entry for translation for server strings" - }, - "seconds": "Секунд", - "@seconds": { - "description": "Generated entry for translation for server strings" - }, - "until_failure": "До отказа", - "@until_failure": { - "description": "Generated entry for translation for server strings" - }, - "bench": "Скамья", - "@bench": { - "description": "Generated entry for translation for server strings" - }, - "barbell": "Штанга", - "@barbell": { - "description": "Generated entry for translation for server strings" - }, - "none__bodyweight_exercise_": "без (с собственным весом)", - "@none__bodyweight_exercise_": { - "description": "Generated entry for translation for server strings" - }, - "shoulders": "Плечи", - "@shoulders": { - "description": "Generated entry for translation for server strings" - }, - "next": "Следующее", - "@next": {}, - "pull_up_bar": "Турник", - "@pull_up_bar": { - "description": "Generated entry for translation for server strings" - }, - "exercises": "Упражнения", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "add_exercise_image_license": "Изображения должны быть совместимы с CC BY SA лицензией. Если вы сомневаетесь, загружайте только те фотографии, которые вы сделали сами", - "@add_exercise_image_license": {}, - "unVerifiedEmail": "Неподтвержденный адрес электронной почты", - "@unVerifiedEmail": {}, - "contributeExercise": "Добавить упражнение", - "@contributeExercise": {}, - "addExercise": "Добавить упражнение", - "@addExercise": {}, - "translateExercise": "Перевести это упражнение", - "@translateExercise": {}, - "contributeExerciseWarning": "Вы можете добавлять упражнения только в том случае, если ваша учетная запись старше {days} дней и вы подтвердили свою электронную почту", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "textPromptSubheading": "Нажмите кнопку действия, чтобы начать", - "@textPromptSubheading": {}, - "minutes": "Минут", - "@minutes": { - "description": "Generated entry for translation for server strings" - }, - "triceps": "Трицепс", - "@triceps": { - "description": "Generated entry for translation for server strings" - }, - "searchNamesInEnglish": "Также ищите названия на английском", - "@searchNamesInEnglish": {}, - "selectEntry": "Пожалуйста, выберите запись", - "@selectEntry": {}, - "variations": "Варианты", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "alsoKnownAs": "Также известно как: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "useCustomServer": "Использовать пользовательский сервер", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmailReason": "Вам необходимо подтвердить свой адрес электронной почты, чтобы добавлять упражнения", - "@verifiedEmailReason": {}, - "verifiedEmailInfo": "Письмо с подтверждением отправлено на {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "alternativeNames": "Альтернативные названия", - "@alternativeNames": {}, - "oneNamePerLine": "Одно название на строку", - "@oneNamePerLine": {}, - "whatVariationsExist": "Какие варианты этого упражнения существуют, если таковые имеются?", - "@whatVariationsExist": {}, - "previous": "Предыдущее", - "@previous": {}, - "aboutPageTitle": "О Wger", - "@aboutPageTitle": {}, - "cacheWarning": "Из-за кэширования может пройти некоторое время, прежде чем изменения станут видны во всем приложении.", - "@cacheWarning": {}, - "legs": "Ноги", - "@legs": { - "description": "Generated entry for translation for server strings" - }, - "goalMacro": "Цели по макронутриентам", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "goalFiber": "Цель по волокну", - "@goalFiber": {}, - "kcalValue": "{value} калорий", - "@kcalValue": { - "description": "A value in kcal, e.g. 500 kcal", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "useMetric": "Использовать метрические единицы измерения для веса тела.", - "@useMetric": {}, - "verify": "Подтвердить", - "@verify": {}, - "settingsCacheTitle": "Кэш", - "@settingsCacheTitle": {}, - "settingsExerciseCacheDescription": "Кэш упражнений", - "@settingsExerciseCacheDescription": {}, - "noMatchingExerciseFound": "Не выбрано упражнение для замены", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "hamstrings": "Бёдра", - "@hamstrings": { - "description": "Generated entry for translation for server strings" - }, - "max_reps": "Максимальное количество повторений", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "onlyLogging": "Только отслеживать калории", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Поставьте флажок, если вы хотите отслеживать только потребление калорий и не хотите создавать подробный план питания с конкретными блюдами", - "@onlyLoggingHelpText": {}, - "goalEnergy": "Цель по энергии", - "@goalEnergy": {}, - "goalProtein": "Цель по белкам", - "@goalProtein": {}, - "goalCarbohydrates": "Цель по углеводам", - "@goalCarbohydrates": {}, - "goalFat": "Цель по жирам", - "@goalFat": {}, - "today": "Сегодня", - "@today": {}, - "loggedToday": "Записано на сегодня", - "@loggedToday": {}, - "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" - } - } - }, - "aboutDonateTitle": "Пожертвовать", - "@aboutDonateTitle": {}, - "aboutDonateText": "Купите нам кофе, чтобы помочь проекту, оплатить затраты на сервер и поддерживать нас в тонусе", - "@aboutDonateText": {}, - "settingsTitle": "Настройки", - "@settingsTitle": {}, - "lower_back": "Нижняя часть спины", - "@lower_back": { - "description": "Generated entry for translation for server strings" - }, - "aboutMastodonTitle": "Мастодонт", - "@aboutMastodonTitle": {}, - "surplus": "превышение", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "deficit": "дефицит", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "settingsCacheDeletedSnackbar": "Кэш успешно очищен", - "@settingsCacheDeletedSnackbar": {}, - "log": "Журнал", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "done": "Завершить", - "@done": {}, - "overallChangeWeight": "Общее изменение", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "Из еды", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "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" - }, - "themeMode": "Режим темы", - "@themeMode": {}, - "darkMode": "Всегда темный режим", - "@darkMode": {}, - "lightMode": "Всегда светлый режим", - "@lightMode": {}, - "systemMode": "Системные настройки", - "@systemMode": {}, - "noIngredientsDefined": "Ингредиенты пока не определены", - "@noIngredientsDefined": {}, - "ingredientLogged": "Ингредиент занесен в дневник", - "@ingredientLogged": {}, - "selectMealToLog": "Выберите прием пищи для записи в дневник", - "@selectMealToLog": {}, - "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" - } - } - }, - "settingsIngredientCacheDescription": "Кэш ингредиентов", - "@settingsIngredientCacheDescription": {}, - "isRestDayHelp": "Пожалуйста, имейте в виду, что если вы отметите этот день как день отдыха, все подходы и упражнения будут удалены.", - "@isRestDayHelp": {}, - "routines": "Тренировки", - "@routines": {}, - "needsLogsToAdvanceHelp": "Выберите, если вы хотите, чтобы программа переходила к следующему запланированному дню только после того, как вы записали тренировку за текущий день.", - "@needsLogsToAdvanceHelp": {}, - "routineDays": "Дней в тренировке", - "@routineDays": {}, - "resultingRoutine": "Итоговая тренировка", - "@resultingRoutine": {}, - "useApiToken": "Использовать токен API", - "@useApiToken": {}, - "useUsernameAndPassword": "Использовать имя пользователя и пароль", - "@useUsernameAndPassword": {}, - "apiToken": "API токен", - "@apiToken": {}, - "invalidApiToken": "Пожалуйста, введите действительный ключ API", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "apiTokenValidChars": "API-ключ может содержать только буквы a–f, цифры 0–9 и иметь длину ровно 40 символов", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - }, - "newRoutine": "Новая тренировка", - "@newRoutine": {}, - "noRoutines": "У вас нет тренировок", - "@noRoutines": {}, - "restTime": "Время отдыха", - "@restTime": {}, - "sets": "Подходы", - "@sets": { - "description": "The number of sets to be done for one exercise" - }, - "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" - } - } - }, - "supersetNr": "Супер подход", - "@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": "День отдыха", - "@restDay": {}, - "isRestDay": "Выходной день", - "@isRestDay": {}, - "needsLogsToAdvance": "Требуются записи для прогресса", - "@needsLogsToAdvance": {} + "email": "Адрес электронной почты", + "@email": {}, + "registerInstead": "У вас нет аккаунта? Зарегистрируйтесь сейчас", + "@registerInstead": {}, + "loginInstead": "Уже есть аккаунт? Войти", + "@loginInstead": {}, + "labelDashboard": "Панель управления", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "muscles": "Мышцы", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "reps": "Повтор", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "rir": "ПвЗ", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "rirNotUsed": "ПвЗ не используется", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "notes": "Заметки", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "workoutSession": "Записанная тренировка", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "newDay": "Новый день", + "@newDay": {}, + "selectExercises": "Если вы хотите сделать супер подход (сет), вы можете найти несколько упражнений, они будут сгруппированы вместе", + "@selectExercises": {}, + "plateCalculator": "Пластины (блины)", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "save": "Сохранить", + "@save": {}, + "logMeal": "Запишите прием пищи в дневник питания", + "@logMeal": {}, + "nutritionalPlan": "План питания", + "@nutritionalPlan": {}, + "noNutritionalPlans": "У вас нет планов питания", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "measurementEntriesHelpText": "Единица, используемая для измерения в категории, например 'см' или '%'", + "@measurementEntriesHelpText": {}, + "value": "Значение", + "@value": { + "description": "The value of a measurement entry" + }, + "time": "Время", + "@time": { + "description": "The time of a meal or workout" + }, + "timeStart": "Время начала", + "@timeStart": { + "description": "The starting time of a workout" + }, + "ingredient": "Ингредиент", + "@ingredient": {}, + "energy": "Энергия", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "energyShort": "Э", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "macronutrients": "Макроэлементы", + "@macronutrients": {}, + "logged": "Записано", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "difference": "Разница", + "@difference": {}, + "kJ": "кДж", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "g": "г", + "@g": { + "description": "Abbreviation for gram" + }, + "goToDetailPage": "Перейти на страницу сведений", + "@goToDetailPage": {}, + "calendar": "Календарь", + "@calendar": {}, + "enterValue": "Пожалуйста, введите значение", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "selectExercise": "Пожалуйста, выберите упражнение", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "enterCharacters": "Пожалуйста, введите между {min} и {max} символами", + "@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": "Количество сетов на упражнение: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "selectIngredient": "Пожалуйста, выберите ингредиент", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "recentlyUsedIngredients": "Недавно добавленные ингредиенты", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "selectImage": "Пожалуйста, выберите изображение", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "takePicture": "Сфотографировать", + "@takePicture": {}, + "chooseFromLibrary": "Выбрать из библиотеки фотографий", + "@chooseFromLibrary": {}, + "gallery": "Галерея", + "@gallery": {}, + "addImage": "Добавить изображение", + "@addImage": {}, + "appUpdateTitle": "Требуется обновление", + "@appUpdateTitle": {}, + "passwordTooShort": "Пароль слишком короткий", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "category": "Категория", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "login": "Войти", + "@login": { + "description": "Text for login button" + }, + "register": "Зарегистрироваться", + "@register": { + "description": "Text for registration button" + }, + "password": "Пароль", + "@password": {}, + "logout": "Выйти", + "@logout": { + "description": "Text for logout button" + }, + "useDefaultServer": "Использовать сервер по умолчанию", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "invalidUrl": "Пожалуйста, введите действительный URL", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "usernameValidChars": "Имя пользователя может содержать только буквы, цифры и символы @, +, ., - и _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "passwordsDontMatch": "Пароли не совпадают", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "confirmPassword": "Подтверждение пароля", + "@confirmPassword": {}, + "invalidEmail": "Пожалуйста, введите действительный адрес электронной почты", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "username": "Имя пользователя", + "@username": {}, + "invalidUsername": "Пожалуйста, введите действительное имя пользователя", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "customServerHint": "Введите адрес вашего собственного сервера, иначе будет использован адрес по умолчанию", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "Сброс", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "labelBottomNavWorkout": "Тренировка", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "customServerUrl": "URL-адрес экземпляра wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "labelBottomNavNutrition": "Питание", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutPlan": "План тренировки", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelWorkoutLogs": "Журналы тренировок", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "exercise": "Упражнение", + "@exercise": { + "description": "An exercise for a workout" + }, + "successfullySaved": "Сохранено", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "successfullyDeleted": "Удалено", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "searchExercise": "Найдите упражнение, которое нужно добавить", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "equipment": "Оборудование", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "musclesSecondary": "Вторичные мышцы", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "dayDescriptionHelp": "Описание того, что делается в этот день (например, 'день подтягиваний') или какие части тела тренируются (например, 'грудь и плечи')", + "@dayDescriptionHelp": {}, + "weightUnit": "Единица веса", + "@weightUnit": {}, + "repetitionUnit": "Единица повторения", + "@repetitionUnit": {}, + "repetitions": "Повторений", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "comment": "Комментарий", + "@comment": { + "description": "Comment, additional information" + }, + "impression": "Впечатление", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "set": "Подход", + "@set": { + "description": "A set in a workout plan" + }, + "gymMode": "Режим тренажерного зала", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "jumpTo": "Перейти к", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "logHelpEntriesUnits": "Обратите внимание, что на графиках отображаются только записи с указанием веса (кг или фунты) и повторений. Другие комбинации, такие как время или \"до отказа\", здесь игнорируются.", + "@logHelpEntriesUnits": {}, + "pause": "Пауза", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "plateCalculatorNotDivisible": "Невозможно достичь веса с имеющимися пластинами (весами)", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "todaysWorkout": "Ваша сегодняшняя тренировка", + "@todaysWorkout": {}, + "logHelpEntries": "Если в один день есть несколько записей с одинаковым количеством повторений, но разными весами, то на диаграмме отображается только запись с большим весом.", + "@logHelpEntries": {}, + "description": "Описание", + "@description": {}, + "weight": "Вес", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "name": "Имя", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "addIngredient": "Добавить ингредиент", + "@addIngredient": {}, + "nutritionalPlans": "Планы питания", + "@nutritionalPlans": {}, + "timeStartAhead": "Время начала не может быть раньше времени окончания", + "@timeStartAhead": {}, + "logIngredient": "Записать в дневнике питания", + "@logIngredient": {}, + "searchIngredient": "Поиск ингредиента", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalDiary": "Дневник питания", + "@nutritionalDiary": {}, + "measurements": "Измерения", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "anErrorOccurred": "Произошла ошибка!", + "@anErrorOccurred": {}, + "measurement": "Измерение", + "@measurement": {}, + "measurementCategoriesHelpText": "Категория измерения, например 'бицепс' или 'жир'", + "@measurementCategoriesHelpText": {}, + "date": "Дата", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "start": "Старт", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "timeEnd": "Время окончания", + "@timeEnd": { + "description": "The end time of a workout" + }, + "kcal": "ккал", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "edit": "Редактировать", + "@edit": {}, + "delete": "Удалить", + "@delete": {}, + "confirmDelete": "Вы уверены, что хотите удалить '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "setUnitsAndRir": "Установите единицы измерения и ПвЗ", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "planned": "Запланировано", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "fatShort": "Ж", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "gPerBodyKg": "г на кг тела", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "total": "Всего", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "fiber": "Клетчатка", + "@fiber": {}, + "percentEnergy": "Процент энергии", + "@percentEnergy": {}, + "proteinShort": "Б", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "carbohydratesShort": "У", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "sugars": "Сахар", + "@sugars": {}, + "saturatedFat": "Насыщенные жиры", + "@saturatedFat": {}, + "sodium": "Натрий", + "@sodium": {}, + "amount": "Количество", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "unit": "Единица", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "noWeightEntries": "У вас нет записей о весе", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "newEntry": "Новая запись", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "loadingText": "Загрузка…", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "newNutritionalPlan": "Новый план питания", + "@newNutritionalPlan": {}, + "toggleDetails": "Переключить сведения", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "aboutDescription": "Спасибо за использование wger! wger - это совместный проект с открытым исходным кодом, созданный фитнес энтузиастами со всего мира.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "enterValidNumber": "Пожалуйста, введите правильное число", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "goToToday": "Перейти на сегодня", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "optionsLabel": "Опции", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "sameRepetitions": "Если количество повторений и вес не меняются от подхода к подходу, достаточно указать данные один раз. Например, для 4 подходов введите 10 повторений, и это автоматически преобразуется в '4 x 10'.", + "@sameRepetitions": {}, + "newSet": "Новый подход (сет)", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "dataCopied": "Данные копируются в новую запись", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "appUpdateContent": "Эта версия приложения не совместима с сервером, пожалуйста, обновите ваше приложение.", + "@appUpdateContent": {}, + "setNr": "Сет {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" + } + } + }, + "addSet": "Добавить сет", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Добавить блюдо", + "@addMeal": {}, + "mealLogged": "Блюдо записано в дневник", + "@mealLogged": {}, + "protein": "Белки", + "@protein": {}, + "carbohydrates": "Углеводы", + "@carbohydrates": {}, + "fat": "Жиры", + "@fat": {}, + "productNotFound": "Продукт не найден", + "@productNotFound": { + "description": "Header label for dialog when product is not found with barcode" + }, + "productNotFoundDescription": "Продукт со отсканированным штрихкодом {barcode} не найден в базе данных wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Сканировать штрихкод", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Закрыть", + "@close": { + "description": "Translation for close" + }, + "weekAverage": "В среднем за 7 дней", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "productFound": "Продукт найден", + "@productFound": { + "description": "Header label for dialog when product is found with barcode" + }, + "productFoundDescription": "Штрихкод соответствует этому продукту: {productName}. Вы хотите продолжить?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "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" + } + } + }, + "noMeasurementEntries": "У вас нет записей измерений", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Добавить новое измерение", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "userProfile": "Ваш профиль", + "@userProfile": {}, + "exerciseList": "Список упражнений", + "@exerciseList": {}, + "baseNameEnglish": "Для всех упражнений необходимо базовое название на английском языке", + "@baseNameEnglish": {}, + "verifiedEmail": "Подтвержденный адрес электронной почты", + "@verifiedEmail": {}, + "swiss_ball": "Гимнастический мяч", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Грудь", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Гиря", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "calves": "Икры", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "success": "Успешно", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "exerciseName": "Название упражнения", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "textPromptTitle": "Готовы начать?", + "@textPromptTitle": {}, + "body_weight": "Вес тела", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "cardio": "Кардио", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Гантели", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "Спортивный коврик", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "incline_bench": "Наклонная скамья", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "км/ч", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Широчайшие", + "@lats": { + "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" + }, + "plates": "Блины", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Четырехглавые", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "sz_bar": "SZ-гриф", + "@sz_bar": { + "description": "Generated entry for translation for server strings" + }, + "kg": "кг", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "lb": "фунт", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "images": "Изображения", + "@images": {}, + "language": "Язык", + "@language": {}, + "abs": "Пресс", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "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" + }, + "translation": "Перевод", + "@translation": {}, + "baseData": "Основы на английском", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "glutes": "Ягодицы", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Километры", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "Секунд", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "До отказа", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "bench": "Скамья", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "barbell": "Штанга", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "без (с собственным весом)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Плечи", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "next": "Следующее", + "@next": {}, + "pull_up_bar": "Турник", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "exercises": "Упражнения", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "add_exercise_image_license": "Изображения должны быть совместимы с CC BY SA лицензией. Если вы сомневаетесь, загружайте только те фотографии, которые вы сделали сами", + "@add_exercise_image_license": {}, + "unVerifiedEmail": "Неподтвержденный адрес электронной почты", + "@unVerifiedEmail": {}, + "contributeExercise": "Добавить упражнение", + "@contributeExercise": {}, + "addExercise": "Добавить упражнение", + "@addExercise": {}, + "translateExercise": "Перевести это упражнение", + "@translateExercise": {}, + "contributeExerciseWarning": "Вы можете добавлять упражнения только в том случае, если ваша учетная запись старше {days} дней и вы подтвердили свою электронную почту", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "textPromptSubheading": "Нажмите кнопку действия, чтобы начать", + "@textPromptSubheading": {}, + "minutes": "Минут", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Трицепс", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "searchNamesInEnglish": "Также ищите названия на английском", + "@searchNamesInEnglish": {}, + "selectEntry": "Пожалуйста, выберите запись", + "@selectEntry": {}, + "variations": "Варианты", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "Также известно как: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmailReason": "Вам необходимо подтвердить свой адрес электронной почты, чтобы добавлять упражнения", + "@verifiedEmailReason": {}, + "verifiedEmailInfo": "Письмо с подтверждением отправлено на {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "alternativeNames": "Альтернативные названия", + "@alternativeNames": {}, + "oneNamePerLine": "Одно название на строку", + "@oneNamePerLine": {}, + "whatVariationsExist": "Какие варианты этого упражнения существуют, если таковые имеются?", + "@whatVariationsExist": {}, + "previous": "Предыдущее", + "@previous": {}, + "aboutPageTitle": "О Wger", + "@aboutPageTitle": {}, + "cacheWarning": "Из-за кэширования может пройти некоторое время, прежде чем изменения станут видны во всем приложении.", + "@cacheWarning": {}, + "legs": "Ноги", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "goalMacro": "Цели по макронутриентам", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "goalFiber": "Цель по волокну", + "@goalFiber": {}, + "kcalValue": "{value} калорий", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "useMetric": "Использовать метрические единицы измерения для веса тела.", + "@useMetric": {}, + "verify": "Подтвердить", + "@verify": {}, + "settingsCacheTitle": "Кэш", + "@settingsCacheTitle": {}, + "settingsExerciseCacheDescription": "Кэш упражнений", + "@settingsExerciseCacheDescription": {}, + "noMatchingExerciseFound": "Не выбрано упражнение для замены", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "hamstrings": "Бёдра", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Максимальное количество повторений", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "onlyLogging": "Только отслеживать калории", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Поставьте флажок, если вы хотите отслеживать только потребление калорий и не хотите создавать подробный план питания с конкретными блюдами", + "@onlyLoggingHelpText": {}, + "goalEnergy": "Цель по энергии", + "@goalEnergy": {}, + "goalProtein": "Цель по белкам", + "@goalProtein": {}, + "goalCarbohydrates": "Цель по углеводам", + "@goalCarbohydrates": {}, + "goalFat": "Цель по жирам", + "@goalFat": {}, + "today": "Сегодня", + "@today": {}, + "loggedToday": "Записано на сегодня", + "@loggedToday": {}, + "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" + } + } + }, + "aboutDonateTitle": "Пожертвовать", + "@aboutDonateTitle": {}, + "aboutDonateText": "Купите нам кофе, чтобы помочь проекту, оплатить затраты на сервер и поддерживать нас в тонусе", + "@aboutDonateText": {}, + "settingsTitle": "Настройки", + "@settingsTitle": {}, + "lower_back": "Нижняя часть спины", + "@lower_back": { + "description": "Generated entry for translation for server strings" + }, + "aboutMastodonTitle": "Мастодонт", + "@aboutMastodonTitle": {}, + "surplus": "превышение", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "deficit": "дефицит", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "settingsCacheDeletedSnackbar": "Кэш успешно очищен", + "@settingsCacheDeletedSnackbar": {}, + "log": "Журнал", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "done": "Завершить", + "@done": {}, + "overallChangeWeight": "Общее изменение", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Из еды", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "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" + }, + "themeMode": "Режим темы", + "@themeMode": {}, + "darkMode": "Всегда темный режим", + "@darkMode": {}, + "lightMode": "Всегда светлый режим", + "@lightMode": {}, + "systemMode": "Системные настройки", + "@systemMode": {}, + "noIngredientsDefined": "Ингредиенты пока не определены", + "@noIngredientsDefined": {}, + "ingredientLogged": "Ингредиент занесен в дневник", + "@ingredientLogged": {}, + "selectMealToLog": "Выберите прием пищи для записи в дневник", + "@selectMealToLog": {}, + "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" + } + } + }, + "settingsIngredientCacheDescription": "Кэш ингредиентов", + "@settingsIngredientCacheDescription": {}, + "isRestDayHelp": "Пожалуйста, имейте в виду, что если вы отметите этот день как день отдыха, все подходы и упражнения будут удалены.", + "@isRestDayHelp": {}, + "routines": "Тренировки", + "@routines": {}, + "needsLogsToAdvanceHelp": "Выберите, если вы хотите, чтобы программа переходила к следующему запланированному дню только после того, как вы записали тренировку за текущий день.", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Дней в тренировке", + "@routineDays": {}, + "resultingRoutine": "Итоговая тренировка", + "@resultingRoutine": {}, + "useApiToken": "Использовать токен API", + "@useApiToken": {}, + "useUsernameAndPassword": "Использовать имя пользователя и пароль", + "@useUsernameAndPassword": {}, + "apiToken": "API токен", + "@apiToken": {}, + "invalidApiToken": "Пожалуйста, введите действительный ключ API", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "API-ключ может содержать только буквы a–f, цифры 0–9 и иметь длину ровно 40 символов", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "newRoutine": "Новая тренировка", + "@newRoutine": {}, + "noRoutines": "У вас нет тренировок", + "@noRoutines": {}, + "restTime": "Время отдыха", + "@restTime": {}, + "sets": "Подходы", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "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" + } + } + }, + "supersetNr": "Супер подход", + "@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": "День отдыха", + "@restDay": {}, + "isRestDay": "Выходной день", + "@isRestDay": {}, + "needsLogsToAdvance": "Требуются записи для прогресса", + "@needsLogsToAdvance": {}, + "barWeight": "Вес штанги", + "@barWeight": {}, + "useColors": "Использовать цвета", + "@useColors": {}, + "endDate": "Дата окончания", + "@endDate": {}, + "startDate": "Дата начала", + "@startDate": {}, + "selectAvailablePlates": "Выберите подходящие блины", + "@selectAvailablePlates": {} } diff --git a/lib/l10n/app_sk.arb b/lib/l10n/app_sk.arb new file mode 100644 index 00000000..87cb90e4 --- /dev/null +++ b/lib/l10n/app_sk.arb @@ -0,0 +1,322 @@ +{ + "userProfile": "Váš profil", + "@userProfile": {}, + "login": "Prihlásiť sa", + "@login": { + "description": "Text for login button" + }, + "logout": "Odhlásiť sa", + "@logout": { + "description": "Text for logout button" + }, + "register": "Registrovať sa", + "@register": { + "description": "Text for registration button" + }, + "useDefaultServer": "Použiť predvolený server", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useCustomServer": "Použiť vlastný server", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "invalidUrl": "Zadajte platnú URL adresu", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "usernameValidChars": "Používateľské meno môže obsahovať iba písmená, číslice a znaky @, +, ., -, a _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "passwordsDontMatch": "Heslá sa nezhodujú", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "passwordTooShort": "Heslo je príliš krátke", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "selectAvailablePlates": "Vyberte dostupné platne", + "@selectAvailablePlates": {}, + "barWeight": "Hmotnosť tyče", + "@barWeight": {}, + "useColors": "Používajte farby", + "@useColors": {}, + "password": "Heslo", + "@password": {}, + "confirmPassword": "Potvrďte heslo", + "@confirmPassword": {}, + "invalidEmail": "Zadajte platnú e-mailovú adresu", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "email": "E-mailová adresa", + "@email": {}, + "username": "Používateľské meno", + "@username": {}, + "invalidUsername": "Zadajte platné používateľské meno", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "useApiToken": "Použite token API", + "@useApiToken": {}, + "useUsernameAndPassword": "Použite používateľské meno a heslo", + "@useUsernameAndPassword": {}, + "apiToken": "API token", + "@apiToken": {}, + "invalidApiToken": "Zadajte platný kľúč API", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "Kľúč API môže obsahovať iba písmená a-f, číslice 0-9 a musí mať presne 40 znakov", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "customServerUrl": "URL inštancie wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "customServerHint": "Zadajte adresu svojho vlastného servera, inak sa použije predvolená adresa", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "Reset", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "registerInstead": "Nemáte účet? Zaregistrujte sa teraz", + "@registerInstead": {}, + "loginInstead": "Už máte účet? Prihláste sa", + "@loginInstead": {}, + "labelBottomNavWorkout": "Tréning", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelBottomNavNutrition": "Výživa", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "Tréninkové denníky", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "Plán tréningu", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "Ovládací panel", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "success": "Úspech", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "successfullyDeleted": "Odstránené", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "successfullySaved": "Uložené", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "exerciseList": "Zoznam cvičení", + "@exerciseList": {}, + "exercise": "Cvičenie", + "@exercise": { + "description": "An exercise for a workout" + }, + "exercises": "Cvičenia", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Názov cvičenia", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "searchExercise": "Vyhľadávacie cvičenie na pridanie", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "noIngredientsDefined": "Žiadne ingrediencie zatiaľ neboli definované", + "@noIngredientsDefined": {}, + "noMatchingExerciseFound": "Nenašli sa žiadne zodpovedajúce cvičenia", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "searchNamesInEnglish": "Hľadať aj mená v angličtine", + "@searchNamesInEnglish": {}, + "equipment": "Vybavenie", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "muscles": "Svaly", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "musclesSecondary": "Sekundárne svaly", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "category": "Kategória", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "endDate": "Dátum ukončenia", + "@endDate": {}, + "startDate": "Dátum začatia", + "@startDate": {}, + "routines": "Rutiny", + "@routines": {}, + "newRoutine": "Nová rutina", + "@newRoutine": {}, + "noRoutines": "Nemáte žiadne rutiny", + "@noRoutines": {}, + "restTime": "Čas odpočinku", + "@restTime": {}, + "sets": "Sety", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "rir": "RiR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "rirNotUsed": "RiR sa nepoužíva", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "useMetric": "Používať metrické jednotky pre telesnú hmotnosť", + "@useMetric": {}, + "weightUnit": "Jednotka hmotnosti", + "@weightUnit": {}, + "repetitionUnit": "Opakovacie jednotky", + "@repetitionUnit": {}, + "dayDescriptionHelp": "Popis toho, čo sa v tento deň robí (napr. „ťahací deň“) alebo ktoré časti tela sa trénujú (napr. „hrudník a ramená“)", + "@dayDescriptionHelp": {}, + "sameRepetitions": "", + "@sameRepetitions": {}, + "comment": "Komentár", + "@comment": { + "description": "Comment, additional information" + }, + "impression": "Dojem", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "notes": "Poznámky", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "restDay": "Deň odpočinku", + "@restDay": {}, + "isRestDay": "Je deň odpočinku", + "@isRestDay": {}, + "isRestDayHelp": "Upozorňujeme, že všetky sady a cvičenia budú odstránené, keď označíte deň ako deň odpočinku.", + "@isRestDayHelp": {}, + "needsLogsToAdvance": "Na postup sú potrebné protokoly", + "@needsLogsToAdvance": {}, + "needsLogsToAdvanceHelp": "Vyberte, či chcete, aby rutina pokračovala do nasledujúceho naplánovaného dňa len v prípade, že ste zaznamenali tréning za daný deň", + "@needsLogsToAdvanceHelp": {}, + "routineDays": "Dni v rutine", + "@routineDays": {}, + "resultingRoutine": "Výsledná rutina", + "@resultingRoutine": {}, + "newDay": "Nový deň", + "@newDay": {}, + "newSet": "Nová séria", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "selectExercises": "Ak chcete urobiť superset, môžete vyhľadať niekoľko cvikov, ktoré budú zoskupené dohromady", + "@selectExercises": {}, + "gymMode": "Režim posilňovňa", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculator": "Kotúče", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Nie je možné dosiahnuť hmotnosť s dostupnými platňami", + "@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" + }, + "jumpTo": "Preskočiť na", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "todaysWorkout": "Tvoj dnešný tréning", + "@todaysWorkout": {}, + "logHelpEntries": "Ak je v jeden deň viac ako jeden záznam s rovnakým počtom opakovaní, ale s rôznymi váhami, v grafe sa zobrazí len záznam s vyššou váhou.", + "@logHelpEntries": {}, + "logHelpEntriesUnits": "Upozorňujeme, že zaznamenávajú sa iba záznamy s jednotkou hmotnosti (kg alebo lb) a opakovaním, ostatné kombinácie, ako napríklad čas alebo do zlyhania, sa tu ignorujú.", + "@logHelpEntriesUnits": {}, + "description": "Popis", + "@description": {}, + "name": "Názov", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "save": "Uložiť", + "@save": {}, + "verify": "Overiť", + "@verify": {}, + "addSet": "Pridať sériu", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Pridať jedlo", + "@addMeal": {}, + "mealLogged": "Jedlo zaznamenané do denníka", + "@mealLogged": {}, + "ingredientLogged": "Ingrediencia zaznamenaná do denníka", + "@ingredientLogged": {}, + "logMeal": "Zapíšte si jedlo do denníka výživy", + "@logMeal": {}, + "addIngredient": "Pridať ingredienciu", + "@addIngredient": {}, + "logIngredient": "Zapíšte zložku do výživového denníka", + "@logIngredient": {}, + "searchIngredient": "Vyhľadávanie ingrediencie", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalPlan": "Výživový plán", + "@nutritionalPlan": {}, + "nutritionalDiary": "Deník stravovania", + "@nutritionalDiary": {}, + "nutritionalPlans": "Výživové plány", + "@nutritionalPlans": {}, + "noNutritionalPlans": "Nemáte žiadne výživové plány", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "onlyLogging": "Sledujte iba kalórie", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Zaškrtnite políčko, ak chcete zaznamenávať len kalórie a nechcete vytvárať podrobný výživový plán s konkrétnymi jedlami", + "@onlyLoggingHelpText": {}, + "goalMacro": "Makro ciele", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "selectMealToLog": "Vyberte jedlo, ktoré chcete zaznamenať do denníka", + "@selectMealToLog": {}, + "yourCurrentNutritionPlanHasNoMealsDefinedYet": "Váš aktuálny výživový plán neobsahuje žiadne definované jedlá", + "@yourCurrentNutritionPlanHasNoMealsDefinedYet": { + "description": "Message shown when a nutrition plan doesn't have any meals" + }, + "toAddMealsToThePlanGoToNutritionalPlanDetails": "Ak chcete pridať jedlá do plánu, prejdite do podrobností výživového plánu", + "@toAddMealsToThePlanGoToNutritionalPlanDetails": { + "description": "Message shown to guide users to the nutritional plan details page to add meals" + }, + "goalEnergy": "Energetický cieľ", + "@goalEnergy": {}, + "goalProtein": "Cieľ bielkovín", + "@goalProtein": {} +} diff --git a/lib/l10n/app_th.arb b/lib/l10n/app_th.arb new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/lib/l10n/app_th.arb @@ -0,0 +1 @@ +{} diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 3db56005..cd0e249d 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -1,1012 +1,1018 @@ { - "weight": "Вага", - "@weight": { - "description": "The weight of a workout log or body weight entry" - }, - "login": "Увійти", - "@login": { - "description": "Text for login button" - }, - "logout": "Вийти", - "@logout": { - "description": "Text for logout button" - }, - "register": "Реєстрація", - "@register": { - "description": "Text for registration button" - }, - "useDefaultServer": "Використати сервер за замовчуванням", - "@useDefaultServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "useCustomServer": "Використати користувацький сервер", - "@useCustomServer": { - "description": "Toggle button allowing users to switch between the default and a custom wger server" - }, - "invalidUrl": "Будь ласка, введіть прийнятну URL-адресу", - "@invalidUrl": { - "description": "Error message when the user enters an invalid URL, e.g. in the login form" - }, - "nutritionalPlan": "План харчування", - "@nutritionalPlan": {}, - "difference": "Різниця", - "@difference": {}, - "edit": "Змінити", - "@edit": {}, - "delete": "Видалити", - "@delete": {}, - "date": "Дата", - "@date": { - "description": "The date of a workout log or body weight entry" - }, - "usernameValidChars": "Ім'я користувача може містити лише літери, цифри й символи @, +, ., - та _", - "@usernameValidChars": { - "description": "Error message when the user tries to register a username with forbidden characters" - }, - "passwordsDontMatch": "Паролі не збігаються", - "@passwordsDontMatch": { - "description": "Error message when the user enters two different passwords during registration" - }, - "confirmPassword": "Підтвердьте пароль", - "@confirmPassword": {}, - "email": "Адреса електронної пошти", - "@email": {}, - "invalidUsername": "Будь ласка, введіть припустиме ім'я користувача", - "@invalidUsername": { - "description": "Error message when the user enters an invalid username" - }, - "username": "Ім'я користувача", - "@username": {}, - "customServerHint": "Введіть адресу власного сервера, інакше буде використовуватися за замовчуванням", - "@customServerHint": { - "description": "Hint text for the form where the users can enter their own wger instance" - }, - "reset": "Скинути", - "@reset": { - "description": "Button text allowing the user to reset the entered values to the default" - }, - "loginInstead": "Вже маєте обліковий запис? Увійти", - "@loginInstead": {}, - "labelBottomNavWorkout": "Тренування", - "@labelBottomNavWorkout": { - "description": "Label used in bottom navigation, use a short word" - }, - "labelWorkoutLogs": "Журнали тренувань", - "@labelWorkoutLogs": { - "description": "(Workout) logs" - }, - "labelWorkoutPlan": "План тренування", - "@labelWorkoutPlan": { - "description": "Title for screen workout plan" - }, - "labelDashboard": "Панель керування", - "@labelDashboard": { - "description": "Title for screen dashboard" - }, - "successfullyDeleted": "Видалено", - "@successfullyDeleted": { - "description": "Message when an item was successfully deleted" - }, - "exercise": "Вправа", - "@exercise": { - "description": "An exercise for a workout" - }, - "searchExercise": "Пошук вправ для додавання", - "@searchExercise": { - "description": "Label on set form. Selected exercises are added to the set" - }, - "equipment": "Обладнання", - "@equipment": { - "description": "Equipment needed to perform an exercise" - }, - "muscles": "М'язи", - "@muscles": { - "description": "(main) muscles trained by an exercise" - }, - "musclesSecondary": "Вторинні м'язи", - "@musclesSecondary": { - "description": "secondary muscles trained by an exercise" - }, - "category": "Категорія", - "@category": { - "description": "Category for an exercise, ingredient, etc." - }, - "repetitions": "Повторень", - "@repetitions": { - "description": "Repetitions for an exercise set" - }, - "reps": "Повтор", - "@reps": { - "description": "Shorthand for repetitions, used when space constraints are tighter" - }, - "rirNotUsed": "RiR не використовується", - "@rirNotUsed": { - "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" - }, - "repetitionUnit": "Одиниця повторень", - "@repetitionUnit": {}, - "set": "Набір", - "@set": { - "description": "A set in a workout plan" - }, - "setNr": "Набір {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": "Якщо ви робите однакові повторення та вагу для всіх наборів, то ви можете просто заповнити один рядок. Наприклад, для 4 наборів просто введіть 10 для повторень, це автоматично стане «4 x 10».", - "@sameRepetitions": {}, - "comment": "Коментар", - "@comment": { - "description": "Comment, additional information" - }, - "impression": "Враження", - "@impression": { - "description": "General impression (e.g. for a workout session) such as good, bad, etc." - }, - "newDay": "Новий день", - "@newDay": {}, - "selectExercises": "Якщо ви хочете зробити супер-набір, ви можете пошукати декілька вправ, вони будуть згруповані разом", - "@selectExercises": {}, - "gymMode": "Режим тренажерного залу", - "@gymMode": { - "description": "Label when starting the gym mode" - }, - "plateCalculator": "Пластини", - "@plateCalculator": { - "description": "Label used for the plate calculator in the gym mode" - }, - "plateCalculatorNotDivisible": "Неможливо досягти ваги з наявними пластинами", - "@plateCalculatorNotDivisible": { - "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" - }, - "pause": "Пауза", - "@pause": { - "description": "Noun, not an imperative! Label used for the pause when using the gym mode" - }, - "jumpTo": "Перейти до", - "@jumpTo": { - "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" - }, - "todaysWorkout": "Ваше сьогоднішнє тренування", - "@todaysWorkout": {}, - "password": "Пароль", - "@password": {}, - "passwordTooShort": "Пароль занадто короткий", - "@passwordTooShort": { - "description": "Error message when the user a password that is too short" - }, - "invalidEmail": "Будь ласка, введіть прийнятну адресу електронної пошти", - "@invalidEmail": { - "description": "Error message when the user enters an invalid email" - }, - "customServerUrl": "URL-адреса екземпляра wger", - "@customServerUrl": { - "description": "Label in the form where the users can enter their own wger instance" - }, - "successfullySaved": "Збережено", - "@successfullySaved": { - "description": "Message when an item was successfully saved" - }, - "registerInstead": "У вас немає облікового запису? Зареєструйтесь зараз", - "@registerInstead": {}, - "labelBottomNavNutrition": "Харчування", - "@labelBottomNavNutrition": { - "description": "Label used in bottom navigation, use a short word" - }, - "weightUnit": "Одиниця ваги", - "@weightUnit": {}, - "dayDescriptionHelp": "Опис того, що робиться в цей день (наприклад, «день підтягування») або які частини тіла тренуються (наприклад, «груди та плечі»)", - "@dayDescriptionHelp": {}, - "workoutSession": "Сеанс тренування", - "@workoutSession": { - "description": "A (logged) workout session" - }, - "notes": "Нотатки", - "@notes": { - "description": "Personal notes, e.g. for a workout session" - }, - "newSet": "Новий набір", - "@newSet": { - "description": "Header when adding a new set to a workout day" - }, - "measurementCategoriesHelpText": "Категорія вимірювання, така як \"біцепс\" або \"жир тіла\"", - "@measurementCategoriesHelpText": {}, - "time": "Час", - "@time": { - "description": "The time of a meal or workout" - }, - "value": "Значення", - "@value": { - "description": "The value of a measurement entry" - }, - "timeStart": "Час початку", - "@timeStart": { - "description": "The starting time of a workout" - }, - "timeEnd": "Час закінчення", - "@timeEnd": { - "description": "The end time of a workout" - }, - "kcal": "ккал", - "@kcal": { - "description": "Energy in a meal in kilocalories, kcal" - }, - "fat": "Жири", - "@fat": {}, - "newNutritionalPlan": "Новий план харчування", - "@newNutritionalPlan": {}, - "sugars": "Цукри", - "@sugars": {}, - "aboutDescription": "Дякуємо за використання wger! wger - це спільний проєкт з відкритим кодом, створений ентузіастами фітнесу з усього світу.", - "@aboutDescription": { - "description": "Text in the about dialog" - }, - "selectExercise": "Будь ласка, виберіть вправу", - "@selectExercise": { - "description": "Error message when the user hasn't selected an exercise in the form" - }, - "calendar": "Календар", - "@calendar": {}, - "enterValue": "Будь ласка, введіть значення", - "@enterValue": { - "description": "Error message when the user hasn't entered a value on a required field" - }, - "selectIngredient": "Будь ласка, оберіть інгредієнт", - "@selectIngredient": { - "description": "Error message when the user hasn't selected an ingredient from the autocompleter" - }, - "productFoundDescription": "Штрих-код відповідає цьому виробу: {productName}. Бажаєте продовжити?", - "@productFoundDescription": { - "description": "Dialog info when product is found with barcode", - "type": "text", - "placeholders": { - "productName": { - "type": "String" - } - } - }, - "description": "Опис", - "@description": {}, - "name": "Ім'я", - "@name": { - "description": "Name for a workout or nutritional plan" - }, - "save": "Зберегти", - "@save": {}, - "addSet": "Додати набір", - "@addSet": { - "description": "Label for the button that adds a set (to a workout day)" - }, - "addMeal": "Додати страву", - "@addMeal": {}, - "mealLogged": "Страву записано в щоденник", - "@mealLogged": {}, - "logMeal": "Запис прийому їжі в щоденник харчування", - "@logMeal": {}, - "addIngredient": "Додати інгредієнт", - "@addIngredient": {}, - "logIngredient": "Занесіть інгредієнт до щоденника харчування", - "@logIngredient": {}, - "searchIngredient": "Пошук інгредієнта", - "@searchIngredient": { - "description": "Label on ingredient search form" - }, - "nutritionalDiary": "Щоденник харчування", - "@nutritionalDiary": {}, - "nutritionalPlans": "Плани харчування", - "@nutritionalPlans": {}, - "noNutritionalPlans": "Ви не маєте планів харчування", - "@noNutritionalPlans": { - "description": "Message shown when the user has no nutritional plans" - }, - "anErrorOccurred": "Сталася помилка!", - "@anErrorOccurred": {}, - "measurement": "Вимірювання", - "@measurement": {}, - "logHelpEntries": "Якщо на один день припадає більше одного запису з однаковою кількістю повторень, але різними вагами, то на графіку буде показано тільки запис з більшою вагою.", - "@logHelpEntries": {}, - "logHelpEntriesUnits": "Зверніть увагу, що на графіку відображаються тільки записи з одиницями ваги (кг або lb) і повтореннями. Інші комбінації, такі як час або \"до відмови\", тут ігноруються.", - "@logHelpEntriesUnits": {}, - "measurements": "Вимірювання", - "@measurements": { - "description": "Categories for the measurements such as biceps size, body fat, etc." - }, - "measurementEntriesHelpText": "Одиниця вимірювання, яка використовується для вимірювання категорії, як от \"см\" або \"%\"", - "@measurementEntriesHelpText": {}, - "start": "Старт", - "@start": { - "description": "Label on button to start the gym mode (i.e., an imperative)" - }, - "timeStartAhead": "Час початку не може передувати часу завершення", - "@timeStartAhead": {}, - "ingredient": "Інгредієнт", - "@ingredient": {}, - "energy": "Енергія", - "@energy": { - "description": "Energy in a meal, ingredient etc. e.g. in kJ" - }, - "energyShort": "Е", - "@energyShort": { - "description": "The first letter or short name of the word 'Energy', used in overviews" - }, - "macronutrients": "Макроелементи", - "@macronutrients": {}, - "planned": "Заплановано", - "@planned": { - "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" - }, - "logged": "Записано", - "@logged": { - "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" - }, - "weekAverage": "В середньому за 7 днів", - "@weekAverage": { - "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" - }, - "percentEnergy": "Відсоток енергії", - "@percentEnergy": {}, - "gPerBodyKg": "г на кг тіла", - "@gPerBodyKg": { - "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" - }, - "total": "Усього", - "@total": { - "description": "Label used for total sums of e.g. calories or similar" - }, - "kJ": "кДж", - "@kJ": { - "description": "Energy in a meal in kilo joules, kJ" - }, - "g": "г", - "@g": { - "description": "Abbreviation for gram" - }, - "protein": "Білок", - "@protein": {}, - "proteinShort": "Б", - "@proteinShort": { - "description": "The first letter or short name of the word 'Protein', used in overviews" - }, - "carbohydrates": "Вуглеводи", - "@carbohydrates": {}, - "carbohydratesShort": "В", - "@carbohydratesShort": { - "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" - }, - "fatShort": "Ж", - "@fatShort": { - "description": "The first letter or short name of the word 'Fat', used in overviews" - }, - "saturatedFat": "Насичені жири", - "@saturatedFat": {}, - "fiber": "Волокон", - "@fiber": {}, - "sodium": "Натрій", - "@sodium": {}, - "amount": "Сума", - "@amount": { - "description": "The amount (e.g. in grams) of an ingredient in a meal" - }, - "unit": "Одиниця", - "@unit": { - "description": "The unit used for a repetition (kg, time, etc.)" - }, - "newEntry": "Новий запис", - "@newEntry": { - "description": "Title when adding a new entry such as a weight or log entry" - }, - "noWeightEntries": "У вас немає записів ваги", - "@noWeightEntries": { - "description": "Message shown when the user has no logged weight entries" - }, - "loadingText": "Завантаження...", - "@loadingText": { - "description": "Text to show when entries are being loaded in the background: Loading..." - }, - "confirmDelete": "Ви впевнені, що бажаєте видалити '{toDelete}'?", - "@confirmDelete": { - "description": "Confirmation text before the user deletes an object", - "type": "text", - "placeholders": { - "toDelete": { - "type": "String" - } - } - }, - "toggleDetails": "Перемкнути відомості", - "@toggleDetails": { - "description": "Switch to toggle detail / overview" - }, - "goToDetailPage": "Перейти до сторінки відомостей", - "@goToDetailPage": {}, - "goToToday": "Перейти до сьогодні", - "@goToToday": { - "description": "Label on button to jump back to 'today' in the calendar widget" - }, - "enterCharacters": "Будь ласка, введіть між{min} та {max} символами", - "@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": "Наборів на вправу: {nrOfSets}", - "@nrOfSets": { - "description": "Label shown on the slider where the user selects the nr of sets", - "type": "text", - "placeholders": { - "nrOfSets": { - "type": "String" - } - } - }, - "setUnitsAndRir": "Встановіть одиниці вимірювання та RiR", - "@setUnitsAndRir": { - "description": "Label shown on the slider where the user can toggle showing units and RiR", - "type": "text" - }, - "enterValidNumber": "Будь ласка, введіть прийнятний номер", - "@enterValidNumber": { - "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" - }, - "recentlyUsedIngredients": "Останні інгредієнти", - "@recentlyUsedIngredients": { - "description": "A message when a user adds a new ingredient to a meal." - }, - "selectImage": "Будь ласка, оберіть зображення", - "@selectImage": { - "description": "Label and error message when the user hasn't selected an image to save" - }, - "optionsLabel": "Параметри", - "@optionsLabel": { - "description": "Label for the popup with general app options" - }, - "takePicture": "Зробити знімок", - "@takePicture": {}, - "chooseFromLibrary": "Вибрати з бібліотеки світлин", - "@chooseFromLibrary": {}, - "gallery": "Галерея", - "@gallery": {}, - "addImage": "Додати зображення", - "@addImage": {}, - "dataCopied": "Дані скопійовано до нового запису", - "@dataCopied": { - "description": "Snackbar message to show on copying data to a new log entry" - }, - "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" - }, - "productNotFoundDescription": "Виріб із відсканованим штрих-кодом {barcode} не знайдено в базі даних Wger", - "@productNotFoundDescription": { - "description": "Dialog info when product is not found with barcode", - "type": "text", - "placeholders": { - "barcode": { - "type": "String" - } - } - }, - "scanBarcode": "Сканувати штрих-код", - "@scanBarcode": { - "description": "Label for scan barcode button" - }, - "close": "Закрити", - "@close": { - "description": "Translation for close" - }, - "rir": "RiR", - "@rir": { - "description": "Shorthand for Repetitions In Reserve" - }, - "miles": "Милі", - "@miles": {}, - "aboutPageTitle": "Про нас та підтримка", - "@aboutPageTitle": {}, - "noMeasurementEntries": "У вас немає записів вимірювання", - "@noMeasurementEntries": {}, - "moreMeasurementEntries": "Додати нове вимірювання", - "@moreMeasurementEntries": { - "description": "Message shown when the user wants to add new measurement" - }, - "verifiedEmailInfo": "Повідомлення з підтвердженням електронної пошти надіслано на {email}", - "@verifiedEmailInfo": { - "placeholders": { - "email": { - "type": "String" - } - } - }, - "addExercise": "Додати вправу", - "@addExercise": {}, - "none__bodyweight_exercise_": "немає (вправи з власною вагою)", - "@none__bodyweight_exercise_": {}, - "abs": "Живіт", - "@abs": {}, - "baseData": "Основи англійської", - "@baseData": { - "description": "The base data for an exercise such as category, trained muscles, etc." - }, - "minutes": "Хвилини", - "@minutes": {}, - "glutes": "Сідниці", - "@glutes": {}, - "kilometers": "Кілометри", - "@kilometers": {}, - "seconds": "Секунди", - "@seconds": {}, - "bench": "Лавка", - "@bench": {}, - "barbell": "Штанга", - "@barbell": {}, - "triceps": "Трицепс", - "@triceps": {}, - "swiss_ball": "Швейцарський м'яч", - "@swiss_ball": {}, - "lower_back": "Нижня частина спини", - "@lower_back": {}, - "shoulders": "Плечі", - "@shoulders": {}, - "hamstrings": "Підколінні сухожилля", - "@hamstrings": {}, - "chest": "Груди", - "@chest": {}, - "biceps": "Біцепс", - "@biceps": {}, - "dumbbell": "Гантеля", - "@dumbbell": {}, - "gym_mat": "Гімнастичний мат", - "@gym_mat": {}, - "incline_bench": "Похила лавка", - "@incline_bench": {}, - "lats": "Найширші м'язи спини", - "@lats": {}, - "legs": "Ноги", - "@legs": {}, - "back": "Спина", - "@back": {}, - "quads": "Квадрицепс", - "@quads": {}, - "arms": "Руки", - "@arms": {}, - "sz_bar": "SZ-Штанга", - "@sz_bar": {}, - "kettlebell": "Гиря", - "@kettlebell": {}, - "calves": "Ікри", - "@calves": {}, - "pull_up_bar": "Перекладина", - "@pull_up_bar": {}, - "until_failure": "До відмови", - "@until_failure": {}, - "userProfile": "Твій профіль", - "@userProfile": {}, - "exerciseList": "Список вправ", - "@exerciseList": {}, - "exercises": "Вправи", - "@exercises": { - "description": "Multiple exercises for a workout" - }, - "exerciseName": "Назва вправи", - "@exerciseName": { - "description": "Label for the name of a workout exercise" - }, - "add_exercise_image_license": "Зображення повинні бути сумісні з ліцензією CC BY SA. Якщо ви сумніваєтеся, завантажуйте лише фотографії, які ви зробили самі.", - "@add_exercise_image_license": {}, - "translateExercise": "Перекладіть цю вправу зараз", - "@translateExercise": {}, - "selectEntry": "Будь ласка, виберіть запис", - "@selectEntry": {}, - "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" - } - } - }, - "baseNameEnglish": "Всі вправи потребують базової назви англійською", - "@baseNameEnglish": {}, - "variations": "Варіації", - "@variations": { - "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" - }, - "alsoKnownAs": "Також відомий як: {aliases}", - "@alsoKnownAs": { - "placeholders": { - "aliases": { - "type": "String" - } + "weight": "Вага", + "@weight": { + "description": "The weight of a workout log or body weight entry" }, - "description": "List of alternative names for an exercise" - }, - "verifiedEmail": "Підтверджена електронна пошта", - "@verifiedEmail": {}, - "unVerifiedEmail": "Непідтверджена електронна пошта", - "@unVerifiedEmail": {}, - "verifiedEmailReason": "Вам потрібно підтвердити свою електронну пошту, щоб виконувати вправи", - "@verifiedEmailReason": {}, - "alternativeNames": "Альтернативні назви", - "@alternativeNames": {}, - "oneNamePerLine": "Одне ім'я на рядок", - "@oneNamePerLine": {}, - "whatVariationsExist": "Які варіації цієї вправи існують, якщо такі є?", - "@whatVariationsExist": {}, - "previous": "Попередній", - "@previous": {}, - "next": "Наступний", - "@next": {}, - "images": "Зображення", - "@images": {}, - "language": "Мова", - "@language": {}, - "contributeExercise": "Внести вправу", - "@contributeExercise": {}, - "translation": "Переклад", - "@translation": {}, - "cardio": "Кардіо", - "@cardio": {}, - "contributeExerciseWarning": "Ви можете брати участь у вправах, лише якщо ваш обліковий запис старший за {days} днів і підтвердив вашу електронну пошту", - "@contributeExerciseWarning": { - "description": "Number of days before which a person can add exercise", - "placeholders": { - "days": { - "type": "String", - "example": "14" - } - } - }, - "success": "Успіх", - "@success": { - "description": "Message when an action completed successfully, usually used as a heading" - }, - "cacheWarning": "Через кешування може знадобитися деякий час, перш ніж зміни стануть видимими у всьому застосунку.", - "@cacheWarning": {}, - "searchNamesInEnglish": "Також шукайте імена англійською мовою", - "@searchNamesInEnglish": {}, - "textPromptTitle": "Готові почати?", - "@textPromptTitle": {}, - "textPromptSubheading": "Натисніть кнопку дії, щоб почати", - "@textPromptSubheading": {}, - "body_weight": "Вага тіла", - "@body_weight": { - "description": "Generated entry for translation for server strings" - }, - "kg": "кг", - "@kg": { - "description": "Generated entry for translation for server strings" - }, - "kilometers_per_hour": "Кілометри на годину", - "@kilometers_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "miles_per_hour": "Миль на годину", - "@miles_per_hour": { - "description": "Generated entry for translation for server strings" - }, - "lb": "фунт", - "@lb": { - "description": "Generated entry for translation for server strings" - }, - "plates": "Пластини", - "@plates": { - "description": "Generated entry for translation for server strings" - }, - "verify": "Підтвердити", - "@verify": {}, - "max_reps": "Максимальна кількість повторень", - "@max_reps": { - "description": "Generated entry for translation for server strings" - }, - "goalMacro": "Макроцілі", - "@goalMacro": { - "description": "The goal for macronutrients" - }, - "goalFiber": "Волокно гол", - "@goalFiber": {}, - "goalTypeBasic": "Базовий", - "@goalTypeBasic": { - "description": "added for localization of Class GoalType's filed basic" - }, - "goalTypeAdvanced": "Просунутий", - "@goalTypeAdvanced": { - "description": "added for localization of Class GoalType's filed advanced" - }, - "useMetric": "Використовуйте метричні одиниці вимірювання маси тіла", - "@useMetric": {}, - "settingsTitle": "налаштування", - "@settingsTitle": {}, - "deficit": "дефіцит", - "@deficit": { - "description": "Caloric deficit (either planned or unplanned)" - }, - "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" - } - } - }, - "settingsExerciseCacheDescription": "Кеш вправ", - "@settingsExerciseCacheDescription": {}, - "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" - } - } - }, - "kcalValue": "{value} ккал", - "@kcalValue": { - "description": "A value in kcal, e.g. 500 kcal", - "type": "text", - "placeholders": { - "value": { - "type": "String" - } - } - }, - "log": "Журнал", - "@log": { - "description": "Log a specific meal (imperative form)" - }, - "settingsIngredientCacheDescription": "Кеш інгредієнтів", - "@settingsIngredientCacheDescription": {}, - "overallChangeWeight": "Загальна зміна", - "@overallChangeWeight": { - "description": "Overall change in weight, added for localization" - }, - "goalTypeMeals": "Від їжі", - "@goalTypeMeals": { - "description": "added for localization of Class GoalType's filed meals" - }, - "indicatorRaw": "сирий", - "@indicatorRaw": { - "description": "added for localization of Class Indicator's field text" - }, - "indicatorAvg": "середнє", - "@indicatorAvg": { - "description": "added for localization of Class Indicator's field text" - }, - "onlyLogging": "Слідкуйте лише за калоріями", - "@onlyLogging": {}, - "onlyLoggingHelpText": "Поставте прапорець, якщо ви хочете лише реєструвати свої калорії та не хочете встановлювати детальний план харчування з певними стравами", - "@onlyLoggingHelpText": {}, - "goalEnergy": "Енергетична мета", - "@goalEnergy": {}, - "goalProtein": "Білкова мета", - "@goalProtein": {}, - "goalCarbohydrates": "Мета вуглеводів", - "@goalCarbohydrates": {}, - "goalFat": "Товстий гол", - "@goalFat": {}, - "today": "Сьогодні", - "@today": {}, - "loggedToday": "Зареєстровано сьогодні", - "@loggedToday": {}, - "aboutDonateTitle": "Зробіть пожертву", - "@aboutDonateTitle": {}, - "aboutDonateText": "Хоча проект є безкоштовним і завжди ним залишатиметься, запуск сервера - ні! Розвиток також вимагає значного часу і зусиль від волонтерів. Ваш внесок безпосередньо підтримує ці витрати, допомагаючи підтримувати надійність сервісу.", - "@aboutDonateText": {}, - "surplus": "надлишок", - "@surplus": { - "description": "Caloric surplus (either planned or unplanned)" - }, - "done": "Готово", - "@done": {}, - "noIngredientsDefined": "Інгредієнти ще не визначені", - "@noIngredientsDefined": {}, - "noMatchingExerciseFound": "Відповідних вправ не знайдено", - "@noMatchingExerciseFound": { - "description": "Message returned if no exercises match the searched string" - }, - "ingredientLogged": "Інгредієнт зареєстровано в щоденнику", - "@ingredientLogged": {}, - "selectMealToLog": "Виберіть страву, щоб записати в щоденник", - "@selectMealToLog": {}, - "aboutMastodonTitle": "Мастодонт", - "@aboutMastodonTitle": {}, - "settingsCacheTitle": "Кеш", - "@settingsCacheTitle": {}, - "settingsCacheDeletedSnackbar": "Кеш успішно очищено", - "@settingsCacheDeletedSnackbar": {}, - "themeMode": "Тематичний режим", - "@themeMode": {}, - "darkMode": "Завжди темний режим", - "@darkMode": {}, - "lightMode": "Завжди легкий режим", - "@lightMode": {}, - "systemMode": "Налаштування системи", - "@systemMode": {}, - "restDay": "День відпочинку", - "@restDay": {}, - "noRoutines": "У вас немає рутин", - "@noRoutines": {}, - "restTime": "Час відпочинку", - "@restTime": {}, - "sets": "Набори", - "@sets": { - "description": "The number of sets to be done for one exercise" - }, - "supersetNr": "Суперсет {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" - } - } - }, - "isRestDay": "Є День відпочинку", - "@isRestDay": {}, - "isRestDayHelp": "Будь ласка, зверніть увагу, що всі комплекси та вправи будуть видалені, коли ви позначите день як вихідний.", - "@isRestDayHelp": {}, - "routineDays": "Дні в рутині", - "@routineDays": {}, - "fitInWeek": "Вписується в тиждень", - "@fitInWeek": {}, - "fitInWeekHelp": "Якщо ввімкнено, дні повторюватимуться в тижневому циклі, інакше дні будуть йти послідовно незалежно від початку нового тижня.", - "@fitInWeekHelp": {}, - "addSuperset": "Додайте надмножину", - "@addSuperset": {}, - "setHasProgression": "Набір має прогресію", - "@setHasProgression": {}, - "simpleMode": "Простий режим", - "@simpleMode": {}, - "resultingRoutine": "Результативна рутина", - "@resultingRoutine": {}, - "simpleModeHelp": "Приховайте деякі розширені налаштування під час редагування вправ", - "@simpleModeHelp": {}, - "progressionRules": "Ця вправа має правила прогресу, і її не можна редагувати в мобільному додатку. Щоб відредагувати цю вправу, використовуйте веб-додаток.", - "@progressionRules": {}, - "min": "Мін", - "@min": {}, - "max": "Макс", - "@max": {}, - "newRoutine": "Нова рутина", - "@newRoutine": {}, - "needsLogsToAdvance": "Для просування потрібні журнали", - "@needsLogsToAdvance": {}, - "routines": "Рутини", - "@routines": {}, - "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" - } - } - }, - "needsLogsToAdvanceHelp": "Виберіть, якщо ви бажаєте, щоб програма перейшла до наступного запланованого дня, лише якщо ви зареєстрували тренування на цей день", - "@needsLogsToAdvanceHelp": {}, - "setHasProgressionWarning": "Зверніть увагу, що на даний момент неможливо змінити всі параметри набору в мобільному додатку або налаштувати автоматичний прогрес. Наразі використовуйте веб-додаток.", - "@setHasProgressionWarning": {}, - "setHasNoExercises": "У цьому комплексі ще немає вправ!", - "@setHasNoExercises": {}, - "errorCouldNotConnectToServerDetails": "Програмі не вдалося підключитися до сервера. Перевірте підключення до Інтернету або URL-адресу сервера та спробуйте ще раз. Якщо проблема не зникає, зверніться до адміністратора сервера.", - "@errorCouldNotConnectToServerDetails": {}, - "errorViewDetails": "Технічні деталі", - "@errorViewDetails": {}, - "errorCouldNotConnectToServer": "Не вдалося підключитися до сервера", - "@errorCouldNotConnectToServer": {}, - "errorInfoDescription2": "Ви можете продовжувати користуватися додатком, але деякі функції можуть не працювати.", - "@errorInfoDescription2": {}, - "errorInfoDescription": "Вибачте, але щось пішло не так. Ви можете допомогти нам виправити це, повідомивши про проблему на GitHub.", - "@errorInfoDescription": {}, - "copyToClipboard": "Копіювати в буфер обміну", - "@copyToClipboard": {}, - "aboutWhySupportTitle": "Відкритий код та безкоштовний у використанні ❤️", - "@aboutWhySupportTitle": {}, - "aboutJoinCommunityTitle": "Приєднуйтесь до спільноти", - "@aboutJoinCommunityTitle": {}, - "aboutDiscordTitle": "Дискорд", - "@aboutDiscordTitle": {}, - "aboutBugsListTitle": "Повідомити про проблему або запропонувати функцію", - "@aboutBugsListTitle": {}, - "aboutSourceListTitle": "Переглянути вихідний код", - "@aboutSourceListTitle": {}, - "aboutContributeTitle": "Зробити внесок", - "@aboutContributeTitle": {}, - "aboutContributeText": "Ми вітаємо будь-які види внесків. Незалежно від того, чи ви розробник, перекладач, чи просто захоплений фітнесом, ми цінуємо будь-яку підтримку!", - "@aboutContributeText": {}, - "aboutTranslationListTitle": "Перекласти програму", - "@aboutTranslationListTitle": {}, - "others": "Інші", - "@others": {}, - "apiToken": "Токен API", - "@apiToken": {}, - "useApiToken": "Використовувати токен API", - "@useApiToken": {}, - "useUsernameAndPassword": "Використовуйте ім'я користувача та пароль", - "@useUsernameAndPassword": {}, - "invalidApiToken": "Будь ласка, введіть дійсний ключ API", - "@invalidApiToken": { - "description": "Error message when the user enters an invalid API key" - }, - "apiTokenValidChars": "Ключ API може містити лише літери a-f, цифри 0-9 та мати довжину рівно 40 символів", - "@apiTokenValidChars": { - "description": "Error message when the user tries to input a API key with forbidden characters" - }, - "resistance_band": "Еспандер", - "@resistance_band": { - "description": "Generated entry for translation for server strings" - }, - "selectAvailablePlates": "Виберіть доступні тарілки", - "@selectAvailablePlates": {}, - "barWeight": "Вага штанги", - "@barWeight": {}, - "useColors": "Використовуйте кольори", - "@useColors": {}, - "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" - } + "login": "Увійти", + "@login": { + "description": "Text for login button" + }, + "logout": "Вийти", + "@logout": { + "description": "Text for logout button" + }, + "register": "Реєстрація", + "@register": { + "description": "Text for registration button" + }, + "useDefaultServer": "Використати сервер за замовчуванням", + "@useDefaultServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "useCustomServer": "Використати користувацький сервер", + "@useCustomServer": { + "description": "Toggle button allowing users to switch between the default and a custom wger server" + }, + "invalidUrl": "Будь ласка, введіть прийнятну URL-адресу", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + }, + "nutritionalPlan": "План харчування", + "@nutritionalPlan": {}, + "difference": "Різниця", + "@difference": {}, + "edit": "Змінити", + "@edit": {}, + "delete": "Видалити", + "@delete": {}, + "date": "Дата", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "usernameValidChars": "Ім'я користувача може містити лише літери, цифри й символи @, +, ., - та _", + "@usernameValidChars": { + "description": "Error message when the user tries to register a username with forbidden characters" + }, + "passwordsDontMatch": "Паролі не збігаються", + "@passwordsDontMatch": { + "description": "Error message when the user enters two different passwords during registration" + }, + "confirmPassword": "Підтвердьте пароль", + "@confirmPassword": {}, + "email": "Адреса електронної пошти", + "@email": {}, + "invalidUsername": "Будь ласка, введіть припустиме ім'я користувача", + "@invalidUsername": { + "description": "Error message when the user enters an invalid username" + }, + "username": "Ім'я користувача", + "@username": {}, + "customServerHint": "Введіть адресу власного сервера, інакше буде використовуватися за замовчуванням", + "@customServerHint": { + "description": "Hint text for the form where the users can enter their own wger instance" + }, + "reset": "Скинути", + "@reset": { + "description": "Button text allowing the user to reset the entered values to the default" + }, + "loginInstead": "Вже маєте обліковий запис? Увійти", + "@loginInstead": {}, + "labelBottomNavWorkout": "Тренування", + "@labelBottomNavWorkout": { + "description": "Label used in bottom navigation, use a short word" + }, + "labelWorkoutLogs": "Журнали тренувань", + "@labelWorkoutLogs": { + "description": "(Workout) logs" + }, + "labelWorkoutPlan": "План тренування", + "@labelWorkoutPlan": { + "description": "Title for screen workout plan" + }, + "labelDashboard": "Панель керування", + "@labelDashboard": { + "description": "Title for screen dashboard" + }, + "successfullyDeleted": "Видалено", + "@successfullyDeleted": { + "description": "Message when an item was successfully deleted" + }, + "exercise": "Вправа", + "@exercise": { + "description": "An exercise for a workout" + }, + "searchExercise": "Пошук вправ для додавання", + "@searchExercise": { + "description": "Label on set form. Selected exercises are added to the set" + }, + "equipment": "Обладнання", + "@equipment": { + "description": "Equipment needed to perform an exercise" + }, + "muscles": "М'язи", + "@muscles": { + "description": "(main) muscles trained by an exercise" + }, + "musclesSecondary": "Вторинні м'язи", + "@musclesSecondary": { + "description": "secondary muscles trained by an exercise" + }, + "category": "Категорія", + "@category": { + "description": "Category for an exercise, ingredient, etc." + }, + "repetitions": "Повторень", + "@repetitions": { + "description": "Repetitions for an exercise set" + }, + "reps": "Повтор", + "@reps": { + "description": "Shorthand for repetitions, used when space constraints are tighter" + }, + "rirNotUsed": "RiR не використовується", + "@rirNotUsed": { + "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" + }, + "repetitionUnit": "Одиниця повторень", + "@repetitionUnit": {}, + "set": "Набір", + "@set": { + "description": "A set in a workout plan" + }, + "setNr": "Набір {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": "Якщо ви робите однакові повторення та вагу для всіх наборів, то ви можете просто заповнити один рядок. Наприклад, для 4 наборів просто введіть 10 для повторень, це автоматично стане «4 x 10».", + "@sameRepetitions": {}, + "comment": "Коментар", + "@comment": { + "description": "Comment, additional information" + }, + "impression": "Враження", + "@impression": { + "description": "General impression (e.g. for a workout session) such as good, bad, etc." + }, + "newDay": "Новий день", + "@newDay": {}, + "selectExercises": "Якщо ви хочете зробити супер-набір, ви можете пошукати декілька вправ, вони будуть згруповані разом", + "@selectExercises": {}, + "gymMode": "Режим тренажерного залу", + "@gymMode": { + "description": "Label when starting the gym mode" + }, + "plateCalculator": "Пластини", + "@plateCalculator": { + "description": "Label used for the plate calculator in the gym mode" + }, + "plateCalculatorNotDivisible": "Неможливо досягти ваги з наявними пластинами", + "@plateCalculatorNotDivisible": { + "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" + }, + "pause": "Пауза", + "@pause": { + "description": "Noun, not an imperative! Label used for the pause when using the gym mode" + }, + "jumpTo": "Перейти до", + "@jumpTo": { + "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" + }, + "todaysWorkout": "Ваше сьогоднішнє тренування", + "@todaysWorkout": {}, + "password": "Пароль", + "@password": {}, + "passwordTooShort": "Пароль занадто короткий", + "@passwordTooShort": { + "description": "Error message when the user a password that is too short" + }, + "invalidEmail": "Будь ласка, введіть прийнятну адресу електронної пошти", + "@invalidEmail": { + "description": "Error message when the user enters an invalid email" + }, + "customServerUrl": "URL-адреса екземпляра wger", + "@customServerUrl": { + "description": "Label in the form where the users can enter their own wger instance" + }, + "successfullySaved": "Збережено", + "@successfullySaved": { + "description": "Message when an item was successfully saved" + }, + "registerInstead": "У вас немає облікового запису? Зареєструйтесь зараз", + "@registerInstead": {}, + "labelBottomNavNutrition": "Харчування", + "@labelBottomNavNutrition": { + "description": "Label used in bottom navigation, use a short word" + }, + "weightUnit": "Одиниця ваги", + "@weightUnit": {}, + "dayDescriptionHelp": "Опис того, що робиться в цей день (наприклад, «день підтягування») або які частини тіла тренуються (наприклад, «груди та плечі»)", + "@dayDescriptionHelp": {}, + "workoutSession": "Сеанс тренування", + "@workoutSession": { + "description": "A (logged) workout session" + }, + "notes": "Нотатки", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "newSet": "Новий набір", + "@newSet": { + "description": "Header when adding a new set to a workout day" + }, + "measurementCategoriesHelpText": "Категорія вимірювання, така як \"біцепс\" або \"жир тіла\"", + "@measurementCategoriesHelpText": {}, + "time": "Час", + "@time": { + "description": "The time of a meal or workout" + }, + "value": "Значення", + "@value": { + "description": "The value of a measurement entry" + }, + "timeStart": "Час початку", + "@timeStart": { + "description": "The starting time of a workout" + }, + "timeEnd": "Час закінчення", + "@timeEnd": { + "description": "The end time of a workout" + }, + "kcal": "ккал", + "@kcal": { + "description": "Energy in a meal in kilocalories, kcal" + }, + "fat": "Жири", + "@fat": {}, + "newNutritionalPlan": "Новий план харчування", + "@newNutritionalPlan": {}, + "sugars": "Цукри", + "@sugars": {}, + "aboutDescription": "Дякуємо за використання wger! wger - це спільний проєкт з відкритим кодом, створений ентузіастами фітнесу з усього світу.", + "@aboutDescription": { + "description": "Text in the about dialog" + }, + "selectExercise": "Будь ласка, виберіть вправу", + "@selectExercise": { + "description": "Error message when the user hasn't selected an exercise in the form" + }, + "calendar": "Календар", + "@calendar": {}, + "enterValue": "Будь ласка, введіть значення", + "@enterValue": { + "description": "Error message when the user hasn't entered a value on a required field" + }, + "selectIngredient": "Будь ласка, оберіть інгредієнт", + "@selectIngredient": { + "description": "Error message when the user hasn't selected an ingredient from the autocompleter" + }, + "productFoundDescription": "Штрих-код відповідає цьому виробу: {productName}. Бажаєте продовжити?", + "@productFoundDescription": { + "description": "Dialog info when product is found with barcode", + "type": "text", + "placeholders": { + "productName": { + "type": "String" + } + } + }, + "description": "Опис", + "@description": {}, + "name": "Ім'я", + "@name": { + "description": "Name for a workout or nutritional plan" + }, + "save": "Зберегти", + "@save": {}, + "addSet": "Додати набір", + "@addSet": { + "description": "Label for the button that adds a set (to a workout day)" + }, + "addMeal": "Додати страву", + "@addMeal": {}, + "mealLogged": "Страву записано в щоденник", + "@mealLogged": {}, + "logMeal": "Запис прийому їжі в щоденник харчування", + "@logMeal": {}, + "addIngredient": "Додати інгредієнт", + "@addIngredient": {}, + "logIngredient": "Занесіть інгредієнт до щоденника харчування", + "@logIngredient": {}, + "searchIngredient": "Пошук інгредієнта", + "@searchIngredient": { + "description": "Label on ingredient search form" + }, + "nutritionalDiary": "Щоденник харчування", + "@nutritionalDiary": {}, + "nutritionalPlans": "Плани харчування", + "@nutritionalPlans": {}, + "noNutritionalPlans": "Ви не маєте планів харчування", + "@noNutritionalPlans": { + "description": "Message shown when the user has no nutritional plans" + }, + "anErrorOccurred": "Сталася помилка!", + "@anErrorOccurred": {}, + "measurement": "Вимірювання", + "@measurement": {}, + "logHelpEntries": "Якщо на один день припадає більше одного запису з однаковою кількістю повторень, але різними вагами, то на графіку буде показано тільки запис з більшою вагою.", + "@logHelpEntries": {}, + "logHelpEntriesUnits": "Зверніть увагу, що на графіку відображаються тільки записи з одиницями ваги (кг або lb) і повтореннями. Інші комбінації, такі як час або \"до відмови\", тут ігноруються.", + "@logHelpEntriesUnits": {}, + "measurements": "Вимірювання", + "@measurements": { + "description": "Categories for the measurements such as biceps size, body fat, etc." + }, + "measurementEntriesHelpText": "Одиниця вимірювання, яка використовується для вимірювання категорії, як от \"см\" або \"%\"", + "@measurementEntriesHelpText": {}, + "start": "Старт", + "@start": { + "description": "Label on button to start the gym mode (i.e., an imperative)" + }, + "timeStartAhead": "Час початку не може передувати часу завершення", + "@timeStartAhead": {}, + "ingredient": "Інгредієнт", + "@ingredient": {}, + "energy": "Енергія", + "@energy": { + "description": "Energy in a meal, ingredient etc. e.g. in kJ" + }, + "energyShort": "Е", + "@energyShort": { + "description": "The first letter or short name of the word 'Energy', used in overviews" + }, + "macronutrients": "Макроелементи", + "@macronutrients": {}, + "planned": "Заплановано", + "@planned": { + "description": "Header for the column of 'planned' nutritional values, i.e. what should be eaten" + }, + "logged": "Записано", + "@logged": { + "description": "Header for the column of 'logged' nutritional values, i.e. what was eaten" + }, + "weekAverage": "В середньому за 7 днів", + "@weekAverage": { + "description": "Header for the column of '7 day average' nutritional values, i.e. what was logged last week" + }, + "percentEnergy": "Відсоток енергії", + "@percentEnergy": {}, + "gPerBodyKg": "г на кг тіла", + "@gPerBodyKg": { + "description": "Label used for total sums of e.g. calories or similar in grams per Kg of body weight" + }, + "total": "Усього", + "@total": { + "description": "Label used for total sums of e.g. calories or similar" + }, + "kJ": "кДж", + "@kJ": { + "description": "Energy in a meal in kilo joules, kJ" + }, + "g": "г", + "@g": { + "description": "Abbreviation for gram" + }, + "protein": "Білок", + "@protein": {}, + "proteinShort": "Б", + "@proteinShort": { + "description": "The first letter or short name of the word 'Protein', used in overviews" + }, + "carbohydrates": "Вуглеводи", + "@carbohydrates": {}, + "carbohydratesShort": "В", + "@carbohydratesShort": { + "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" + }, + "fatShort": "Ж", + "@fatShort": { + "description": "The first letter or short name of the word 'Fat', used in overviews" + }, + "saturatedFat": "Насичені жири", + "@saturatedFat": {}, + "fiber": "Волокон", + "@fiber": {}, + "sodium": "Натрій", + "@sodium": {}, + "amount": "Сума", + "@amount": { + "description": "The amount (e.g. in grams) of an ingredient in a meal" + }, + "unit": "Одиниця", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "newEntry": "Новий запис", + "@newEntry": { + "description": "Title when adding a new entry such as a weight or log entry" + }, + "noWeightEntries": "У вас немає записів ваги", + "@noWeightEntries": { + "description": "Message shown when the user has no logged weight entries" + }, + "loadingText": "Завантаження...", + "@loadingText": { + "description": "Text to show when entries are being loaded in the background: Loading..." + }, + "confirmDelete": "Ви впевнені, що бажаєте видалити '{toDelete}'?", + "@confirmDelete": { + "description": "Confirmation text before the user deletes an object", + "type": "text", + "placeholders": { + "toDelete": { + "type": "String" + } + } + }, + "toggleDetails": "Перемкнути відомості", + "@toggleDetails": { + "description": "Switch to toggle detail / overview" + }, + "goToDetailPage": "Перейти до сторінки відомостей", + "@goToDetailPage": {}, + "goToToday": "Перейти до сьогодні", + "@goToToday": { + "description": "Label on button to jump back to 'today' in the calendar widget" + }, + "enterCharacters": "Будь ласка, введіть між{min} та {max} символами", + "@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": "Наборів на вправу: {nrOfSets}", + "@nrOfSets": { + "description": "Label shown on the slider where the user selects the nr of sets", + "type": "text", + "placeholders": { + "nrOfSets": { + "type": "String" + } + } + }, + "setUnitsAndRir": "Встановіть одиниці вимірювання та RiR", + "@setUnitsAndRir": { + "description": "Label shown on the slider where the user can toggle showing units and RiR", + "type": "text" + }, + "enterValidNumber": "Будь ласка, введіть прийнятний номер", + "@enterValidNumber": { + "description": "Error message when the user has submitted an invalid number (e.g. '3,.,.,.')" + }, + "recentlyUsedIngredients": "Останні інгредієнти", + "@recentlyUsedIngredients": { + "description": "A message when a user adds a new ingredient to a meal." + }, + "selectImage": "Будь ласка, оберіть зображення", + "@selectImage": { + "description": "Label and error message when the user hasn't selected an image to save" + }, + "optionsLabel": "Параметри", + "@optionsLabel": { + "description": "Label for the popup with general app options" + }, + "takePicture": "Зробити знімок", + "@takePicture": {}, + "chooseFromLibrary": "Вибрати з бібліотеки світлин", + "@chooseFromLibrary": {}, + "gallery": "Галерея", + "@gallery": {}, + "addImage": "Додати зображення", + "@addImage": {}, + "dataCopied": "Дані скопійовано до нового запису", + "@dataCopied": { + "description": "Snackbar message to show on copying data to a new log entry" + }, + "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" + }, + "productNotFoundDescription": "Виріб із відсканованим штрих-кодом {barcode} не знайдено в базі даних Wger", + "@productNotFoundDescription": { + "description": "Dialog info when product is not found with barcode", + "type": "text", + "placeholders": { + "barcode": { + "type": "String" + } + } + }, + "scanBarcode": "Сканувати штрих-код", + "@scanBarcode": { + "description": "Label for scan barcode button" + }, + "close": "Закрити", + "@close": { + "description": "Translation for close" + }, + "rir": "RiR", + "@rir": { + "description": "Shorthand for Repetitions In Reserve" + }, + "miles": "Милі", + "@miles": {}, + "aboutPageTitle": "Про нас та підтримка", + "@aboutPageTitle": {}, + "noMeasurementEntries": "У вас немає записів вимірювання", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Додати нове вимірювання", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "verifiedEmailInfo": "Повідомлення з підтвердженням електронної пошти надіслано на {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": { + "type": "String" + } + } + }, + "addExercise": "Додати вправу", + "@addExercise": {}, + "none__bodyweight_exercise_": "немає (вправи з власною вагою)", + "@none__bodyweight_exercise_": {}, + "abs": "Живіт", + "@abs": {}, + "baseData": "Основи англійської", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "minutes": "Хвилини", + "@minutes": {}, + "glutes": "Сідниці", + "@glutes": {}, + "kilometers": "Кілометри", + "@kilometers": {}, + "seconds": "Секунди", + "@seconds": {}, + "bench": "Лавка", + "@bench": {}, + "barbell": "Штанга", + "@barbell": {}, + "triceps": "Трицепс", + "@triceps": {}, + "swiss_ball": "Швейцарський м'яч", + "@swiss_ball": {}, + "lower_back": "Нижня частина спини", + "@lower_back": {}, + "shoulders": "Плечі", + "@shoulders": {}, + "hamstrings": "Підколінні сухожилля", + "@hamstrings": {}, + "chest": "Груди", + "@chest": {}, + "biceps": "Біцепс", + "@biceps": {}, + "dumbbell": "Гантеля", + "@dumbbell": {}, + "gym_mat": "Гімнастичний мат", + "@gym_mat": {}, + "incline_bench": "Похила лавка", + "@incline_bench": {}, + "lats": "Найширші м'язи спини", + "@lats": {}, + "legs": "Ноги", + "@legs": {}, + "back": "Спина", + "@back": {}, + "quads": "Квадрицепс", + "@quads": {}, + "arms": "Руки", + "@arms": {}, + "sz_bar": "SZ-Штанга", + "@sz_bar": {}, + "kettlebell": "Гиря", + "@kettlebell": {}, + "calves": "Ікри", + "@calves": {}, + "pull_up_bar": "Перекладина", + "@pull_up_bar": {}, + "until_failure": "До відмови", + "@until_failure": {}, + "userProfile": "Твій профіль", + "@userProfile": {}, + "exerciseList": "Список вправ", + "@exerciseList": {}, + "exercises": "Вправи", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Назва вправи", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "add_exercise_image_license": "Зображення повинні бути сумісні з ліцензією CC BY SA. Якщо ви сумніваєтеся, завантажуйте лише фотографії, які ви зробили самі.", + "@add_exercise_image_license": {}, + "translateExercise": "Перекладіть цю вправу зараз", + "@translateExercise": {}, + "selectEntry": "Будь ласка, виберіть запис", + "@selectEntry": {}, + "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" + } + } + }, + "baseNameEnglish": "Всі вправи потребують базової назви англійською", + "@baseNameEnglish": {}, + "variations": "Варіації", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "Також відомий як: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": { + "type": "String" + } + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmail": "Підтверджена електронна пошта", + "@verifiedEmail": {}, + "unVerifiedEmail": "Непідтверджена електронна пошта", + "@unVerifiedEmail": {}, + "verifiedEmailReason": "Вам потрібно підтвердити свою електронну пошту, щоб виконувати вправи", + "@verifiedEmailReason": {}, + "alternativeNames": "Альтернативні назви", + "@alternativeNames": {}, + "oneNamePerLine": "Одне ім'я на рядок", + "@oneNamePerLine": {}, + "whatVariationsExist": "Які варіації цієї вправи існують, якщо такі є?", + "@whatVariationsExist": {}, + "previous": "Попередній", + "@previous": {}, + "next": "Наступний", + "@next": {}, + "images": "Зображення", + "@images": {}, + "language": "Мова", + "@language": {}, + "contributeExercise": "Внести вправу", + "@contributeExercise": {}, + "translation": "Переклад", + "@translation": {}, + "cardio": "Кардіо", + "@cardio": {}, + "contributeExerciseWarning": "Ви можете брати участь у вправах, лише якщо ваш обліковий запис старший за {days} днів і підтвердив вашу електронну пошту", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "success": "Успіх", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "cacheWarning": "Через кешування може знадобитися деякий час, перш ніж зміни стануть видимими у всьому застосунку.", + "@cacheWarning": {}, + "searchNamesInEnglish": "Також шукайте імена англійською мовою", + "@searchNamesInEnglish": {}, + "textPromptTitle": "Готові почати?", + "@textPromptTitle": {}, + "textPromptSubheading": "Натисніть кнопку дії, щоб почати", + "@textPromptSubheading": {}, + "body_weight": "Вага тіла", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kg": "кг", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Кілометри на годину", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Миль на годину", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "lb": "фунт", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Пластини", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "verify": "Підтвердити", + "@verify": {}, + "max_reps": "Максимальна кількість повторень", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "goalMacro": "Макроцілі", + "@goalMacro": { + "description": "The goal for macronutrients" + }, + "goalFiber": "Волокно гол", + "@goalFiber": {}, + "goalTypeBasic": "Базовий", + "@goalTypeBasic": { + "description": "added for localization of Class GoalType's filed basic" + }, + "goalTypeAdvanced": "Просунутий", + "@goalTypeAdvanced": { + "description": "added for localization of Class GoalType's filed advanced" + }, + "useMetric": "Використовуйте метричні одиниці вимірювання маси тіла", + "@useMetric": {}, + "settingsTitle": "налаштування", + "@settingsTitle": {}, + "deficit": "дефіцит", + "@deficit": { + "description": "Caloric deficit (either planned or unplanned)" + }, + "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" + } + } + }, + "settingsExerciseCacheDescription": "Кеш вправ", + "@settingsExerciseCacheDescription": {}, + "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" + } + } + }, + "kcalValue": "{value} ккал", + "@kcalValue": { + "description": "A value in kcal, e.g. 500 kcal", + "type": "text", + "placeholders": { + "value": { + "type": "String" + } + } + }, + "log": "Журнал", + "@log": { + "description": "Log a specific meal (imperative form)" + }, + "settingsIngredientCacheDescription": "Кеш інгредієнтів", + "@settingsIngredientCacheDescription": {}, + "overallChangeWeight": "Загальна зміна", + "@overallChangeWeight": { + "description": "Overall change in weight, added for localization" + }, + "goalTypeMeals": "Від їжі", + "@goalTypeMeals": { + "description": "added for localization of Class GoalType's filed meals" + }, + "indicatorRaw": "сирий", + "@indicatorRaw": { + "description": "added for localization of Class Indicator's field text" + }, + "indicatorAvg": "середнє", + "@indicatorAvg": { + "description": "added for localization of Class Indicator's field text" + }, + "onlyLogging": "Слідкуйте лише за калоріями", + "@onlyLogging": {}, + "onlyLoggingHelpText": "Поставте прапорець, якщо ви хочете лише реєструвати свої калорії та не хочете встановлювати детальний план харчування з певними стравами", + "@onlyLoggingHelpText": {}, + "goalEnergy": "Енергетична мета", + "@goalEnergy": {}, + "goalProtein": "Білкова мета", + "@goalProtein": {}, + "goalCarbohydrates": "Мета вуглеводів", + "@goalCarbohydrates": {}, + "goalFat": "Товстий гол", + "@goalFat": {}, + "today": "Сьогодні", + "@today": {}, + "loggedToday": "Зареєстровано сьогодні", + "@loggedToday": {}, + "aboutDonateTitle": "Зробіть пожертву", + "@aboutDonateTitle": {}, + "aboutDonateText": "Хоча проект є безкоштовним і завжди ним залишатиметься, запуск сервера - ні! Розвиток також вимагає значного часу і зусиль від волонтерів. Ваш внесок безпосередньо підтримує ці витрати, допомагаючи підтримувати надійність сервісу.", + "@aboutDonateText": {}, + "surplus": "надлишок", + "@surplus": { + "description": "Caloric surplus (either planned or unplanned)" + }, + "done": "Готово", + "@done": {}, + "noIngredientsDefined": "Інгредієнти ще не визначені", + "@noIngredientsDefined": {}, + "noMatchingExerciseFound": "Відповідних вправ не знайдено", + "@noMatchingExerciseFound": { + "description": "Message returned if no exercises match the searched string" + }, + "ingredientLogged": "Інгредієнт зареєстровано в щоденнику", + "@ingredientLogged": {}, + "selectMealToLog": "Виберіть страву, щоб записати в щоденник", + "@selectMealToLog": {}, + "aboutMastodonTitle": "Мастодонт", + "@aboutMastodonTitle": {}, + "settingsCacheTitle": "Кеш", + "@settingsCacheTitle": {}, + "settingsCacheDeletedSnackbar": "Кеш успішно очищено", + "@settingsCacheDeletedSnackbar": {}, + "themeMode": "Тематичний режим", + "@themeMode": {}, + "darkMode": "Завжди темний режим", + "@darkMode": {}, + "lightMode": "Завжди легкий режим", + "@lightMode": {}, + "systemMode": "Налаштування системи", + "@systemMode": {}, + "restDay": "День відпочинку", + "@restDay": {}, + "noRoutines": "У вас немає рутин", + "@noRoutines": {}, + "restTime": "Час відпочинку", + "@restTime": {}, + "sets": "Набори", + "@sets": { + "description": "The number of sets to be done for one exercise" + }, + "supersetNr": "Суперсет {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" + } + } + }, + "isRestDay": "Є День відпочинку", + "@isRestDay": {}, + "isRestDayHelp": "Будь ласка, зверніть увагу, що всі комплекси та вправи будуть видалені, коли ви позначите день як вихідний.", + "@isRestDayHelp": {}, + "routineDays": "Дні в рутині", + "@routineDays": {}, + "fitInWeek": "Вписується в тиждень", + "@fitInWeek": {}, + "fitInWeekHelp": "Якщо ввімкнено, дні повторюватимуться в тижневому циклі, інакше дні будуть йти послідовно незалежно від початку нового тижня.", + "@fitInWeekHelp": {}, + "addSuperset": "Додайте надмножину", + "@addSuperset": {}, + "setHasProgression": "Набір має прогресію", + "@setHasProgression": {}, + "simpleMode": "Простий режим", + "@simpleMode": {}, + "resultingRoutine": "Результативна рутина", + "@resultingRoutine": {}, + "simpleModeHelp": "Приховайте деякі розширені налаштування під час редагування вправ", + "@simpleModeHelp": {}, + "progressionRules": "Ця вправа має правила прогресу, і її не можна редагувати в мобільному додатку. Щоб відредагувати цю вправу, використовуйте веб-додаток.", + "@progressionRules": {}, + "min": "Мін", + "@min": {}, + "max": "Макс", + "@max": {}, + "newRoutine": "Нова рутина", + "@newRoutine": {}, + "needsLogsToAdvance": "Для просування потрібні журнали", + "@needsLogsToAdvance": {}, + "routines": "Рутини", + "@routines": {}, + "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" + } + } + }, + "needsLogsToAdvanceHelp": "Виберіть, якщо ви бажаєте, щоб програма перейшла до наступного запланованого дня, лише якщо ви зареєстрували тренування на цей день", + "@needsLogsToAdvanceHelp": {}, + "setHasProgressionWarning": "Зверніть увагу, що на даний момент неможливо змінити всі параметри набору в мобільному додатку або налаштувати автоматичний прогрес. Наразі використовуйте веб-додаток.", + "@setHasProgressionWarning": {}, + "setHasNoExercises": "У цьому комплексі ще немає вправ!", + "@setHasNoExercises": {}, + "errorCouldNotConnectToServerDetails": "Програмі не вдалося підключитися до сервера. Перевірте підключення до Інтернету або URL-адресу сервера та спробуйте ще раз. Якщо проблема не зникає, зверніться до адміністратора сервера.", + "@errorCouldNotConnectToServerDetails": {}, + "errorViewDetails": "Технічні деталі", + "@errorViewDetails": {}, + "errorCouldNotConnectToServer": "Не вдалося підключитися до сервера", + "@errorCouldNotConnectToServer": {}, + "errorInfoDescription2": "Ви можете продовжувати користуватися додатком, але деякі функції можуть не працювати.", + "@errorInfoDescription2": {}, + "errorInfoDescription": "Вибачте, але щось пішло не так. Ви можете допомогти нам виправити це, повідомивши про проблему на GitHub.", + "@errorInfoDescription": {}, + "copyToClipboard": "Копіювати в буфер обміну", + "@copyToClipboard": {}, + "aboutWhySupportTitle": "Відкритий код та безкоштовний у використанні ❤️", + "@aboutWhySupportTitle": {}, + "aboutJoinCommunityTitle": "Приєднуйтесь до спільноти", + "@aboutJoinCommunityTitle": {}, + "aboutDiscordTitle": "Дискорд", + "@aboutDiscordTitle": {}, + "aboutBugsListTitle": "Повідомити про проблему або запропонувати функцію", + "@aboutBugsListTitle": {}, + "aboutSourceListTitle": "Переглянути вихідний код", + "@aboutSourceListTitle": {}, + "aboutContributeTitle": "Зробити внесок", + "@aboutContributeTitle": {}, + "aboutContributeText": "Ми вітаємо будь-які види внесків. Незалежно від того, чи ви розробник, перекладач, чи просто захоплений фітнесом, ми цінуємо будь-яку підтримку!", + "@aboutContributeText": {}, + "aboutTranslationListTitle": "Перекласти програму", + "@aboutTranslationListTitle": {}, + "others": "Інші", + "@others": {}, + "apiToken": "Токен API", + "@apiToken": {}, + "useApiToken": "Використовувати токен API", + "@useApiToken": {}, + "useUsernameAndPassword": "Використовуйте ім'я користувача та пароль", + "@useUsernameAndPassword": {}, + "invalidApiToken": "Будь ласка, введіть дійсний ключ API", + "@invalidApiToken": { + "description": "Error message when the user enters an invalid API key" + }, + "apiTokenValidChars": "Ключ API може містити лише літери a-f, цифри 0-9 та мати довжину рівно 40 символів", + "@apiTokenValidChars": { + "description": "Error message when the user tries to input a API key with forbidden characters" + }, + "resistance_band": "Еспандер", + "@resistance_band": { + "description": "Generated entry for translation for server strings" + }, + "selectAvailablePlates": "Виберіть доступні тарілки", + "@selectAvailablePlates": {}, + "barWeight": "Вага штанги", + "@barWeight": {}, + "useColors": "Використовуйте кольори", + "@useColors": {}, + "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" + }, + "endDate": "Дата завершення", + "@endDate": {}, + "startDate": "Дата початку", + "@startDate": {}, + "applicationLogs": "Журнали програм", + "@applicationLogs": {} } diff --git a/lib/models/body_weight/weight_entry.dart b/lib/models/body_weight/weight_entry.dart index 7b41c625..827ccf7d 100644 --- a/lib/models/body_weight/weight_entry.dart +++ b/lib/models/body_weight/weight_entry.dart @@ -29,7 +29,7 @@ class WeightEntry { @JsonKey(required: true, fromJson: stringToNum, toJson: numToString) late num weight = 0; - @JsonKey(required: true, toJson: dateToYYYYMMDD) + @JsonKey(required: true) late DateTime date; WeightEntry({this.id, weight, DateTime? date}) { diff --git a/lib/models/body_weight/weight_entry.g.dart b/lib/models/body_weight/weight_entry.g.dart index c1c690d5..8295b62b 100644 --- a/lib/models/body_weight/weight_entry.g.dart +++ b/lib/models/body_weight/weight_entry.g.dart @@ -21,5 +21,5 @@ WeightEntry _$WeightEntryFromJson(Map json) { Map _$WeightEntryToJson(WeightEntry instance) => { 'id': instance.id, 'weight': numToString(instance.weight), - 'date': dateToYYYYMMDD(instance.date), + 'date': instance.date.toIso8601String(), }; diff --git a/lib/models/exercises/ingredient_api.dart b/lib/models/exercises/ingredient_api.dart deleted file mode 100644 index a1b011a7..00000000 --- a/lib/models/exercises/ingredient_api.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'ingredient_api.freezed.dart'; -part 'ingredient_api.g.dart'; - -/// Model for the search results returned from the /api/v2/ingredient/search endpoint -@freezed -sealed class IngredientApiSearchDetails with _$IngredientApiSearchDetails { - factory IngredientApiSearchDetails({ - required int id, - required String name, - required String? image, - // ignore: invalid_annotation_target - @JsonKey(name: 'image_thumbnail') required String? imageThumbnail, - }) = _IngredientApiSearchDetails; - - factory IngredientApiSearchDetails.fromJson(Map json) => - _$IngredientApiSearchDetailsFromJson(json); -} - -@freezed -sealed class IngredientApiSearchEntry with _$IngredientApiSearchEntry { - factory IngredientApiSearchEntry({ - required String value, - required IngredientApiSearchDetails data, - }) = _IngredientApiSearchEntry; - - factory IngredientApiSearchEntry.fromJson(Map json) => - _$IngredientApiSearchEntryFromJson(json); -} - -@freezed -sealed class IngredientApiSearch with _$IngredientApiSearch { - factory IngredientApiSearch({ - required List suggestions, - }) = _IngredientApiSearch; - - factory IngredientApiSearch.fromJson(Map json) => - _$IngredientApiSearchFromJson(json); -} diff --git a/lib/models/exercises/ingredient_api.freezed.dart b/lib/models/exercises/ingredient_api.freezed.dart deleted file mode 100644 index b9eba8fd..00000000 --- a/lib/models/exercises/ingredient_api.freezed.dart +++ /dev/null @@ -1,1018 +0,0 @@ -// 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 - -part of 'ingredient_api.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -// dart format off -T _$identity(T value) => value; - -/// @nodoc -mixin _$IngredientApiSearchDetails { - int get id; - String get name; - String? get image; // ignore: invalid_annotation_target - @JsonKey(name: 'image_thumbnail') - String? get imageThumbnail; - - /// Create a copy of IngredientApiSearchDetails - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @pragma('vm:prefer-inline') - $IngredientApiSearchDetailsCopyWith get copyWith => - _$IngredientApiSearchDetailsCopyWithImpl( - this as IngredientApiSearchDetails, _$identity); - - /// Serializes this IngredientApiSearchDetails to a JSON map. - Map toJson(); - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is IngredientApiSearchDetails && - (identical(other.id, id) || other.id == id) && - (identical(other.name, name) || other.name == name) && - (identical(other.image, image) || other.image == image) && - (identical(other.imageThumbnail, imageThumbnail) || - other.imageThumbnail == imageThumbnail)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash(runtimeType, id, name, image, imageThumbnail); - - @override - String toString() { - return 'IngredientApiSearchDetails(id: $id, name: $name, image: $image, imageThumbnail: $imageThumbnail)'; - } -} - -/// @nodoc -abstract mixin class $IngredientApiSearchDetailsCopyWith<$Res> { - factory $IngredientApiSearchDetailsCopyWith( - IngredientApiSearchDetails value, $Res Function(IngredientApiSearchDetails) _then) = - _$IngredientApiSearchDetailsCopyWithImpl; - @useResult - $Res call( - {int id, - String name, - String? image, - @JsonKey(name: 'image_thumbnail') String? imageThumbnail}); -} - -/// @nodoc -class _$IngredientApiSearchDetailsCopyWithImpl<$Res> - implements $IngredientApiSearchDetailsCopyWith<$Res> { - _$IngredientApiSearchDetailsCopyWithImpl(this._self, this._then); - - final IngredientApiSearchDetails _self; - final $Res Function(IngredientApiSearchDetails) _then; - - /// Create a copy of IngredientApiSearchDetails - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = null, - Object? name = null, - Object? image = freezed, - Object? imageThumbnail = freezed, - }) { - return _then(_self.copyWith( - id: null == id - ? _self.id - : id // ignore: cast_nullable_to_non_nullable - as int, - name: null == name - ? _self.name - : name // ignore: cast_nullable_to_non_nullable - as String, - image: freezed == image - ? _self.image - : image // ignore: cast_nullable_to_non_nullable - as String?, - imageThumbnail: freezed == imageThumbnail - ? _self.imageThumbnail - : imageThumbnail // ignore: cast_nullable_to_non_nullable - as String?, - )); - } -} - -/// Adds pattern-matching-related methods to [IngredientApiSearchDetails]. -extension IngredientApiSearchDetailsPatterns on IngredientApiSearchDetails { - /// 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(_IngredientApiSearchDetails value)? $default, { - required TResult orElse(), - }) { - final _that = this; - switch (_that) { - case _IngredientApiSearchDetails() 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(_IngredientApiSearchDetails value) $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchDetails(): - 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(_IngredientApiSearchDetails value)? $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchDetails() 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 name, String? image, - @JsonKey(name: 'image_thumbnail') String? imageThumbnail)? - $default, { - required TResult orElse(), - }) { - final _that = this; - switch (_that) { - case _IngredientApiSearchDetails() when $default != null: - return $default(_that.id, _that.name, _that.image, _that.imageThumbnail); - case _: - return orElse(); - } - } - - /// A `switch`-like method, using callbacks. - /// - /// As opposed to `map`, this offers destructuring. - /// It is equivalent to doing: - /// ```dart - /// switch (sealedClass) { - /// case Subclass(:final field): - /// return ...; - /// case Subclass2(:final field2): - /// return ...; - /// } - /// ``` - - @optionalTypeArgs - TResult when( - TResult Function(int id, String name, String? image, - @JsonKey(name: 'image_thumbnail') String? imageThumbnail) - $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchDetails(): - return $default(_that.id, _that.name, _that.image, _that.imageThumbnail); - } - } - - /// A variant of `when` that fallback to returning `null` - /// - /// It is equivalent to doing: - /// ```dart - /// switch (sealedClass) { - /// case Subclass(:final field): - /// return ...; - /// case _: - /// return null; - /// } - /// ``` - - @optionalTypeArgs - TResult? whenOrNull( - TResult? Function(int id, String name, String? image, - @JsonKey(name: 'image_thumbnail') String? imageThumbnail)? - $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchDetails() when $default != null: - return $default(_that.id, _that.name, _that.image, _that.imageThumbnail); - case _: - return null; - } - } -} - -/// @nodoc -@JsonSerializable() -class _IngredientApiSearchDetails implements IngredientApiSearchDetails { - _IngredientApiSearchDetails( - {required this.id, - required this.name, - required this.image, - @JsonKey(name: 'image_thumbnail') required this.imageThumbnail}); - factory _IngredientApiSearchDetails.fromJson(Map json) => - _$IngredientApiSearchDetailsFromJson(json); - - @override - final int id; - @override - final String name; - @override - final String? image; -// ignore: invalid_annotation_target - @override - @JsonKey(name: 'image_thumbnail') - final String? imageThumbnail; - - /// Create a copy of IngredientApiSearchDetails - /// with the given fields replaced by the non-null parameter values. - @override - @JsonKey(includeFromJson: false, includeToJson: false) - @pragma('vm:prefer-inline') - _$IngredientApiSearchDetailsCopyWith<_IngredientApiSearchDetails> get copyWith => - __$IngredientApiSearchDetailsCopyWithImpl<_IngredientApiSearchDetails>(this, _$identity); - - @override - Map toJson() { - return _$IngredientApiSearchDetailsToJson( - this, - ); - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _IngredientApiSearchDetails && - (identical(other.id, id) || other.id == id) && - (identical(other.name, name) || other.name == name) && - (identical(other.image, image) || other.image == image) && - (identical(other.imageThumbnail, imageThumbnail) || - other.imageThumbnail == imageThumbnail)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash(runtimeType, id, name, image, imageThumbnail); - - @override - String toString() { - return 'IngredientApiSearchDetails(id: $id, name: $name, image: $image, imageThumbnail: $imageThumbnail)'; - } -} - -/// @nodoc -abstract mixin class _$IngredientApiSearchDetailsCopyWith<$Res> - implements $IngredientApiSearchDetailsCopyWith<$Res> { - factory _$IngredientApiSearchDetailsCopyWith( - _IngredientApiSearchDetails value, $Res Function(_IngredientApiSearchDetails) _then) = - __$IngredientApiSearchDetailsCopyWithImpl; - @override - @useResult - $Res call( - {int id, - String name, - String? image, - @JsonKey(name: 'image_thumbnail') String? imageThumbnail}); -} - -/// @nodoc -class __$IngredientApiSearchDetailsCopyWithImpl<$Res> - implements _$IngredientApiSearchDetailsCopyWith<$Res> { - __$IngredientApiSearchDetailsCopyWithImpl(this._self, this._then); - - final _IngredientApiSearchDetails _self; - final $Res Function(_IngredientApiSearchDetails) _then; - - /// Create a copy of IngredientApiSearchDetails - /// with the given fields replaced by the non-null parameter values. - @override - @pragma('vm:prefer-inline') - $Res call({ - Object? id = null, - Object? name = null, - Object? image = freezed, - Object? imageThumbnail = freezed, - }) { - return _then(_IngredientApiSearchDetails( - id: null == id - ? _self.id - : id // ignore: cast_nullable_to_non_nullable - as int, - name: null == name - ? _self.name - : name // ignore: cast_nullable_to_non_nullable - as String, - image: freezed == image - ? _self.image - : image // ignore: cast_nullable_to_non_nullable - as String?, - imageThumbnail: freezed == imageThumbnail - ? _self.imageThumbnail - : imageThumbnail // ignore: cast_nullable_to_non_nullable - as String?, - )); - } -} - -/// @nodoc -mixin _$IngredientApiSearchEntry { - String get value; - IngredientApiSearchDetails get data; - - /// Create a copy of IngredientApiSearchEntry - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @pragma('vm:prefer-inline') - $IngredientApiSearchEntryCopyWith get copyWith => - _$IngredientApiSearchEntryCopyWithImpl( - this as IngredientApiSearchEntry, _$identity); - - /// Serializes this IngredientApiSearchEntry to a JSON map. - Map toJson(); - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is IngredientApiSearchEntry && - (identical(other.value, value) || other.value == value) && - (identical(other.data, data) || other.data == data)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash(runtimeType, value, data); - - @override - String toString() { - return 'IngredientApiSearchEntry(value: $value, data: $data)'; - } -} - -/// @nodoc -abstract mixin class $IngredientApiSearchEntryCopyWith<$Res> { - factory $IngredientApiSearchEntryCopyWith( - IngredientApiSearchEntry value, $Res Function(IngredientApiSearchEntry) _then) = - _$IngredientApiSearchEntryCopyWithImpl; - @useResult - $Res call({String value, IngredientApiSearchDetails data}); - - $IngredientApiSearchDetailsCopyWith<$Res> get data; -} - -/// @nodoc -class _$IngredientApiSearchEntryCopyWithImpl<$Res> - implements $IngredientApiSearchEntryCopyWith<$Res> { - _$IngredientApiSearchEntryCopyWithImpl(this._self, this._then); - - final IngredientApiSearchEntry _self; - final $Res Function(IngredientApiSearchEntry) _then; - - /// Create a copy of IngredientApiSearchEntry - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? value = null, - Object? data = null, - }) { - return _then(_self.copyWith( - value: null == value - ? _self.value - : value // ignore: cast_nullable_to_non_nullable - as String, - data: null == data - ? _self.data - : data // ignore: cast_nullable_to_non_nullable - as IngredientApiSearchDetails, - )); - } - - /// Create a copy of IngredientApiSearchEntry - /// with the given fields replaced by the non-null parameter values. - @override - @pragma('vm:prefer-inline') - $IngredientApiSearchDetailsCopyWith<$Res> get data { - return $IngredientApiSearchDetailsCopyWith<$Res>(_self.data, (value) { - return _then(_self.copyWith(data: value)); - }); - } -} - -/// Adds pattern-matching-related methods to [IngredientApiSearchEntry]. -extension IngredientApiSearchEntryPatterns on IngredientApiSearchEntry { - /// 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(_IngredientApiSearchEntry value)? $default, { - required TResult orElse(), - }) { - final _that = this; - switch (_that) { - case _IngredientApiSearchEntry() 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(_IngredientApiSearchEntry value) $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchEntry(): - 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(_IngredientApiSearchEntry value)? $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchEntry() 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(String value, IngredientApiSearchDetails data)? $default, { - required TResult orElse(), - }) { - final _that = this; - switch (_that) { - case _IngredientApiSearchEntry() when $default != null: - return $default(_that.value, _that.data); - case _: - return orElse(); - } - } - - /// A `switch`-like method, using callbacks. - /// - /// As opposed to `map`, this offers destructuring. - /// It is equivalent to doing: - /// ```dart - /// switch (sealedClass) { - /// case Subclass(:final field): - /// return ...; - /// case Subclass2(:final field2): - /// return ...; - /// } - /// ``` - - @optionalTypeArgs - TResult when( - TResult Function(String value, IngredientApiSearchDetails data) $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchEntry(): - return $default(_that.value, _that.data); - } - } - - /// A variant of `when` that fallback to returning `null` - /// - /// It is equivalent to doing: - /// ```dart - /// switch (sealedClass) { - /// case Subclass(:final field): - /// return ...; - /// case _: - /// return null; - /// } - /// ``` - - @optionalTypeArgs - TResult? whenOrNull( - TResult? Function(String value, IngredientApiSearchDetails data)? $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearchEntry() when $default != null: - return $default(_that.value, _that.data); - case _: - return null; - } - } -} - -/// @nodoc -@JsonSerializable() -class _IngredientApiSearchEntry implements IngredientApiSearchEntry { - _IngredientApiSearchEntry({required this.value, required this.data}); - factory _IngredientApiSearchEntry.fromJson(Map json) => - _$IngredientApiSearchEntryFromJson(json); - - @override - final String value; - @override - final IngredientApiSearchDetails data; - - /// Create a copy of IngredientApiSearchEntry - /// with the given fields replaced by the non-null parameter values. - @override - @JsonKey(includeFromJson: false, includeToJson: false) - @pragma('vm:prefer-inline') - _$IngredientApiSearchEntryCopyWith<_IngredientApiSearchEntry> get copyWith => - __$IngredientApiSearchEntryCopyWithImpl<_IngredientApiSearchEntry>(this, _$identity); - - @override - Map toJson() { - return _$IngredientApiSearchEntryToJson( - this, - ); - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _IngredientApiSearchEntry && - (identical(other.value, value) || other.value == value) && - (identical(other.data, data) || other.data == data)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash(runtimeType, value, data); - - @override - String toString() { - return 'IngredientApiSearchEntry(value: $value, data: $data)'; - } -} - -/// @nodoc -abstract mixin class _$IngredientApiSearchEntryCopyWith<$Res> - implements $IngredientApiSearchEntryCopyWith<$Res> { - factory _$IngredientApiSearchEntryCopyWith( - _IngredientApiSearchEntry value, $Res Function(_IngredientApiSearchEntry) _then) = - __$IngredientApiSearchEntryCopyWithImpl; - @override - @useResult - $Res call({String value, IngredientApiSearchDetails data}); - - @override - $IngredientApiSearchDetailsCopyWith<$Res> get data; -} - -/// @nodoc -class __$IngredientApiSearchEntryCopyWithImpl<$Res> - implements _$IngredientApiSearchEntryCopyWith<$Res> { - __$IngredientApiSearchEntryCopyWithImpl(this._self, this._then); - - final _IngredientApiSearchEntry _self; - final $Res Function(_IngredientApiSearchEntry) _then; - - /// Create a copy of IngredientApiSearchEntry - /// with the given fields replaced by the non-null parameter values. - @override - @pragma('vm:prefer-inline') - $Res call({ - Object? value = null, - Object? data = null, - }) { - return _then(_IngredientApiSearchEntry( - value: null == value - ? _self.value - : value // ignore: cast_nullable_to_non_nullable - as String, - data: null == data - ? _self.data - : data // ignore: cast_nullable_to_non_nullable - as IngredientApiSearchDetails, - )); - } - - /// Create a copy of IngredientApiSearchEntry - /// with the given fields replaced by the non-null parameter values. - @override - @pragma('vm:prefer-inline') - $IngredientApiSearchDetailsCopyWith<$Res> get data { - return $IngredientApiSearchDetailsCopyWith<$Res>(_self.data, (value) { - return _then(_self.copyWith(data: value)); - }); - } -} - -/// @nodoc -mixin _$IngredientApiSearch { - List get suggestions; - - /// Create a copy of IngredientApiSearch - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) - @pragma('vm:prefer-inline') - $IngredientApiSearchCopyWith get copyWith => - _$IngredientApiSearchCopyWithImpl( - this as IngredientApiSearch, _$identity); - - /// Serializes this IngredientApiSearch to a JSON map. - Map toJson(); - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is IngredientApiSearch && - const DeepCollectionEquality().equals(other.suggestions, suggestions)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(suggestions)); - - @override - String toString() { - return 'IngredientApiSearch(suggestions: $suggestions)'; - } -} - -/// @nodoc -abstract mixin class $IngredientApiSearchCopyWith<$Res> { - factory $IngredientApiSearchCopyWith( - IngredientApiSearch value, $Res Function(IngredientApiSearch) _then) = - _$IngredientApiSearchCopyWithImpl; - @useResult - $Res call({List suggestions}); -} - -/// @nodoc -class _$IngredientApiSearchCopyWithImpl<$Res> implements $IngredientApiSearchCopyWith<$Res> { - _$IngredientApiSearchCopyWithImpl(this._self, this._then); - - final IngredientApiSearch _self; - final $Res Function(IngredientApiSearch) _then; - - /// Create a copy of IngredientApiSearch - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? suggestions = null, - }) { - return _then(_self.copyWith( - suggestions: null == suggestions - ? _self.suggestions - : suggestions // ignore: cast_nullable_to_non_nullable - as List, - )); - } -} - -/// Adds pattern-matching-related methods to [IngredientApiSearch]. -extension IngredientApiSearchPatterns on IngredientApiSearch { - /// 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(_IngredientApiSearch value)? $default, { - required TResult orElse(), - }) { - final _that = this; - switch (_that) { - case _IngredientApiSearch() 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(_IngredientApiSearch value) $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearch(): - 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(_IngredientApiSearch value)? $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearch() 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(List suggestions)? $default, { - required TResult orElse(), - }) { - final _that = this; - switch (_that) { - case _IngredientApiSearch() when $default != null: - return $default(_that.suggestions); - case _: - return orElse(); - } - } - - /// A `switch`-like method, using callbacks. - /// - /// As opposed to `map`, this offers destructuring. - /// It is equivalent to doing: - /// ```dart - /// switch (sealedClass) { - /// case Subclass(:final field): - /// return ...; - /// case Subclass2(:final field2): - /// return ...; - /// } - /// ``` - - @optionalTypeArgs - TResult when( - TResult Function(List suggestions) $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearch(): - return $default(_that.suggestions); - } - } - - /// A variant of `when` that fallback to returning `null` - /// - /// It is equivalent to doing: - /// ```dart - /// switch (sealedClass) { - /// case Subclass(:final field): - /// return ...; - /// case _: - /// return null; - /// } - /// ``` - - @optionalTypeArgs - TResult? whenOrNull( - TResult? Function(List suggestions)? $default, - ) { - final _that = this; - switch (_that) { - case _IngredientApiSearch() when $default != null: - return $default(_that.suggestions); - case _: - return null; - } - } -} - -/// @nodoc -@JsonSerializable() -class _IngredientApiSearch implements IngredientApiSearch { - _IngredientApiSearch({required final List suggestions}) - : _suggestions = suggestions; - factory _IngredientApiSearch.fromJson(Map json) => - _$IngredientApiSearchFromJson(json); - - final List _suggestions; - @override - List get suggestions { - if (_suggestions is EqualUnmodifiableListView) return _suggestions; - // ignore: implicit_dynamic_type - return EqualUnmodifiableListView(_suggestions); - } - - /// Create a copy of IngredientApiSearch - /// with the given fields replaced by the non-null parameter values. - @override - @JsonKey(includeFromJson: false, includeToJson: false) - @pragma('vm:prefer-inline') - _$IngredientApiSearchCopyWith<_IngredientApiSearch> get copyWith => - __$IngredientApiSearchCopyWithImpl<_IngredientApiSearch>(this, _$identity); - - @override - Map toJson() { - return _$IngredientApiSearchToJson( - this, - ); - } - - @override - bool operator ==(Object other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _IngredientApiSearch && - const DeepCollectionEquality().equals(other._suggestions, _suggestions)); - } - - @JsonKey(includeFromJson: false, includeToJson: false) - @override - int get hashCode => Object.hash(runtimeType, const DeepCollectionEquality().hash(_suggestions)); - - @override - String toString() { - return 'IngredientApiSearch(suggestions: $suggestions)'; - } -} - -/// @nodoc -abstract mixin class _$IngredientApiSearchCopyWith<$Res> - implements $IngredientApiSearchCopyWith<$Res> { - factory _$IngredientApiSearchCopyWith( - _IngredientApiSearch value, $Res Function(_IngredientApiSearch) _then) = - __$IngredientApiSearchCopyWithImpl; - @override - @useResult - $Res call({List suggestions}); -} - -/// @nodoc -class __$IngredientApiSearchCopyWithImpl<$Res> implements _$IngredientApiSearchCopyWith<$Res> { - __$IngredientApiSearchCopyWithImpl(this._self, this._then); - - final _IngredientApiSearch _self; - final $Res Function(_IngredientApiSearch) _then; - - /// Create a copy of IngredientApiSearch - /// with the given fields replaced by the non-null parameter values. - @override - @pragma('vm:prefer-inline') - $Res call({ - Object? suggestions = null, - }) { - return _then(_IngredientApiSearch( - suggestions: null == suggestions - ? _self._suggestions - : suggestions // ignore: cast_nullable_to_non_nullable - as List, - )); - } -} - -// dart format on diff --git a/lib/models/exercises/ingredient_api.g.dart b/lib/models/exercises/ingredient_api.g.dart deleted file mode 100644 index e9f033ed..00000000 --- a/lib/models/exercises/ingredient_api.g.dart +++ /dev/null @@ -1,47 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'ingredient_api.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -_IngredientApiSearchDetails _$IngredientApiSearchDetailsFromJson(Map json) => - _IngredientApiSearchDetails( - id: (json['id'] as num).toInt(), - name: json['name'] as String, - image: json['image'] as String?, - imageThumbnail: json['image_thumbnail'] as String?, - ); - -Map _$IngredientApiSearchDetailsToJson(_IngredientApiSearchDetails instance) => - { - 'id': instance.id, - 'name': instance.name, - 'image': instance.image, - 'image_thumbnail': instance.imageThumbnail, - }; - -_IngredientApiSearchEntry _$IngredientApiSearchEntryFromJson(Map json) => - _IngredientApiSearchEntry( - value: json['value'] as String, - data: IngredientApiSearchDetails.fromJson(json['data'] as Map), - ); - -Map _$IngredientApiSearchEntryToJson(_IngredientApiSearchEntry instance) => - { - 'value': instance.value, - 'data': instance.data, - }; - -_IngredientApiSearch _$IngredientApiSearchFromJson(Map json) => - _IngredientApiSearch( - suggestions: (json['suggestions'] as List) - .map((e) => IngredientApiSearchEntry.fromJson(e as Map)) - .toList(), - ); - -Map _$IngredientApiSearchToJson(_IngredientApiSearch instance) => - { - 'suggestions': instance.suggestions, - }; diff --git a/lib/models/nutrition/ingredient.dart b/lib/models/nutrition/ingredient.dart index eb3bcf9a..69a44885 100644 --- a/lib/models/nutrition/ingredient.dart +++ b/lib/models/nutrition/ingredient.dart @@ -18,6 +18,7 @@ import 'package:json_annotation/json_annotation.dart'; import 'package:wger/helpers/json.dart'; import 'package:wger/models/nutrition/ingredient_image.dart'; +import 'package:wger/models/nutrition/ingredient_image_thumbnails.dart'; import 'package:wger/models/nutrition/nutritional_values.dart'; part 'ingredient.g.dart'; @@ -90,6 +91,8 @@ class Ingredient { IngredientImage? image; + IngredientImageThumbnails? thumbnails; + Ingredient({ required this.remoteId, required this.sourceName, @@ -108,6 +111,7 @@ class Ingredient { required this.fiber, required this.sodium, this.image, + this.thumbnails, }); // Boilerplate diff --git a/lib/models/nutrition/ingredient.g.dart b/lib/models/nutrition/ingredient.g.dart index 214b86df..93678ed4 100644 --- a/lib/models/nutrition/ingredient.g.dart +++ b/lib/models/nutrition/ingredient.g.dart @@ -48,6 +48,9 @@ Ingredient _$IngredientFromJson(Map json) { image: json['image'] == null ? null : IngredientImage.fromJson(json['image'] as Map), + thumbnails: json['thumbnails'] == null + ? null + : IngredientImageThumbnails.fromJson(json['thumbnails'] as Map), ); } @@ -69,4 +72,5 @@ Map _$IngredientToJson(Ingredient instance) => json) { id: (json['id'] as num).toInt(), uuid: json['uuid'] as String, ingredientId: (json['ingredient_id'] as num).toInt(), - image: json['image'] as String, + url: json['image'] as String, size: (json['size'] as num).toInt(), licenseId: (json['license'] as num).toInt(), author: json['license_author'] as String, @@ -42,7 +42,7 @@ Map _$IngredientImageToJson(IngredientImage instance) => . + * Copyright (C) 2020, 2021 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. + * + * This program 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 . + */ +import 'package:json_annotation/json_annotation.dart'; + +part 'ingredient_image_thumbnails.g.dart'; + +@JsonSerializable() +class IngredientImageThumbnails { + @JsonKey(required: true) + final String small; + + @JsonKey(required: true, name: 'small_cropped') + final String smallCropped; + + @JsonKey(required: true) + final String medium; + + @JsonKey(required: true, name: 'medium_cropped') + final String mediumCropped; + + @JsonKey(required: true) + final String large; + + @JsonKey(required: true, name: 'large_cropped') + final String largeCropped; + + const IngredientImageThumbnails({ + required this.small, + required this.smallCropped, + required this.medium, + required this.mediumCropped, + required this.large, + required this.largeCropped, + }); + + // Boilerplate + factory IngredientImageThumbnails.fromJson(Map json) => + _$IngredientImageThumbnailsFromJson(json); + + Map toJson() => _$IngredientImageThumbnailsToJson(this); +} diff --git a/lib/models/nutrition/ingredient_image_thumbnails.g.dart b/lib/models/nutrition/ingredient_image_thumbnails.g.dart new file mode 100644 index 00000000..e58b8988 --- /dev/null +++ b/lib/models/nutrition/ingredient_image_thumbnails.g.dart @@ -0,0 +1,39 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'ingredient_image_thumbnails.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +IngredientImageThumbnails _$IngredientImageThumbnailsFromJson(Map json) { + $checkKeys( + json, + requiredKeys: const [ + 'small', + 'small_cropped', + 'medium', + 'medium_cropped', + 'large', + 'large_cropped' + ], + ); + return IngredientImageThumbnails( + small: json['small'] as String, + smallCropped: json['small_cropped'] as String, + medium: json['medium'] as String, + mediumCropped: json['medium_cropped'] as String, + large: json['large'] as String, + largeCropped: json['large_cropped'] as String, + ); +} + +Map _$IngredientImageThumbnailsToJson(IngredientImageThumbnails instance) => + { + 'small': instance.small, + 'small_cropped': instance.smallCropped, + 'medium': instance.medium, + 'medium_cropped': instance.mediumCropped, + 'large': instance.large, + 'large_cropped': instance.largeCropped, + }; diff --git a/lib/models/nutrition/nutritional_plan.dart b/lib/models/nutrition/nutritional_plan.dart index 3605e220..65ac4206 100644 --- a/lib/models/nutrition/nutritional_plan.dart +++ b/lib/models/nutrition/nutritional_plan.dart @@ -19,6 +19,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/widgets.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'package:logging/logging.dart'; import 'package:wger/helpers/consts.dart'; import 'package:wger/helpers/json.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; @@ -32,6 +33,8 @@ part 'nutritional_plan.g.dart'; @JsonSerializable(explicitToJson: true) class NutritionalPlan { + final _logger = Logger('NutritionalPlan Model'); + @JsonKey(required: true) int? id; @@ -41,6 +44,12 @@ class NutritionalPlan { @JsonKey(required: true, name: 'creation_date', toJson: dateToUtcIso8601) late DateTime creationDate; + @JsonKey(required: true, name: 'start', toJson: dateToYYYYMMDD) + late DateTime startDate; + + @JsonKey(required: true, name: 'end', toJson: dateToYYYYMMDD) + late DateTime? endDate; + @JsonKey(required: true, name: 'only_logging') late bool onlyLogging; @@ -68,7 +77,9 @@ class NutritionalPlan { NutritionalPlan({ this.id, required this.description, - required this.creationDate, + DateTime? creationDate, + required this.startDate, + this.endDate, this.onlyLogging = false, this.goalEnergy, this.goalProtein, @@ -77,13 +88,23 @@ class NutritionalPlan { this.goalFiber, List? meals, List? diaryEntries, - }) { + }) : creationDate = creationDate ?? DateTime.now() { this.meals = meals ?? []; this.diaryEntries = diaryEntries ?? []; + + if (endDate != null && endDate!.isBefore(startDate)) { + _logger.warning( + 'The end date of a nutritional plan is before the start. Setting to null! ' + 'PlanId: $id, startDate: $startDate, endDate: $endDate', + ); + endDate = null; + } } NutritionalPlan.empty() { creationDate = DateTime.now(); + startDate = DateTime.now(); + endDate = null; description = ''; onlyLogging = false; goalEnergy = null; diff --git a/lib/models/nutrition/nutritional_plan.g.dart b/lib/models/nutrition/nutritional_plan.g.dart index 731befbf..742d3435 100644 --- a/lib/models/nutrition/nutritional_plan.g.dart +++ b/lib/models/nutrition/nutritional_plan.g.dart @@ -13,6 +13,8 @@ NutritionalPlan _$NutritionalPlanFromJson(Map json) { 'id', 'description', 'creation_date', + 'start', + 'end', 'only_logging', 'goal_energy', 'goal_protein', @@ -24,7 +26,10 @@ NutritionalPlan _$NutritionalPlanFromJson(Map json) { return NutritionalPlan( id: (json['id'] as num?)?.toInt(), description: json['description'] as String, - creationDate: DateTime.parse(json['creation_date'] as String), + creationDate: + json['creation_date'] == null ? null : DateTime.parse(json['creation_date'] as String), + startDate: DateTime.parse(json['start'] as String), + endDate: json['end'] == null ? null : DateTime.parse(json['end'] as String), onlyLogging: json['only_logging'] as bool? ?? false, goalEnergy: json['goal_energy'] as num?, goalProtein: json['goal_protein'] as num?, @@ -38,6 +43,8 @@ Map _$NutritionalPlanToJson(NutritionalPlan instance) => + plan.startDate.isBefore(now) && (plan.endDate == null || plan.endDate!.isAfter(now))) + .toList() + .sorted((a, b) => b.creationDate.compareTo(a.creationDate)) + .firstOrNull; } NutritionalPlan findById(int id) { @@ -355,7 +360,7 @@ class NutritionPlansProvider with ChangeNotifier { } /// Searches for an ingredient - Future> searchIngredient( + Future> searchIngredient( String name, { String languageCode = 'en', bool searchEnglish = false, @@ -372,31 +377,35 @@ class NutritionPlansProvider with ChangeNotifier { // Send the request final response = await baseProvider.fetch( baseProvider.makeUrl( - _ingredientSearchPath, - query: {'term': name, 'language': languages.join(',')}, + _ingredientInfoPath, + query: { + 'name__search': name, + 'language__code': languages.join(','), + 'limit': API_RESULTS_PAGE_SIZE, + }, ), ); - // Process the response - return IngredientApiSearch.fromJson(response).suggestions; + return (response['results'] as List) + .map((ingredientData) => Ingredient.fromJson(ingredientData as Map)) + .toList(); } - /// Searches for an ingredient with code - Future searchIngredientWithCode(String code) async { - if (code.isEmpty) { + /// Searches for an ingredient with bar code + Future searchIngredientWithBarcode(String barcode) async { + if (barcode.isEmpty) { return null; } // Send the request final data = await baseProvider.fetch( - baseProvider.makeUrl(_ingredientInfoPath, query: {'code': code}), + baseProvider.makeUrl(_ingredientInfoPath, query: {'code': barcode}), ); if (data['count'] == 0) { return null; } // TODO we should probably add it to ingredient cache. - // TODO: we could also use the ingredient cache for code searches return Ingredient.fromJson(data['results'][0]); } diff --git a/lib/screens/weight_screen.dart b/lib/screens/weight_screen.dart index 3110c3a5..6c91935c 100644 --- a/lib/screens/weight_screen.dart +++ b/lib/screens/weight_screen.dart @@ -32,8 +32,6 @@ class WeightScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final lastWeightEntry = context.read().getNewestEntry(); - return Scaffold( appBar: EmptyAppBar(AppLocalizations.of(context).weight), floatingActionButton: FloatingActionButton( @@ -44,7 +42,7 @@ class WeightScreen extends StatelessWidget { FormScreen.routeName, arguments: FormScreenArguments( AppLocalizations.of(context).newEntry, - WeightForm(lastWeightEntry?.copyWith(id: null, date: DateTime.now())), + WeightForm(), ), ); }, diff --git a/lib/widgets/measurements/charts.dart b/lib/widgets/measurements/charts.dart index 704c3da6..076fa493 100644 --- a/lib/widgets/measurements/charts.dart +++ b/lib/widgets/measurements/charts.dart @@ -82,12 +82,17 @@ class _MeasurementChartWidgetFlState extends State { NumberFormat.decimalPattern(Localizations.localeOf(context).toString()); return touchedSpots.map((touchedSpot) { + final msSinceEpoch = touchedSpot.x.toInt(); final DateTime date = DateTime.fromMillisecondsSinceEpoch(touchedSpot.x.toInt()); final dateStr = DateFormat.Md(Localizations.localeOf(context).languageCode).format(date); + // Check if this is an interpolated point (milliseconds ending with 123) + final bool isInterpolated = msSinceEpoch % 1000 == INTERPOLATION_MARKER; + final String interpolatedMarker = isInterpolated ? ' (interpolated)' : ''; + return LineTooltipItem( - '$dateStr: ${numberFormat.format(touchedSpot.y)} ${widget._unit}', + '$dateStr: ${numberFormat.format(touchedSpot.y)} ${widget._unit}$interpolatedMarker', TextStyle(color: touchedSpot.bar.color), ); }).toList(); diff --git a/lib/widgets/measurements/entries.dart b/lib/widgets/measurements/entries.dart index 8fe2e3a8..78460004 100644 --- a/lib/widgets/measurements/entries.dart +++ b/lib/widgets/measurements/entries.dart @@ -36,7 +36,7 @@ class EntriesList extends StatelessWidget { @override Widget build(BuildContext context) { - final plan = Provider.of(context, listen: false).currentPlan; + final plans = Provider.of(context, listen: false).items; final numberFormat = NumberFormat.decimalPattern(Localizations.localeOf(context).toString()); final provider = Provider.of(context, listen: false); @@ -49,7 +49,7 @@ class EntriesList extends StatelessWidget { _category.name, entriesAll, entries7dAvg, - plan, + plans, _category.unit, context, ), diff --git a/lib/widgets/measurements/helpers.dart b/lib/widgets/measurements/helpers.dart index 3881b3a7..4a6f05af 100644 --- a/lib/widgets/measurements/helpers.dart +++ b/lib/widgets/measurements/helpers.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:wger/helpers/measurements.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/models/nutrition/nutritional_plan.dart'; import 'package:wger/widgets/measurements/charts.dart'; @@ -19,7 +20,16 @@ List getOverviewWidgets( Container( padding: const EdgeInsets.all(15), height: 220, - child: MeasurementChartWidgetFl(raw, unit, avgs: avg), + child: raw.isEmpty + ? Center( + child: Text( + 'No data available', + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.secondary.withValues(alpha: 0.7), + ), + ), + ) + : MeasurementChartWidgetFl(raw, unit, avgs: avg), ), if (avg.isNotEmpty) MeasurementOverallChangeWidget(avg.first, avg.last, unit), const SizedBox(height: 8), @@ -30,13 +40,11 @@ List getOverviewWidgetsSeries( String name, List entriesAll, List entries7dAvg, - NutritionalPlan? plan, + List plans, String unit, BuildContext context, ) { final monthAgo = DateTime.now().subtract(const Duration(days: 30)); - final showPlan = plan != null && entriesAll.any((e) => e.date.isAfter(plan.creationDate)); - return [ ...getOverviewWidgets( AppLocalizations.of(context).chartAllTimeTitle(name), @@ -45,31 +53,25 @@ List getOverviewWidgetsSeries( unit, context, ), - if (showPlan) + // Show overview widgets for each plan in plans + for (final plan in plans) ...getOverviewWidgets( AppLocalizations.of(context).chartDuringPlanTitle(name, plan.description), - entriesAll.where((e) => e.date.isAfter(plan.creationDate)).toList(), - entries7dAvg.where((e) => e.date.isAfter(plan.creationDate)).toList(), + entriesAll.whereDateWithInterpolation(plan.startDate, plan.endDate), + entries7dAvg.whereDateWithInterpolation(plan.startDate, plan.endDate), unit, context, ), // if all time is significantly longer than 30 days (let's say > 75 days) - // and any plan was also > 75 days, // then let's show a separate chart just focusing on the last 30 days, // if there is data for it. if (entriesAll.isNotEmpty && entriesAll.first.date.isBefore(entriesAll.last.date.subtract(const Duration(days: 75))) && - (plan == null || - (showPlan && - entriesAll - .firstWhere((e) => e.date.isAfter(plan.creationDate)) - .date - .isBefore(entriesAll.last.date.subtract(const Duration(days: 30))))) && entriesAll.any((e) => e.date.isAfter(monthAgo))) ...getOverviewWidgets( AppLocalizations.of(context).chart30DaysTitle(name), - entriesAll.where((e) => e.date.isAfter(monthAgo)).toList(), - entries7dAvg.where((e) => e.date.isAfter(monthAgo)).toList(), + entriesAll.whereDateWithInterpolation(monthAgo, null), + entries7dAvg.whereDateWithInterpolation(monthAgo, null), unit, context, ), @@ -92,7 +94,7 @@ List getOverviewWidgetsSeries( ]; } -// return the raw and average meaasurements for a "sensible range" +// return the raw and average measurements for a "sensible range" // a sensible range is something relatively recent, which is most relevant // for the user to track their progress, but a range should always include // at least 5 points, and if not we chose a bigger one. @@ -104,16 +106,16 @@ List getOverviewWidgetsSeries( final twoMonthsAgo = DateTime.now().subtract(const Duration(days: 61)); final fourMonthsAgo = DateTime.now().subtract(const Duration(days: 122)); - if (entriesAll.where((e) => e.date.isAfter(twoMonthsAgo)).length > 4) { + if (entriesAll.whereDate(twoMonthsAgo, null).length > 4) { return ( - entriesAll.where((e) => e.date.isAfter(twoMonthsAgo)).toList(), - entries7dAvg.where((e) => e.date.isAfter(twoMonthsAgo)).toList(), + entriesAll.whereDate(twoMonthsAgo, null), + entries7dAvg.whereDate(twoMonthsAgo, null), ); } - if (entriesAll.where((e) => e.date.isAfter(fourMonthsAgo)).length > 4) { + if (entriesAll.whereDate(fourMonthsAgo, null).length > 4) { return ( - entriesAll.where((e) => e.date.isAfter(fourMonthsAgo)).toList(), - entries7dAvg.where((e) => e.date.isAfter(fourMonthsAgo)).toList(), + entriesAll.whereDate(fourMonthsAgo, null), + entries7dAvg.whereDate(fourMonthsAgo, null), ); } return (entriesAll, entries7dAvg); diff --git a/lib/widgets/nutrition/forms.dart b/lib/widgets/nutrition/forms.dart index f3bda793..ad31917e 100644 --- a/lib/widgets/nutrition/forms.dart +++ b/lib/widgets/nutrition/forms.dart @@ -252,8 +252,8 @@ class IngredientFormState extends State { barcode: widget.barcode, test: widget.test, selectIngredient: selectIngredient, - unSelectIngredient: unSelectIngredient, - updateSearchQuery: updateSearchQuery, + onDeselectIngredient: unSelectIngredient, + onUpdateSearchQuery: updateSearchQuery, ), Row( children: [ @@ -500,20 +500,13 @@ class PlanForm extends StatefulWidget { class _PlanFormState extends State { final _form = GlobalKey(); - bool _onlyLogging = true; GoalType _goalType = GoalType.meals; - - final _descriptionController = TextEditingController(); - final TextEditingController colorController = TextEditingController(); - GoalType? selectedGoal; @override void initState() { super.initState(); - _onlyLogging = widget._plan.onlyLogging; - _descriptionController.text = widget._plan.description; if (widget._plan.hasAnyAdvancedGoals) { _goalType = GoalType.advanced; } else if (widget._plan.hasAnyGoals) { @@ -523,15 +516,10 @@ class _PlanFormState extends State { } } - @override - void dispose() { - _descriptionController.dispose(); - colorController.dispose(); - super.dispose(); - } - @override Widget build(BuildContext context) { + final dateFormat = DateFormat.yMd(Localizations.localeOf(context).languageCode); + return Form( key: _form, child: ListView( @@ -542,20 +530,116 @@ class _PlanFormState extends State { decoration: InputDecoration( labelText: AppLocalizations.of(context).description, ), - controller: _descriptionController, + controller: TextEditingController( + text: widget._plan.description, + ), onSaved: (newValue) { widget._plan.description = newValue!; }, ), + // Start Date + TextFormField( + key: const Key('field-start-date'), + decoration: InputDecoration( + labelText: AppLocalizations.of(context).startDate, + suffixIcon: const Icon( + Icons.calendar_today, + key: Key('calendarIcon'), + ), + ), + controller: TextEditingController( + text: dateFormat.format(widget._plan.startDate), + ), + readOnly: true, + onTap: () async { + // Stop keyboard from appearing + FocusScope.of(context).requestFocus(FocusNode()); + + // Open date picker + final pickedDate = await showDatePicker( + context: context, + initialDate: widget._plan.startDate, + firstDate: DateTime(2000), + lastDate: DateTime(2100), + ); + + if (pickedDate != null) { + setState(() { + widget._plan.startDate = pickedDate; + }); + } + }, + validator: (value) { + if (widget._plan.endDate != null && + widget._plan.endDate!.isBefore(widget._plan.startDate)) { + return 'End date must be after start date'; + } + + return null; + }, + ), + // End Date + Row( + children: [ + Expanded( + child: TextFormField( + key: const Key('field-end-date'), + decoration: InputDecoration( + labelText: AppLocalizations.of(context).endDate, + helperText: + 'Tip: only for athletes with contest deadlines. Most users benefit from flexibility', + suffixIcon: widget._plan.endDate == null + ? const Icon( + Icons.calendar_today, + key: Key('calendarIcon'), + ) + : IconButton( + icon: const Icon(Icons.clear), + tooltip: 'Clear end date', + onPressed: () { + setState(() { + widget._plan.endDate = null; + }); + }, + ), + ), + controller: TextEditingController( + text: widget._plan.endDate == null + ? '' + : dateFormat.format(widget._plan.endDate!), + ), + readOnly: true, + onTap: () async { + // Stop keyboard from appearing + FocusScope.of(context).requestFocus(FocusNode()); + + // Open date picker + final pickedDate = await showDatePicker( + context: context, + initialDate: widget._plan.endDate, + // end must be after start + firstDate: widget._plan.startDate.add(const Duration(days: 1)), + lastDate: DateTime(2100), + ); + + if (pickedDate != null) { + setState(() { + widget._plan.endDate = pickedDate; + }); + } + }, + ), + ), + ], + ), SwitchListTile( title: Text(AppLocalizations.of(context).onlyLogging), subtitle: Text(AppLocalizations.of(context).onlyLoggingHelpText), - value: _onlyLogging, + value: widget._plan.onlyLogging, onChanged: (value) { setState(() { - _onlyLogging = !_onlyLogging; + widget._plan.onlyLogging = value; }); - widget._plan.onlyLogging = value; }, ), Row( @@ -567,7 +651,7 @@ class _PlanFormState extends State { const SizedBox(width: 8), Expanded( child: DropdownButtonFormField( - value: _goalType, + initialValue: _goalType, items: GoalType.values .map( (e) => DropdownMenuItem( @@ -675,9 +759,6 @@ class _PlanFormState extends State { ); } } - - // Saving was successful, reset the data - _descriptionController.clear(); }, ), ], diff --git a/lib/widgets/nutrition/ingredient_dialogs.dart b/lib/widgets/nutrition/ingredient_dialogs.dart index faf0f245..449c08e3 100644 --- a/lib/widgets/nutrition/ingredient_dialogs.dart +++ b/lib/widgets/nutrition/ingredient_dialogs.dart @@ -101,8 +101,7 @@ class IngredientDetails extends StatelessWidget { 'Ingredient lookup error: ${snapshot.error ?? 'unknown error'}', style: const TextStyle(color: Colors.red), ), - if (ingredient?.image?.image != null) - ingredientImage(ingredient!.image!.image, context), + if (ingredient?.image?.url != null) ingredientImage(ingredient!.image!.url, context), if (!snapshot.hasData && !snapshot.hasError) const CircularProgressIndicator(), if (snapshot.hasData) ConstrainedBox( @@ -205,8 +204,7 @@ class IngredientScanResultDialog extends StatelessWidget { child: Text(AppLocalizations.of(context).productFoundDescription(ingredient.name)), ), - if (ingredient?.image?.image != null) - ingredientImage(ingredient!.image!.image, context), + if (ingredient?.image?.url != null) ingredientImage(ingredient!.image!.url, context), if (snapshot.connectionState != ConnectionState.done && !snapshot.hasError) const CircularProgressIndicator(), if (goals != null) diff --git a/lib/widgets/nutrition/nutritional_plan_detail.dart b/lib/widgets/nutrition/nutritional_plan_detail.dart index 03c8aed7..b202a30b 100644 --- a/lib/widgets/nutrition/nutritional_plan_detail.dart +++ b/lib/widgets/nutrition/nutritional_plan_detail.dart @@ -17,6 +17,7 @@ */ import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/models/nutrition/nutritional_plan.dart'; @@ -42,6 +43,26 @@ class NutritionalPlanDetailWidget extends StatelessWidget { return SliverList( delegate: SliverChildListDelegate( [ + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text( + _nutritionalPlan.endDate != null + ? 'from ${DateFormat.yMd( + Localizations.localeOf(context).languageCode, + ).format(_nutritionalPlan.startDate)} to ${DateFormat.yMd( + Localizations.localeOf(context).languageCode, + ).format(_nutritionalPlan.endDate!)}' + : 'from ${DateFormat.yMd( + Localizations.localeOf(context).languageCode, + ).format(_nutritionalPlan.startDate)} (${AppLocalizations.of(context).openEnded})', + style: Theme.of(context).textTheme.titleSmall?.copyWith( + fontStyle: FontStyle.italic, + ), + textAlign: TextAlign.center, + ), + ), + const SizedBox(height: 8), SizedBox( width: 300, child: Padding( diff --git a/lib/widgets/nutrition/nutritional_plans_list.dart b/lib/widgets/nutrition/nutritional_plans_list.dart index 4e682e14..9f45149d 100644 --- a/lib/widgets/nutrition/nutritional_plans_list.dart +++ b/lib/widgets/nutrition/nutritional_plans_list.dart @@ -18,16 +18,74 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; +import 'package:wger/helpers/measurements.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; +import 'package:wger/providers/body_weight.dart'; import 'package:wger/providers/nutrition.dart'; +import 'package:wger/providers/user.dart'; import 'package:wger/screens/nutritional_plan_screen.dart'; import 'package:wger/widgets/core/text_prompt.dart'; +import 'package:wger/widgets/measurements/charts.dart'; class NutritionalPlansList extends StatelessWidget { final NutritionPlansProvider _nutritionProvider; const NutritionalPlansList(this._nutritionProvider); + /// Builds the weight change information for a nutritional plan period + Widget _buildWeightChangeInfo(BuildContext context, DateTime startDate, DateTime? endDate) { + final provider = Provider.of(context, listen: false); + + final entriesAll = provider.items.map((e) => MeasurementChartEntry(e.weight, e.date)).toList(); + final entries7dAvg = moving7dAverage(entriesAll).whereDateWithInterpolation(startDate, endDate); + if (entries7dAvg.length < 2) { + return const SizedBox.shrink(); + } + + // Calculate weight change + final firstWeight = entries7dAvg.first; + final lastWeight = entries7dAvg.last; + final weightDifference = lastWeight.value - firstWeight.value; + + // Format the weight change text and determine color + final String weightChangeText; + final Color weightChangeColor; + final profile = context.read().profile; + + final unit = weightUnit(profile!.isMetric, context); + + if (weightDifference > 0) { + weightChangeText = '+${weightDifference.toStringAsFixed(1)} $unit'; + weightChangeColor = Colors.red; + } else if (weightDifference < 0) { + weightChangeText = '${weightDifference.toStringAsFixed(1)} $unit'; + weightChangeColor = Colors.green; + } else { + weightChangeText = '0 $unit'; + weightChangeColor = Colors.grey; + } + + return Padding( + padding: const EdgeInsets.only(top: 4.0), + child: Row( + children: [ + Text( + '${AppLocalizations.of(context).weight} change: ', + style: Theme.of(context).textTheme.bodySmall, + ), + Text( + weightChangeText, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + fontWeight: FontWeight.bold, + color: weightChangeColor, + ), + ), + ], + ), + ); + } + @override Widget build(BuildContext context) { return RefreshIndicator( @@ -48,10 +106,22 @@ class NutritionalPlansList extends StatelessWidget { ); }, title: Text(currentPlan.getLabel(context)), - subtitle: Text( - DateFormat.yMd( - Localizations.localeOf(context).languageCode, - ).format(currentPlan.creationDate), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + currentPlan.endDate != null + ? 'from ${DateFormat.yMd( + Localizations.localeOf(context).languageCode, + ).format(currentPlan.startDate)} to ${DateFormat.yMd( + Localizations.localeOf(context).languageCode, + ).format(currentPlan.endDate!)}' + : 'from ${DateFormat.yMd( + Localizations.localeOf(context).languageCode, + ).format(currentPlan.startDate)} (open ended)', + ), + _buildWeightChangeInfo(context, currentPlan.startDate, currentPlan.endDate), + ], ), trailing: Row(mainAxisSize: MainAxisSize.min, children: [ const VerticalDivider(), diff --git a/lib/widgets/nutrition/widgets.dart b/lib/widgets/nutrition/widgets.dart index b860aec5..8b7a95ff 100644 --- a/lib/widgets/nutrition/widgets.dart +++ b/lib/widgets/nutrition/widgets.dart @@ -27,7 +27,6 @@ import 'package:wger/helpers/consts.dart'; import 'package:wger/helpers/misc.dart'; import 'package:wger/helpers/platform.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; -import 'package:wger/models/exercises/ingredient_api.dart'; import 'package:wger/models/nutrition/ingredient.dart'; import 'package:wger/providers/nutrition.dart'; import 'package:wger/widgets/core/core.dart'; @@ -65,8 +64,8 @@ class IngredientTypeahead extends StatefulWidget { final bool showScanner; final Function(int id, String name, num? amount) selectIngredient; - final Function() unSelectIngredient; - final Function(String query) updateSearchQuery; + final Function() onDeselectIngredient; + final Function(String query) onUpdateSearchQuery; IngredientTypeahead( this._ingredientIdController, @@ -75,8 +74,8 @@ class IngredientTypeahead extends StatefulWidget { this.test = false, this.barcode = '', required this.selectIngredient, - required this.unSelectIngredient, - required this.updateSearchQuery, + required this.onDeselectIngredient, + required this.onUpdateSearchQuery, }); @override @@ -116,7 +115,7 @@ class _IngredientTypeaheadState extends State { Widget build(BuildContext context) { return Column( children: [ - TypeAheadField( + TypeAheadField( controller: widget._ingredientController, debounceDuration: const Duration(milliseconds: 500), builder: (context, controller, focusNode) { @@ -143,9 +142,8 @@ class _IngredientTypeaheadState extends State { return null; } - widget.updateSearchQuery(pattern); - // unselect to start a new search - widget.unSelectIngredient(); + widget.onUpdateSearchQuery(pattern); + widget.onDeselectIngredient(); return Provider.of(context, listen: false).searchIngredient( pattern, @@ -153,26 +151,28 @@ class _IngredientTypeaheadState extends State { searchEnglish: _searchEnglish, ); }, - itemBuilder: (context, suggestion) { - final url = context.read().baseProvider.auth.serverUrl; + itemBuilder: (context, ingredient) { return ListTile( - leading: suggestion.data.image != null + leading: ingredient.image != null ? CircleAvatar( - backgroundImage: NetworkImage(url! + suggestion.data.image!), + backgroundImage: NetworkImage(ingredient.thumbnails!.medium), ) : const CircleIconAvatar( Icon(Icons.image, color: Colors.grey), ), - title: Text(suggestion.value), - // subtitle: Text(suggestion.data.id.toString()), + title: Text( + ingredient.name, + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), trailing: IconButton( icon: const Icon(Icons.info_outline), onPressed: () { showIngredientDetails( context, - suggestion.data.id, + ingredient.id, select: () { - widget.selectIngredient(suggestion.data.id, suggestion.value, null); + widget.selectIngredient(ingredient.id, ingredient.name, null); }, ); }, @@ -184,7 +184,7 @@ class _IngredientTypeaheadState extends State { child: child, ), onSelected: (suggestion) { - widget.selectIngredient(suggestion.data.id, suggestion.value, null); + widget.selectIngredient(suggestion.id, suggestion.name, null); }, ), if (Localizations.localeOf(context).languageCode != LANGUAGE_SHORT_ENGLISH) @@ -218,7 +218,7 @@ class _IngredientTypeaheadState extends State { context: context, builder: (context) => FutureBuilder( future: Provider.of(context, listen: false) - .searchIngredientWithCode(barcode), + .searchIngredientWithBarcode(barcode), builder: (BuildContext context, AsyncSnapshot snapshot) { return IngredientScanResultDialog(snapshot, barcode, widget.selectIngredient); }, @@ -239,7 +239,7 @@ class IngredientAvatar extends StatelessWidget { return ingredient.image != null ? GestureDetector( child: CircleAvatar( - backgroundImage: NetworkImage(ingredient.image!.image), + backgroundImage: NetworkImage(ingredient.image!.url), ), onTap: () async { if (ingredient.image!.objectUrl != '') { diff --git a/lib/widgets/routines/forms/routine.dart b/lib/widgets/routines/forms/routine.dart index 03b5a10a..b2c679e9 100644 --- a/lib/widgets/routines/forms/routine.dart +++ b/lib/widgets/routines/forms/routine.dart @@ -110,7 +110,7 @@ class _RoutineFormState extends State { }, decoration: InputDecoration( labelText: i18n.startDate, - suffixIcon: Icon( + suffixIcon: const Icon( Icons.calendar_today, key: Key('calendarIcon'), ), diff --git a/lib/widgets/weight/forms.dart b/lib/widgets/weight/forms.dart index d91cdbea..755cc18d 100644 --- a/lib/widgets/weight/forms.dart +++ b/lib/widgets/weight/forms.dart @@ -21,38 +21,41 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:wger/helpers/consts.dart'; -import 'package:wger/helpers/date.dart'; -import 'package:wger/helpers/json.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/models/body_weight/weight_entry.dart'; import 'package:wger/providers/body_weight.dart'; class WeightForm extends StatelessWidget { final _form = GlobalKey(); - final dateController = TextEditingController(); - final weightController = TextEditingController(); + final dateController = TextEditingController(text: ''); + final timeController = TextEditingController(text: ''); + final weightController = TextEditingController(text: ''); - late final WeightEntry _weightEntry; + final WeightEntry _weightEntry; - WeightForm([WeightEntry? weightEntry]) { - _weightEntry = weightEntry ?? WeightEntry(date: DateTime.now()); - weightController.text = ''; - dateController.text = dateToYYYYMMDD(_weightEntry.date)!; - } + WeightForm([WeightEntry? weightEntry]) + : _weightEntry = weightEntry ?? WeightEntry(date: DateTime.now()); @override Widget build(BuildContext context) { final numberFormat = NumberFormat.decimalPattern(Localizations.localeOf(context).toString()); + final dateFormat = DateFormat.yMd(Localizations.localeOf(context).languageCode); + final timeFormat = DateFormat.Hm(Localizations.localeOf(context).languageCode); if (weightController.text.isEmpty && _weightEntry.weight != 0) { weightController.text = numberFormat.format(_weightEntry.weight); } + if (dateController.text.isEmpty) { + dateController.text = dateFormat.format(_weightEntry.date); + } + if (timeController.text.isEmpty) { + timeController.text = TimeOfDay.fromDateTime(_weightEntry.date).format(context); + } return Form( key: _form, child: Column( children: [ - // Weight date TextFormField( key: const Key('dateInput'), // Stop keyboard from appearing @@ -72,24 +75,51 @@ class WeightForm extends StatelessWidget { initialDate: _weightEntry.date, firstDate: DateTime(DateTime.now().year - 10), lastDate: DateTime.now(), - selectableDayPredicate: (day) { - // Always allow the current initial date - if (day.isSameDayAs(_weightEntry.date)) { - return true; - } - - // if the date is known, don't allow it - return Provider.of(context, listen: false).findByDate(day) == - null; - }, ); if (pickedDate != null) { - dateController.text = dateToYYYYMMDD(pickedDate)!; + dateController.text = dateFormat.format(pickedDate); } }, onSaved: (newValue) { - _weightEntry.date = DateTime.parse(newValue!); + final date = dateFormat.parse(newValue!); + _weightEntry.date = _weightEntry.date.copyWith( + year: date.year, + month: date.month, + day: date.day, + ); + }, + ), + TextFormField( + key: const Key('timeInput'), + // Stop keyboard from appearing + readOnly: true, + decoration: InputDecoration( + labelText: AppLocalizations.of(context).time, + suffixIcon: const Icon( + Icons.access_time_outlined, + key: Key('clockIcon'), + ), + ), + enableInteractiveSelection: false, + controller: timeController, + onTap: () async { + final pickedTime = await showTimePicker( + context: context, + initialTime: TimeOfDay.fromDateTime(_weightEntry.date), + ); + + if (pickedTime != null) { + timeController.text = pickedTime.format(context); + } + }, + onSaved: (newValue) { + final time = timeFormat.parse(newValue!); + _weightEntry.date = _weightEntry.date.copyWith( + hour: time.hour, + minute: time.minute, + second: time.second, + ); }, ), diff --git a/lib/widgets/weight/weight_overview.dart b/lib/widgets/weight/weight_overview.dart index a60e04b5..404ef853 100644 --- a/lib/widgets/weight/weight_overview.dart +++ b/lib/widgets/weight/weight_overview.dart @@ -38,7 +38,7 @@ class WeightOverview extends StatelessWidget { Widget build(BuildContext context) { final profile = context.read().profile; final numberFormat = NumberFormat.decimalPattern(Localizations.localeOf(context).toString()); - final plan = Provider.of(context, listen: false).currentPlan; + final plans = Provider.of(context, listen: false).items; final entriesAll = _provider.items.map((e) => MeasurementChartEntry(e.weight, e.date)).toList(); final entries7dAvg = moving7dAverage(entriesAll); @@ -51,7 +51,7 @@ class WeightOverview extends StatelessWidget { AppLocalizations.of(context).weight, entriesAll, entries7dAvg, - plan, + plans, unit, context, ), @@ -84,7 +84,7 @@ class WeightOverview extends StatelessWidget { subtitle: Text( DateFormat.yMd( Localizations.localeOf(context).languageCode, - ).format(currentEntry.date), + ).add_Hm().format(currentEntry.date), ), trailing: PopupMenuButton( itemBuilder: (BuildContext context) { diff --git a/pubspec.lock b/pubspec.lock index 170ab29d..a1d24d6d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -73,30 +73,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.4" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: "065445f16bde0abf5dab8ff20dcc6773125fe387a128cb175f77df756910b452" - url: "https://pub.dev" - source: hosted - version: "3.0.4" build_runner: dependency: "direct dev" description: name: build_runner - sha256: b1c7d812e9dd647d8dec0dc1041ec549f7bc2270d60cd1f8ec13f206c10227f8 + sha256: "804c47c936df75e1911c19a4fb8c46fa8ff2b3099b9f2b2aa4726af3774f734b" url: "https://pub.dev" source: hosted - version: "2.7.2" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "59dc22b9724207519e6c8790fa706d7517dd8cff2d0d55da439c5ce7285200c9" - url: "https://pub.dev" - source: hosted - version: "9.3.2" + version: "2.8.0" built_collection: dependency: transitive description: @@ -285,18 +269,18 @@ packages: dependency: "direct main" description: name: drift - sha256: "6aaea757f53bb035e8a3baedf3d1d53a79d6549a6c13d84f7546509da9372c7c" + sha256: "540cf382a3bfa99b76e51514db5b0ebcd81ce3679b7c1c9cb9478ff3735e47a1" url: "https://pub.dev" source: hosted - version: "2.28.1" + version: "2.28.2" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: d6646ee608b9f359b023ac329321bc9c63b098217291de079b8b2334a48abf39 + sha256: "4db0eeedc7e8bed117a9f22d867ab7a3a294300fed5c269aac90d0b3545967ca" url: "https://pub.dev" source: hosted - version: "2.28.2" + version: "2.28.3" equatable: dependency: "direct main" description: @@ -373,10 +357,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: d3f82f4a38e33ba23d05a08ff304d7d8b22d2a59a5503f20bd802966e915db89 + sha256: "7ca9a40f4eb85949190e54087be8b4d6ac09dc4c54238d782a34cf1f7c011de9" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" flex_color_scheme: dependency: "direct main" description: @@ -744,10 +728,10 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "11.0.1" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: @@ -1305,14 +1289,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.6" - timing: - dependency: transitive - description: - name: timing - sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" - url: "https://pub.dev" - source: hosted - version: "1.0.2" typed_data: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 34f38bbb..3eaff457 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # - the version number is taken from the git tag vX.Y.Z # - the build number is computed by reading the last one from the play store # and increasing by one -version: 1.8.4+90 +version: 1.9.0+100 environment: sdk: '>=3.8.0 <4.0.0' @@ -36,9 +36,9 @@ dependencies: clock: ^1.1.2 collection: ^1.18.0 cupertino_icons: ^1.0.8 - drift: ^2.28.1 + drift: ^2.28.2 equatable: ^2.0.7 - fl_chart: ^1.1.0 + fl_chart: ^1.1.1 flex_color_scheme: ^8.3.0 flex_seed_scheme: ^3.5.1 flutter_html: ^3.0.0 @@ -61,7 +61,7 @@ dependencies: provider: ^6.1.5 rive: ^0.13.20 shared_preferences: ^2.5.3 - sqlite3_flutter_libs: ^0.5.34 + sqlite3_flutter_libs: ^0.5.39 table_calendar: ^3.0.8 url_launcher: ^6.3.2 version: ^3.0.2 @@ -74,9 +74,9 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter - build_runner: ^2.7.2 + build_runner: ^2.8.0 cider: ^0.2.7 - drift_dev: ^2.28.2 + drift_dev: ^2.28.3 flutter_lints: ^6.0.0 freezed: ^3.2.0 json_serializable: ^6.11.1 diff --git a/test/core/settings_test.mocks.dart b/test/core/settings_test.mocks.dart index e71ae9c9..5f661123 100644 --- a/test/core/settings_test.mocks.dart +++ b/test/core/settings_test.mocks.dart @@ -6,7 +6,7 @@ import 'dart:async' as _i18; import 'dart:ui' as _i19; -import 'package:flutter/material.dart' as _i23; +import 'package:flutter/material.dart' as _i22; import 'package:http/http.dart' as _i16; import 'package:mockito/mockito.dart' as _i1; import 'package:shared_preferences/shared_preferences.dart' as _i14; @@ -15,19 +15,18 @@ import 'package:wger/database/ingredients/ingredients_database.dart' as _i9; import 'package:wger/models/exercises/category.dart' as _i5; import 'package:wger/models/exercises/equipment.dart' as _i6; import 'package:wger/models/exercises/exercise.dart' as _i4; -import 'package:wger/models/exercises/ingredient_api.dart' as _i21; import 'package:wger/models/exercises/language.dart' as _i8; import 'package:wger/models/exercises/muscle.dart' as _i7; import 'package:wger/models/nutrition/ingredient.dart' as _i13; import 'package:wger/models/nutrition/meal.dart' as _i11; import 'package:wger/models/nutrition/meal_item.dart' as _i12; import 'package:wger/models/nutrition/nutritional_plan.dart' as _i10; -import 'package:wger/models/user/profile.dart' as _i24; +import 'package:wger/models/user/profile.dart' as _i23; import 'package:wger/providers/auth.dart' as _i15; import 'package:wger/providers/base_provider.dart' as _i2; import 'package:wger/providers/exercises.dart' as _i17; import 'package:wger/providers/nutrition.dart' as _i20; -import 'package:wger/providers/user.dart' as _i22; +import 'package:wger/providers/user.dart' as _i21; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -990,7 +989,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i20.NutritionPlans ) as _i18.Future); @override - _i18.Future> searchIngredient( + _i18.Future> searchIngredient( String? name, { String? languageCode = 'en', bool? searchEnglish = false, @@ -1004,15 +1003,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i20.NutritionPlans #searchEnglish: searchEnglish, }, ), - returnValue: _i18.Future>.value( - <_i21.IngredientApiSearchEntry>[]), - ) as _i18.Future>); + returnValue: _i18.Future>.value(<_i13.Ingredient>[]), + ) as _i18.Future>); @override - _i18.Future<_i13.Ingredient?> searchIngredientWithCode(String? code) => (super.noSuchMethod( + _i18.Future<_i13.Ingredient?> searchIngredientWithBarcode(String? barcode) => (super.noSuchMethod( Invocation.method( - #searchIngredientWithCode, - [code], + #searchIngredientWithBarcode, + [barcode], ), returnValue: _i18.Future<_i13.Ingredient?>.value(), ) as _i18.Future<_i13.Ingredient?>); @@ -1120,16 +1118,16 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i20.NutritionPlans /// A class which mocks [UserProvider]. /// /// See the documentation for Mockito's code generation for more information. -class MockUserProvider extends _i1.Mock implements _i22.UserProvider { +class MockUserProvider extends _i1.Mock implements _i21.UserProvider { MockUserProvider() { _i1.throwOnMissingStub(this); } @override - _i23.ThemeMode get themeMode => (super.noSuchMethod( + _i22.ThemeMode get themeMode => (super.noSuchMethod( Invocation.getter(#themeMode), - returnValue: _i23.ThemeMode.system, - ) as _i23.ThemeMode); + returnValue: _i22.ThemeMode.system, + ) as _i22.ThemeMode); @override _i2.WgerBaseProvider get baseProvider => (super.noSuchMethod( @@ -1150,7 +1148,7 @@ class MockUserProvider extends _i1.Mock implements _i22.UserProvider { ) as _i14.SharedPreferencesAsync); @override - set themeMode(_i23.ThemeMode? value) => super.noSuchMethod( + set themeMode(_i22.ThemeMode? value) => super.noSuchMethod( Invocation.setter( #themeMode, value, @@ -1168,7 +1166,7 @@ class MockUserProvider extends _i1.Mock implements _i22.UserProvider { ); @override - set profile(_i24.Profile? value) => super.noSuchMethod( + set profile(_i23.Profile? value) => super.noSuchMethod( Invocation.setter( #profile, value, @@ -1192,7 +1190,7 @@ class MockUserProvider extends _i1.Mock implements _i22.UserProvider { ); @override - void setThemeMode(_i23.ThemeMode? mode) => super.noSuchMethod( + void setThemeMode(_i22.ThemeMode? mode) => super.noSuchMethod( Invocation.method( #setThemeMode, [mode], diff --git a/test/fixtures/nutrition/ingredient_suggestions.json b/test/fixtures/nutrition/ingredient_suggestions.json deleted file mode 100644 index b0dafe12..00000000 --- a/test/fixtures/nutrition/ingredient_suggestions.json +++ /dev/null @@ -1,15 +0,0 @@ -{"suggestions":[ - { - "value": "'n Dry 100% Rapeseed Oil 1 Litre", - "data": { - "id": 61810, - "name": "'n Dry 100% Rapeseed Oil 1 Litre" - }}, - { - "value": "100% Apple & Mango", - "data": { - "id": 61972, - "name": "100% Apple & Mango" - } - }] - } diff --git a/test/fixtures/nutrition/nutritional_plan_detail_response.json b/test/fixtures/nutrition/nutritional_plan_detail_response.json index 42b0ab0f..7a1548c9 100644 --- a/test/fixtures/nutrition/nutritional_plan_detail_response.json +++ b/test/fixtures/nutrition/nutritional_plan_detail_response.json @@ -2,6 +2,8 @@ "id": 1, "creation_date": "2022-08-09", "description": "", + "start": "2022-08-01", + "end": null, "only_logging": false, "goal_energy": null, "goal_protein": null, diff --git a/test/fixtures/nutrition/nutritional_plan_info_detail_response.json b/test/fixtures/nutrition/nutritional_plan_info_detail_response.json index 3c1f0c5e..6d81d3b1 100644 --- a/test/fixtures/nutrition/nutritional_plan_info_detail_response.json +++ b/test/fixtures/nutrition/nutritional_plan_info_detail_response.json @@ -2,6 +2,8 @@ "id": 92547, "creation_date": "2024-04-01", "description": "first real cut", + "start": "2024-04-01", + "end": null, "only_logging": false, "goal_energy": 1600, "goal_protein": 150, diff --git a/test/helpers/measurements_test.dart b/test/helpers/measurements_test.dart new file mode 100644 index 00000000..ddf0886a --- /dev/null +++ b/test/helpers/measurements_test.dart @@ -0,0 +1,90 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:wger/helpers/consts.dart'; +import 'package:wger/helpers/measurements.dart'; +import 'package:wger/widgets/measurements/charts.dart'; + +void main() { + group('whereDateWithInterpolation', () { + // Helper to create entries + MeasurementChartEntry entry(num value, DateTime date) => MeasurementChartEntry(value, date); + + // Test: No interpolation needed, exact start and end dates exist + test('returns entries within range when start and end exist', () { + final entries = [ + entry(10, DateTime(2023, 1, 1)), + entry(20, DateTime(2023, 1, 2)), + entry(30, DateTime(2023, 1, 3)), + ]; + final result = entries.whereDateWithInterpolation(DateTime(2023, 1, 1), DateTime(2023, 1, 3)); + + // Entries on start and end date should be included if they exist + expect(result.first.value, 10); + expect(result.last.value, 20); + }); + + // Test: Interpolates start if missing + test('interpolates start if missing', () { + final entries = [ + entry(10, DateTime(2023, 1, 1)), + entry(30, DateTime(2023, 1, 3)), + ]; + final result = entries.whereDateWithInterpolation(DateTime(2023, 1, 2), DateTime(2023, 1, 3)); + + // Only the interpolated value for 2nd Jan is included + expect(result.length, 1); + expect(result.first.value, closeTo(20, 0.0001)); + expect(result.first.date.millisecond, INTERPOLATION_MARKER); + expect(result.first.date.day, 2); + }); + + // Test: Interpolates end if missing + test('interpolates end if missing', () { + final entries = [ + entry(10, DateTime(2023, 1, 1)), + entry(30, DateTime(2023, 1, 3)), + ]; + final result = entries.whereDateWithInterpolation(DateTime(2023, 1, 1), DateTime(2023, 1, 2)); + // Should include the entry for 1st Jan and an interpolated value for 2nd Jan + expect(result.length, 2); + expect(result.first.value, 10); + expect(result.first.date.day, 1); + expect(result.last.value, closeTo(20, 0.0001)); + expect(result.last.date.day, 2); + }); + + // Test: No interpolation if out of bounds + test('returns empty if no data in range', () { + final entries = [ + entry(10, DateTime(2023, 1, 1)), + entry(20, DateTime(2023, 1, 2)), + ]; + final result = entries.whereDateWithInterpolation(DateTime(2023, 2, 1), DateTime(2023, 2, 2)); + expect(result, isEmpty); + }); + + // Test: Only start interpolation if data exists before and after + test('does not interpolate if no data before start', () { + final entries = [ + entry(10, DateTime(2023, 1, 2)), + entry(20, DateTime(2023, 1, 3)), + ]; + final result = entries.whereDateWithInterpolation(DateTime(2023, 1, 1), DateTime(2023, 1, 3)); + // No interpolation possible for Jan 1, only entry for Jan 2 is included + expect(result.length, 1); + expect(result.first.date.day, 2); + }); + + // Test: Only end interpolation if data exists before and after + test('does not interpolate if no data after end', () { + final entries = [ + entry(10, DateTime(2023, 1, 1)), + entry(20, DateTime(2023, 1, 2)), + ]; + final result = entries.whereDateWithInterpolation(DateTime(2023, 1, 1), DateTime(2023, 1, 3)); + // No interpolation possible for Jan 3, only entries for Jan 1 and Jan 2 are included + expect(result.length, 2); + expect(result.first.date.day, 1); + expect(result.last.date.day, 2); + }); + }); +} diff --git a/test/measurements/measurement_entries_screen_test.dart b/test/measurements/measurement_entries_screen_test.dart index 5a1cb3ae..c40785b7 100644 --- a/test/measurements/measurement_entries_screen_test.dart +++ b/test/measurements/measurement_entries_screen_test.dart @@ -45,6 +45,7 @@ void main() { mockNutritionPlansProvider = MockNutritionPlansProvider(); when(mockNutritionPlansProvider.currentPlan).thenReturn(null); + when(mockNutritionPlansProvider.items).thenReturn([]); }); Widget createHomeScreen({locale = 'en'}) { diff --git a/test/nutrition/goldens/nutritional_plan_1_default_view.png b/test/nutrition/goldens/nutritional_plan_1_default_view.png index a2063857..f021c9f1 100644 Binary files a/test/nutrition/goldens/nutritional_plan_1_default_view.png and b/test/nutrition/goldens/nutritional_plan_1_default_view.png differ diff --git a/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png b/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png index d84f28f0..ab57450a 100644 Binary files a/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png and b/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png differ diff --git a/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png b/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png index 55b7b850..02b148cd 100644 Binary files a/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png and b/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png differ diff --git a/test/nutrition/nutrition_provider_test.dart b/test/nutrition/nutrition_provider_test.dart index 2b8fb842..40cae73d 100644 --- a/test/nutrition/nutrition_provider_test.dart +++ b/test/nutrition/nutrition_provider_test.dart @@ -5,12 +5,14 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:wger/database/ingredients/ingredients_database.dart'; import 'package:wger/models/nutrition/ingredient.dart'; +import 'package:wger/models/nutrition/nutritional_plan.dart'; import 'package:wger/providers/nutrition.dart'; import '../fixtures/fixture_reader.dart'; import '../measurements/measurement_provider_test.mocks.dart'; void main() { + final now = DateTime.now(); late NutritionPlansProvider nutritionProvider; late MockWgerBaseProvider mockWgerBaseProvider; late IngredientDatabase database; @@ -110,6 +112,108 @@ void main() { }); }); + group('currentPlan', () { + test('gibt den aktiven Plan zurück, wenn nur einer aktiv ist', () { + final plan = NutritionalPlan( + id: 1, + description: 'Aktiver Plan', + startDate: now.subtract(const Duration(days: 1)), + endDate: now.add(const Duration(days: 1)), + creationDate: now.subtract(const Duration(days: 2)), + ); + nutritionProvider = NutritionPlansProvider(mockWgerBaseProvider, [plan], database: database); + expect(nutritionProvider.currentPlan, equals(plan)); + }); + + test('gibt den neuesten aktiven Plan zurück, wenn mehrere aktiv sind', () { + final olderPlan = NutritionalPlan( + id: 1, + description: 'Älterer aktiver Plan', + startDate: now.subtract(const Duration(days: 10)), + endDate: now.add(const Duration(days: 10)), + creationDate: now.subtract(const Duration(days: 10)), + ); + final newerPlan = NutritionalPlan( + id: 2, + description: 'Neuerer aktiver Plan', + startDate: now.subtract(const Duration(days: 5)), + endDate: now.add(const Duration(days: 5)), + creationDate: now.subtract(const Duration(days: 2)), + ); + nutritionProvider = + NutritionPlansProvider(mockWgerBaseProvider, [olderPlan, newerPlan], database: database); + expect(nutritionProvider.currentPlan, equals(newerPlan)); + }); + }); + + group('currentPlan correctly returns the active plan', () { + test('no plans available -> null', () { + nutritionProvider = NutritionPlansProvider(mockWgerBaseProvider, [], database: database); + expect(nutritionProvider.currentPlan, isNull); + }); + + test('no active plan -> null', () { + final plans = [ + NutritionalPlan( + id: 1, + description: 'plan 1', + startDate: now.subtract(const Duration(days: 30)), + endDate: now.subtract(const Duration(days: 5)), + ), + NutritionalPlan( + id: 2, + description: 'plan 2', + startDate: now.add(const Duration(days: 100)), + endDate: now.add(const Duration(days: 50)), + ), + ]; + nutritionProvider = NutritionPlansProvider(mockWgerBaseProvider, plans, database: database); + expect(nutritionProvider.currentPlan, isNull); + }); + + test('active plan exists -> return it', () { + final plan = NutritionalPlan( + description: 'Active plan', + startDate: now.subtract(const Duration(days: 10)), + endDate: now.add(const Duration(days: 10)), + ); + nutritionProvider = NutritionPlansProvider(mockWgerBaseProvider, [plan], database: database); + expect(nutritionProvider.currentPlan, equals(plan)); + }); + + test('inactive plans are ignored', () { + final inactivePlan = NutritionalPlan( + description: 'Inactive plan', + startDate: now.subtract(const Duration(days: 10)), + endDate: now.add(const Duration(days: 5)), + ); + final plan = NutritionalPlan( + description: 'Active plan', + startDate: now.subtract(const Duration(days: 10)), + endDate: now.add(const Duration(days: 10)), + ); + nutritionProvider = + NutritionPlansProvider(mockWgerBaseProvider, [plan, inactivePlan], database: database); + expect(nutritionProvider.currentPlan, equals(plan)); + }); + + test('several active plans exists -> return newest', () { + final olderPlan = NutritionalPlan( + description: 'Old active plan', + startDate: now.subtract(const Duration(days: 10)), + endDate: now.add(const Duration(days: 10)), + ); + final newerPlan = NutritionalPlan( + description: 'Newer active plan', + startDate: now.subtract(const Duration(days: 5)), + endDate: now.add(const Duration(days: 5)), + ); + nutritionProvider = + NutritionPlansProvider(mockWgerBaseProvider, [olderPlan, newerPlan], database: database); + expect(nutritionProvider.currentPlan, equals(newerPlan)); + }); + }); + group('Ingredient cache DB', () { test('that if there is already valid data in the DB, the API is not hit', () async { // Arrange diff --git a/test/nutrition/nutritional_meal_form_test.mocks.dart b/test/nutrition/nutritional_meal_form_test.mocks.dart index a2e4ecab..ef8ea874 100644 --- a/test/nutrition/nutritional_meal_form_test.mocks.dart +++ b/test/nutrition/nutritional_meal_form_test.mocks.dart @@ -4,11 +4,10 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i9; -import 'dart:ui' as _i11; +import 'dart:ui' as _i10; import 'package:mockito/mockito.dart' as _i1; import 'package:wger/database/ingredients/ingredients_database.dart' as _i3; -import 'package:wger/models/exercises/ingredient_api.dart' as _i10; import 'package:wger/models/nutrition/ingredient.dart' as _i7; import 'package:wger/models/nutrition/meal.dart' as _i5; import 'package:wger/models/nutrition/meal_item.dart' as _i6; @@ -395,7 +394,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP ) as _i9.Future); @override - _i9.Future> searchIngredient( + _i9.Future> searchIngredient( String? name, { String? languageCode = 'en', bool? searchEnglish = false, @@ -409,15 +408,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP #searchEnglish: searchEnglish, }, ), - returnValue: _i9.Future>.value( - <_i10.IngredientApiSearchEntry>[]), - ) as _i9.Future>); + returnValue: _i9.Future>.value(<_i7.Ingredient>[]), + ) as _i9.Future>); @override - _i9.Future<_i7.Ingredient?> searchIngredientWithCode(String? code) => (super.noSuchMethod( + _i9.Future<_i7.Ingredient?> searchIngredientWithBarcode(String? barcode) => (super.noSuchMethod( Invocation.method( - #searchIngredientWithCode, - [code], + #searchIngredientWithBarcode, + [barcode], ), returnValue: _i9.Future<_i7.Ingredient?>.value(), ) as _i9.Future<_i7.Ingredient?>); @@ -486,7 +484,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP ) as _i9.Future); @override - void addListener(_i11.VoidCallback? listener) => super.noSuchMethod( + void addListener(_i10.VoidCallback? listener) => super.noSuchMethod( Invocation.method( #addListener, [listener], @@ -495,7 +493,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP ); @override - void removeListener(_i11.VoidCallback? listener) => super.noSuchMethod( + void removeListener(_i10.VoidCallback? listener) => super.noSuchMethod( Invocation.method( #removeListener, [listener], diff --git a/test/nutrition/nutritional_meal_item_form_test.dart b/test/nutrition/nutritional_meal_item_form_test.dart index 017d9a17..224dc53e 100644 --- a/test/nutrition/nutritional_meal_item_form_test.dart +++ b/test/nutrition/nutritional_meal_item_form_test.dart @@ -10,7 +10,6 @@ import 'package:network_image_mock/network_image_mock.dart'; import 'package:provider/provider.dart'; import 'package:wger/helpers/consts.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; -import 'package:wger/models/exercises/ingredient_api.dart'; import 'package:wger/models/nutrition/ingredient.dart'; import 'package:wger/models/nutrition/meal.dart'; import 'package:wger/models/nutrition/meal_item.dart'; @@ -71,18 +70,16 @@ void main() { final MealItem mealItem = MealItem(ingredientId: ingredient.id, amount: 2); mockNutrition = MockNutritionPlansProvider(); - when(mockNutrition.searchIngredientWithCode('123')).thenAnswer((_) => Future.value(ingredient)); - when(mockNutrition.searchIngredientWithCode('')).thenAnswer((_) => Future.value(null)); - when(mockNutrition.searchIngredientWithCode('222')).thenAnswer((_) => Future.value(null)); + when(mockNutrition.searchIngredientWithBarcode('123')) + .thenAnswer((_) => Future.value(ingredient)); + when(mockNutrition.searchIngredientWithBarcode('')).thenAnswer((_) => Future.value(null)); + when(mockNutrition.searchIngredientWithBarcode('222')).thenAnswer((_) => Future.value(null)); when(mockNutrition.searchIngredient( any, languageCode: anyNamed('languageCode'), searchEnglish: anyNamed('searchEnglish'), )).thenAnswer( - (_) => Future.value( - IngredientApiSearch.fromJson(json.decode(fixture('nutrition/ingredient_suggestions'))) - .suggestions, - ), + (_) => Future.value([ingredient1, ingredient2]), ); when(mockNutrition.addMealItem(any, meal1)).thenAnswer((_) => Future.value(mealItem)); @@ -115,7 +112,7 @@ void main() { await tester.pumpWidget(createMealItemFormScreen(meal1, '', true)); await tester.pumpAndSettle(); - expect(find.byType(TypeAheadField), findsOneWidget); + expect(find.byType(TypeAheadField), findsOneWidget); expect(find.byType(TextFormField), findsWidgets); expect(find.byKey(const Key('scan-button')), findsOneWidget); expect(find.byKey(const Key(SUBMIT_BUTTON_KEY_NAME)), findsOneWidget); diff --git a/test/nutrition/nutritional_plan_form_test.dart b/test/nutrition/nutritional_plan_form_test.dart index 5c56634d..5b67fdf6 100644 --- a/test/nutrition/nutritional_plan_form_test.dart +++ b/test/nutrition/nutritional_plan_form_test.dart @@ -37,6 +37,8 @@ void main() { final plan1 = NutritionalPlan( id: 1, creationDate: DateTime(2021, 1, 1), + startDate: DateTime(2021, 1, 1), + endDate: DateTime(2021, 2, 10), description: 'test plan 1', ); final plan2 = NutritionalPlan.empty(); @@ -70,7 +72,7 @@ void main() { await tester.pumpWidget(createHomeScreen(plan1)); await tester.pumpAndSettle(); - expect(find.byType(TextFormField), findsOneWidget); + expect(find.byType(TextFormField), findsNWidgets(3)); expect(find.byType(ElevatedButton), findsOneWidget); expect(find.byKey(const Key(SUBMIT_BUTTON_KEY_NAME)), findsOneWidget); }); @@ -79,11 +81,10 @@ void main() { await tester.pumpWidget(createHomeScreen(plan1)); await tester.pumpAndSettle(); - expect( - find.text('test plan 1'), - findsOneWidget, - reason: 'Description of existing nutritional plan is filled in', - ); + expect(find.text('test plan 1'), findsOneWidget, reason: 'Description is filled in'); + expect(find.text('1/1/2021'), findsOneWidget, reason: 'Start date is filled in'); + expect(find.text('2/10/2021'), findsOneWidget, reason: 'End date is filled in'); + await tester.enterText(find.byKey(const Key('field-description')), 'New description'); await tester.tap(find.byKey(const Key(SUBMIT_BUTTON_KEY_NAME))); @@ -109,7 +110,9 @@ void main() { await tester.pumpWidget(createHomeScreen(plan2)); await tester.pumpAndSettle(); - expect(find.text(''), findsOneWidget, reason: 'New nutritional plan has no description'); + expect(find.text(''), findsNWidgets(2), + reason: 'New nutritional plan needs description, and end date'); + // there's also the start date, but it will have a value depending on 'now' await tester.enterText(find.byKey(const Key('field-description')), 'New cool plan'); await tester.tap(find.byKey(const Key(SUBMIT_BUTTON_KEY_NAME))); diff --git a/test/nutrition/nutritional_plan_form_test.mocks.dart b/test/nutrition/nutritional_plan_form_test.mocks.dart index 8d161c4e..5d42b480 100644 --- a/test/nutrition/nutritional_plan_form_test.mocks.dart +++ b/test/nutrition/nutritional_plan_form_test.mocks.dart @@ -4,11 +4,10 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i9; -import 'dart:ui' as _i11; +import 'dart:ui' as _i10; import 'package:mockito/mockito.dart' as _i1; import 'package:wger/database/ingredients/ingredients_database.dart' as _i3; -import 'package:wger/models/exercises/ingredient_api.dart' as _i10; import 'package:wger/models/nutrition/ingredient.dart' as _i7; import 'package:wger/models/nutrition/meal.dart' as _i5; import 'package:wger/models/nutrition/meal_item.dart' as _i6; @@ -395,7 +394,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP ) as _i9.Future); @override - _i9.Future> searchIngredient( + _i9.Future> searchIngredient( String? name, { String? languageCode = 'en', bool? searchEnglish = false, @@ -409,15 +408,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP #searchEnglish: searchEnglish, }, ), - returnValue: _i9.Future>.value( - <_i10.IngredientApiSearchEntry>[]), - ) as _i9.Future>); + returnValue: _i9.Future>.value(<_i7.Ingredient>[]), + ) as _i9.Future>); @override - _i9.Future<_i7.Ingredient?> searchIngredientWithCode(String? code) => (super.noSuchMethod( + _i9.Future<_i7.Ingredient?> searchIngredientWithBarcode(String? barcode) => (super.noSuchMethod( Invocation.method( - #searchIngredientWithCode, - [code], + #searchIngredientWithBarcode, + [barcode], ), returnValue: _i9.Future<_i7.Ingredient?>.value(), ) as _i9.Future<_i7.Ingredient?>); @@ -486,7 +484,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP ) as _i9.Future); @override - void addListener(_i11.VoidCallback? listener) => super.noSuchMethod( + void addListener(_i10.VoidCallback? listener) => super.noSuchMethod( Invocation.method( #addListener, [listener], @@ -495,7 +493,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP ); @override - void removeListener(_i11.VoidCallback? listener) => super.noSuchMethod( + void removeListener(_i10.VoidCallback? listener) => super.noSuchMethod( Invocation.method( #removeListener, [listener], diff --git a/test/nutrition/nutritional_plan_model_test.dart b/test/nutrition/nutritional_plan_model_test.dart index ac35a162..40069d16 100644 --- a/test/nutrition/nutritional_plan_model_test.dart +++ b/test/nutrition/nutritional_plan_model_test.dart @@ -51,6 +51,7 @@ void main() { NutritionalPlan( description: '3 macros and energy defined', creationDate: DateTime(2024, 5, 4), + startDate: DateTime(2024, 5, 4), goalProtein: 150, goalCarbohydrates: 100, goalFat: 100, @@ -69,6 +70,7 @@ void main() { NutritionalPlan( description: '2 macros and energy defined', creationDate: DateTime(2024, 5, 4), + startDate: DateTime(2024, 5, 4), goalProtein: 100, goalCarbohydrates: 100, goalEnergy: 1700, @@ -86,6 +88,7 @@ void main() { NutritionalPlan( description: '3 macros defined', creationDate: DateTime(2024, 5, 4), + startDate: DateTime(2024, 5, 4), goalProtein: 100, goalCarbohydrates: 100, goalFat: 10, diff --git a/test/nutrition/nutritional_plans_screen_test.dart b/test/nutrition/nutritional_plans_screen_test.dart index d3ff7657..042efd5b 100644 --- a/test/nutrition/nutritional_plans_screen_test.dart +++ b/test/nutrition/nutritional_plans_screen_test.dart @@ -20,15 +20,20 @@ import 'package:drift/native.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:http/http.dart' as http; +import 'package:intl/intl.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; +import 'package:path/path.dart'; import 'package:provider/provider.dart'; import 'package:wger/database/ingredients/ingredients_database.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/models/nutrition/nutritional_plan.dart'; +import 'package:wger/models/user/profile.dart'; import 'package:wger/providers/auth.dart'; import 'package:wger/providers/base_provider.dart'; +import 'package:wger/providers/body_weight.dart'; import 'package:wger/providers/nutrition.dart'; +import 'package:wger/providers/user.dart'; import 'package:wger/screens/form_screen.dart'; import 'package:wger/screens/nutritional_plans_screen.dart'; import 'package:wger/widgets/nutrition/forms.dart'; @@ -62,23 +67,43 @@ void main() { when(mockAuthProvider.serverUrl).thenReturn('http://localhost'); when(mockAuthProvider.getAppNameHeader()).thenReturn('wger app'); - return ChangeNotifierProvider( - create: (context) => NutritionPlansProvider( - mockBaseProvider, - [ - NutritionalPlan( - id: 1, - description: 'test plan 1', - creationDate: DateTime(2021, 01, 01), + return MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (context) => NutritionPlansProvider( + mockBaseProvider, + [ + NutritionalPlan( + id: 1, + description: 'test plan 1', + creationDate: DateTime(2021, 01, 01), + startDate: DateTime(2021, 01, 01), + ), + NutritionalPlan( + id: 2, + description: 'test plan 2', + creationDate: DateTime(2021, 01, 10), + startDate: DateTime(2021, 01, 10), + ), + ], + database: database, ), - NutritionalPlan( - id: 2, - description: 'test plan 2', - creationDate: DateTime(2021, 01, 10), - ), - ], - database: database, - ), + ), + ChangeNotifierProvider( + create: (context) => BodyWeightProvider(mockBaseProvider), + ), + ChangeNotifierProvider( + create: (context) => UserProvider( + mockBaseProvider, + )..profile = Profile( + username: 'test', + emailVerified: true, + isTrustworthy: true, + email: 'test@example.com', + weightUnitStr: 'kg', + ), + ), + ], child: MaterialApp( locale: Locale(locale), localizationsDelegates: AppLocalizations.localizationsDelegates, @@ -126,14 +151,16 @@ void main() { testWidgets('Tests the localization of dates - EN', (WidgetTester tester) async { await tester.pumpWidget(createHomeScreen()); - expect(find.text('1/1/2021'), findsOneWidget); - expect(find.text('1/10/2021'), findsOneWidget); +// note .. "(open ended)" at the time, depending on localisation strings + expect(find.textContaining('from 1/1/2021 ('), findsOneWidget); + expect(find.textContaining('from 1/10/2021 ('), findsOneWidget); }); testWidgets('Tests the localization of dates - DE', (WidgetTester tester) async { await tester.pumpWidget(createHomeScreen(locale: 'de')); +// note .. "(open ended)" at the time, depending on localisation strings - expect(find.text('1.1.2021'), findsOneWidget); - expect(find.text('10.1.2021'), findsOneWidget); + expect(find.textContaining('from 1.1.2021 ('), findsOneWidget); + expect(find.textContaining('from 10.1.2021 ('), findsOneWidget); }); } diff --git a/test/weight/weight_form_test.dart b/test/weight/weight_form_test.dart index 9a1bfaa2..0a821a37 100644 --- a/test/weight/weight_form_test.dart +++ b/test/weight/weight_form_test.dart @@ -34,11 +34,21 @@ void main() { ); } - testWidgets('The form is prefilled with the data from an entry', (WidgetTester tester) async { + testWidgets('Correctly prefills and localizes the data - en', (WidgetTester tester) async { await tester.pumpWidget(createWeightForm(weightEntry: testWeightEntry1)); await tester.pumpAndSettle(); - expect(find.text('2021-01-01'), findsOneWidget); + expect(find.text('1/1/2021'), findsOneWidget); + expect(find.text('3:30 PM'), findsOneWidget); + expect(find.text('80'), findsOneWidget); + }); + + testWidgets('Correctly prefills and localizes the data - de', (WidgetTester tester) async { + await tester.pumpWidget(createWeightForm(weightEntry: testWeightEntry1, locale: 'de')); + await tester.pumpAndSettle(); + + expect(find.text('1.1.2021'), findsOneWidget); + expect(find.text('15:30'), findsOneWidget); expect(find.text('80'), findsOneWidget); }); diff --git a/test/weight/weight_model_test.dart b/test/weight/weight_model_test.dart index 0866d83e..ac97ccf6 100644 --- a/test/weight/weight_model_test.dart +++ b/test/weight/weight_model_test.dart @@ -22,11 +22,15 @@ import 'package:wger/models/body_weight/weight_entry.dart'; void main() { group('fetchPost', () { test('Test that the weight entries are correctly converted to json', () { - WeightEntry weightEntry = WeightEntry(id: 1, weight: 80, date: DateTime(2020, 12, 31)); - expect(weightEntry.toJson(), {'id': 1, 'weight': '80', 'date': '2020-12-31'}); + expect( + WeightEntry(id: 1, weight: 80, date: DateTime(2020, 12, 31, 12, 34)).toJson(), + {'id': 1, 'weight': '80', 'date': '2020-12-31T12:34:00.000'}, + ); - weightEntry = WeightEntry(id: 2, weight: 70.2, date: DateTime(2020, 12, 01)); - expect(weightEntry.toJson(), {'id': 2, 'weight': '70.2', 'date': '2020-12-01'}); + expect( + WeightEntry(id: 2, weight: 70.2, date: DateTime(2020, 12, 01)).toJson(), + {'id': 2, 'weight': '70.2', 'date': '2020-12-01T00:00:00.000'}, + ); }); test('Test that the weight entries are correctly converted from json', () { diff --git a/test/weight/weight_provider_test.dart b/test/weight/weight_provider_test.dart index 08ce8c66..65938435 100644 --- a/test/weight/weight_provider_test.dart +++ b/test/weight/weight_provider_test.dart @@ -70,8 +70,10 @@ void main() { path: 'api/v2/weightentry/', ); when(mockBaseProvider.makeUrl(any, query: anyNamed('query'))).thenReturn(uri); - when(mockBaseProvider.post({'id': null, 'weight': '80', 'date': '2021-01-01'}, uri)) - .thenAnswer((_) => Future.value({'id': 25, 'date': '2021-01-01', 'weight': '80'})); + when(mockBaseProvider.post( + {'id': null, 'weight': '80', 'date': '2021-01-01T00:00:00.000'}, + uri, + )).thenAnswer((_) => Future.value({'id': 25, 'date': '2021-01-01', 'weight': '80'})); // Act final BodyWeightProvider provider = BodyWeightProvider(mockBaseProvider); diff --git a/test/weight/weight_screen_test.dart b/test/weight/weight_screen_test.dart index 8c057a5b..b47f2ba7 100644 --- a/test/weight/weight_screen_test.dart +++ b/test/weight/weight_screen_test.dart @@ -43,13 +43,13 @@ void main() { setUp(() { mockWeightProvider = MockBodyWeightProvider(); when(mockWeightProvider.items).thenReturn(getWeightEntries()); - when(mockWeightProvider.getNewestEntry()).thenReturn(null); mockUserProvider = MockUserProvider(); when(mockUserProvider.profile).thenReturn(tProfile1); mockNutritionPlansProvider = MockNutritionPlansProvider(); when(mockNutritionPlansProvider.currentPlan).thenReturn(null); + when(mockNutritionPlansProvider.items).thenReturn([]); }); Widget createWeightScreen({locale = 'en'}) { diff --git a/test/weight/weight_screen_test.mocks.dart b/test/weight/weight_screen_test.mocks.dart index 3ff1982c..f0fb8ed9 100644 --- a/test/weight/weight_screen_test.mocks.dart +++ b/test/weight/weight_screen_test.mocks.dart @@ -11,7 +11,6 @@ import 'package:mockito/mockito.dart' as _i1; import 'package:shared_preferences/shared_preferences.dart' as _i4; import 'package:wger/database/ingredients/ingredients_database.dart' as _i5; import 'package:wger/models/body_weight/weight_entry.dart' as _i3; -import 'package:wger/models/exercises/ingredient_api.dart' as _i17; import 'package:wger/models/nutrition/ingredient.dart' as _i9; import 'package:wger/models/nutrition/meal.dart' as _i7; import 'package:wger/models/nutrition/meal_item.dart' as _i8; @@ -720,7 +719,7 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i16.NutritionPlans ) as _i11.Future); @override - _i11.Future> searchIngredient( + _i11.Future> searchIngredient( String? name, { String? languageCode = 'en', bool? searchEnglish = false, @@ -734,15 +733,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i16.NutritionPlans #searchEnglish: searchEnglish, }, ), - returnValue: _i11.Future>.value( - <_i17.IngredientApiSearchEntry>[]), - ) as _i11.Future>); + returnValue: _i11.Future>.value(<_i9.Ingredient>[]), + ) as _i11.Future>); @override - _i11.Future<_i9.Ingredient?> searchIngredientWithCode(String? code) => (super.noSuchMethod( + _i11.Future<_i9.Ingredient?> searchIngredientWithBarcode(String? barcode) => (super.noSuchMethod( Invocation.method( - #searchIngredientWithCode, - [code], + #searchIngredientWithBarcode, + [barcode], ), returnValue: _i11.Future<_i9.Ingredient?>.value(), ) as _i11.Future<_i9.Ingredient?>); diff --git a/test/widgets/routines/plate_calculator_test.dart b/test/widgets/routines/plate_calculator_test.dart index 76971288..9c1b7ad0 100644 --- a/test/widgets/routines/plate_calculator_test.dart +++ b/test/widgets/routines/plate_calculator_test.dart @@ -34,7 +34,6 @@ void main() { testWidgets('Smoke test for ConfigureAvailablePlates', (WidgetTester tester) async { await pumpWidget(tester); - debugDumpApp(); expect(find.text('Unit'), findsWidgets); expect(find.text('Bar weight'), findsWidgets); expect(find.byType(SwitchListTile), findsOneWidget); diff --git a/test_data/body_weight.dart b/test_data/body_weight.dart index b9f89200..ac806a69 100644 --- a/test_data/body_weight.dart +++ b/test_data/body_weight.dart @@ -18,8 +18,8 @@ import 'package:wger/models/body_weight/weight_entry.dart'; -final testWeightEntry1 = WeightEntry(id: 1, weight: 80, date: DateTime(2021, 01, 01)); -final testWeightEntry2 = WeightEntry(id: 2, weight: 81, date: DateTime(2021, 01, 10)); +final testWeightEntry1 = WeightEntry(id: 1, weight: 80, date: DateTime(2021, 01, 01, 15, 30)); +final testWeightEntry2 = WeightEntry(id: 2, weight: 81, date: DateTime(2021, 01, 10, 10, 0)); List getWeightEntries() { return [testWeightEntry1, testWeightEntry2]; diff --git a/test_data/nutritional_plans.dart b/test_data/nutritional_plans.dart index 1b3a42cc..a4fbaa21 100644 --- a/test_data/nutritional_plans.dart +++ b/test_data/nutritional_plans.dart @@ -175,6 +175,7 @@ NutritionalPlan getNutritionalPlan() { id: 1, description: 'Less fat, more protein', creationDate: DateTime(2021, 5, 23), + startDate: DateTime(2021, 5, 23), ); plan.meals = [meal1, meal2]; @@ -213,6 +214,7 @@ NutritionalPlan getNutritionalPlanScreenshot() { id: 1, description: 'Diet', creationDate: DateTime(2021, 5, 23), + startDate: DateTime(2021, 5, 23), meals: [meal1, meal2], );