diff --git a/.github/workflows/android-release.yml b/.github/workflows/build-release.yml similarity index 57% rename from .github/workflows/android-release.yml rename to .github/workflows/build-release.yml index e21c683c..ae100390 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/build-release.yml @@ -1,15 +1,27 @@ -name: Google Play release +name: Build release artefacts on: push: tags: - 'v[0-9]+.[0-9]+.[0-9]+' +defaults: + run: + working-directory: wger + jobs: deploy_android: runs-on: ubuntu-latest steps: - - name: Checkout code + - name: Checkout application code uses: actions/checkout@v2 + with: + path: wger + + - name: Checkout flathub repo + uses: actions/checkout@v3 + with: + repository: wger-project/test + path: flathub - name: Setup Java uses: actions/setup-java@v1 @@ -19,13 +31,21 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3' + ruby-version: 3 - name: Setup Flutter uses: subosito/flutter-action@v1 with: - channel: 'stable' - flutter-version: '3.7.x' + channel: stable + flutter-version: 3.7.x + + - name: Flutter info + run: | + dart --version + flutter --version + + - name: Install Flutter dependencies + run: flutter pub get - name: Decrypt config files run: | @@ -37,39 +57,25 @@ jobs: DECRYPTKEY_PLAYSTORE_SIGNING_KEY: ${{ secrets.DECRYPTKEY_PLAYSTORE_SIGNING_KEY }} DECRYPTKEY_PROPERTIES: ${{ secrets.DECRYPTKEY_PROPERTIES }} - - name: Flutter info - run: | - dart --version - flutter --version - - - name: Install Flutter dependencies - run: flutter pub get - - name: Extract version information run: | echo "VERSION_V=$(echo $GITHUB_REF | cut -d / -f 3)" >> $GITHUB_ENV echo "VERSION=$(echo $GITHUB_REF | cut -d / -f 3 | cut -c 2-)" >> $GITHUB_ENV echo "BUILD=$(flutter pub run cider version | cut -d '+' -f 2)" >> $GITHUB_ENV - # Note: the original tag that triggered the workflow is in the form vX.Y.Z - # but the pubspec.yaml is committed in the commit after that one. - # Since we need the tag to point to the correct commit for other workflows - # such as f-droid we need a way to correct it. Only moving the tag - # would not work, as it would trigger this workflow again. So as - # a workaround, we use the v-tag to trigger this workflow, add a new - # one without the v and push it. - - name: Bump version + - name: Bump pubspec version run: | flutter pub run cider version ${{ env.VERSION }}+${{ env.BUILD }} flutter pub run cider bump build - git config user.name Github-actions - git config user.email github-actions@github.com - git add . - git commit -m "Bump version to $( flutter pub run cider version )" - git tag ${{ env.VERSION }} - git push origin HEAD:master --tags - git push origin --delete ${{ env.VERSION_V }} + - name: Build application for linux + run: | + sudo apt update + sudo apt install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev + flutter build linux --release + cd flatpak/scripts + dart pub get + dart flatpak_packager.dart --meta ../flatpak_meta.json --github - name: Build AAB run: flutter build appbundle --release @@ -80,10 +86,50 @@ jobs: uses: maierj/fastlane-action@v2.2.1 with: lane: production + subdirectory: wger - name: Make Github release uses: softprops/action-gh-release@v1 with: - files: build/app/outputs/bundle/release/app-release.aab tag_name: ${{ env.VERSION }} - body_path: CHANGELOG.md \ No newline at end of file + files: | + wger/build/app/outputs/bundle/release/app-release.aab + wger/flatpak/scripts/flatpak_generator_exports/wger-linux-x86_64.tar.gz + wger/flatpak/scripts/flatpak_generator_exports/wger-linux-x86_64.sha256 + + - name: Generate flathub manifest + run: | + cd flatpak/scripts + dart pub get + dart manifest_generator.dart --meta ../flatpak_meta.json --github + cp flatpak_generator_exports/de.wger.flutter.json ../../../flathub + + - name: Push config to flathub repository + uses: cpina/github-action-push-to-another-repository@main + env: + SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} + with: + source-directory: flathub + destination-github-username: wger-project + destination-repository-name: de.wger.flutter + user-email: github-actions@github.com + target-branch: release-${{ env.VERSION }} + create-target-branch-if-needed: true + commit-message: Update to ${{ env.VERSION }} + + # Note: the original tag that triggered the workflow is in the form vX.Y.Z + # but the pubspec.yaml is committed in the commit after that one. + # Since we need the tag to point to the correct commit for other workflows + # such as f-droid we need a way to correct it. Only moving the tag + # would not work, as it would trigger this workflow again. So as + # a workaround, we use the v-tag to trigger this workflow, add a new + # one without the v and push it. + - name: Commit pubspec version and delete branch + run: | + git config user.name Github-actions + git config user.email github-actions@github.com + git add . + git commit -m "Bump version to $( flutter pub run cider version )" + git tag ${{ env.VERSION }} + git push origin HEAD:master --tags + git push origin --delete ${{ env.VERSION_V }} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index a6032c70..9619dd65 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,4 @@ { - "dart.lineLength": 100, - "diffEditor.ignoreTrimWhitespace": true, -} \ No newline at end of file + "dart.lineLength": 100, + "diffEditor.ignoreTrimWhitespace": true, +} diff --git a/AUTHORS.md b/AUTHORS.md index a1423876..4c2d018f 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -2,6 +2,7 @@ ## Developers +- Jigar Prajapati - - Roland Geider – - Dylan Aird - - Jannik Norden - @@ -19,6 +20,8 @@ - Aman Negi - - Sandi Milohanic - - Miroslav Mazel - +- artchiee - +- Tejas Bir Singh - ## Translators diff --git a/Gemfile.lock b/Gemfile.lock index e85aa3d1..48eb691c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,25 +3,25 @@ GEM specs: CFPropertyList (3.0.6) rexml - addressable (2.8.1) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.728.0) - aws-sdk-core (3.170.0) + aws-partitions (1.799.0) + aws-sdk-core (3.180.2) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.63.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.119.1) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-s3 (1.132.0) + aws-sdk-core (~> 3, >= 3.179.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.2) + aws-sigv4 (~> 1.6) + aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -30,13 +30,13 @@ GEM commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.4) + digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.99.0) + excon (0.100.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -65,8 +65,8 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.6) - fastlane (2.212.1) + fastimage (2.2.7) + fastlane (2.214.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -90,7 +90,7 @@ GEM json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) - multipart-post (~> 2.0.0) + multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) optparse (~> 0.1.1) plist (>= 3.1.0, < 4.0.0) @@ -105,11 +105,11 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-versioning (0.5.1) + fastlane-plugin-versioning (0.5.2) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.36.0) + google-apis-androidpublisher_v3 (0.47.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -138,7 +138,7 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.3.0) + googleauth (1.7.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -151,25 +151,25 @@ GEM httpclient (2.8.3) jmespath (1.6.2) json (2.6.3) - jwt (2.7.0) + jwt (2.7.1) memoist (0.16.2) mini_magick (4.12.0) - mini_mime (1.1.2) + mini_mime (1.1.4) multi_json (1.15.0) - multipart-post (2.0.0) + multipart-post (2.3.0) nanaimo (0.3.0) naturally (2.2.1) optparse (0.1.1) os (1.1.4) plist (3.7.0) - public_suffix (5.0.1) + public_suffix (5.0.3) rake (13.0.6) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) diff --git a/README.md b/README.md index 53902b89..dc5e37fb 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Alternatively, you can use one of our test servers, just ask us for access. Install Flutter, and all its dependencies, and create a new virtual device: . -The app currently uses flutter 3.3 +The app currently uses flutter 3.7 ### 3 diff --git a/fastlane/metadata/android/README.md b/fastlane/metadata/android/README.md index 4e894f9d..34705ecd 100644 --- a/fastlane/metadata/android/README.md +++ b/fastlane/metadata/android/README.md @@ -5,7 +5,8 @@ If we use a new version, update the version used by * Github Actions in `android-release.yaml` in this repository -* Fdroid build recipe in [their repo](https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/de.wger.flutter.yml). +* Fdroid build recipe + in [their repo](https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/de.wger.flutter.yml). Since this can potentially take some time, it should happen well in advance ## 2. Dry-run release before uploading @@ -13,6 +14,7 @@ If we use a new version, update the version used by * Increase build nr in pubspec.yaml (revert after the dry-run was successful) * `flutter build appbundle --release` * `bundle install` +* `bundle update fastlane` * `bundle exec fastlane android test_configuration` (needs the different keys available) It might be necessary to repeat these steps if upload_to_play_store returns any errors @@ -33,7 +35,6 @@ by github actions. `TAG=vX.Y.Z && git tag $TAG && git push origin $TAG && git tag -d $TAG` - ## 4. Edit release I necessary, edit the created release on github diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png index e0652ee1..d582b9aa 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 421f3431..d942a0ae 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 cfdad6c8..ae32e2a9 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 bb36f261..bb6b5264 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 eda1cb07..f49effd5 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 67db6435..0ec2297e 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/de-DE/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png index 9d20ac05..a718ac0c 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 17672906..15bd8acd 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 c51b23da..b188df53 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 daf5d8df..1180d8d8 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 1dd4bc00..8098296b 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 c6af5484..270e97e6 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/en-US/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png index 22a930ca..29c413f2 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 e91dcf75..5175f8bc 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 ec165111..2aa15d17 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 37edf1b2..cf935ba0 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 3ed9a28a..ad9daa74 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 56b42156..fdb9ad4a 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/es-ES/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png index a18feeab..ea7dcdb7 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 55ec07f7..e4783885 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 1125e76d..d2e400e7 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 47ff7cfe..b085c3ad 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 c284035b..46e24591 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 5ba0ec82..96938d94 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/fr-FR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png index 51c3021c..9144d4ef 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 efe5ae25..74fdb907 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 1a839619..36b2f468 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 a345757d..1ab41073 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 d20d6bc3..99b57d06 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 e47c5563..970ea78d 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/hi-IN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png index 04001acc..7502d7c2 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 8c907375..4a863fe2 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 5bfbb38e..0d02b515 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 48c655fe..43034a56 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 53e986ec..6a981518 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 1253513b..71f318ea 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/hr/full_description.txt b/fastlane/metadata/android/hr/full_description.txt index cb0a08c5..2fe31212 100644 --- a/fastlane/metadata/android/hr/full_description.txt +++ b/fastlane/metadata/android/hr/full_description.txt @@ -13,10 +13,10 @@ wger je projekt otvorenog koda za: * Tvoje podatke Tvoje tijelo: -Nema potrebe za guglanjem sastojaka omiljenih poslastica – odaberi dnevne obroke od više od 78.000 proizvoda i pogledaj prehrambene vrijednosti. Dodaj obroke u plan prehrane i čuvaj pregled svoje prehrane u kalendaru. +Nema potrebe za guglanjem sastojaka omiljenih poslastica – odaberi dnevne obroke od više od 78.000 proizvoda i pogledaj nutritivne vrijednosti. Dodaj obroke u plan prehrane i čuvaj pregled svoje prehrane u kalendaru. Tvoji treninzi: -Znaš što je najbolje za tvoje tijelo. Izradi vlastite treninge iz više od 200 različitih vježbi. Zatim koristi modus teretane vođenje kroz trening dok jednim dodirom bilježiš utege. +Znaš što je najbolje za tvoje tijelo. Izradi vlastite treninge iz više od 200 različitih vježbi. Zatim koristi modus teretane za vođenje kroz trening dok jednim dodirom bilježiš svoje težine. Tvoj napredak: Nikada ne gubi iz vida svoje ciljeve. Prati svoju težinu i vodi statistiku. @@ -33,7 +33,7 @@ Otvoreni kod znači da je cijeli izvorni kod za ovaj program i poslužitelj s ko * Nedostaje ti funkcija i želiš je implementirati? Počni odmah! * Želiš provjeriti da se nigdje ništa ne šalje? Možeš! -Pridruži se našoj zajednici i postani dio sportskih entuzijasta i IT geekova iz cijelog svijeta. Nastavljamo raditi na prilagodbi i optimizaciji programa prilagođen našim potrebama. Volimo tvoj doprinos, stoga se slobodno uključi u bilo koje vrijeme i doprinesi svojim željama i idejama! +Pridruži se našoj zajednici i postani dio sportskih entuzijasta i IT geekova iz cijelog svijeta. Nastavljamo raditi na prilagodbi i optimizaciji programa prilagođen našim potrebama. Volimo tvoj doprinos, stoga se slobodno uključi u bilo koje vrijeme i predloži tvoje želje i ideje! -> pronađi izvorni kod na https://github.com/wger-project -> postavljaj pitanja ili se jednostavno predstavi na našem Discord poslužitelju https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png index f2dfd1d5..1f462666 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 c127530d..0a7a3bfe 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 8023e095..6c5db37e 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 83f265af..4155b2cd 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 1f7c16db..d8db2dda 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 1c9d0eda..1343fddf 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/it-IT/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png index 2fea9c71..c0ca1ba1 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 b1cb3ff6..cb0cd783 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 351b2b9a..932a2755 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 0a1bd8ba..0264015c 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 6e57f2f6..6a5debcb 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 b15e0887..77ae51ab 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/nb-NO/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png index 2f8bf4c5..c63c0f1c 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 e15f788e..54218a85 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 ec165111..2aa15d17 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 37edf1b2..d716a5c9 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 b5c61559..b351407c 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 b04c8127..c02c24c4 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/pl-PL/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png index f3f4e516..23fecaf0 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 bee98fa2..e1ba60fd 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 c041291e..c852f6b3 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 4af5a2c9..1d7ac832 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 06acea4d..2ac7bade 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 b4c5c0e6..087f4685 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/pt-BR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png index 3ccf2223..123399e7 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 4db82b13..eadac125 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 1accd772..fc623576 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 597dedd4..0e9706d6 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 f94b4aac..a340cd12 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 fd5e4d97..48094c61 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-PT/full_description.txt b/fastlane/metadata/android/pt-PT/full_description.txt new file mode 100644 index 00000000..60e8c3d9 --- /dev/null +++ b/fastlane/metadata/android/pt-PT/full_description.txt @@ -0,0 +1,39 @@ +Feito por amantes da vida fitness - organize sua saúde com o WGER, seu Gerenciador de Treinos! + +Você já encontrou o seu aplicativo de fitness nº1? Você adora criar suas próprias rotinas de treino? Não importa que tipo de fera esportiva você seja - todos nós temos algo em comum: adoramos acompanhar nossos dados de saúde <3 + +Nós não te julgamos por ainda gerenciar sua jornada fitness em um caderno, mas bem-vindo(a) ao século 21! + +Desenvolvemos um aplicativo de acompanhemento de saúde e fitness 100% gratuito para você, reduzido aos recursos mais relevantes para facilitar sua vida. Comece, treine e comemore seu progresso! + +O wger é um projeto open-source que é sobre: +* Seu Corpo +* Seus Treinos +* Seu Progresso +* Seus Dados + +Seu Corpo: +Não precisa pesquisar no Google os ingredientes de suas receitas favoritas - escolha suas refeições diárias entre mais de 78.000 itens e veja os valores nutricionais. Adicione as refeições ao plano nutricional e mantenha uma visão geral de sua dieta no calendário. + +Seus Treinos: +Você sabe o que é melhor para o seu corpo. Crie seus próprios treinos a partir de uma variedade de mais de 200 exercícios. Em seguida, use o Modo Academia para orientá-lo durante o treino, enquanto registra suas cargas com um clique. + +Seu Progresso: +Nunca perca de vista seus objetivos. Acompanhe seu peso e mantenha suas estatísticas. + +Seus Dados: +O wger é o seu diário fitness personalizado - mas você é dono(a) dos seus dados. Use a REST API para acessá-los e fazer coisas incríveis com eles. + +Obs.: Este aplicativo gratuito não é baseado em financiamentos adicionais e não pedimos que você doe dinheiro. Mais do que isso, é um projeto comunitário em constante crescimento. Portanto, esteja preparado(a) para novos recursos a qualquer momento! + +#CódigoAberto - o que isso significa? + +Código aberto significa que todo o código-fonte deste aplicativo e do servidor ao qual ele se conecta é gratuito e está disponível para qualquer pessoa: +* Você quer executar o wger em seu próprio servidor, para você ou para sua academia? Sinta-se à vontade! +* Está sentindo falta de um recurso e quer implementá-lo? Comece agora! +* Quer verificar se nenhum dado está sendo compartilhado? Você pode! + +Junte-se à nossa comunidade e faça parte dos entusiastas do esporte e geeks de TI de todo o mundo. Continuamos trabalhando para ajustar e otimizar o aplicativo de acordo com nossas necessidades. Amamos suas contribuições, então sinta-se à vontade para participar a qualquer momento e contribuir com seus desejos e ideias! + +-> encontre o código-fonte em https://github.com/wger-project +-> faça suas perguntas ou apenas diga Olá no nosso servidor do Discord https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/pt-PT/short_description.txt b/fastlane/metadata/android/pt-PT/short_description.txt new file mode 100644 index 00000000..064060fe --- /dev/null +++ b/fastlane/metadata/android/pt-PT/short_description.txt @@ -0,0 +1 @@ +Monitore seus treinos e dieta diff --git a/fastlane/metadata/android/pt-PT/title.txt b/fastlane/metadata/android/pt-PT/title.txt new file mode 100644 index 00000000..ea0df956 --- /dev/null +++ b/fastlane/metadata/android/pt-PT/title.txt @@ -0,0 +1 @@ +wger Workout Manager \ No newline at end of file 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 aeba637c..314133ef 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 c492e5d6..a8b1103e 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 71790b47..af61dc22 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 5aab8b04..78a3efb0 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 acf27004..67af6f41 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 145f417d..b55eb93e 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/tr-TR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png index f38600ee..0d8e810f 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 8539f92e..e08dc95f 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 6807102b..963720f2 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 b813b098..f6e907b3 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 a2b9d7c5..1fe13628 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 a9d4df79..5e4ebdfa 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/uk/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png index 5adfe3b7..4131a7a0 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 5fca1b2e..aa4f0ee0 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 3b266f9c..b5824d00 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 ca59421f..862bc79b 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 c0715759..44060cd5 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 74610f20..9ebd3b8e 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/zh-CN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png index 070dcbb1..afe82633 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 d1cb7447..b7543aa0 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 a7ed6366..b02065c4 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 1138a387..8f20d358 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 673889d5..3037553c 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 60c18543..258dea5d 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/flatpak/flatpak_meta.json b/flatpak/flatpak_meta.json index be92a836..5d408ead 100644 --- a/flatpak/flatpak_meta.json +++ b/flatpak/flatpak_meta.json @@ -23,6 +23,7 @@ "--share=network", "--socket=fallback-x11", "--socket=wayland", + "--socket=pulseaudio", "--device=dri" ] } \ No newline at end of file diff --git a/flatpak/scripts/pubspec.lock b/flatpak/scripts/pubspec.lock index 4ab45d80..d3d4f846 100644 --- a/flatpak/scripts/pubspec.lock +++ b/flatpak/scripts/pubspec.lock @@ -82,4 +82,4 @@ packages: source: hosted version: "1.3.1" sdks: - dart: ">=2.18.5 <3.0.0" + dart: ">=2.18.5 <4.0.0" diff --git a/integration_test/5_nutritional_plan.dart b/integration_test/5_nutritional_plan.dart index 1d2a5be9..2c702c46 100644 --- a/integration_test/5_nutritional_plan.dart +++ b/integration_test/5_nutritional_plan.dart @@ -22,7 +22,7 @@ Widget createNutritionalPlanScreen({locale = 'en'}) { id: 1, code: '123456787', name: 'Müsli', - creationDate: DateTime(2021, 5, 1), + created: DateTime(2021, 5, 1), energy: 500, carbohydrates: 10, carbohydratesSugar: 2, @@ -36,7 +36,7 @@ Widget createNutritionalPlanScreen({locale = 'en'}) { id: 1, code: '123456787', name: 'Milk', - creationDate: DateTime(2021, 5, 1), + created: DateTime(2021, 5, 1), energy: 500, carbohydrates: 10, carbohydratesSugar: 2, @@ -50,7 +50,7 @@ Widget createNutritionalPlanScreen({locale = 'en'}) { id: 1, code: '123456787', name: 'Apple', - creationDate: DateTime(2021, 5, 1), + created: DateTime(2021, 5, 1), energy: 500, carbohydrates: 10, carbohydratesSugar: 2, diff --git a/l10n.yaml b/l10n.yaml index b1cc1414..3c41bfca 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -2,3 +2,4 @@ arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart nullable-getter: false +preferred-supported-locales: [ en ] \ No newline at end of file diff --git a/lib/helpers/consts.dart b/lib/helpers/consts.dart index 4dcfb723..84f148b3 100644 --- a/lib/helpers/consts.dart +++ b/lib/helpers/consts.dart @@ -36,8 +36,12 @@ const DEFAULT_WEIGHT_UNIT = 1; /// Default impression for a workout session (neutral) const DEFAULT_IMPRESSION = 2; -/// Default weight unit is "repetition" -const DEFAULT_REPETITION_UNIT = 1; +// Weight and repetition units for the workout logs +const REP_UNIT_REPETITIONS = 1; +const REP_UNIT_TILL_FAILURE = 2; + +const WEIGHT_UNIT_KG = 1; +const WEIGHT_UNIT_LB = 2; /// Time to locally cache values such as ingredients, etc const DAYS_TO_CACHE = 20; diff --git a/lib/helpers/i18n.dart b/lib/helpers/i18n.dart index 9cf146fd..fc19f5e9 100644 --- a/lib/helpers/i18n.dart +++ b/lib/helpers/i18n.dart @@ -70,6 +70,9 @@ String getTranslation(String value, BuildContext context) { case 'Legs': return AppLocalizations.of(context).legs; + case 'Max Reps': + return AppLocalizations.of(context).max_reps; + case 'Miles': return AppLocalizations.of(context).miles; diff --git a/lib/helpers/misc.dart b/lib/helpers/misc.dart index 805ec1ed..26c34cc2 100644 --- a/lib/helpers/misc.dart +++ b/lib/helpers/misc.dart @@ -42,7 +42,7 @@ String repText( // rather "8 repetitions". If there is weight we want to output "8 x 50kg", // since the repetitions are implied. If other units are used, we always // print them - if (repetitionUnitObj.id != DEFAULT_REPETITION_UNIT || weight == 0 || weight == null) { + if (repetitionUnitObj.id != REP_UNIT_REPETITIONS || weight == 0 || weight == null) { out.add(repetitionUnitObj.name); } } diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index 0967ef42..9d10d3f6 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -1 +1,16 @@ -{} +{ + "userProfile": "ملفك الشخصي", + "@userProfile": {}, + "login": "تسجيل الدخول", + "@login": { + "description": "Text for login button" + }, + "logout": "تسجيل خروج", + "@logout": { + "description": "Text for logout button" + }, + "invalidUrl": "أدخل رابط صحيح من فضلك", + "@invalidUrl": { + "description": "Error message when the user enters an invalid URL, e.g. in the login form" + } +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 65f790f3..a5cc6fbf 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -241,6 +241,8 @@ }, "save": "Save", "@save": {}, + "verify": "Verify", + "@verify": {}, "addSet": "Add set", "@addSet": { "description": "Label for the button that adds a set (to a workout day)" @@ -717,6 +719,10 @@ "@legs": { "description": "Generated entry for translation for server strings" }, + "max_reps": "Max Reps", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, "miles": "Miles", "@miles": { "description": "Generated entry for translation for server strings" diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 27ec4bb0..4c15eaf9 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -7,7 +7,7 @@ "@kcal": { "description": "Energy in a meal in kilocalories, kcal" }, - "reps": "Reps", + "reps": "Repeticiones", "@reps": { "description": "Shorthand for repetitions, used when space constraints are tighter" }, @@ -721,5 +721,39 @@ "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" } } diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 431aa286..18e53ead 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -725,5 +725,35 @@ "seconds": "Secondes", "@seconds": {}, "until_failure": "Jusqu'à l'échec", - "@until_failure": {} + "@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": "Chercher également en termes anglais", + "@searchNamesInEnglish": {} } diff --git a/lib/l10n/app_hr.arb b/lib/l10n/app_hr.arb index 32bfd599..e4649307 100644 --- a/lib/l10n/app_hr.arb +++ b/lib/l10n/app_hr.arb @@ -43,17 +43,17 @@ "@invalidUsername": { "description": "Error message when the user enters an invalid username" }, - "customServerUrl": "URL instanca wger -a", + "customServerUrl": "URL wger instance", "@customServerUrl": { "description": "Label in the form where the users can enter their own wger instance" }, - "customServerHint": "Upiši adresu vlastitog poslužitelja, inače će se koristiti zadana", + "customServerHint": "Upiši adresu tvog poslužitelja, inače će se koristiti zadani", "@customServerHint": { "description": "Hint text for the form where the users can enter their own wger instance" }, - "registerInstead": "Umjesto toga se registriraj", + "registerInstead": "Nemaš račun? Registriraj se", "@registerInstead": {}, - "loginInstead": "Umjesto toga se prijavi", + "loginInstead": "Već imaš račun? Prijavi se", "@loginInstead": {}, "labelWorkoutPlans": "Planovi treninga", "@labelWorkoutPlans": { @@ -135,11 +135,11 @@ "@reps": { "description": "Shorthand for repetitions, used when space constraints are tighter" }, - "rir": "Rezervna ponavljanja", + "rir": "PUR", "@rir": { "description": "Shorthand for Repetitions In Reserve" }, - "rirNotUsed": "Rezervna ponavljanja se ne koriste", + "rirNotUsed": "PUR se ne koristi", "@rirNotUsed": { "description": "Label used in RiR slider when the RiR value is not used/saved for the current setting or log" }, @@ -179,7 +179,7 @@ }, "carbohydrates": "Ugljikohidrati", "@carbohydrates": {}, - "carbohydratesShort": "C", + "carbohydratesShort": "U", "@carbohydratesShort": { "description": "The first letter or short name of the word 'Carbohydrates', used in overviews" }, @@ -187,7 +187,7 @@ "@sugars": {}, "fat": "Masti", "@fat": {}, - "fatShort": "F", + "fatShort": "M", "@fatShort": { "description": "The first letter or short name of the word 'Fat', used in overviews" }, @@ -209,7 +209,7 @@ "@aboutContactUsTitle": { "description": "Title for contact us section in the about dialog" }, - "enterRepetitionsOrWeight": "Ispuni ponavljanja ili težinu za barem jedan od setova", + "enterRepetitionsOrWeight": "Upiši broj ponavljanja ili težinu za barem jednu seriju", "@enterRepetitionsOrWeight": { "description": "Error message when the user hasn't filled in the forms for exercise sets" }, @@ -221,7 +221,7 @@ "@selectExercise": { "description": "Error message when the user hasn't selected an exercise in the form" }, - "enterCharacters": "Upiši znakove između {min} i {max}", + "enterCharacters": "Upiši {min} do {max} znakova", "@enterCharacters": { "description": "Error message when the user hasn't entered the correct number of characters in a form", "type": "text", @@ -230,7 +230,7 @@ "max": {} } }, - "nrOfSets": "Broj setova po vježbi: {nrOfSets}", + "nrOfSets": "Broj serija po vježbi: {nrOfSets}", "@nrOfSets": { "description": "Label shown on the slider where the user selects the nr of sets", "type": "text", @@ -238,7 +238,7 @@ "nrOfSets": {} } }, - "setUnitsAndRir": "Postavi jedinice i rezervna ponavljanja", + "setUnitsAndRir": "Postavi jedinice i PUR", "@setUnitsAndRir": { "description": "Label shown on the slider where the user can toggle showing units and RiR", "type": "text" @@ -271,13 +271,13 @@ "@dataCopied": { "description": "Snackbar message to show on copying data to a new log entry" }, - "usernameValidChars": "Korisničko ime može sadržavati samo slova, brojeve i specijalne znakove @, +, ., -, and _", + "usernameValidChars": "Korisničko ime može sadržavati samo slova, brojeve i sljedeće znakove: @, +, ., -, _", "@usernameValidChars": { "description": "Error message when the user tries to register a username with forbidden characters" }, "logHelpEntries": "Ako u jednom danu postoji više od jednog unosa s istim brojem ponavljanja, ali različitim težinama, na dijagramu je prikazan samo unos s većom težinom.", "@logHelpEntries": {}, - "addSet": "Dodaj set", + "addSet": "Dodaj seriju", "@addSet": { "description": "Label for the button that adds a set (to a workout day)" }, @@ -305,7 +305,7 @@ "@reset": { "description": "Button text allowing the user to reset the entered values to the default" }, - "jumpTo": "Skoči na", + "jumpTo": "Prijeđi na", "@jumpTo": { "description": "Imperative. Label used in popup allowing the user to jump to a specific exercise while in the gym mode" }, @@ -345,7 +345,7 @@ "@goToToday": { "description": "Label on button to jump back to 'today' in the calendar widget" }, - "kcal": "Kcal", + "kcal": "kcal", "@kcal": { "description": "Energy in a meal in kilocalories, kcal" }, @@ -369,7 +369,7 @@ "@noWorkoutPlans": { "description": "Message shown when the user has no workout plans" }, - "amount": "Iznos", + "amount": "Količina", "@amount": { "description": "The amount (e.g. in grams) of an ingredient in a meal" }, @@ -427,7 +427,7 @@ "@equipment": { "description": "Equipment needed to perform an exercise" }, - "supersetWith": "u skupu setova sa", + "supersetWith": "u nasdkup sa", "@supersetWith": { "description": "Text used between exercise cards when adding a new set. Translate as something like 'in a superset with'" }, @@ -447,9 +447,9 @@ "@muscles": { "description": "(main) muscles trained by an exercise" }, - "dayDescriptionHelp": "Opis onoga što se radi na današnji dan (npr. 'Pull day') ili koji su dijelovi tijela trenirani (npr. 'Prsa i ramena')", + "dayDescriptionHelp": "Opis onoga što se radi na današnji dan (npr. „dan povlačenja”) ili koji su dijelovi tijela trenirani (npr. „prsa i ramena”)", "@dayDescriptionHelp": {}, - "setNr": "Set {nr}", + "setNr": "Serija br. {nr}", "@setNr": { "description": "Header in form indicating the number of the current set. Can also be translated as something like 'Set Nr. xy'.", "type": "text", @@ -457,7 +457,7 @@ "nr": {} } }, - "sameRepetitions": "Ako radiš ista ponavljanja i težinu za sve setove, ispuni jedan redak. Na primjer, za 4 seta jednostavno upiši 10 za ponavljanja, to automatski postaje „4 × 10”.", + "sameRepetitions": "Ako radiš ista ponavljanja i težinu za sve serije, ispuni jedan redak. Na primjer, za 4 serije jednostavno upiši 10 za ponavljanja, to automatski postaje „4 × 10”.", "@sameRepetitions": {}, "comment": "Komentar", "@comment": { @@ -477,21 +477,21 @@ }, "newDay": "Novi dan", "@newDay": {}, - "newSet": "Novi set", + "newSet": "Nova serija", "@newSet": { "description": "Header when adding a new set to a workout day" }, - "selectExercises": "Ako želiš izraditi skup setova, potraži nekoliko vježbi i one će se spojiti u jednu grupu", + "selectExercises": "Ako želiš izraditi nasdkup, traži i odaberi vježbe koje će se grupirati u jednu grupu", "@selectExercises": {}, - "gymMode": "Način rada u teretani", + "gymMode": "Modus teretane", "@gymMode": { "description": "Label when starting the gym mode" }, - "plateCalculator": "Ploče", + "plateCalculator": "Pločasti utezi", "@plateCalculator": { "description": "Label used for the plate calculator in the gym mode" }, - "plateCalculatorNotDivisible": "Nije moguće postići težinu s dostupnim pločama", + "plateCalculatorNotDivisible": "Nije moguće postići težinu s dostupnim pločastim utezima", "@plateCalculatorNotDivisible": { "description": "Error message when the current weight is not reachable with plates (e.g. 33.1 kg)" }, @@ -505,7 +505,7 @@ "@appUpdateTitle": {}, "appUpdateContent": "Ova verzija aplikacije nije kompatibilna s poslužiteljem. Aktualiziraj svoju aplikaciju.", "@appUpdateContent": {}, - "set": "Set", + "set": "Serija", "@set": { "description": "A set in a workout plan" }, @@ -556,5 +556,256 @@ "close": "Zatvori", "@close": { "description": "Translation for close" - } + }, + "enterMinCharacters": "Upiši barem {min} znakova", + "@enterMinCharacters": { + "description": "Error message when the user hasn't entered the minimum amount characters in a form", + "type": "text", + "placeholders": { + "min": {} + } + }, + "add_exercise_image_license": "Slike moraju biti kompatibilne s licencom CC BY SA. Ako si u nedoumici, prenesi samo svoje vlastite fotografije.", + "@add_exercise_image_license": {}, + "whatVariationsExist": "Koje varijante ove vježbe postoje?", + "@whatVariationsExist": {}, + "images": "Slike", + "@images": {}, + "alternativeNames": "Alternativna imena", + "@alternativeNames": {}, + "previous": "Prethodna", + "@previous": {}, + "oneNamePerLine": "Jedno ime po retku", + "@oneNamePerLine": {}, + "translation": "Prijevod", + "@translation": {}, + "addExercise": "Dodaj vježbu", + "@addExercise": {}, + "translateExercise": "Prevedi ovu vježbu", + "@translateExercise": {}, + "baseData": "Osnovni podaci na engleskom jeziku", + "@baseData": { + "description": "The base data for an exercise such as category, trained muscles, etc." + }, + "arms": "Ruke", + "@arms": { + "description": "Generated entry for translation for server strings" + }, + "back": "Leđa", + "@back": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Prsa", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "sz_bar": "Zaobljena šipka", + "@sz_bar": { + "description": "Generated entry for translation for server strings" + }, + "userProfile": "Tvoj profil", + "@userProfile": {}, + "exerciseList": "Popis vježbi", + "@exerciseList": {}, + "exercises": "Vježbe", + "@exercises": { + "description": "Multiple exercises for a workout" + }, + "exerciseName": "Ime vježbe", + "@exerciseName": { + "description": "Label for the name of a workout exercise" + }, + "selectEntry": "Odaberi unos", + "@selectEntry": {}, + "success": "Uspjeh", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "noMeasurementEntries": "Nemaš unose mjerenja", + "@noMeasurementEntries": {}, + "moreMeasurementEntries": "Dodaj novo mjerenje", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "variations": "Varijante", + "@variations": { + "description": "Variations of one exercise (e.g. benchpress and benchpress narrow)" + }, + "alsoKnownAs": "Poznato i kao: {aliases}", + "@alsoKnownAs": { + "placeholders": { + "aliases": {} + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmail": "Potvrđena e-mail adresa", + "@verifiedEmail": {}, + "unVerifiedEmail": "Nepotvrđena e-mail adresa", + "@unVerifiedEmail": {}, + "verifiedEmailInfo": "E-mail poruka za potvrdu je poslana na {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": {} + } + }, + "contributeExerciseWarning": "Vježbe možeš dodati samo ako je tvoj račun stariji od {days} dana i ako si potvrdio/la tvoju e-mail adresu", + "@contributeExerciseWarning": { + "description": "Number of days before which a person can add exercise", + "placeholders": { + "days": { + "type": "String", + "example": "14" + } + } + }, + "cacheWarning": "Zbog predmemoriranja, vidljivost promjena u aplikaciji može nešto potrajati.", + "@cacheWarning": {}, + "verifiedEmailReason": "Za dodavanje vježbi moraš potvrditi tvoju e-mail adresu", + "@verifiedEmailReason": {}, + "cardio": "Kardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Ekstenzije nogu", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "pull_up_bar": "Šipka za povlačenje", + "@pull_up_bar": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Ramena", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Triceps", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "swiss_ball": "Lopta za fitness", + "@swiss_ball": { + "description": "Generated entry for translation for server strings" + }, + "until_failure": "Do neuspjeha", + "@until_failure": { + "description": "Generated entry for translation for server strings" + }, + "none__bodyweight_exercise_": "ništa (vježba za tjelesnu težinu)", + "@none__bodyweight_exercise_": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "Sekunde", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "textPromptTitle": "Spreman?", + "@textPromptTitle": {}, + "barbell": "Šipka", + "@barbell": { + "description": "Generated entry for translation for server strings" + }, + "calves": "Lisni mišići", + "@calves": { + "description": "Generated entry for translation for server strings" + }, + "textPromptSubheading": "Počni pritiskom gumba radnje", + "@textPromptSubheading": {}, + "body_weight": "Tjelesna težina", + "@body_weight": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Kilometri", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilometara na sat", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "lats": "Leđni mišići", + "@lats": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Milja na sat", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Minute", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Ploče", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "lb": "funta", + "@lb": { + "description": "Generated entry for translation for server strings" + }, + "searchNamesInEnglish": "Također traži imena na engleskom jeziku", + "@searchNamesInEnglish": {}, + "language": "Jezik", + "@language": {}, + "aboutPageTitle": "Wger informacije", + "@aboutPageTitle": {}, + "abs": "Trbuh", + "@abs": { + "description": "Generated entry for translation for server strings" + }, + "gym_mat": "Podloga za treniranje", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "incline_bench": "Nagnuta klupa", + "@incline_bench": { + "description": "Generated entry for translation for server strings" + }, + "baseNameEnglish": "Sve vježbe trebaju osnovno ime na engleskom jeziku", + "@baseNameEnglish": {}, + "next": "Sljedeća", + "@next": {}, + "contributeExercise": "Doprinesi vježbu", + "@contributeExercise": {}, + "bench": "Klupa", + "@bench": { + "description": "Generated entry for translation for server strings" + }, + "dumbbell": "Ručni uteg", + "@dumbbell": { + "description": "Generated entry for translation for server strings" + }, + "biceps": "Bicepsi", + "@biceps": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Stražnjica", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "hamstrings": "Tetive koljena", + "@hamstrings": { + "description": "Generated entry for translation for server strings" + }, + "kettlebell": "Kuglasti uteg", + "@kettlebell": { + "description": "Generated entry for translation for server strings" + }, + "legs": "Noge", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Milje", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Maks. broj ponavljanja", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "verify": "Potvrdi", + "@verify": {} } diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 961ceb40..deedc3ed 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -207,9 +207,9 @@ "@labelWorkoutPlans": { "description": "Title for screen workout plans" }, - "loginInstead": "All'accesso", + "loginInstead": "Hai già un account? Registrati ora", "@loginInstead": {}, - "registerInstead": "Alla registrazione", + "registerInstead": "Non hai un account? Registrati ora", "@registerInstead": {}, "reset": "Rerimposta", "@reset": { @@ -584,5 +584,95 @@ "previous": "Precedente", "@previous": {}, "next": "Successivo", - "@next": {} + "@next": {}, + "gym_mat": "Materassino da palestra", + "@gym_mat": { + "description": "Generated entry for translation for server strings" + }, + "verifiedEmailInfo": "Un'email di verifica è stata inviata a {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": {} + } + }, + "oneNamePerLine": "Un nome per linea", + "@oneNamePerLine": {}, + "textPromptTitle": "Pronto a iniziare?", + "@textPromptTitle": {}, + "moreMeasurementEntries": "Aggiungi una nuova misura", + "@moreMeasurementEntries": { + "description": "Message shown when the user wants to add new measurement" + }, + "searchNamesInEnglish": "Cerca anche nei nomi in inglese", + "@searchNamesInEnglish": {}, + "verify": "Verifica", + "@verify": {}, + "legs": "Gambe", + "@legs": { + "description": "Generated entry for translation for server strings" + }, + "miles": "Miglia", + "@miles": { + "description": "Generated entry for translation for server strings" + }, + "seconds": "Secondi", + "@seconds": { + "description": "Generated entry for translation for server strings" + }, + "shoulders": "Spalle", + "@shoulders": { + "description": "Generated entry for translation for server strings" + }, + "max_reps": "Ripetizioni massime", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "kg": "kg", + "@kg": { + "description": "Generated entry for translation for server strings" + }, + "triceps": "Tricipiti", + "@triceps": { + "description": "Generated entry for translation for server strings" + }, + "chest": "Petto", + "@chest": { + "description": "Generated entry for translation for server strings" + }, + "selectEntry": "Per favore seleziona un elemento", + "@selectEntry": {}, + "success": "Completato", + "@success": { + "description": "Message when an action completed successfully, usually used as a heading" + }, + "verifiedEmailReason": "Devi verificare la tua email per contribuire agli esercizi", + "@verifiedEmailReason": {}, + "cardio": "Cardio", + "@cardio": { + "description": "Generated entry for translation for server strings" + }, + "quads": "Quadricipiti", + "@quads": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Chilometri all'ora", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "kilometers": "Chilometri", + "@kilometers": { + "description": "Generated entry for translation for server strings" + }, + "glutes": "Glutei", + "@glutes": { + "description": "Generated entry for translation for server strings" + }, + "minutes": "Minuti", + "@minutes": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Miglia per ora", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + } } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 9281a56c..4b35f9b6 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -29,7 +29,7 @@ "@invalidUsername": { "description": "Error message when the user enters an invalid username" }, - "customServerHint": "Digite o endereço do seu próprio servidor, caso contrário, o padrão será usado", + "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" }, @@ -715,5 +715,41 @@ } }, "cardio": "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" + } } diff --git a/lib/l10n/app_pt_BR.arb b/lib/l10n/app_pt_BR.arb new file mode 100644 index 00000000..986dfb29 --- /dev/null +++ b/lib/l10n/app_pt_BR.arb @@ -0,0 +1,44 @@ +{ + "nutritionalPlan": "Plano nutricional", + "@nutritionalPlan": {}, + "weight": "Peso", + "@weight": { + "description": "The weight of a workout log or body weight entry" + }, + "date": "Data", + "@date": { + "description": "The date of a workout log or body weight entry" + }, + "value": "Valor", + "@value": { + "description": "The value of a measurement entry" + }, + "unit": "Unidade", + "@unit": { + "description": "The unit used for a repetition (kg, time, etc.)" + }, + "edit": "Editar", + "@edit": {}, + "delete": "Excluir", + "@delete": {}, + "login": "Entrar", + "@login": { + "description": "Text for login button" + }, + "userProfile": "Seu perfil", + "@userProfile": {}, + "logout": "Sair", + "@logout": { + "description": "Text for logout button" + }, + "notes": "Notas", + "@notes": { + "description": "Personal notes, e.g. for a workout session" + }, + "description": "Descrição", + "@description": {}, + "register": "Inscrever-se", + "@register": { + "description": "Text for registration button" + } +} diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index c08bdab3..a6b78338 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -9,9 +9,9 @@ "@labelWorkoutPlans": { "description": "Title for screen workout plans" }, - "registerInstead": "Зарегистроваться вместо этого", + "registerInstead": "У вас нет аккаунта? Зарегистрируйтесь сейчас", "@registerInstead": {}, - "loginInstead": "Войти вместо этого", + "loginInstead": "Уже есть аккаунт? Войти", "@loginInstead": {}, "labelDashboard": "Панель управления", "@labelDashboard": { @@ -564,5 +564,238 @@ "placeholders": { "min": {} } + }, + "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": {} + }, + "description": "List of alternative names for an exercise" + }, + "verifiedEmailReason": "Вам необходимо подтвердить свой адрес электронной почты, чтобы добавлять упражнения", + "@verifiedEmailReason": {}, + "verifiedEmailInfo": "Письмо с подтверждением отправлено на {email}", + "@verifiedEmailInfo": { + "placeholders": { + "email": {} + } + }, + "alternativeNames": "Альтернативные названия", + "@alternativeNames": {}, + "oneNamePerLine": "Одно название на строку", + "@oneNamePerLine": {}, + "whatVariationsExist": "Какие варианты этого упражнения существуют, если таковые имеются?", + "@whatVariationsExist": {}, + "previous": "Предыдущее", + "@previous": {}, + "aboutPageTitle": "О Wger", + "@aboutPageTitle": {}, + "cacheWarning": "Из-за кэширования может пройти некоторое время, прежде чем изменения станут видны во всем приложении.", + "@cacheWarning": {}, + "legs": "Ноги", + "@legs": { + "description": "Generated entry for translation for server strings" } } diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb index 07ece58a..d9515a5c 100644 --- a/lib/l10n/app_tr.arb +++ b/lib/l10n/app_tr.arb @@ -721,5 +721,35 @@ "textPromptTitle": "Başlamaya hazır mısınız?", "@textPromptTitle": {}, "textPromptSubheading": "Başlamak için eylem düğmesine basın", - "@textPromptSubheading": {} + "@textPromptSubheading": {}, + "verify": "Doğrula", + "@verify": {}, + "max_reps": "Azami Tekrar Sayısı", + "@max_reps": { + "description": "Generated entry for translation for server strings" + }, + "plates": "Plates", + "@plates": { + "description": "Generated entry for translation for server strings" + }, + "kilometers_per_hour": "Kilometre/Saat", + "@kilometers_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "miles_per_hour": "Mil/Saat", + "@miles_per_hour": { + "description": "Generated entry for translation for server strings" + }, + "body_weight": "Vücut Ağırlığı", + "@body_weight": { + "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" + } } diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index d9b7f2eb..bd787a4f 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -621,7 +621,7 @@ "@legs": {}, "back": "Спина", "@back": {}, - "quads": "Квадроцикли", + "quads": "Квадрицепс", "@quads": {}, "arms": "Руки", "@arms": {}, @@ -721,5 +721,35 @@ "textPromptTitle": "Готові почати?", "@textPromptTitle": {}, "textPromptSubheading": "Натисніть кнопку дії, щоб почати", - "@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" + } } diff --git a/lib/main.dart b/lib/main.dart index ec00f217..9f7882d8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -50,8 +50,11 @@ import 'package:wger/theme/theme.dart'; import 'package:wger/widgets/core/about.dart'; import 'providers/auth.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_zxing/flutter_zxing.dart'; void main() { + zx.setLogEnabled(kDebugMode); // Needs to be called before runApp WidgetsFlutterBinding.ensureInitialized(); @@ -162,21 +165,6 @@ class MyApp extends StatelessWidget { }, localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, - - // Workaround for https://github.com/flutter/flutter/issues/100857 - localeResolutionCallback: (deviceLocale, supportedLocales) { - if (deviceLocale != null) { - for (final supportedLocale in supportedLocales) { - // Since we currently don't support any country specific locales - // such as de-DE and de-AT, it's sufficient to just check it like - // this. Otherwise we will need more logic with .countryCode - if (supportedLocale.languageCode == deviceLocale.languageCode) { - return supportedLocale; - } - } - } - return const Locale('en'); - }, ), ), ); diff --git a/lib/models/exercises/base.dart b/lib/models/exercises/base.dart index 14d7e3a2..5c1519ce 100644 --- a/lib/models/exercises/base.dart +++ b/lib/models/exercises/base.dart @@ -39,11 +39,11 @@ class ExerciseBase extends Equatable { @JsonKey(required: true, name: 'variations') final int? variationId; - @JsonKey(required: true, name: 'creation_date') - final DateTime? creationDate; + @JsonKey(required: true, name: 'created') + final DateTime? created; - @JsonKey(required: true, name: 'update_date') - final DateTime? updateDate; + @JsonKey(required: true, name: 'last_update') + final DateTime? lastUpdate; @JsonKey(required: true, name: 'category') late int categoryId; @@ -81,8 +81,8 @@ class ExerciseBase extends Equatable { ExerciseBase({ this.id, this.uuid, - this.creationDate, - this.updateDate, + this.created, + this.lastUpdate, this.variationId, List? muscles, List? musclesSecondary, @@ -115,7 +115,7 @@ class ExerciseBase extends Equatable { } if (exercises != null) { - this.translations = exercises; + translations = exercises; } if (videos != null) { @@ -166,8 +166,8 @@ class ExerciseBase extends Equatable { List get props => [ id, uuid, - creationDate, - updateDate, + created, + lastUpdate, category, equipment, muscles, diff --git a/lib/models/exercises/base.g.dart b/lib/models/exercises/base.g.dart index 42f5bd9d..d9f7c36e 100644 --- a/lib/models/exercises/base.g.dart +++ b/lib/models/exercises/base.g.dart @@ -13,8 +13,8 @@ ExerciseBase _$ExerciseBaseFromJson(Map json) { 'id', 'uuid', 'variations', - 'creation_date', - 'update_date', + 'created', + 'last_update', 'category', 'muscles', 'muscles_secondary', @@ -24,9 +24,8 @@ ExerciseBase _$ExerciseBaseFromJson(Map json) { return ExerciseBase( id: json['id'] as int?, uuid: json['uuid'] as String?, - creationDate: - json['creation_date'] == null ? null : DateTime.parse(json['creation_date'] as String), - updateDate: json['update_date'] == null ? null : DateTime.parse(json['update_date'] as String), + created: json['created'] == null ? null : DateTime.parse(json['created'] as String), + lastUpdate: json['last_update'] == null ? null : DateTime.parse(json['last_update'] as String), variationId: json['variations'] as int?, ) ..categoryId = json['category'] as int @@ -40,8 +39,8 @@ Map _$ExerciseBaseToJson(ExerciseBase instance) => json) { 'id', 'uuid', 'language', - 'creation_date', + 'created', 'exercise_base', 'name', 'description' @@ -22,8 +22,7 @@ Translation _$TranslationFromJson(Map json) { return Translation( id: json['id'] as int?, uuid: json['uuid'] as String?, - creationDate: - json['creation_date'] == null ? null : DateTime.parse(json['creation_date'] as String), + created: json['created'] == null ? null : DateTime.parse(json['created'] as String), name: json['name'] as String, description: json['description'] as String, baseId: json['exercise_base'] as int?, @@ -34,7 +33,7 @@ Map _$TranslationToJson(Translation instance) => json) => _$IngredientFromJson(json); + Map toJson() => _$IngredientToJson(this); } diff --git a/lib/models/nutrition/ingredient.g.dart b/lib/models/nutrition/ingredient.g.dart index bb7edb7c..d0ea8cfa 100644 --- a/lib/models/nutrition/ingredient.g.dart +++ b/lib/models/nutrition/ingredient.g.dart @@ -13,7 +13,7 @@ Ingredient _$IngredientFromJson(Map json) { 'id', 'code', 'name', - 'creation_date', + 'created', 'energy', 'carbohydrates', 'carbohydrates_sugar', @@ -28,7 +28,7 @@ Ingredient _$IngredientFromJson(Map json) { id: json['id'] as int, code: json['code'] as String?, name: json['name'] as String, - creationDate: DateTime.parse(json['creation_date'] as String), + created: DateTime.parse(json['created'] as String), energy: json['energy'] as int, carbohydrates: stringToNum(json['carbohydrates'] as String?), carbohydratesSugar: stringToNum(json['carbohydrates_sugar'] as String?), @@ -47,7 +47,7 @@ Map _$IngredientToJson(Ingredient instance) => (), muscles: musclesPrimary.cast(), diff --git a/lib/providers/workout_plans.dart b/lib/providers/workout_plans.dart index f00048a4..47dcea35 100644 --- a/lib/providers/workout_plans.dart +++ b/lib/providers/workout_plans.dart @@ -85,7 +85,7 @@ class WorkoutPlansProvider with ChangeNotifier { /// Return the default weight unit (reps) RepetitionUnit get defaultRepetitionUnit { - return _repetitionUnit.firstWhere((element) => element.id == DEFAULT_REPETITION_UNIT); + return _repetitionUnit.firstWhere((element) => element.id == REP_UNIT_REPETITIONS); } List getPlans() { diff --git a/lib/screens/auth_screen.dart b/lib/screens/auth_screen.dart index 000b687a..54fe55c7 100644 --- a/lib/screens/auth_screen.dart +++ b/lib/screens/auth_screen.dart @@ -246,12 +246,13 @@ class _AuthCardState extends State { textInputAction: TextInputAction.next, keyboardType: TextInputType.emailAddress, validator: (value) { + if (value == null || value.isEmpty) { + return AppLocalizations.of(context).invalidUsername; + } if (!RegExp(r'^[\w.@+-]+$').hasMatch(value!)) { return AppLocalizations.of(context).usernameValidChars; } - if (value.isEmpty) { - return AppLocalizations.of(context).invalidUsername; - } + return null; }, inputFormatters: [FilteringTextInputFormatter.deny(RegExp(r'\s\b|\b\s'))], diff --git a/lib/screens/home_tabs_screen.dart b/lib/screens/home_tabs_screen.dart index b160c618..6cdfcbf8 100644 --- a/lib/screens/home_tabs_screen.dart +++ b/lib/screens/home_tabs_screen.dart @@ -85,13 +85,18 @@ class _HomeTabsScreenState extends State with SingleTickerProvid // Base data log('Loading base data'); - await Future.wait([ - authProvider.setServerVersion(), - userProvider.fetchAndSetProfile(), - workoutPlansProvider.fetchAndSetUnits(), - nutritionPlansProvider.fetchIngredientsFromCache(), - exercisesProvider.fetchAndSetExercises(), - ]); + try { + await Future.wait([ + authProvider.setServerVersion(), + userProvider.fetchAndSetProfile(), + workoutPlansProvider.fetchAndSetUnits(), + nutritionPlansProvider.fetchIngredientsFromCache(), + exercisesProvider.fetchAndSetExercises(), + ]); + } catch (e) { + log('fire! fire!'); + log(e.toString()); + } // Plans, weight and gallery log('Loading plans, weight, measurements and gallery'); diff --git a/lib/widgets/nutrition/widgets.dart b/lib/widgets/nutrition/widgets.dart index bf2f0ef1..2cffec1e 100644 --- a/lib/widgets/nutrition/widgets.dart +++ b/lib/widgets/nutrition/widgets.dart @@ -16,9 +16,12 @@ * along with this program. If not, see . */ +import 'dart:developer'; +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart'; +//import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_typeahead/flutter_typeahead.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -29,11 +32,29 @@ import 'package:wger/helpers/ui.dart'; import 'package:wger/providers/nutrition.dart'; import 'package:wger/widgets/core/core.dart'; +import 'package:flutter_zxing/flutter_zxing.dart'; + +class ScanReader extends StatelessWidget { + String? scannedr; + + @override + Widget build(BuildContext context) => Scaffold( + body: ReaderWidget( + onScan: (result) { + scannedr = result.text; + Navigator.pop(context, scannedr); + }, + ), + ); +} + class IngredientTypeahead extends StatefulWidget { final TextEditingController _ingredientController; final TextEditingController _ingredientIdController; String? barcode = ''; + //Code? result; + late final bool? test; final bool showScanner; @@ -49,29 +70,25 @@ class IngredientTypeahead extends StatefulWidget { _IngredientTypeaheadState createState() => _IngredientTypeaheadState(); } -Future scanBarcode(BuildContext context) async { - String barcode; - try { - barcode = await FlutterBarcodeScanner.scanBarcode( - '#ff6666', - AppLocalizations.of(context).close, - true, - ScanMode.BARCODE, - ); - - if (barcode.compareTo('-1') == 0) { - return ''; - } - } on PlatformException { - return ''; - } - - return barcode; -} - class _IngredientTypeaheadState extends State { var _searchEnglish = true; + Future readerscan(BuildContext context) async { + String scannedcode; + try { + scannedcode = + await Navigator.of(context).push(MaterialPageRoute(builder: (context) => ScanReader())); + + if (scannedcode.compareTo('-1') == 0) { + return ''; + } + } on PlatformException { + return ''; + } + + return scannedcode; + } + @override Widget build(BuildContext context) { return Column( @@ -137,7 +154,7 @@ class _IngredientTypeaheadState extends State { onPressed: () async { try { if (!widget.test!) { - widget.barcode = await scanBarcode(context); + widget.barcode = await readerscan(context); } if (widget.barcode!.isNotEmpty) { @@ -196,6 +213,9 @@ class _IngredientTypeaheadState extends State { } } catch (e) { showErrorDialog(e, context); + // Need to pop back since reader scan is a widget + // otherwise returns null when back button is pressed + return Navigator.pop(context); } }, icon: const FaIcon(FontAwesomeIcons.barcode), diff --git a/lib/widgets/user/forms.dart b/lib/widgets/user/forms.dart index 39fb80a7..14e1f28b 100644 --- a/lib/widgets/user/forms.dart +++ b/lib/widgets/user/forms.dart @@ -22,6 +22,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; import 'package:wger/models/user/profile.dart'; import 'package:wger/providers/user.dart'; +import 'package:wger/theme/theme.dart'; class UserProfileForm extends StatelessWidget { late final Profile _profile; @@ -40,39 +41,23 @@ class UserProfileForm extends StatelessWidget { child: Column( children: [ ListTile( + leading: const Icon(Icons.person, color: wgerPrimaryColor), title: Text(AppLocalizations.of(context).username), subtitle: Text(_profile.username), ), ListTile( - title: Text( - _profile.emailVerified - ? AppLocalizations.of(context).verifiedEmail - : AppLocalizations.of(context).unVerifiedEmail, - ), - subtitle: Text(AppLocalizations.of(context).verifiedEmailReason), - trailing: _profile.emailVerified - ? const Icon(Icons.mark_email_read, color: Colors.green) - : const Icon(Icons.forward_to_inbox), - onTap: () async { - // Email is already verified - if (_profile.emailVerified) { - return; - } - - // Verify - await context.read().verifyEmail(); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - AppLocalizations.of(context).verifiedEmailInfo(_profile.email), - ), - ), - ); - }, - ), - ListTile( + leading: const Icon(Icons.email_rounded, color: wgerPrimaryColor), title: TextFormField( - decoration: InputDecoration(labelText: AppLocalizations.of(context).email), + decoration: InputDecoration( + labelText: _profile.emailVerified + ? AppLocalizations.of(context).verifiedEmail + : AppLocalizations.of(context).unVerifiedEmail, + suffixIcon: _profile.emailVerified + ? const Icon( + Icons.check_circle, + color: Colors.green, + ) + : null), controller: emailController, keyboardType: TextInputType.emailAddress, onSaved: (newValue) { @@ -86,8 +71,30 @@ class UserProfileForm extends StatelessWidget { }, ), ), + if (!_profile.emailVerified) + OutlinedButton( + onPressed: () async { + // Email is already verified + if (_profile.emailVerified) { + return; + } + + // Verify + await context.read().verifyEmail(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + AppLocalizations.of(context).verifiedEmailInfo(_profile.email), + ), + ), + ); + }, + child: Text(AppLocalizations.of(context).verify), + ), ElevatedButton( - child: Text(AppLocalizations.of(context).save), + style: ElevatedButton.styleFrom( + backgroundColor: wgerPrimaryButtonColor, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(50))), onPressed: () async { // Validate and save the current values to the weightEntry final isValid = _form.currentState!.validate(); @@ -103,6 +110,7 @@ class UserProfileForm extends StatelessWidget { SnackBar(content: Text(AppLocalizations.of(context).successfullySaved)), ); }, + child: Text(AppLocalizations.of(context).save), ), ], ), diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index f6f23bfe..7299b5cf 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,9 +6,13 @@ #include "generated_plugin_registrant.h" +#include #include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index f16b4c34..7566c769 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,10 +3,12 @@ # list(APPEND FLUTTER_PLUGIN_LIST + file_selector_linux url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + flutter_zxing ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 5cd93ff5..fa46ecee 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,12 +5,14 @@ import FlutterMacOS import Foundation +import file_selector_macos import package_info_plus import rive_common import shared_preferences_foundation import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) RivePlugin.register(with: registry.registrar(forPlugin: "RivePlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 70ca801f..c8ad57ec 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -25,6 +25,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.1" + ansi_styles: + dependency: transitive + description: + name: ansi_styles + sha256: "9c656cc12b3c27b17dd982b2cc5c0cfdfbdabd7bc8f3ae5e8542d9867b47ce8a" + url: "https://pub.dev" + source: hosted + version: "0.3.2+1" archive: dependency: transitive description: @@ -121,6 +129,46 @@ packages: url: "https://pub.dev" source: hosted version: "8.5.0" + camera: + dependency: transitive + description: + name: camera + sha256: ebebead3d5ec3d148249331d751d462d7e8c98102b8830a9b45ec96a2bd4333f + url: "https://pub.dev" + source: hosted + version: "0.10.5+2" + camera_android: + dependency: transitive + description: + name: camera_android + sha256: f83e406d34f5faa80bf0f5c3beee4b4c11da94a94e9621c1bb8e312988621b4b + url: "https://pub.dev" + source: hosted + version: "0.10.8+2" + camera_avfoundation: + dependency: transitive + description: + name: camera_avfoundation + sha256: "1a416e452b30955b392f4efbf23291d3f2ba3660a85e1628859eb62d2a2bab26" + url: "https://pub.dev" + source: hosted + version: "0.9.13+2" + camera_platform_interface: + dependency: transitive + description: + name: camera_platform_interface + sha256: "60fa0bb62a4f3bf3a7c413e31e4cd01b69c779ccc8e4668904a24581b86c316b" + url: "https://pub.dev" + source: hosted + version: "2.5.1" + camera_web: + dependency: transitive + description: + name: camera_web + sha256: bcbd775fb3a9d51cc3ece899d54ad66f6306410556bac5759f78e13f9228841f + url: "https://pub.dev" + source: hosted + version: "0.3.1+4" carousel_slider: dependency: "direct main" description: @@ -145,6 +193,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.1" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" + source: hosted + version: "1.3.1" charts_common: dependency: transitive description: @@ -173,10 +229,18 @@ packages: dependency: "direct dev" description: name: cider - sha256: "714a853bf92701b982496df0bd601c0cf2d882cfc1f2d41ae9aff2b20cee016a" + sha256: "74d96930575f97d83e0a3a5cd26d27d10c38961b1b41346eebe5baabf0f56940" url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.1.6" + cli_launcher: + dependency: transitive + description: + name: cli_launcher + sha256: "5e7e0282b79e8642edd6510ee468ae2976d847a0a29b3916e85f5fa1bfe24005" + url: "https://pub.dev" + source: hosted + version: "0.3.1" cli_util: dependency: transitive description: @@ -209,6 +273,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.17.0" + conventional_commit: + dependency: transitive + description: + name: conventional_commit + sha256: dec15ad1118f029c618651a4359eb9135d8b88f761aa24e4016d061cd45948f2 + url: "https://pub.dev" + source: hosted + version: "0.6.0+1" convert: dependency: transitive description: @@ -289,6 +361,38 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: d17c5e450192cdc40b718804dfb4eaf79a71bed60ee9530703900879ba50baa3 + url: "https://pub.dev" + source: hosted + version: "0.9.1+3" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: "6290eec24fc4cc62535fe609e0c6714d3c1306191dc8c3b0319eaecc09423a3a" + url: "https://pub.dev" + source: hosted + version: "0.9.2" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: "2a7f4bbf7bd2f022ecea85bfb1754e87f7dd403a9abc17a84a4fa2ddfe2abc0a" + url: "https://pub.dev" + source: hosted + version: "2.5.1" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: ef246380b66d1fb9089fc65622c387bf3780bca79f533424c31d07f12c2c7fd8 + url: "https://pub.dev" + source: hosted + version: "0.9.2" fixnum: dependency: transitive description: @@ -327,10 +431,10 @@ packages: dependency: "direct main" description: name: flutter_html - sha256: "342c7908f0a67bcec62b6e0f7cf23e23bafe7f64693665dd35be98d5e783bdfd" + sha256: "02ad69e813ecfc0728a455e4bf892b9379983e050722b1dce00192ee2e41d1ee" url: "https://pub.dev" source: hosted - version: "3.0.0-alpha.6" + version: "3.0.0-beta.2" flutter_keyboard_visibility: dependency: transitive description: @@ -391,10 +495,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" flutter_localizations: dependency: "direct main" description: flutter @@ -412,10 +516,10 @@ packages: dependency: "direct main" description: name: flutter_staggered_grid_view - sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07" + sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395" url: "https://pub.dev" source: hosted - version: "0.6.2" + version: "0.7.0" flutter_svg: dependency: "direct main" description: @@ -433,15 +537,23 @@ packages: dependency: "direct main" description: name: flutter_typeahead - sha256: "721610b3d61814efa13fb5f720a6781bc123cd51b7e01f5a45d7c92124376644" + sha256: a3539f7a90246b152f569029dedcf0b842532d3f2a440701b520e0bf2acbcf42 url: "https://pub.dev" source: hosted - version: "4.3.8" + version: "4.6.2" flutter_web_plugins: dependency: transitive description: flutter source: sdk version: "0.0.0" + flutter_zxing: + dependency: "direct main" + description: + name: flutter_zxing + sha256: b25efe5ac91fe7a51aa8bfea7aca7435285b911b8758b7da38b7f037bad62c35 + url: "https://pub.dev" + source: hosted + version: "1.1.2" font_awesome_flutter: dependency: "direct main" description: @@ -523,10 +635,10 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "3da954c3b8906d82ecb50fd5e2b5401758f06d5678904eed6cbc06172283a263" + sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c url: "https://pub.dev" source: hosted - version: "0.8.7+4" + version: "0.8.9" image_picker_android: dependency: transitive description: @@ -551,14 +663,38 @@ packages: url: "https://pub.dev" source: hosted version: "0.8.7+3" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "1d8f9a97178d6b8a035f1d2765f17f8ca3d36a40d5594e742a481b1e002f20be" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: ff094b36d6c06200808f733144a033e45b4e17d59524e1cf7d2af7e4cb94e1ab + url: "https://pub.dev" + source: hosted + version: "0.2.0" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "1991219d9dbc42a99aff77e663af8ca51ced592cd6685c9485e3458302d3d4f8" + sha256: "7c7b96bb9413a9c28229e717e6fd1e3edd1cc5569c1778fcca060ecf729b65ee" url: "https://pub.dev" source: hosted - version: "2.6.3" + version: "2.8.0" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: bf77b819eb62c487e6af53b9eb213adc12bd060ef7e43f3b1dd69c53cc24a61d + url: "https://pub.dev" + source: hosted + version: "0.2.0" integration_test: dependency: "direct dev" description: flutter @@ -620,6 +756,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + list_counter: + dependency: transitive + description: + name: list_counter + sha256: c447ae3dfcd1c55f0152867090e67e219d42fe6d4f2807db4bbe8b8d69912237 + url: "https://pub.dev" + source: hosted + version: "1.0.2" logging: dependency: transitive description: @@ -660,6 +804,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + melos: + dependency: transitive + description: + name: melos + sha256: ccbb6ecd8bb3f08ae8f9ce22920d816bff325a98940c845eda0257cd395503ac + url: "https://pub.dev" + source: hosted + version: "3.1.0" meta: dependency: transitive description: @@ -692,6 +844,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.3" + mustache_template: + dependency: transitive + description: + name: mustache_template + sha256: a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c + url: "https://pub.dev" + source: hosted + version: "2.0.0" nested: dependency: transitive description: @@ -708,14 +868,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" - numerus: - dependency: transitive - description: - name: numerus - sha256: "436759d84f233b40107d0cc31cfa92d24e0960afeb2e506be70926d4cddffd9e" - url: "https://pub.dev" - source: hosted - version: "2.0.0" package_config: dependency: transitive description: @@ -728,10 +880,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "10259b111176fba5c505b102e3a5b022b51dd97e30522e906d6922c745584745" + sha256: ceb027f6bc6a60674a233b4a90a7658af1aebdea833da0b5b53c1e9821a78c7b url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.0.2" package_info_plus_platform_interface: dependency: transitive description: @@ -804,6 +956,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + pointer_interceptor: + dependency: transitive + description: + name: pointer_interceptor + sha256: "6aa680b30d96dccef496933d00208ad25f07e047f644dc98ce03ec6141633a9a" + url: "https://pub.dev" + source: hosted + version: "0.9.3+4" pool: dependency: transitive description: @@ -820,6 +980,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.4" + prompts: + dependency: transitive + description: + name: prompts + sha256: "3773b845e85a849f01e793c4fc18a45d52d7783b4cb6c0569fad19f9d0a774a1" + url: "https://pub.dev" + source: hosted + version: "2.0.0" provider: dependency: "direct main" description: @@ -836,6 +1004,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + pub_updater: + dependency: transitive + description: + name: pub_updater + sha256: "42890302ab2672adf567dc2b20e55b4ecc29d7e19c63b6b98143ab68dd717d3a" + url: "https://pub.dev" + source: hosted + version: "0.2.4" + pubspec: + dependency: transitive + description: + name: pubspec + sha256: f534a50a2b4d48dc3bc0ec147c8bd7c304280fff23b153f3f11803c4d49d927e + url: "https://pub.dev" + source: hosted + version: "2.3.0" pubspec_parse: dependency: transitive description: @@ -844,6 +1028,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.3" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" rfc_6901: dependency: transitive description: @@ -856,26 +1048,26 @@ packages: dependency: "direct main" description: name: rive - sha256: f7f365ee0e6cf0af99fb239bc3424370ca6ee2b9ad6fc879b1a79ba5e3b40770 + sha256: f3b8af0898c987d68019e91d92257edd902c28c816e49de033a7272e86bd5425 url: "https://pub.dev" source: hosted - version: "0.10.4" + version: "0.11.4" rive_common: dependency: transitive description: name: rive_common - sha256: "7c4be235d75c34a0f257b4487c0cc314188aa2f9a6c177d34f02df53d7c25831" + sha256: f6687f9d70e6fd3888a9b0e9c0b307966d2ce74cf00cfb01dce906c3bbada52f url: "https://pub.dev" source: hosted - version: "0.0.5" + version: "0.1.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022" + sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" shared_preferences_android: dependency: transitive description: @@ -904,10 +1096,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d + sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" shared_preferences_web: dependency: transitive description: @@ -1057,6 +1249,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + uri: + dependency: transitive + description: + name: uri + sha256: "889eea21e953187c6099802b7b4cf5219ba8f3518f604a1033064d45b1b8268a" + url: "https://pub.dev" + source: hosted + version: "1.0.0" url_launcher: dependency: "direct main" description: @@ -1173,10 +1373,10 @@ packages: dependency: "direct main" description: name: video_player - sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd + sha256: "3fd106c74da32f336dc7feb65021da9b0207cb3124392935f1552834f7cce822" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.7.0" video_player_android: dependency: transitive description: @@ -1273,6 +1473,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + yaml_edit: + dependency: transitive + description: + name: yaml_edit + sha256: "1579d4a0340a83cf9e4d580ea51a16329c916973bffd5bd4b45e911b25d46bfd" + url: "https://pub.dev" + source: hosted + version: "2.1.1" sdks: dart: ">=2.19.0 <3.0.0" - flutter: ">=3.7.0-0" + flutter: ">=3.7.0" diff --git a/pubspec.yaml b/pubspec.yaml index 213977b5..07aef810 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Self hosted workout, nutrition and weight manager. # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev +publish_to: "none" # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 @@ -21,10 +21,10 @@ 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.5.4+31 +version: 1.5.6+34 environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.17.0 <3.0.0' dependencies: flutter: @@ -38,26 +38,27 @@ dependencies: cupertino_icons: ^1.0.5 equatable: ^2.0.5 flutter_calendar_carousel: ^2.4.1 - flutter_html: ^3.0.0-alpha.6 - flutter_typeahead: ^4.3.8 + flutter_html: ^3.0.0-beta.2 + flutter_typeahead: ^4.6.2 font_awesome_flutter: ^10.4.0 http: ^0.13.5 - image_picker: ^0.8.7+3 + image_picker: ^0.8.9 intl: ^0.17.0 json_annotation: ^4.8.1 version: ^3.0.2 - package_info_plus: ^3.1.2 + package_info_plus: ^4.0.2 provider: ^6.0.5 - rive: ^0.10.4 - shared_preferences: ^2.1.1 + rive: ^0.11.4 + shared_preferences: ^2.2.0 table_calendar: ^3.0.8 url_launcher: ^6.1.11 flutter_barcode_scanner: ^2.0.0 - video_player: ^2.6.1 - flutter_staggered_grid_view: ^0.6.2 + video_player: ^2.7.0 + flutter_staggered_grid_view: ^0.7.0 carousel_slider: ^4.2.1 multi_select_flutter: ^4.1.3 flutter_svg: ^2.0.5 + flutter_zxing: ^1.1.2 flex_seed_scheme: ^1.2.4 dev_dependencies: @@ -70,8 +71,8 @@ dev_dependencies: json_serializable: ^6.6.2 mockito: ^5.4.0 network_image_mock: ^2.1.1 - flutter_lints: ^2.0.1 - cider: ^0.1.5 + flutter_lints: ^2.0.2 + cider: ^0.1.6 flutter_icons: android: true @@ -83,13 +84,11 @@ flutter_icons: generate: true image_path: "assets/images/logo.png" - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. diff --git a/test/fixtures/exercises/exercisebaseinfo_response.json b/test/fixtures/exercises/exercisebaseinfo_response.json index ad230105..097c2b03 100644 --- a/test/fixtures/exercises/exercisebaseinfo_response.json +++ b/test/fixtures/exercises/exercisebaseinfo_response.json @@ -1,6 +1,9 @@ { "id": 9, "uuid": "1b020b3a-3732-4c7e-92fd-a0cec90ed69b", + "created": "2023-08-06T11:20:14.368566+02:00", + "last_update": "2023-04-22T12:18:33.904542+02:00", + "last_update_global": "2023-04-22T12:18:33.907201+02:00", "category": { "id": 10, "name": "Abs" @@ -152,7 +155,7 @@ "comment": "have fun" } ], - "creation_date": "2015-08-03", + "created": "2015-08-03T18:22:54.909478+02:00", "language": 2, "license": 2, "license_author": "deusinvictus" @@ -181,7 +184,7 @@ "comment": "pasatelo bien!" } ], - "creation_date": "2022-03-14", + "created": "2022-03-14T18:22:54.909478+02:00", "language": 3, "license": 2, "license_author": "tester McTestface" @@ -200,7 +203,7 @@ "comment": "mach die Übung richtig" } ], - "creation_date": "2022-03-14", + "created": "2022-03-14T18:22:54.909478+02:00", "language": 1, "license": 2, "license_author": "tester McTestface" diff --git a/test/fixtures/nutrition/ingredient_10065_response.json b/test/fixtures/nutrition/ingredient_10065_response.json index 920fbfa2..566c76f8 100644 --- a/test/fixtures/nutrition/ingredient_10065_response.json +++ b/test/fixtures/nutrition/ingredient_10065_response.json @@ -2,8 +2,8 @@ "id": 10065, "code": "0043647440020", "name": "'Old Times' Orange Fine Cut Marmalade", - "creation_date": "2020-12-20", - "update_date": "2022-08-09", + "created": "2020-12-20T01:00:00+01:00", + "last_update": "2022-08-09T10:23:11+02:00", "energy": 269, "protein": "0.000", "carbohydrates": "67.000", diff --git a/test/fixtures/nutrition/ingredient_58300_response.json b/test/fixtures/nutrition/ingredient_58300_response.json index 1dbe5c8d..8d17dd70 100644 --- a/test/fixtures/nutrition/ingredient_58300_response.json +++ b/test/fixtures/nutrition/ingredient_58300_response.json @@ -2,8 +2,8 @@ "id": 58300, "code": "4071800000992", "name": "1688 Mehrkorn", - "creation_date": "2020-12-20", - "update_date": "2022-08-09", + "created": "2020-12-20T01:00:00+02:00", + "last_update": "2022-08-09T18:55:00+02:00", "energy": 229, "protein": "7.680", "carbohydrates": "35.700", diff --git a/test/fixtures/nutrition/ingredient_59887_response.json b/test/fixtures/nutrition/ingredient_59887_response.json index 3aa08b42..b3af411a 100644 --- a/test/fixtures/nutrition/ingredient_59887_response.json +++ b/test/fixtures/nutrition/ingredient_59887_response.json @@ -2,8 +2,8 @@ "id": 59887, "code": "4311501354155", "name": "Baked Beans", - "creation_date": "2020-12-20", - "update_date": "2022-08-09", + "created": "2020-12-20T23:10:54+01:00", + "last_update": "2022-08-09T13:32:41+01:00", "energy": 86, "protein": "4.400", "carbohydrates": "11.000", diff --git a/test/fixtures/nutrition/nutritional_plan_info_detail_response.json b/test/fixtures/nutrition/nutritional_plan_info_detail_response.json index f87bae1a..dc71ce54 100644 --- a/test/fixtures/nutrition/nutritional_plan_info_detail_response.json +++ b/test/fixtures/nutrition/nutritional_plan_info_detail_response.json @@ -46,8 +46,8 @@ "id": 59887, "code": "4311501354155", "name": "Baked Beans", - "creation_date": "2020-12-20", - "update_date": "2022-08-09", + "created": "2020-12-20", + "last_update": "2022-08-09", "energy": 86, "protein": "4.400", "carbohydrates": "11.000", @@ -84,8 +84,8 @@ "id": 58300, "code": "4071800000992", "name": "1688 Mehrkorn", - "creation_date": "2020-12-20", - "update_date": "2022-08-09", + "created": "2020-12-20", + "last_update": "2022-08-09", "energy": 229, "protein": "7.680", "carbohydrates": "35.700", @@ -137,8 +137,8 @@ "id": 10065, "code": "0043647440020", "name": "'Old Times' Orange Fine Cut Marmalade", - "creation_date": "2020-12-20", - "update_date": "2022-08-09", + "created": "2020-12-20", + "last_update": "2022-08-09", "energy": 269, "protein": "0.000", "carbohydrates": "67.000", diff --git a/test/nutrition/nutritional_meal_item_form_test.dart b/test/nutrition/nutritional_meal_item_form_test.dart index 4e265976..f593619c 100644 --- a/test/nutrition/nutritional_meal_item_form_test.dart +++ b/test/nutrition/nutritional_meal_item_form_test.dart @@ -28,7 +28,7 @@ void main() { id: 1, code: '123456787', name: 'Water', - creationDate: DateTime(2021, 5, 1), + created: DateTime(2021, 5, 1), energy: 500, carbohydrates: 10, carbohydratesSugar: 2, diff --git a/test_data/exercises.dart b/test_data/exercises.dart index 588943c8..41d2d282 100644 --- a/test_data/exercises.dart +++ b/test_data/exercises.dart @@ -48,8 +48,8 @@ const testEquipment = [tEquipment1, tEquipment2, tEquipment3]; final benchPress = ExerciseBase( id: 1, uuid: '364f196c-881b-4839-8bfc-9e8f651521b6', - creationDate: DateTime(2021, 09, 01), - updateDate: DateTime(2021, 09, 10), + created: DateTime(2021, 09, 01), + lastUpdate: DateTime(2021, 09, 10), category: tCategory1, equipment: const [tEquipment1, tEquipment2], muscles: const [tMuscle1, tMuscle2], @@ -59,8 +59,8 @@ final benchPress = ExerciseBase( final crunches = ExerciseBase( id: 2, uuid: '82415754-fc4c-49ea-8ca7-1516dd36d5a0', - creationDate: DateTime(2021, 08, 01), - updateDate: DateTime(2021, 08, 10), + created: DateTime(2021, 08, 01), + lastUpdate: DateTime(2021, 08, 10), category: tCategory2, equipment: const [tEquipment2], muscles: const [tMuscle1], @@ -70,8 +70,8 @@ final crunches = ExerciseBase( final deadLift = ExerciseBase( id: 3, uuid: 'ca84e2c5-5608-4d6d-ba57-6d4b6b5e7acd', - creationDate: DateTime(2021, 08, 01), - updateDate: DateTime(2021, 08, 01), + created: DateTime(2021, 08, 01), + lastUpdate: DateTime(2021, 08, 01), category: tCategory3, equipment: const [tEquipment2], muscles: const [tMuscle1], @@ -81,8 +81,8 @@ final deadLift = ExerciseBase( final curls = ExerciseBase( id: 4, uuid: '361f024c-fdf8-4146-b7d7-0c1b67c58141', - creationDate: DateTime(2021, 08, 01), - updateDate: DateTime(2021, 08, 01), + created: DateTime(2021, 08, 01), + lastUpdate: DateTime(2021, 08, 01), category: tCategory3, equipment: const [tEquipment2], muscles: const [tMuscle1], @@ -91,8 +91,8 @@ final curls = ExerciseBase( final squats = ExerciseBase( id: 5, uuid: '361f024c-fdf8-4146-b7d7-0c1b67c58141', - creationDate: DateTime(2021, 08, 01), - updateDate: DateTime(2021, 08, 01), + created: DateTime(2021, 08, 01), + lastUpdate: DateTime(2021, 08, 01), category: tCategory3, equipment: const [tEquipment2], muscles: const [tMuscle1], @@ -101,8 +101,8 @@ final squats = ExerciseBase( final sideRaises = ExerciseBase( id: 6, uuid: '721ff972-c568-41e3-8cf5-cf1e5c5c801c', - creationDate: DateTime(2022, 11, 01), - updateDate: DateTime(2022, 11, 01), + created: DateTime(2022, 11, 01), + lastUpdate: DateTime(2022, 11, 01), category: tCategory4, equipment: const [tEquipment2], muscles: const [tMuscle1], @@ -112,7 +112,7 @@ final sideRaises = ExerciseBase( final benchPressDe = Translation( id: 1, uuid: 'f4cc326b-e497-4bd7-a71d-0eb1db522743', - creationDate: DateTime(2021, 1, 15), + created: DateTime(2021, 1, 15), name: 'Bankdrücken', description: 'add clever text', baseId: benchPress.id, @@ -121,7 +121,7 @@ final benchPressDe = Translation( final benchPressEn = Translation( id: 7, uuid: 'f4cc326b-e497-4bd7-a71d-0eb1db522743', - creationDate: DateTime(2021, 1, 15), + created: DateTime(2021, 1, 15), name: 'Bench press', description: 'add clever text', baseId: benchPress.id, @@ -131,7 +131,7 @@ final benchPressEn = Translation( final deadLiftEn = Translation( id: 2, uuid: 'b7f51a1a-0368-4dfc-a03c-d629a4089b4a', - creationDate: DateTime(2021, 1, 15), + created: DateTime(2021, 1, 15), name: 'Dead Lift', description: 'Lorem ipsum etc', baseId: crunches.id, @@ -141,7 +141,7 @@ final deadLiftEn = Translation( final crunchesFr = Translation( id: 3, uuid: 'd83f572d-add5-48dc-89cf-75f6770284f1', - creationDate: DateTime(2021, 4, 1), + created: DateTime(2021, 4, 1), name: 'Crunches', description: 'The man in black fled across the desert, and the gunslinger followed', baseId: deadLift.id, @@ -151,7 +151,7 @@ final crunchesFr = Translation( final crunchesDe = Translation( id: 4, uuid: 'a3e96c1d-b35f-4b0e-9cf4-ca37666cf521', - creationDate: DateTime(2021, 4, 1), + created: DateTime(2021, 4, 1), name: 'Crunches', description: 'The story so far: in the beginning, the universe was created', baseId: deadLift.id, @@ -161,7 +161,7 @@ final crunchesDe = Translation( final crunchesEn = Translation( id: 5, uuid: '8c49a816-2247-4116-94bb-b5c0ce09c609', - creationDate: DateTime(2021, 4, 1), + created: DateTime(2021, 4, 1), name: 'test exercise 5', description: 'I am an invisible man', baseId: deadLift.id, @@ -171,7 +171,7 @@ final crunchesEn = Translation( final curlsEn = Translation( id: 6, uuid: '259a637e-957f-4fe1-b61b-f56e3793ebcd', - creationDate: DateTime(2021, 4, 1), + created: DateTime(2021, 4, 1), name: 'Curls', description: 'It was a bright cold day in April, and the clocks were striking thirteen', baseId: curls.id, @@ -181,7 +181,7 @@ final curlsEn = Translation( final squatsEn = Translation( id: 8, uuid: '259a637e-957f-4fe1-b61b-f56e3793ebcd', - creationDate: DateTime(2021, 4, 1), + created: DateTime(2021, 4, 1), name: 'Squats', description: 'It was a bright cold day in April, and the clocks were striking thirteen', baseId: curls.id, @@ -191,7 +191,7 @@ final squatsEn = Translation( final sideRaisesEn = Translation( id: 9, uuid: '6bf89ad0-5a43-4e98-91d3-a8c6886c9712', - creationDate: DateTime(2022, 11, 1), + created: DateTime(2022, 11, 1), name: 'Side raises', description: 'It was a bright cold day in April, and the clocks were striking thirteen', baseId: curls.id, diff --git a/test_data/nutritional_plans.dart b/test_data/nutritional_plans.dart index 8df73438..79441d19 100644 --- a/test_data/nutritional_plans.dart +++ b/test_data/nutritional_plans.dart @@ -27,7 +27,7 @@ final ingredient1 = Ingredient( id: 1, code: '123456787', name: 'Water', - creationDate: DateTime(2021, 5, 1), + created: DateTime(2021, 5, 1), energy: 500, carbohydrates: 10, carbohydratesSugar: 2, @@ -41,7 +41,7 @@ final ingredient2 = Ingredient( id: 2, code: '123456788', name: 'Burger soup', - creationDate: DateTime(2021, 5, 10), + created: DateTime(2021, 5, 10), energy: 25, carbohydrates: 10, carbohydratesSugar: 2, @@ -55,7 +55,7 @@ final ingredient3 = Ingredient( id: 3, code: '123456789', name: 'Broccoli cake', - creationDate: DateTime(2021, 5, 2), + created: DateTime(2021, 5, 2), energy: 1200, carbohydrates: 110, carbohydratesSugar: 2,