diff --git a/.github/workflows/github-projects-pr.yml b/.github/workflows/github-projects-pr.yml index 68dc61d1fe9..3f2ea3f6832 100644 --- a/.github/workflows/github-projects-pr.yml +++ b/.github/workflows/github-projects-pr.yml @@ -8,7 +8,7 @@ jobs: add-to-project: name: Add issue to project runs-on: ubuntu-latest - if: github.event.pull_request.head.repo.full_name == github.repository + if: github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' steps: - uses: actions/add-to-project@main with: diff --git a/.github/workflows/postsubmit.yml b/.github/workflows/postsubmit.yml index ac6472626e5..371af1dba78 100644 --- a/.github/workflows/postsubmit.yml +++ b/.github/workflows/postsubmit.yml @@ -6,7 +6,7 @@ on: - "develop" env: - FLUTTER_VERSION: '3.0.x' + FLUTTER_VERSION: '3.3.x' jobs: build: diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index fe21524a05d..8a62bdd8823 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -7,7 +7,7 @@ on: - develop env: - FLUTTER_VERSION: '3.0.x' + FLUTTER_VERSION: '3.3.x' jobs: build: diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 2b0296e4046..46a5122d2f0 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -72,7 +72,7 @@ jobs: with: VERSION_NAME: ${{ needs.create-release.outputs.VERSION_NAME}} VERSION_CODE: ${{ needs.create-release.outputs.VERSION_CODE}} - FLUTTER-CACHE-KEY: '3.0.1' + FLUTTER-CACHE-KEY: '3.3.x' secrets: API_JSON_FILE_DECRYPTKEY: ${{secrets.API_JSON_FILE_DECRYPTKEY }} DECRYPT_GPG_KEYSTORE: ${{secrets.DECRYPT_GPG_KEYSTORE }} @@ -88,7 +88,7 @@ jobs: with: VERSION_NAME: ${{ needs.create-release.outputs.VERSION_NAME}} VERSION_CODE: ${{ needs.create-release.outputs.VERSION_CODE}} - FLUTTER-CACHE-KEY: '3.0.1' + FLUTTER-CACHE-KEY: '3.3.x' secrets: SENTRY_AUTH_TOKEN: ${{secrets.SENTRY_AUTH_TOKEN }} FASTLANE_USER: ${{secrets.FASTLANE_USER }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 0702834983d..204ead9050a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,97 @@ # Changelog +## [3.10.3](https://github.com/openfoodfacts/smooth-app/compare/v3.10.2...v3.10.3) (2022-09-03) + + +### Bug Fixes + +* Revert MLKit library to 0.3.0 ([#2907](https://github.com/openfoodfacts/smooth-app/issues/2907)) ([c35b0a2](https://github.com/openfoodfacts/smooth-app/commit/c35b0a2768975330277edbd6b59b8ca66de25d03)) + + +### Miscellaneous + +* **deps:** bump path from 1.8.0 to 1.8.2 in /packages/smooth_app ([#2894](https://github.com/openfoodfacts/smooth-app/issues/2894)) ([2fdeda4](https://github.com/openfoodfacts/smooth-app/commit/2fdeda41e1922611df89e76bcd200a8bc39b4f58)) +* New Crowdin translations ([#2908](https://github.com/openfoodfacts/smooth-app/issues/2908)) ([eff3886](https://github.com/openfoodfacts/smooth-app/commit/eff388657828f7895364de6f55a3fa0ac3b04009)) + +## [3.10.2](https://github.com/openfoodfacts/smooth-app/compare/v3.10.1...v3.10.2) (2022-09-02) + + +### Miscellaneous + +* New Crowdin translations ([#2900](https://github.com/openfoodfacts/smooth-app/issues/2900)) ([0167d9d](https://github.com/openfoodfacts/smooth-app/commit/0167d9dccc6bc20a5a6ba0e297ec08f0c6b17f7c)) + +## [3.10.1](https://github.com/openfoodfacts/smooth-app/compare/v3.10.0...v3.10.1) (2022-09-01) + + +### Bug Fixes + +* Fixes for Flutter version 3.3 ([#2884](https://github.com/openfoodfacts/smooth-app/issues/2884)) ([254a9b7](https://github.com/openfoodfacts/smooth-app/commit/254a9b725eb1ad5df4ddbc147b6d5a8c5f8cc587)) + + +### Automation + +* fix PR ([#2888](https://github.com/openfoodfacts/smooth-app/issues/2888)) ([bfeedeb](https://github.com/openfoodfacts/smooth-app/commit/bfeedeb699b56195f317ef90e440dd391a1762cd)) + + +### Miscellaneous + +* **deps:** bump google_mlkit_barcode_scanning in /packages/smooth_app ([#2881](https://github.com/openfoodfacts/smooth-app/issues/2881)) ([46c4f36](https://github.com/openfoodfacts/smooth-app/commit/46c4f36342ca6090f2e63bbf7076b2b1f5d0d794)) + +## [3.10.0](https://github.com/openfoodfacts/smooth-app/compare/v3.9.0...v3.10.0) (2022-09-01) + + +### Features + +* Bring back the quick setting tile on Android ([#2870](https://github.com/openfoodfacts/smooth-app/issues/2870)) ([0c7e236](https://github.com/openfoodfacts/smooth-app/commit/0c7e236a381a3237d0d524077b4779846dd93e1f)) + + +### Bug Fixes + +* Background image upload ([#2433](https://github.com/openfoodfacts/smooth-app/issues/2433)) ([cf4fa6a](https://github.com/openfoodfacts/smooth-app/commit/cf4fa6aebe30a769a57ce2c71bc23d4473a7a8e4)) + + +### Automation + +* disabling run for dependabot PRs ([4296daf](https://github.com/openfoodfacts/smooth-app/commit/4296dafb0a9748bbed640dddf19d6eb4667dcb89)) + + +### Miscellaneous + +* **deps:** bump barcode_widget in /packages/smooth_app ([#2875](https://github.com/openfoodfacts/smooth-app/issues/2875)) ([2fa796e](https://github.com/openfoodfacts/smooth-app/commit/2fa796e868554117510dea6c3fef9e5b8a8eb742)) +* **deps:** bump flutter_svg in /packages/smooth_app ([#2874](https://github.com/openfoodfacts/smooth-app/issues/2874)) ([c1e3651](https://github.com/openfoodfacts/smooth-app/commit/c1e36513ad3aa3db054b14b39e3ac9d80646bb96)) +* **deps:** bump sentry_flutter in /packages/smooth_app ([#2877](https://github.com/openfoodfacts/smooth-app/issues/2877)) ([94d85c9](https://github.com/openfoodfacts/smooth-app/commit/94d85c98ab254dd546033d0afd8e57ebcf3aae03)) +* New Crowdin translations ([#2878](https://github.com/openfoodfacts/smooth-app/issues/2878)) ([2b969e9](https://github.com/openfoodfacts/smooth-app/commit/2b969e921a79ba0924894749e9b101ba2ba0d3b3)) +* New Crowdin translations ([#2886](https://github.com/openfoodfacts/smooth-app/issues/2886)) ([fc9711b](https://github.com/openfoodfacts/smooth-app/commit/fc9711bd9ca41d8486e6c35ba8b5354d1671c4ad)) + +## [3.9.0](https://github.com/openfoodfacts/smooth-app/compare/v3.8.1...v3.9.0) (2022-08-30) + + +### Features + +* [#2852](https://github.com/openfoodfacts/smooth-app/issues/2852) - Matomo message when barcode is not found ([#2854](https://github.com/openfoodfacts/smooth-app/issues/2854)) ([3dca648](https://github.com/openfoodfacts/smooth-app/commit/3dca6488006f9dc043a600522ef16c2fcd5b50e6)) +* Add to list horizontal buttons ([#2871](https://github.com/openfoodfacts/smooth-app/issues/2871)) ([1f72ce6](https://github.com/openfoodfacts/smooth-app/commit/1f72ce62ce23316dbd9caedc643416eb2eee55a8)) + + +### Bug Fixes + +* [#1538](https://github.com/openfoodfacts/smooth-app/issues/1538) - refactoring of image cropper ([#2858](https://github.com/openfoodfacts/smooth-app/issues/2858)) ([394cf4c](https://github.com/openfoodfacts/smooth-app/commit/394cf4cf1831c2009f18bed0ae172767a419b7e3)) +* [#2841](https://github.com/openfoodfacts/smooth-app/issues/2841) - from "AddNewProductPage", no need to be logged in to add data ([#2844](https://github.com/openfoodfacts/smooth-app/issues/2844)) ([474b3d8](https://github.com/openfoodfacts/smooth-app/commit/474b3d8eb67c3b71dd138e169c895b1f41e0e568)) +* improve ios launch screen on notch devices ([#2810](https://github.com/openfoodfacts/smooth-app/issues/2810)) ([903d3fc](https://github.com/openfoodfacts/smooth-app/commit/903d3fce18c4a32cdfdbf4c4a70c50d2097fa794)) +* Placeholder image in case of image not loading ([#2857](https://github.com/openfoodfacts/smooth-app/issues/2857)) ([4187014](https://github.com/openfoodfacts/smooth-app/commit/418701472bb5c2dbd2a09b76f9fb5374d4ed6928)) + + +### Automation + +* fix: Running workflows on pr's from forks ([#2847](https://github.com/openfoodfacts/smooth-app/issues/2847)) ([36443f7](https://github.com/openfoodfacts/smooth-app/commit/36443f7a905f98b76a4f9f26bce138883c2c455a)) + + +### Miscellaneous + +* New Crowdin translations ([#2850](https://github.com/openfoodfacts/smooth-app/issues/2850)) ([7526a4c](https://github.com/openfoodfacts/smooth-app/commit/7526a4c78cb44f9981b7ab34a4ac04472aa12652)) +* New Crowdin translations to review and merge ([#2838](https://github.com/openfoodfacts/smooth-app/issues/2838)) ([98576d6](https://github.com/openfoodfacts/smooth-app/commit/98576d63d55aafcad86cc264e1bd1e5fc84fb683)) +* New Crowdin translations to review and merge ([#2842](https://github.com/openfoodfacts/smooth-app/issues/2842)) ([45764d9](https://github.com/openfoodfacts/smooth-app/commit/45764d910fa761f8ff6b7e95cd5a55d5dd799b56)) +* New Crowdin translations to review and merge ([#2848](https://github.com/openfoodfacts/smooth-app/issues/2848)) ([85f491b](https://github.com/openfoodfacts/smooth-app/commit/85f491b4e7af4a9d44383760db2ee39ed291db70)) + ## [3.8.1](https://github.com/openfoodfacts/smooth-app/compare/v3.8.0...v3.8.1) (2022-08-25) diff --git a/packages/smooth_app/android/app/src/main/AndroidManifest.xml b/packages/smooth_app/android/app/src/main/AndroidManifest.xml index 77ed1333039..5152572831f 100644 --- a/packages/smooth_app/android/app/src/main/AndroidManifest.xml +++ b/packages/smooth_app/android/app/src/main/AndroidManifest.xml @@ -30,7 +30,7 @@ + + + + + + + + + + + OpenFoodFacts + + \ No newline at end of file diff --git a/packages/smooth_app/ios/Podfile.lock b/packages/smooth_app/ios/Podfile.lock index 9be837a820b..9f549487fc8 100644 --- a/packages/smooth_app/ios/Podfile.lock +++ b/packages/smooth_app/ios/Podfile.lock @@ -3,6 +3,9 @@ PODS: - Flutter - camera (0.0.1): - Flutter + - connectivity_plus (0.0.1): + - Flutter + - ReachabilitySwift - data_importer (0.0.1): - Flutter - KeychainAccess @@ -28,7 +31,7 @@ PODS: - google_mlkit_commons (0.2.0): - Flutter - MLKitVision - - GoogleDataTransport (9.1.4): + - GoogleDataTransport (9.2.0): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) @@ -100,19 +103,20 @@ PODS: - permission_handler_apple (9.0.4): - Flutter - PromisesObjC (2.1.1) - - Protobuf (3.21.2) - - Realm (10.28.2): - - Realm/Headers (= 10.28.2) - - Realm/Headers (10.28.2) - - RealmSwift (10.28.2): - - Realm (= 10.28.2) - - Sentry (7.22.0): - - Sentry/Core (= 7.22.0) - - Sentry/Core (7.22.0) + - Protobuf (3.21.5) + - ReachabilitySwift (5.0.0) + - Realm (10.28.6): + - Realm/Headers (= 10.28.6) + - Realm/Headers (10.28.6) + - RealmSwift (10.28.6): + - Realm (= 10.28.6) + - Sentry (7.23.0): + - Sentry/Core (= 7.23.0) + - Sentry/Core (7.23.0) - sentry_flutter (0.0.1): - Flutter - FlutterMacOS - - Sentry (~> 7.22.0) + - Sentry (~> 7.23.0) - share_plus (0.0.1): - Flutter - shared_preferences_ios (0.0.1): @@ -120,13 +124,18 @@ PODS: - sqflite (0.0.2): - Flutter - FMDB (>= 2.7.5) + - task_manager (0.0.1): + - Flutter - TOCropViewController (2.6.1) - url_launcher_ios (0.0.1): - Flutter + - workmanager (0.0.1): + - Flutter DEPENDENCIES: - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`) - camera (from `.symlinks/plugins/camera/ios`) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - data_importer (from `.symlinks/plugins/data_importer/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) @@ -147,7 +156,9 @@ DEPENDENCIES: - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) + - task_manager (from `.symlinks/plugins/task_manager/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) + - workmanager (from `.symlinks/plugins/workmanager/ios`) SPEC REPOS: trunk: @@ -166,6 +177,7 @@ SPEC REPOS: - nanopb - PromisesObjC - Protobuf + - ReachabilitySwift - Realm - RealmSwift - Sentry @@ -176,6 +188,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/audioplayers_darwin/ios" camera: :path: ".symlinks/plugins/camera/ios" + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/ios" data_importer: :path: ".symlinks/plugins/data_importer/ios" device_info_plus: @@ -216,15 +230,20 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/shared_preferences_ios/ios" sqflite: :path: ".symlinks/plugins/sqflite/ios" + task_manager: + :path: ".symlinks/plugins/task_manager/ios" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" + workmanager: + :path: ".symlinks/plugins/workmanager/ios" SPEC CHECKSUMS: audioplayers_darwin: 387322cb364026a1782298c982693b1b6aa9fa1b camera: 9993f92f2c793e87b65e35f3a23c70582afb05b1 + connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e data_importer: ab8c74aaf553878170aed03c03626d5820c5cb1f device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_email_sender: 02d7443217d8c41483223627972bfdc09f74276b flutter_isolate: 0edf5081826d071adf21759d1eb10ff5c24503b5 flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef @@ -232,7 +251,7 @@ SPEC CHECKSUMS: FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a google_mlkit_barcode_scanning: 56e88993b6c915ce7134f9d77cb5b2de2fca8cfa google_mlkit_commons: e9070f57232c3a3e4bd42fdfa621bb1f4bb3e709 - GoogleDataTransport: 5fffe35792f8b96ec8d6775f5eccd83c998d5a3b + GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f GoogleMLKit: 755661c46990a85e42278015f26400286d98ad95 GoogleToolboxForMac: 8bef7c7c5cf7291c687cf5354f39f9db6399ad34 GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 @@ -252,16 +271,19 @@ SPEC CHECKSUMS: path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb - Protobuf: 818c6a87e44193a77f56b87c6a1c106efda7e062 - Realm: e617c54ad0f566b3d0f6a2abae7010de05f252ac - RealmSwift: 8a516a8759d80d52ebcec1ff1076f5f5159f98b2 - Sentry: 30b51086ca9aac23337880152e95538f7e177f7f - sentry_flutter: eaca55af5c951f4be6c4b1daddce1744c37d8476 + Protobuf: 7504b04fffcf6662ad629694db8231f5e744327f + ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 + Realm: 9b12f16a14446d7d46a9e36225d0a0332a6ec739 + RealmSwift: 5927726fce21005f43b1fb57c832297a22031bfc + Sentry: a0d4563fa4ddacba31fdcc35daaa8573d87224d6 + sentry_flutter: 8bde7d0e57a721727fe573f13bb292c497b5a249 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + task_manager: 84b4c39309350abc13eebd79f9d073061391205c TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863 url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de + workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6 PODFILE CHECKSUM: e1ffd3daa5042cd516081f94f61b857c0deb822d diff --git a/packages/smooth_app/ios/Runner/Info.plist b/packages/smooth_app/ios/Runner/Info.plist index 926161b8547..f38ae585b23 100644 --- a/packages/smooth_app/ios/Runner/Info.plist +++ b/packages/smooth_app/ios/Runner/Info.plist @@ -1,59 +1,59 @@ - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - OpenFoodFacts - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - OpenFoodFacts - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - - UIViewControllerBasedStatusBarAppearance - - UIStatusBarHidden - - NSPhotoLibraryUsageDescription - This app needs to access photo library for product photos uploads - NSCameraUsageDescription - This app needs Camera Usage for scanning barcodes and cropping photos - LSApplicationQueriesSchemes - - https - http - mailto - - UIRequiresFullScreen - - CADisableMinimumFrameDurationOnPhone + + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + OpenFoodFacts + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OpenFoodFacts + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSApplicationQueriesSchemes + + https + http + mailto + + LSRequiresIPhoneOS + + NSCameraUsageDescription + This app needs Camera Usage for scanning barcodes and cropping photos + NSPhotoLibraryUsageDescription + This app needs to access photo library for product photos uploads + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiresFullScreen + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + diff --git a/packages/smooth_app/ios/fastlane/Fastfile b/packages/smooth_app/ios/fastlane/Fastfile index 9a540ccbce9..924bc81a006 100644 --- a/packages/smooth_app/ios/fastlane/Fastfile +++ b/packages/smooth_app/ios/fastlane/Fastfile @@ -2,7 +2,7 @@ setup_travis default_platform(:ios) before_all do - xcversion(version: "~> 13.3.1") + xcversion(version: "~> 13.4.1") end platform :ios do diff --git a/packages/smooth_app/lib/cache/files/file_cache_manager_impl.dart b/packages/smooth_app/lib/cache/files/file_cache_manager_impl.dart index 71150368c58..eebe0ac1a2d 100644 --- a/packages/smooth_app/lib/cache/files/file_cache_manager_impl.dart +++ b/packages/smooth_app/lib/cache/files/file_cache_manager_impl.dart @@ -1,5 +1,4 @@ import 'dart:io'; -import 'dart:typed_data'; import 'package:flutter/foundation.dart'; import 'package:path/path.dart'; diff --git a/packages/smooth_app/lib/cards/data_cards/image_upload_card.dart b/packages/smooth_app/lib/cards/data_cards/image_upload_card.dart index b6824fb3d7f..0bc11c59b46 100644 --- a/packages/smooth_app/lib/cards/data_cards/image_upload_card.dart +++ b/packages/smooth_app/lib/cards/data_cards/image_upload_card.dart @@ -1,5 +1,4 @@ import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; @@ -46,35 +45,17 @@ class _ImageUploadCardState extends State { if (!mounted) { return; } - final bool isUploaded = await uploadCapturedPicture( + await uploadCapturedPicture( context, barcode: widget.product .barcode!, //Probably throws an error, but this is not a big problem when we got a product without a barcode imageField: widget.productImageData.imageField, imageUri: croppedImageFile.uri, ); - croppedImageFile.delete(); + if (!mounted) { return; } - if (isUploaded) { - if (widget.productImageData.imageField == ImageField.OTHER) { - final AppLocalizations appLocalizations = - AppLocalizations.of(context); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(appLocalizations.other_photo_uploaded), - duration: const Duration(seconds: 3), - action: SnackBarAction( - label: appLocalizations.more_photos, - onPressed: _getImage, - ), - ), - ); - } else { - await widget.onUpload(context); - } - } } } diff --git a/packages/smooth_app/lib/data_models/continuous_scan_model.dart b/packages/smooth_app/lib/data_models/continuous_scan_model.dart index 457c3ab1170..8b0a8a781b5 100644 --- a/packages/smooth_app/lib/data_models/continuous_scan_model.dart +++ b/packages/smooth_app/lib/data_models/continuous_scan_model.dart @@ -8,6 +8,7 @@ import 'package:smooth_app/data_models/product_list.dart'; import 'package:smooth_app/database/dao_product.dart'; import 'package:smooth_app/database/dao_product_list.dart'; import 'package:smooth_app/database/local_database.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/helpers/analytics_helper.dart'; import 'package:smooth_app/query/barcode_product_query.dart'; import 'package:smooth_app/services/smooth_services.dart'; @@ -170,7 +171,7 @@ class ContinuousScanModel with ChangeNotifier { try { // We try to load the fresh copy of product from the server final FetchedProduct fetchedProduct = - await _queryBarcode(barcode).timeout(const Duration(seconds: 5)); + await _queryBarcode(barcode).timeout(SnackBarDuration.long); if (fetchedProduct.product != null) { _addProduct(barcode, ScannedProductState.CACHED); return true; diff --git a/packages/smooth_app/lib/data_models/onboarding_data_product.dart b/packages/smooth_app/lib/data_models/onboarding_data_product.dart index 9b8cad5941d..35e7123afd3 100644 --- a/packages/smooth_app/lib/data_models/onboarding_data_product.dart +++ b/packages/smooth_app/lib/data_models/onboarding_data_product.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:smooth_app/data_models/abstract_onboarding_data.dart'; import 'package:smooth_app/database/local_database.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/query/product_query.dart'; /// Helper around a product we download, store and reuse at onboarding. @@ -42,7 +43,7 @@ class OnboardingDataProduct extends AbstractOnboardingData { language: ProductQuery.getLanguage(), country: ProductQuery.getCountry(), ), - ).timeout(const Duration(seconds: 5)); + ).timeout(SnackBarDuration.long); @override String getAssetPath() => assetPath; diff --git a/packages/smooth_app/lib/data_models/onboarding_loader.dart b/packages/smooth_app/lib/data_models/onboarding_loader.dart index 04d1ae94178..63715b0149f 100644 --- a/packages/smooth_app/lib/data_models/onboarding_loader.dart +++ b/packages/smooth_app/lib/data_models/onboarding_loader.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:smooth_app/data_models/onboarding_data_product.dart'; import 'package:smooth_app/database/local_database.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/loading_dialog.dart'; import 'package:smooth_app/pages/onboarding/onboarding_flow_navigator.dart'; @@ -33,7 +34,7 @@ class OnboardingLoader { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(appLocalizations.onboarding_welcome_loading_error), - duration: const Duration(seconds: 2), + duration: SnackBarDuration.short, behavior: SnackBarBehavior.floating, elevation: 0, ), diff --git a/packages/smooth_app/lib/data_models/user_preferences.dart b/packages/smooth_app/lib/data_models/user_preferences.dart index 312a4107627..af8bcefae65 100644 --- a/packages/smooth_app/lib/data_models/user_preferences.dart +++ b/packages/smooth_app/lib/data_models/user_preferences.dart @@ -4,7 +4,6 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:smooth_app/data_models/product_preferences.dart'; import 'package:smooth_app/pages/onboarding/onboarding_flow_navigator.dart'; import 'package:smooth_app/pages/preferences/user_preferences_dev_mode.dart'; -import 'package:smooth_app/pages/scan/camera_controller.dart'; class UserPreferences extends ChangeNotifier { UserPreferences._shared(final SharedPreferences sharedPreferences) @@ -32,16 +31,12 @@ class UserPreferences extends ChangeNotifier { // Detect if a first successful scan was achieved (condition to show the // tagline) static const String _TAG_IS_FIRST_SCAN = 'is_first_scan'; - // Which preset to use - static const String _TAG_SCAN_CAMERA_RESOLUTION_PRESET = - 'camera_resolution_preset'; + // Use the flash/torch with the camera static const String _TAG_USE_FLASH_WITH_CAMERA = 'enable_flash_with_camera'; + // Play sound when decoding a barcode static const String _TAG_PLAY_CAMERA_SCAN_SOUND = 'camera_scan_sound'; - // Which algorithm to use with the camera (Android only) - static const String _TAG_CAMERA_FOCUS_POINT_ALGORITHM = - 'camera_focus_point_algorithm'; /// Attribute group that is not collapsed static const String _TAG_ACTIVE_ATTRIBUTE_GROUP = 'activeAttributeGroup'; @@ -164,15 +159,6 @@ class UserPreferences extends ChangeNotifier { notifyListeners(); } - Future setUseVeryHighResolutionPreset(bool enableFeature) async { - await _sharedPreferences.setBool( - _TAG_SCAN_CAMERA_RESOLUTION_PRESET, enableFeature); - notifyListeners(); - } - - bool get useVeryHighResolutionPreset => - _sharedPreferences.getBool(_TAG_SCAN_CAMERA_RESOLUTION_PRESET) ?? false; - Future setPlayCameraSound(bool playSound) async { await _sharedPreferences.setBool(_TAG_PLAY_CAMERA_SCAN_SOUND, playSound); notifyListeners(); @@ -181,17 +167,6 @@ class UserPreferences extends ChangeNotifier { bool get playCameraSound => _sharedPreferences.getBool(_TAG_PLAY_CAMERA_SCAN_SOUND) ?? false; - Future setCameraFocusAlgorithm( - CameraFocusPointAlgorithm algorithm) async { - await _sharedPreferences.setInt( - _TAG_CAMERA_FOCUS_POINT_ALGORITHM, algorithm.index); - notifyListeners(); - } - - CameraFocusPointAlgorithm get cameraFocusPointAlgorithm => - CameraFocusPointAlgorithm.values[ - _sharedPreferences.getInt(_TAG_CAMERA_FOCUS_POINT_ALGORITHM) ?? 0]; - Future setDevMode(final int value) async { await _sharedPreferences.setInt(_TAG_DEV_MODE, value); notifyListeners(); diff --git a/packages/smooth_app/lib/generic_lib/dialogs/smooth_alert_dialog.dart b/packages/smooth_app/lib/generic_lib/dialogs/smooth_alert_dialog.dart index 87733af7fb1..c44fb607f5c 100644 --- a/packages/smooth_app/lib/generic_lib/dialogs/smooth_alert_dialog.dart +++ b/packages/smooth_app/lib/generic_lib/dialogs/smooth_alert_dialog.dart @@ -117,6 +117,8 @@ class _SmoothDialogTitle extends StatelessWidget { required this.close, }); + static const double _titleHeight = 32.0; + final String label; final bool close; @@ -126,7 +128,7 @@ class _SmoothDialogTitle extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ SizedBox( - height: 32.0, + height: _titleHeight, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.center, @@ -182,7 +184,7 @@ class _SmoothDialogCrossButton extends StatelessWidget { padding: EdgeInsets.all(SMALL_SPACE), child: Icon( Icons.close, - size: 29.0, + size: _SmoothDialogTitle._titleHeight - (2 * SMALL_SPACE), ), ), onTap: () => Navigator.of(context, rootNavigator: true).pop(), @@ -253,7 +255,8 @@ class SmoothActionButtonsBar extends StatelessWidget { children: actions, ); } else { - return IntrinsicWidth( + return SizedBox( + width: double.infinity, child: Column( mainAxisAlignment: MainAxisAlignment.end, children: actions, @@ -367,8 +370,9 @@ class _SmoothActionElevatedButton extends StatelessWidget { return SmoothSimpleButton( onPressed: buttonData.onPressed, minWidth: buttonData.minWidth ?? 20.0, - // if fitted box not used then even the one word text overflows into next line, + // Ensures FittedBox not used then even the one word text overflows into next line, child: FittedBox( + fit: BoxFit.scaleDown, child: Text( buttonData.text.toUpperCase(), textAlign: TextAlign.center, @@ -412,6 +416,9 @@ class _SmoothActionFlatButton extends StatelessWidget { textStyle: themeData.textTheme.bodyText2!.copyWith( color: themeData.colorScheme.onPrimary, ), + padding: const EdgeInsets.symmetric( + horizontal: SMALL_SPACE, + ), ), child: SizedBox( height: buttonData.lines != null @@ -419,6 +426,7 @@ class _SmoothActionFlatButton extends StatelessWidget { : null, width: buttonData.minWidth, child: FittedBox( + fit: BoxFit.scaleDown, child: Text( buttonData.text.toUpperCase(), style: TextStyle( diff --git a/packages/smooth_app/lib/generic_lib/duration_constants.dart b/packages/smooth_app/lib/generic_lib/duration_constants.dart index 48e0e64df74..4df9e451ad3 100644 --- a/packages/smooth_app/lib/generic_lib/duration_constants.dart +++ b/packages/smooth_app/lib/generic_lib/duration_constants.dart @@ -6,3 +6,12 @@ class SmoothAnimationsDuration { static const Duration medium = Duration(milliseconds: 400); static const Duration long = Duration(milliseconds: 500); } + +class SnackBarDuration { + const SnackBarDuration._(); + + static const Duration brief = Duration(seconds: 1); + static const Duration short = Duration(seconds: 2); + static const Duration medium = Duration(seconds: 3); + static const Duration long = Duration(seconds: 5); +} diff --git a/packages/smooth_app/lib/helpers/background_task_helper.dart b/packages/smooth_app/lib/helpers/background_task_helper.dart new file mode 100644 index 00000000000..1be43e4d4b0 --- /dev/null +++ b/packages/smooth_app/lib/helpers/background_task_helper.dart @@ -0,0 +1,249 @@ +import 'dart:convert'; +import 'dart:io'; +import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:openfoodfacts/utils/CountryHelper.dart'; +import 'package:smooth_app/database/dao_product.dart'; +import 'package:smooth_app/database/local_database.dart'; +import 'package:smooth_app/query/product_query.dart'; +import 'package:task_manager/task_manager.dart'; + +/// Task Manager IDs and extras +/// Broadly classify the tasks into 2 categories +/// Task ID for image uploads +const String IMAGE_UPLOAD_TASK = 'IMAGE_UPLOAD'; + +/// Task ID for product edition +const String PRODUCT_EDIT_TASK = 'PRODUCT_EDIT'; + +/// Extra used for product edition +/// Constant for ingredient edit task +const String INGREDIENT_EDIT = 'INGREDIENTS_EDIT'; + +/// Constant for nutrition edit task +const String NUTRITION_EDIT = 'NUTRITION_EDIT'; + +/// Constant for basic details edit task +const String BASIC_DETAILS = 'BASIC_DETAILS'; + +/// Response code sent by the server in case of a success +const int SUCESS_CODE = 1; + +/// Runs whenever a task is started in the background. +/// Whatever invoked with TaskManager.addTask() will be run in this method. +/// Gets automatically invoked when there is a task added to the queue and the network conditions are favorable. +Future callbackDispatcher( + LocalDatabase localDatabase, +) async { + await TaskManager().init( + runTasksInIsolates: false, + executor: (Task inputData) async { + final String processName = inputData.data!['processName'] as String; + switch (processName) { + case IMAGE_UPLOAD_TASK: + return uploadImage(inputData.data!, localDatabase); + + case PRODUCT_EDIT_TASK: + return otherDetails(inputData.data!, localDatabase); + + default: + return TaskResult.success; + } + }, + ); + return TaskResult.success; +} + +/// This takes the product JSON and uploads the data to OpenFoodFacts server +/// and queries the updated [Product], then it updates the product in the local database +Future otherDetails( + Map inputData, + LocalDatabase localDatabase, +) async { + final BackgroundOtherDetailsInput inputTask = + BackgroundOtherDetailsInput.fromJson(inputData); + final Map productMap = + json.decode(inputTask.inputMap) as Map; + final User user = + User.fromJson(jsonDecode(inputTask.user) as Map); + + await OpenFoodAPIClient.saveProduct( + user, + Product.fromJson(productMap), + language: LanguageHelper.fromJson(inputTask.languageCode), + country: CountryHelper.fromJson(inputTask.country), + ); + + final DaoProduct daoProduct = DaoProduct(localDatabase); + final ProductQueryConfiguration configuration = ProductQueryConfiguration( + inputTask.barcode, + fields: ProductQuery.fields, + language: LanguageHelper.fromJson(inputTask.languageCode), + country: CountryHelper.fromJson(inputTask.country), + ); + + final ProductResult queryResult = + await OpenFoodAPIClient.getProduct(configuration); + + if (queryResult.status == SUCESS_CODE) { + final Product? product = queryResult.product; + if (product != null) { + await daoProduct.put(product); + localDatabase.notifyListeners(); + } + } + + // Returns true to let platform know that the task is completed + return TaskResult.success; +} + +/// This takes an image and uploads it to OpenFoodFacts servers +/// and queries the updated [Product]. +/// Then it updates the product in the local database. +Future uploadImage( + Map inputData, + LocalDatabase localDatabase, +) async { + final BackgroundImageInputData inputTask = + BackgroundImageInputData.fromJson(inputData); + final User user = + User.fromJson(jsonDecode(inputTask.user) as Map); + + final SendImage image = SendImage( + lang: LanguageHelper.fromJson(inputTask.languageCode), + barcode: inputTask.barcode, + imageField: ImageFieldExtension.getType(inputTask.imageField), + imageUri: Uri.parse(inputTask.imagePath), + ); + + await OpenFoodAPIClient.addProductImage(user, image); + + // Go to the file system and delete the file that was uploaded + File(inputTask.imagePath).deleteSync(); + final DaoProduct daoProduct = DaoProduct(localDatabase); + final ProductQueryConfiguration configuration = ProductQueryConfiguration( + inputTask.barcode, + fields: ProductQuery.fields, + language: LanguageHelper.fromJson(inputTask.languageCode), + country: CountryHelper.fromJson(inputTask.country), + ); + + final ProductResult queryResult = + await OpenFoodAPIClient.getProduct(configuration); + if (queryResult.status == SUCESS_CODE) { + final Product? product = queryResult.product; + if (product != null) { + await daoProduct.put(product); + localDatabase.notifyListeners(); + } + } + + return TaskResult.success; +} + +/// Helper class for serialization and deserialization of data used by the task manager +class BackgroundImageInputData { + BackgroundImageInputData({ + required this.processName, + required this.uniqueId, + required this.barcode, + required this.imageField, + required this.imagePath, + required this.languageCode, + required this.user, + required this.country, + }); + + BackgroundImageInputData.fromJson(Map json) + : processName = json['processName'] as String, + uniqueId = json['uniqueId'] as String, + barcode = json['barcode'] as String, + imageField = json['imageField'] as String, + imagePath = json['imagePath'] as String, + languageCode = json['languageCode'] as String, + user = json['user'] as String, + country = json['country'] as String; + + final String processName; + final String uniqueId; + final String barcode; + final String imageField; + final String imagePath; + final String languageCode; + final String user; + final String country; + + Map toJson() => { + 'processName': processName, + 'uniqueId': uniqueId, + 'barcode': barcode, + 'imageField': imageField, + 'imagePath': imagePath, + 'languageCode': languageCode, + 'user': user, + 'country': country, + }; +} + +class BackgroundOtherDetailsInput { + BackgroundOtherDetailsInput({ + required this.processName, + required this.uniqueId, + required this.barcode, + required this.languageCode, + required this.inputMap, + required this.user, + required this.country, + }); + + BackgroundOtherDetailsInput.fromJson(Map json) + : processName = json['processName'] as String, + uniqueId = json['uniqueId'] as String, + barcode = json['barcode'] as String, + languageCode = json['languageCode'] as String, + inputMap = json['inputMap'] as String, + user = json['user'] as String, + country = json['country'] as String; + + final String processName; + final String uniqueId; + final String barcode; + final String languageCode; + final String inputMap; + final String user; + final String country; + + Map toJson() => { + 'processName': processName, + 'uniqueId': uniqueId, + 'barcode': barcode, + 'languageCode': languageCode, + 'inputMap': inputMap, + 'user': user, + 'country': country, + }; +} + +/// Generates a unique id for the background task +/// This ensures that the background task is unique and also +/// ensures that in case of conflicts, the background task is replaced +/// Example: 00000000_BASIC_DETAILS_en_us_"random_user_id" +class UniqueIdGenerator { + const UniqueIdGenerator._(); + static String generateUniqueId( + String barcode, + String processIdentifier, + ) { + final StringBuffer stringBuffer = StringBuffer(); + stringBuffer + ..write(barcode) + ..write('_') + ..write(processIdentifier) + ..write('_') + ..write(ProductQuery.getLanguage().code) + ..write('_') + ..write(ProductQuery.getCountry()!.iso2Code) + ..write('_') + ..write(ProductQuery.getUser().userId); + return stringBuffer.toString(); + } +} diff --git a/packages/smooth_app/lib/helpers/picture_capture_helper.dart b/packages/smooth_app/lib/helpers/picture_capture_helper.dart index e4661caece2..9437a6eee7f 100644 --- a/packages/smooth_app/lib/helpers/picture_capture_helper.dart +++ b/packages/smooth_app/lib/helpers/picture_capture_helper.dart @@ -1,10 +1,16 @@ +import 'dart:convert'; +import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:openfoodfacts/utils/CountryHelper.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/data_models/continuous_scan_model.dart'; -import 'package:smooth_app/generic_lib/loading_dialog.dart'; +import 'package:smooth_app/database/local_database.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; +import 'package:smooth_app/helpers/background_task_helper.dart'; import 'package:smooth_app/query/product_query.dart'; +import 'package:task_manager/task_manager.dart'; Future uploadCapturedPicture( BuildContext context, { @@ -13,32 +19,68 @@ Future uploadCapturedPicture( required Uri imageUri, }) async { final AppLocalizations appLocalizations = AppLocalizations.of(context); - final SendImage image = SendImage( - lang: ProductQuery.getLanguage(), + final LocalDatabase localDatabase = context.read(); + final String uniqueId = _getUniqueId(imageField, barcode); + final BackgroundImageInputData backgroundImageInputData = + BackgroundImageInputData( + processName: IMAGE_UPLOAD_TASK, + uniqueId: uniqueId, barcode: barcode, - imageField: imageField, - imageUri: imageUri, + imageField: imageField.value, + imagePath: File(imageUri.path).path, + languageCode: ProductQuery.getLanguage().code, + user: jsonEncode(ProductQuery.getUser().toJson()), + country: ProductQuery.getCountry()!.iso2Code, ); - final Status? result = await LoadingDialog.run( - context: context, - future: OpenFoodAPIClient.addProductImage( - ProductQuery.getUser(), - image, + await TaskManager().addTask( + Task( + data: backgroundImageInputData.toJson(), + uniqueId: uniqueId, + ), + ); + + localDatabase.notifyListeners(); + // ignore: use_build_context_synchronously + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + appLocalizations.image_upload_queued, + ), + duration: SnackBarDuration.medium, ), - title: appLocalizations.uploading_image, ); - if (result == null || result.error != null || result.status != 'status ok') { - await LoadingDialog.error( - context: context, - title: appLocalizations.error_occurred, - ); - return false; - } //ignore: use_build_context_synchronously await _updateContinuousScanModel(context, barcode); return true; } +/// Generates a unique id for the task,in case of tasks with the same name, +/// it gets replaced with the new one,also for other images we randomize the +/// id with date time so that it runs separately. +/// Example: 00000000_front_en_us_"random_user_id" or +/// 00000000_other_en_us_"random_user_id"_1661677638662 +String _getUniqueId(ImageField imageField, String barcode) { +// Use String buffer to concatenate strings + final StringBuffer stringBuffer = StringBuffer(); + stringBuffer + ..write(barcode) + ..write('_') + ..write(imageField.value) + ..write('_') + ..write(ProductQuery.getLanguage().code) + ..write('_') + ..write(ProductQuery.getCountry()!.iso2Code) + ..write('_') + ..write(ProductQuery.getUser().userId); + if (imageField != ImageField.OTHER) { + return stringBuffer.toString(); + } + stringBuffer + ..write('_') + ..write(DateTime.now().millisecondsSinceEpoch); + return stringBuffer.toString(); +} + Future _updateContinuousScanModel( BuildContext context, String barcode) async { final ContinuousScanModel model = context.read(); diff --git a/packages/smooth_app/lib/knowledge_panel/knowledge_panels/knowledge_panel_page.dart b/packages/smooth_app/lib/knowledge_panel/knowledge_panels/knowledge_panel_page.dart index a591d6d5f88..2a6142ef4b2 100644 --- a/packages/smooth_app/lib/knowledge_panel/knowledge_panels/knowledge_panel_page.dart +++ b/packages/smooth_app/lib/knowledge_panel/knowledge_panels/knowledge_panel_page.dart @@ -8,6 +8,7 @@ import 'package:openfoodfacts/model/Product.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; import 'package:smooth_app/knowledge_panel/knowledge_panels/knowledge_panel_expanded_card.dart'; import 'package:smooth_app/pages/inherited_data_manager.dart'; @@ -93,7 +94,7 @@ class _KnowledgePanelPageState extends State ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(appLocalizations.product_refreshed), - duration: const Duration(seconds: 2), + duration: SnackBarDuration.short, ), ); } diff --git a/packages/smooth_app/lib/l10n/app_aa.arb b/packages/smooth_app/lib/l10n/app_aa.arb index 3ab6be2e570..c54581634a2 100644 --- a/packages/smooth_app/lib/l10n/app_aa.arb +++ b/packages/smooth_app/lib/l10n/app_aa.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_af.arb b/packages/smooth_app/lib/l10n/app_af.arb index 0a661179a15..d969898ddc5 100644 --- a/packages/smooth_app/lib/l10n/app_af.arb +++ b/packages/smooth_app/lib/l10n/app_af.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ak.arb b/packages/smooth_app/lib/l10n/app_ak.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_ak.arb +++ b/packages/smooth_app/lib/l10n/app_ak.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_am.arb b/packages/smooth_app/lib/l10n/app_am.arb index f86ff0e350f..f5f52e40d84 100644 --- a/packages/smooth_app/lib/l10n/app_am.arb +++ b/packages/smooth_app/lib/l10n/app_am.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ar.arb b/packages/smooth_app/lib/l10n/app_ar.arb index 257901fd86c..288e5cd3bf0 100644 --- a/packages/smooth_app/lib/l10n/app_ar.arb +++ b/packages/smooth_app/lib/l10n/app_ar.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "سيتم تحميل الصورة في الخلفية في أقرب وقت ممكن.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "سيتم تحديث المنتج في الخلفية بأسرع ما يمكن.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "لا يوجد تطبيق بريد إلكتروني!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "يرجى إرسال بريد إلكتروني إلينا يدويًا إلى contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_as.arb b/packages/smooth_app/lib/l10n/app_as.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_as.arb +++ b/packages/smooth_app/lib/l10n/app_as.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_az.arb b/packages/smooth_app/lib/l10n/app_az.arb index ef3829d96f2..4bfbe5b6362 100644 --- a/packages/smooth_app/lib/l10n/app_az.arb +++ b/packages/smooth_app/lib/l10n/app_az.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_be.arb b/packages/smooth_app/lib/l10n/app_be.arb index bf1b61806ff..7ab07f4226c 100644 --- a/packages/smooth_app/lib/l10n/app_be.arb +++ b/packages/smooth_app/lib/l10n/app_be.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_bg.arb b/packages/smooth_app/lib/l10n/app_bg.arb index e666e8900b3..25b5ba9d746 100644 --- a/packages/smooth_app/lib/l10n/app_bg.arb +++ b/packages/smooth_app/lib/l10n/app_bg.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "Снимката ще бъде качена във фонов режим възможно най-скоро.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Разгъни таблицата с хранителните стойности", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Помощ с OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Продуктът ще бъде актуализиран във фонов режим възможно най-скоро.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Моля, изпрати ни ръчно имейл до contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_bm.arb b/packages/smooth_app/lib/l10n/app_bm.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_bm.arb +++ b/packages/smooth_app/lib/l10n/app_bm.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_bn.arb b/packages/smooth_app/lib/l10n/app_bn.arb index aede1828db1..4002783c20e 100644 --- a/packages/smooth_app/lib/l10n/app_bn.arb +++ b/packages/smooth_app/lib/l10n/app_bn.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_bo.arb b/packages/smooth_app/lib/l10n/app_bo.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_bo.arb +++ b/packages/smooth_app/lib/l10n/app_bo.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_br.arb b/packages/smooth_app/lib/l10n/app_br.arb index 73797d481cc..b2b493375e5 100644 --- a/packages/smooth_app/lib/l10n/app_br.arb +++ b/packages/smooth_app/lib/l10n/app_br.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_bs.arb b/packages/smooth_app/lib/l10n/app_bs.arb index 87dac678478..641faa99755 100644 --- a/packages/smooth_app/lib/l10n/app_bs.arb +++ b/packages/smooth_app/lib/l10n/app_bs.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ca.arb b/packages/smooth_app/lib/l10n/app_ca.arb index 98d7d7f8bed..b9d10e2d8d5 100644 --- a/packages/smooth_app/lib/l10n/app_ca.arb +++ b/packages/smooth_app/lib/l10n/app_ca.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ce.arb b/packages/smooth_app/lib/l10n/app_ce.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_ce.arb +++ b/packages/smooth_app/lib/l10n/app_ce.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_co.arb b/packages/smooth_app/lib/l10n/app_co.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_co.arb +++ b/packages/smooth_app/lib/l10n/app_co.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_cs.arb b/packages/smooth_app/lib/l10n/app_cs.arb index 6152410f9c1..d24cdfab41d 100644 --- a/packages/smooth_app/lib/l10n/app_cs.arb +++ b/packages/smooth_app/lib/l10n/app_cs.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "Obrázek bude nahrán na pozadí co nejdříve.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Rozbalte tabulku nutričních údajů", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Pomoc s OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Produkt bude aktualizován na pozadí co nejdříve.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Pošlete nám prosím ručně e-mail na adresu contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_cv.arb b/packages/smooth_app/lib/l10n/app_cv.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_cv.arb +++ b/packages/smooth_app/lib/l10n/app_cv.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_cy.arb b/packages/smooth_app/lib/l10n/app_cy.arb index 16f311fe2af..c173646041a 100644 --- a/packages/smooth_app/lib/l10n/app_cy.arb +++ b/packages/smooth_app/lib/l10n/app_cy.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_da.arb b/packages/smooth_app/lib/l10n/app_da.arb index 0fde324f6fa..430a4eb0219 100644 --- a/packages/smooth_app/lib/l10n/app_da.arb +++ b/packages/smooth_app/lib/l10n/app_da.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Udvid ernæringsfaktatabellen", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Hjælp med OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Ingen e-mail app!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Send manuelt en e-mail til contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_de.arb b/packages/smooth_app/lib/l10n/app_de.arb index b7901195910..f4105d7c358 100644 --- a/packages/smooth_app/lib/l10n/app_de.arb +++ b/packages/smooth_app/lib/l10n/app_de.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "Das Bild wird so schnell wie möglich im Hintergrund hochgeladen.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Nährwerttabelle erweitern", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Hilfe bei OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Das Produkt wird so schnell wie möglich im Hintergrund aktualisiert.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Keine E-Mail-Anwendungen!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Bitte senden Sie uns manuell eine E-Mail an contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_el.arb b/packages/smooth_app/lib/l10n/app_el.arb index fd62e7a0fe0..6e2fe832871 100644 --- a/packages/smooth_app/lib/l10n/app_el.arb +++ b/packages/smooth_app/lib/l10n/app_el.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Βοήθεια με το OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_en.arb b/packages/smooth_app/lib/l10n/app_en.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_en.arb +++ b/packages/smooth_app/lib/l10n/app_en.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_eo.arb b/packages/smooth_app/lib/l10n/app_eo.arb index 7bd6e72aa62..1b742b5139a 100644 --- a/packages/smooth_app/lib/l10n/app_eo.arb +++ b/packages/smooth_app/lib/l10n/app_eo.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_es.arb b/packages/smooth_app/lib/l10n/app_es.arb index 4281d6891c6..d4b12e7d069 100644 --- a/packages/smooth_app/lib/l10n/app_es.arb +++ b/packages/smooth_app/lib/l10n/app_es.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "La imagen se cargará en segundo plano tan pronto como sea posible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Ampliar tabla de información nutricional", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Ayuda con OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "El producto se actualizará en segundo plano lo antes posible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No se encontró ninguna aplicación de correo electrónico!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Envíanos manualmente un correo electrónico a contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_et.arb b/packages/smooth_app/lib/l10n/app_et.arb index a47fa9a7747..5fba7f87b4b 100644 --- a/packages/smooth_app/lib/l10n/app_et.arb +++ b/packages/smooth_app/lib/l10n/app_et.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_eu.arb b/packages/smooth_app/lib/l10n/app_eu.arb index 50cb14eedc0..849e0b208eb 100644 --- a/packages/smooth_app/lib/l10n/app_eu.arb +++ b/packages/smooth_app/lib/l10n/app_eu.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_fa.arb b/packages/smooth_app/lib/l10n/app_fa.arb index 7b650cb651b..7536b53fe72 100644 --- a/packages/smooth_app/lib/l10n/app_fa.arb +++ b/packages/smooth_app/lib/l10n/app_fa.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_fi.arb b/packages/smooth_app/lib/l10n/app_fi.arb index bdd322597fc..5c297fb7763 100644 --- a/packages/smooth_app/lib/l10n/app_fi.arb +++ b/packages/smooth_app/lib/l10n/app_fi.arb @@ -238,9 +238,9 @@ "description": "Error message: You have to agree to the terms-of-use (A checkbox to do so is above this error message)" }, "sign_up_page_producer_checkbox": "I am a food producer", - "sign_up_page_producer_hint": "Producer/brand", - "sign_up_page_producer_error_empty": "Please enter a producer or a brand name", - "sign_up_page_subscribe_checkbox": "I'd like to subscribe to the Open Food Facts newsletter (You can unsubscribe from it at any time)", + "sign_up_page_producer_hint": "Tuottaja/tuotemerkki", + "sign_up_page_producer_error_empty": "Syötä valmistaja tai tuotemerkki", + "sign_up_page_subscribe_checkbox": "Haluan saada Open Food Facts -uutiskirjeitä (voit peruuttaa milloin tahansa)", "@Settings": {}, "settingsTitle": "Asetukset", "@settingsTitle": { @@ -250,19 +250,19 @@ "@darkmode": { "description": "The name of the darkmode on off switch" }, - "darkmode_dark": "Dark", + "darkmode_dark": "Tumma", "@darkmode_dark": { "description": "Indicator inside the darkmode switch (dark)" }, - "darkmode_light": "Light", + "darkmode_light": "Vaalea", "@darkmode_light": { "description": "Indicator inside the darkmode switch (light)" }, - "darkmode_system_default": "System default", + "darkmode_system_default": "Järjestelmän oletus", "@darkmode_system_default": { "description": "Indicator inside the darkmode switch (system default)" }, - "thanks_for_contributing": "Thanks for contributing", + "thanks_for_contributing": "Kiitos osallistumisesta", "@contributors": { "description": "Button label: Opens a pop up window where all contributors of this app are shown" }, @@ -271,13 +271,13 @@ "@support": { "description": "Button label: Opens a pop up window where all ways to get support are shown" }, - "support_join_slack": "Ask for help in our Slack channel", - "support_via_email": "Send us an e-mail", - "support_via_email_include_logs_dialog_title": "Send app logs?", - "support_via_email_include_logs_dialog_body": "Do you wish to include application logs in attachment to your email?", + "support_join_slack": "Pyydä apua Slack-kanavallamme", + "support_via_email": "Lähetä meille sähköpostia", + "support_via_email_include_logs_dialog_title": "Lähetetäänkö sovellusloki?", + "support_via_email_include_logs_dialog_body": "Haluatko lisätä sovelluslokit sähköpostiisi?", "termsOfUse": "Käyttöehdot", "@termsOfUse": {}, - "about_this_app": "About this app", + "about_this_app": "Sovelluksesta", "@about_this_app": { "description": "Button label: Opens a pop up window which shows information about the app" }, @@ -286,7 +286,7 @@ "@contribute": { "description": "Button label: Shows multiple ways how users can contribute to OFF" }, - "contribute_sw_development": "Software development", + "contribute_sw_development": "Ohjelmistokehitys", "@contribute_sw_development": { "description": "Button label + page title: Ways to help" }, @@ -294,19 +294,19 @@ "@contribute_develop_text": {}, "contribute_develop_text_2": "Voit liittyä Open Food Facts Slack -keskusteluryhmään, joka on ensisijainen tapa esittää kysymyksiä.", "@contribute_develop_text_2": {}, - "contribute_develop_dev_mode_title": "DEV Mode?", - "contribute_develop_dev_mode_subtitle": "Activate the DEV Mode", + "contribute_develop_dev_mode_title": "Kehittäjätila?", + "contribute_develop_dev_mode_subtitle": "Aktivoi kehittäjätila", "contribute_donate_header": "Lahjoita Open Food Factsille", "@contribute_donate_header": {}, "contribute_improve_ProductsToBeCompleted": "Täydennettävät tuotteet", "@contribute_improve_ProductsToBeCompleted": { "description": "Button label: Shows a list of products which aren't completed" }, - "contribute_improve_header": "Improving", + "contribute_improve_header": "Kehitys", "@contribute_improve_header": { "description": "Button label + page title: Ways to improve the database" }, - "contribute_improve_text": "The database is the core of the project. It's easy and very quick to help. You can download the mobile app for your phone, and start adding or improving products.\n\nOn the other hand, Open Food Facts website offers many ways to contribute: ", + "contribute_improve_text": "Tietokanta on projektimme ydin. On helppoa ja nopeaa auttaa. Voit ladata mobiilisovelluksen puhelimeesi, ja lisätä tai parantaa tuotteita.\n\nToisaalta, Open Food Facts -nettisivulla voit auttaa monin tavoin: ", "@contribute_improve_text": {}, "contribute_translate_header": "Käännä", "@contribute_translate_header": { @@ -316,42 +316,42 @@ "@contribute_translate_link_text": { "description": "Button label: Opens the Crowdin translation portal" }, - "contribute_translate_text": "Open Food Facts is a global project, containing products from more than 160 countries. Open Food Facts is translated into dozens of languages, with constantly evolving content.", + "contribute_translate_text": "Open Food Facts on kansainvälinen projekti, jossa on tuotteita yli 160 maasta. Open Food Facts on käännetty kymmenille kielille, ja sisältö kehittyy jatkuvasti.", "@contribute_translate_text": {}, "contribute_translate_text_2": "Käännökset on yksi hankkeen keskeisistä tehtävistä", "@contribute_translate_text_2": {}, - "contribute_share_header": "Share Open Food Facts with your friends", + "contribute_share_header": "Jaa Open Food Facts ystävillesi", "@contribute_share_header": {}, - "contribute_share_content": "I wanted to let you know about the app I've been using, Open Food Facts, which allows you to get the health and environmental impacts of your food, in a personalized way. It works by scanning the barcodes on the packaging. Finally it's free, does not require registration, and you can even help increase the number of products decyphered. Here's the link to get it for your phone: https://openfoodfacts.app", + "contribute_share_content": "Halusin kertoa käyttämästäni sovelluksesta, Open Food Factsistä, josta saat terveys- ja ilmastotietoja ruoastasi, personalisoidusti. Se toimii tuotteiden viivakoodien skannaamisella. Se on myös ilmainen, ei vaadi rekisteröintiä, ja voit auttaa tuotteiden lisäämisellä. Tässä linkki, josta voit ladata sovelluksen puhelimeesi: https://openfoodfacts.app", "@contribute_share_content": { "description": "Content that will be shared, don't forget to include the URL" }, - "tap_to_answer": "Tap here to answer questions", + "tap_to_answer": "Vastaa tästä kysymyksiin", "@tap_to_answer": { "description": "Button label shown on a product, clicking the button opens a card with unanswered product questions, users can answer these to contribute to Open food facts and gain rewards." }, - "saving_answer": "Saving your answer", + "saving_answer": "Tallennetaan vastauksiasi", "@saving_answer": { "description": "Dialog shown to users after they have answered a question, while the answer is being saved in the BE." }, - "contribute_to_get_rewards": "Help improve food transparency and get rewards", + "contribute_to_get_rewards": "Auta parantamaan ruoan läpinäkyvyyttä ja hanki palkintoja", "@contribute_to_get_rewards": { "description": "Button description shown on a product, clicking the button opens a card with unanswered product questions, users can answer these to contribute to Open food facts and gain rewards." }, - "question_sign_in_text": "Sign in to your Open Food Facts account to get credit for your contribution", + "question_sign_in_text": "Kirjaudu Open Food Facts -käyttäjätilillesi saadaksesi palkkioita työstäsi", "@Personal preferences": {}, "myPreferences": "Mieltymykseni", "@myPreferences": { "description": "Page title: Page where the ranking preferences can be changed" }, - "myPreferences_profile_title": "Your Profile", - "myPreferences_profile_subtitle": "Manage your Open Food Facts contributor account.", - "myPreferences_settings_title": "App Settings", - "myPreferences_settings_subtitle": "Dark mode, Analytics, ...", - "myPreferences_food_title": "Food Preferences", - "myPreferences_food_subtitle": "Choose what information about food matters most to you.", - "myPreferences_food_comment": "Choose what information about food matters most to you, in order to rank food according to your preferences, see the information you care about first, and get a compatibility summary. Those food preferences stay on your device, and are not associated with your Open Food Facts contributor account if you have one.", - "confirmResetPreferences": "Reset your food preferences?", + "myPreferences_profile_title": "Profiilisi", + "myPreferences_profile_subtitle": "Hallinoi Open Food Facts -tiliäsi.", + "myPreferences_settings_title": "Sovellusasetukset", + "myPreferences_settings_subtitle": "Tumma tila, tilastot, ...", + "myPreferences_food_title": "Ruokailutottumikseni", + "myPreferences_food_subtitle": "Valitse, mikä ruoan tieto kiinnostaa eniten.", + "myPreferences_food_comment": "Valitse, mikä ruoan tieto kiinnostaa eniten, luokittele ruoat mieltymyksiesi mukaan, katso tieto, joka sinua kiinnostaa ja hanki yhteensopivuusyhteenveto. Nämä ruokailutottumukset ovat laitteellasi, eikä Open Food Facts -tililläsi, jos sinulla on sellainen.", + "confirmResetPreferences": "Nollaa ruokailutottumuksesi", "@confirmResetPreferences": { "description": "Pop up title: Reassuring if the food preferences should really be reset" }, @@ -360,10 +360,10 @@ "description": "When you press this button, all products (in list or category) are sorted according to your preferences." }, "ranking_tab_all": "Kaikki", - "ranking_subtitle_match_yes": "A great match for you", - "ranking_subtitle_match_no": "Very poor match", + "ranking_subtitle_match_yes": "Hyvä osuma sinulle", + "ranking_subtitle_match_no": "Heikko osuma", "ranking_subtitle_match_maybe": "Unknown match", - "refresh_with_new_preferences": "Refresh the list with your new preferences", + "refresh_with_new_preferences": "Päivitä uudet ruokailutottumuksesi", "@refresh_with_new_preferences": { "description": "Action button label: Refresh the list with your new preferences" }, @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_fil.arb b/packages/smooth_app/lib/l10n/app_fil.arb index ff0bf94b58a..e001bddc4e7 100644 --- a/packages/smooth_app/lib/l10n/app_fil.arb +++ b/packages/smooth_app/lib/l10n/app_fil.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_fo.arb b/packages/smooth_app/lib/l10n/app_fo.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_fo.arb +++ b/packages/smooth_app/lib/l10n/app_fo.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_fr.arb b/packages/smooth_app/lib/l10n/app_fr.arb index 4adfc7aad52..04b073189da 100644 --- a/packages/smooth_app/lib/l10n/app_fr.arb +++ b/packages/smooth_app/lib/l10n/app_fr.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Développer le tableau nutritionnel", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Bienvenue sur OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ga.arb b/packages/smooth_app/lib/l10n/app_ga.arb index f2db0837ddb..6cf65f1d9ac 100644 --- a/packages/smooth_app/lib/l10n/app_ga.arb +++ b/packages/smooth_app/lib/l10n/app_ga.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_gd.arb b/packages/smooth_app/lib/l10n/app_gd.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_gd.arb +++ b/packages/smooth_app/lib/l10n/app_gd.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_gl.arb b/packages/smooth_app/lib/l10n/app_gl.arb index 05f8f687deb..d46cebdf56f 100644 --- a/packages/smooth_app/lib/l10n/app_gl.arb +++ b/packages/smooth_app/lib/l10n/app_gl.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_gu.arb b/packages/smooth_app/lib/l10n/app_gu.arb index 4112fcdfb92..268a02ae982 100644 --- a/packages/smooth_app/lib/l10n/app_gu.arb +++ b/packages/smooth_app/lib/l10n/app_gu.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ha.arb b/packages/smooth_app/lib/l10n/app_ha.arb index 69202e6cfb9..b6994ffff1f 100644 --- a/packages/smooth_app/lib/l10n/app_ha.arb +++ b/packages/smooth_app/lib/l10n/app_ha.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_he.arb b/packages/smooth_app/lib/l10n/app_he.arb index a1f1fb70cc8..e4c33d581c3 100644 --- a/packages/smooth_app/lib/l10n/app_he.arb +++ b/packages/smooth_app/lib/l10n/app_he.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "הרחבת טבלת העובדות התזונתיות", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "עזרה עם OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_hi.arb b/packages/smooth_app/lib/l10n/app_hi.arb index ba4eb29e239..826a2a216ea 100644 --- a/packages/smooth_app/lib/l10n/app_hi.arb +++ b/packages/smooth_app/lib/l10n/app_hi.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_hr.arb b/packages/smooth_app/lib/l10n/app_hr.arb index 2ca51549ec6..b5819fbe30b 100644 --- a/packages/smooth_app/lib/l10n/app_hr.arb +++ b/packages/smooth_app/lib/l10n/app_hr.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ht.arb b/packages/smooth_app/lib/l10n/app_ht.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_ht.arb +++ b/packages/smooth_app/lib/l10n/app_ht.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_hu.arb b/packages/smooth_app/lib/l10n/app_hu.arb index 619a060b8d2..c1963d1b845 100644 --- a/packages/smooth_app/lib/l10n/app_hu.arb +++ b/packages/smooth_app/lib/l10n/app_hu.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_hy.arb b/packages/smooth_app/lib/l10n/app_hy.arb index 3eae89a7fb0..b07dda7bc8f 100644 --- a/packages/smooth_app/lib/l10n/app_hy.arb +++ b/packages/smooth_app/lib/l10n/app_hy.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_id.arb b/packages/smooth_app/lib/l10n/app_id.arb index eacc8d8684e..9ff2fc4ad89 100644 --- a/packages/smooth_app/lib/l10n/app_id.arb +++ b/packages/smooth_app/lib/l10n/app_id.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ii.arb b/packages/smooth_app/lib/l10n/app_ii.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_ii.arb +++ b/packages/smooth_app/lib/l10n/app_ii.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_is.arb b/packages/smooth_app/lib/l10n/app_is.arb index 3342867a0b8..1e69472397e 100644 --- a/packages/smooth_app/lib/l10n/app_is.arb +++ b/packages/smooth_app/lib/l10n/app_is.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_it.arb b/packages/smooth_app/lib/l10n/app_it.arb index 1a7ce3f4579..147cd44fffe 100644 --- a/packages/smooth_app/lib/l10n/app_it.arb +++ b/packages/smooth_app/lib/l10n/app_it.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "L'immagine sarà caricata in background il prima possibile.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Espandi la tabella dei valori nutrizionali", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Aiuto con OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Il prodotto sarà aggiornato in background il prima possibile.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Nessun app di email!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Sei pregato di inviarci manualmente un'email a contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_iu.arb b/packages/smooth_app/lib/l10n/app_iu.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_iu.arb +++ b/packages/smooth_app/lib/l10n/app_iu.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ja.arb b/packages/smooth_app/lib/l10n/app_ja.arb index 020fa711615..858ef7f6b6e 100644 --- a/packages/smooth_app/lib/l10n/app_ja.arb +++ b/packages/smooth_app/lib/l10n/app_ja.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "画像はできるだけ早くpc上の背景にてアップロードされます。", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "栄養成分表を拡大", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "OpenFoodFacts のヘルプ", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "製品はできるだけ早く背景にて更新されます。", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_jv.arb b/packages/smooth_app/lib/l10n/app_jv.arb index 52f2ec4bf06..8aea30c97b3 100644 --- a/packages/smooth_app/lib/l10n/app_jv.arb +++ b/packages/smooth_app/lib/l10n/app_jv.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ka.arb b/packages/smooth_app/lib/l10n/app_ka.arb index 36402d3dca4..32d7f37ba84 100644 --- a/packages/smooth_app/lib/l10n/app_ka.arb +++ b/packages/smooth_app/lib/l10n/app_ka.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_kk.arb b/packages/smooth_app/lib/l10n/app_kk.arb index 64ed86944ae..7c7625b6386 100644 --- a/packages/smooth_app/lib/l10n/app_kk.arb +++ b/packages/smooth_app/lib/l10n/app_kk.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_km.arb b/packages/smooth_app/lib/l10n/app_km.arb index 2f1aed32588..944c3454226 100644 --- a/packages/smooth_app/lib/l10n/app_km.arb +++ b/packages/smooth_app/lib/l10n/app_km.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_kn.arb b/packages/smooth_app/lib/l10n/app_kn.arb index 1d2829efefe..7be2e1fba18 100644 --- a/packages/smooth_app/lib/l10n/app_kn.arb +++ b/packages/smooth_app/lib/l10n/app_kn.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ko.arb b/packages/smooth_app/lib/l10n/app_ko.arb index 923df884b9a..3ed88f31d1a 100644 --- a/packages/smooth_app/lib/l10n/app_ko.arb +++ b/packages/smooth_app/lib/l10n/app_ko.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "영양 성분표 확장", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "OpenFoodFacts 도움말", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ku.arb b/packages/smooth_app/lib/l10n/app_ku.arb index 0b15c30b804..5ebad7c4a25 100644 --- a/packages/smooth_app/lib/l10n/app_ku.arb +++ b/packages/smooth_app/lib/l10n/app_ku.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_kw.arb b/packages/smooth_app/lib/l10n/app_kw.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_kw.arb +++ b/packages/smooth_app/lib/l10n/app_kw.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ky.arb b/packages/smooth_app/lib/l10n/app_ky.arb index 7ba8118fd2c..86f55a4c43a 100644 --- a/packages/smooth_app/lib/l10n/app_ky.arb +++ b/packages/smooth_app/lib/l10n/app_ky.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_la.arb b/packages/smooth_app/lib/l10n/app_la.arb index 397adac5cb8..bce7c1d2199 100644 --- a/packages/smooth_app/lib/l10n/app_la.arb +++ b/packages/smooth_app/lib/l10n/app_la.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_lb.arb b/packages/smooth_app/lib/l10n/app_lb.arb index d42fc0949cd..92cc5913469 100644 --- a/packages/smooth_app/lib/l10n/app_lb.arb +++ b/packages/smooth_app/lib/l10n/app_lb.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_lo.arb b/packages/smooth_app/lib/l10n/app_lo.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_lo.arb +++ b/packages/smooth_app/lib/l10n/app_lo.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_lt.arb b/packages/smooth_app/lib/l10n/app_lt.arb index d37c729507a..701897bd57e 100644 --- a/packages/smooth_app/lib/l10n/app_lt.arb +++ b/packages/smooth_app/lib/l10n/app_lt.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Išplėskite mitybos faktų lentelę", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_lv.arb b/packages/smooth_app/lib/l10n/app_lv.arb index 258a6d1b76e..852614059f1 100644 --- a/packages/smooth_app/lib/l10n/app_lv.arb +++ b/packages/smooth_app/lib/l10n/app_lv.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_mg.arb b/packages/smooth_app/lib/l10n/app_mg.arb index 7f1b74feb9b..26fac8fd6fd 100644 --- a/packages/smooth_app/lib/l10n/app_mg.arb +++ b/packages/smooth_app/lib/l10n/app_mg.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_mi.arb b/packages/smooth_app/lib/l10n/app_mi.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_mi.arb +++ b/packages/smooth_app/lib/l10n/app_mi.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ml.arb b/packages/smooth_app/lib/l10n/app_ml.arb index ba3a3c3cf6f..e36b7ba0cc0 100644 --- a/packages/smooth_app/lib/l10n/app_ml.arb +++ b/packages/smooth_app/lib/l10n/app_ml.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_mn.arb b/packages/smooth_app/lib/l10n/app_mn.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_mn.arb +++ b/packages/smooth_app/lib/l10n/app_mn.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_mr.arb b/packages/smooth_app/lib/l10n/app_mr.arb index bdde8d8e783..fa5a47e928b 100644 --- a/packages/smooth_app/lib/l10n/app_mr.arb +++ b/packages/smooth_app/lib/l10n/app_mr.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ms.arb b/packages/smooth_app/lib/l10n/app_ms.arb index 891186162d2..e084af3fb7f 100644 --- a/packages/smooth_app/lib/l10n/app_ms.arb +++ b/packages/smooth_app/lib/l10n/app_ms.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_mt.arb b/packages/smooth_app/lib/l10n/app_mt.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_mt.arb +++ b/packages/smooth_app/lib/l10n/app_mt.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_my.arb b/packages/smooth_app/lib/l10n/app_my.arb index ef1f13a1cf0..3ac00c3bfbd 100644 --- a/packages/smooth_app/lib/l10n/app_my.arb +++ b/packages/smooth_app/lib/l10n/app_my.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_nb.arb b/packages/smooth_app/lib/l10n/app_nb.arb index fbb06826d75..ac6551969c5 100644 --- a/packages/smooth_app/lib/l10n/app_nb.arb +++ b/packages/smooth_app/lib/l10n/app_nb.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ne.arb b/packages/smooth_app/lib/l10n/app_ne.arb index e463d2c9737..a7db71f19ea 100644 --- a/packages/smooth_app/lib/l10n/app_ne.arb +++ b/packages/smooth_app/lib/l10n/app_ne.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_nl.arb b/packages/smooth_app/lib/l10n/app_nl.arb index 16d0e061f2e..19b12349da9 100644 --- a/packages/smooth_app/lib/l10n/app_nl.arb +++ b/packages/smooth_app/lib/l10n/app_nl.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "De afbeelding zal zo snel mogelijk op de achtergrond worden geüpload.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Tabel met voedingswaarden uitvouwen", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help met OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Het product zal zo snel mogelijk op de achtergrond worden bijgewerkt.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Geen e-mailtoepassingen gevonden!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Stuur ons alstublieft handmatig een e-mail naar contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_nn.arb b/packages/smooth_app/lib/l10n/app_nn.arb index 8b783dcafa9..502fb999097 100644 --- a/packages/smooth_app/lib/l10n/app_nn.arb +++ b/packages/smooth_app/lib/l10n/app_nn.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_no.arb b/packages/smooth_app/lib/l10n/app_no.arb index 8b783dcafa9..502fb999097 100644 --- a/packages/smooth_app/lib/l10n/app_no.arb +++ b/packages/smooth_app/lib/l10n/app_no.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_nr.arb b/packages/smooth_app/lib/l10n/app_nr.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_nr.arb +++ b/packages/smooth_app/lib/l10n/app_nr.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_oc.arb b/packages/smooth_app/lib/l10n/app_oc.arb index 083a5c58ea6..1cb67bf75f3 100644 --- a/packages/smooth_app/lib/l10n/app_oc.arb +++ b/packages/smooth_app/lib/l10n/app_oc.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_pa.arb b/packages/smooth_app/lib/l10n/app_pa.arb index 3168da9913f..62462430641 100644 --- a/packages/smooth_app/lib/l10n/app_pa.arb +++ b/packages/smooth_app/lib/l10n/app_pa.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_pl.arb b/packages/smooth_app/lib/l10n/app_pl.arb index 1941f25c50b..5dfdbcc2318 100644 --- a/packages/smooth_app/lib/l10n/app_pl.arb +++ b/packages/smooth_app/lib/l10n/app_pl.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "Obraz zostanie przesłany w tle tak szybko, jak to możliwe.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Rozwiń tabelę wartości odżywczych", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Pomoc z OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Produkt zostanie zaktualizowany w tle tak szybko, jak to możliwe.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Brak aplikacji e-mail!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Prześlij nam ręcznie e-mail na adres contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_pt.arb b/packages/smooth_app/lib/l10n/app_pt.arb index be0dd3ee00f..81648b63301 100644 --- a/packages/smooth_app/lib/l10n/app_pt.arb +++ b/packages/smooth_app/lib/l10n/app_pt.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "A imagem será carregada em segundo plano assim que possível.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expandir tabela de informações nutricionais", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Uma ajuda com OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "O produto será atualizado em segundo plano assim que possível.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Nenhum aplicativo de e-mail!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Por favor, envie manualmente um e-mail para contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_qu.arb b/packages/smooth_app/lib/l10n/app_qu.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_qu.arb +++ b/packages/smooth_app/lib/l10n/app_qu.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_rm.arb b/packages/smooth_app/lib/l10n/app_rm.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_rm.arb +++ b/packages/smooth_app/lib/l10n/app_rm.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ro.arb b/packages/smooth_app/lib/l10n/app_ro.arb index 2108e86bcb7..3ee75f717e1 100644 --- a/packages/smooth_app/lib/l10n/app_ro.arb +++ b/packages/smooth_app/lib/l10n/app_ro.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "Imaginea va fi încărcată în fundal cât mai curând posibil.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Extinderea tabelului cu date nutriționale", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Ajutor cu OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Produsul va fi actualizat în fundal cât mai curând posibil.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "Fără aplicație de e-mail!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Vă rugăm să ne trimiteți manual un e-mail la contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ru.arb b/packages/smooth_app/lib/l10n/app_ru.arb index a2c9efd1b90..d4e81efd69e 100644 --- a/packages/smooth_app/lib/l10n/app_ru.arb +++ b/packages/smooth_app/lib/l10n/app_ru.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Помощь с OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sa.arb b/packages/smooth_app/lib/l10n/app_sa.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_sa.arb +++ b/packages/smooth_app/lib/l10n/app_sa.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sc.arb b/packages/smooth_app/lib/l10n/app_sc.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_sc.arb +++ b/packages/smooth_app/lib/l10n/app_sc.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sd.arb b/packages/smooth_app/lib/l10n/app_sd.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_sd.arb +++ b/packages/smooth_app/lib/l10n/app_sd.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sg.arb b/packages/smooth_app/lib/l10n/app_sg.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_sg.arb +++ b/packages/smooth_app/lib/l10n/app_sg.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_si.arb b/packages/smooth_app/lib/l10n/app_si.arb index f2755d52396..02fca6996a3 100644 --- a/packages/smooth_app/lib/l10n/app_si.arb +++ b/packages/smooth_app/lib/l10n/app_si.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sk.arb b/packages/smooth_app/lib/l10n/app_sk.arb index 5f8a1345628..2a79c45d038 100644 --- a/packages/smooth_app/lib/l10n/app_sk.arb +++ b/packages/smooth_app/lib/l10n/app_sk.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sl.arb b/packages/smooth_app/lib/l10n/app_sl.arb index a672fe151e9..f5242c24c03 100644 --- a/packages/smooth_app/lib/l10n/app_sl.arb +++ b/packages/smooth_app/lib/l10n/app_sl.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sn.arb b/packages/smooth_app/lib/l10n/app_sn.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_sn.arb +++ b/packages/smooth_app/lib/l10n/app_sn.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_so.arb b/packages/smooth_app/lib/l10n/app_so.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_so.arb +++ b/packages/smooth_app/lib/l10n/app_so.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sq.arb b/packages/smooth_app/lib/l10n/app_sq.arb index afee9a4f306..f7ddad979ed 100644 --- a/packages/smooth_app/lib/l10n/app_sq.arb +++ b/packages/smooth_app/lib/l10n/app_sq.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sr.arb b/packages/smooth_app/lib/l10n/app_sr.arb index 425c4f267e9..5b788ded630 100644 --- a/packages/smooth_app/lib/l10n/app_sr.arb +++ b/packages/smooth_app/lib/l10n/app_sr.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ss.arb b/packages/smooth_app/lib/l10n/app_ss.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_ss.arb +++ b/packages/smooth_app/lib/l10n/app_ss.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_st.arb b/packages/smooth_app/lib/l10n/app_st.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_st.arb +++ b/packages/smooth_app/lib/l10n/app_st.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sv.arb b/packages/smooth_app/lib/l10n/app_sv.arb index a81d595923c..eaaffd470a1 100644 --- a/packages/smooth_app/lib/l10n/app_sv.arb +++ b/packages/smooth_app/lib/l10n/app_sv.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_sw.arb b/packages/smooth_app/lib/l10n/app_sw.arb index fd15b21e6ca..f8d657a3154 100644 --- a/packages/smooth_app/lib/l10n/app_sw.arb +++ b/packages/smooth_app/lib/l10n/app_sw.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ta.arb b/packages/smooth_app/lib/l10n/app_ta.arb index 460ec632d55..2fee0cd3176 100644 --- a/packages/smooth_app/lib/l10n/app_ta.arb +++ b/packages/smooth_app/lib/l10n/app_ta.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_te.arb b/packages/smooth_app/lib/l10n/app_te.arb index e5a8c2b38d5..080c21962c8 100644 --- a/packages/smooth_app/lib/l10n/app_te.arb +++ b/packages/smooth_app/lib/l10n/app_te.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_tg.arb b/packages/smooth_app/lib/l10n/app_tg.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_tg.arb +++ b/packages/smooth_app/lib/l10n/app_tg.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_th.arb b/packages/smooth_app/lib/l10n/app_th.arb index c4513b51c97..edc5e80b4ee 100644 --- a/packages/smooth_app/lib/l10n/app_th.arb +++ b/packages/smooth_app/lib/l10n/app_th.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ti.arb b/packages/smooth_app/lib/l10n/app_ti.arb index d97595d76bc..8d24749a48e 100644 --- a/packages/smooth_app/lib/l10n/app_ti.arb +++ b/packages/smooth_app/lib/l10n/app_ti.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_tl.arb b/packages/smooth_app/lib/l10n/app_tl.arb index 205b46c8ad2..50c5ddf4116 100644 --- a/packages/smooth_app/lib/l10n/app_tl.arb +++ b/packages/smooth_app/lib/l10n/app_tl.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_tn.arb b/packages/smooth_app/lib/l10n/app_tn.arb index c7a189ffaf8..03cb27058b3 100644 --- a/packages/smooth_app/lib/l10n/app_tn.arb +++ b/packages/smooth_app/lib/l10n/app_tn.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_tr.arb b/packages/smooth_app/lib/l10n/app_tr.arb index 09e646ac151..795d8ada763 100644 --- a/packages/smooth_app/lib/l10n/app_tr.arb +++ b/packages/smooth_app/lib/l10n/app_tr.arb @@ -273,7 +273,7 @@ }, "support_join_slack": "Slack kanalımızda yardım isteyin", "support_via_email": "Bize bir e-posta gönder", - "support_via_email_include_logs_dialog_title": "Send app logs?", + "support_via_email_include_logs_dialog_title": "Uygulama günlükleri gönderilsin mi?", "support_via_email_include_logs_dialog_body": "Do you wish to include application logs in attachment to your email?", "termsOfUse": "Kullanım Koşulları", "@termsOfUse": {}, @@ -295,7 +295,7 @@ "contribute_develop_text_2": "Soru sormanın genelde tercih edilen yolu olan Open Food Facts Slack sohbet odasına katılabilirsiniz.", "@contribute_develop_text_2": {}, "contribute_develop_dev_mode_title": "DEV Mode?", - "contribute_develop_dev_mode_subtitle": "Activate the DEV Mode", + "contribute_develop_dev_mode_subtitle": "DEV Modunu Etkinleştirin", "contribute_donate_header": "Open Food Facts'e Bağışta Bulunun", "@contribute_donate_header": {}, "contribute_improve_ProductsToBeCompleted": "Tamamlanacak ürünler", @@ -435,7 +435,7 @@ "packaging_editing_instructions": "List all packaging parts separated by a comma or line feed, with their amount (e.g. 1 or 6) type (e.g. bottle, box, can), material (e.g. plastic, metal, aluminium) and if available their size (e.g. 33cl) and recycling instructions.\nExample: 1 glass bottle to recycle, 1 plastic cork to throw away", "packaging_editing_error": "Failed to save the packaging.", "packaging_editing_image_error": "Failed to get a new packaging image.", - "packaging_editing_title": "Edit Packaging", + "packaging_editing_title": "Paketlemeyi Düzenle", "nutrition": "Beslenme", "@nutrition": {}, "nutrition_facts_photo": "Besin değerleri fotoğrafı", @@ -679,7 +679,7 @@ "description": "Button to switch to 'compare products mode'" }, "retry_button_label": "Tekrar dene", - "connect_with_us": "Connect with us", + "connect_with_us": "Bizimle iletişime geçin", "instagram": "Instagram", "instagram_link": "https://instagram.com/open.food.facts", "twitter": "Twitter", @@ -687,7 +687,7 @@ "blog": "Blog", "faq": "SSS", "discover": "Keşfet", - "how_to_contribute": "How to Contribute", + "how_to_contribute": "Nasıl Katkıda Bulunulur", "hint_knowledge_panel_message": "Your can tap on any part of the card to get more details about what you see. Try it now!", "@hint_knowledge_panel_message": { "description": "Hint popup indicating the card is clickable during onboarding" @@ -811,7 +811,7 @@ "@product_list_your_ranking": { "description": "Your ranking screen title" }, - "product_list_empty_icon_desc": "History not available", + "product_list_empty_icon_desc": "Geçmiş kullanılamıyor", "@product_list_icon_desc": { "description": "When the history list is empty, icon description (for accessibility) of the message explaining to start scanning" }, @@ -889,13 +889,13 @@ } } }, - "settings_app_app": "Application", + "settings_app_app": "Uygulama", "settings_app_data": "Privacy & monitoring", - "settings_app_camera": "Camera", + "settings_app_camera": "Kamera", "@camera_settings_title": { "description": "Name of the camera section in the settings" }, - "camera_high_resolution_preset_toggle_title": "High performance mode", + "camera_high_resolution_preset_toggle_title": "Yüksek performans modu", "@camera_high_resolution_preset_toggle_title": { "description": "Title for the Camera high resolution toggle" }, @@ -921,9 +921,9 @@ }, "camera_focus_point_algorithm_value_auto_label": "Otomatik", "camera_focus_point_algorithm_value_auto_description": "Let the system choose automatically between fast and safe modes.", - "camera_focus_point_algorithm_value_new_algorithm_label": "Fast mode", + "camera_focus_point_algorithm_value_new_algorithm_label": "Hızlı mod", "camera_focus_point_algorithm_value_new_algorithm_description": "A mode recommended to recent devices.", - "camera_focus_point_algorithm_value_old_algorithm_label": "Safe mode", + "camera_focus_point_algorithm_value_old_algorithm_label": "Güvenli mod", "camera_focus_point_algorithm_value_old_algorithm_description": "If fast mode doesn't work, this should resolve your focus issues.", "camera_play_sound_title": "Taranınca ses çıkar", "@camera_play_sound_title": { @@ -958,7 +958,7 @@ "description": "When the camera/photo permission failed to be acquired (!= denied)" }, "permission_photo_denied_title": "Barkodları taramak için kamera kullanımına izin verin", - "permission_photo_denied_message": "For an enhanced experience, please allow {appName} to access your camera. You will be able to directly scan barcodes.", + "permission_photo_denied_message": "Gelişmiş bir deneyim için lütfen {appName} kameranıza erişmesine izin verin. Barkodları doğrudan tarayabileceksiniz.", "@permission_photo_denied_message": { "description": "When the camera/photo permission is denied by user", "placeholders": { @@ -1027,7 +1027,7 @@ "@edit_product_form_item_origins_title": { "description": "Product edition - Origins - Title" }, - "edit_product_form_item_origins_hint": "Spain", + "edit_product_form_item_origins_hint": "İspanya", "@edit_product_form_item_origins_hint": { "description": "Product edition - Origins - input textfield hint" }, @@ -1035,7 +1035,7 @@ "@edit_product_form_item_origins_explainer_1": { "description": "Product edition - Origins - input explainer, part 1" }, - "edit_product_form_item_origins_explainer_2": "Examples: Beef from Argentina, The soy does not come from the European Union", + "edit_product_form_item_origins_explainer_2": "Örnekler: Arjantin'den sığır eti, Soya Avrupa Birliği'nden gelmiyor", "@edit_product_form_item_origins_explainer_2": { "description": "Product edition - Origins - input explainer, part 2" }, @@ -1043,7 +1043,7 @@ "@edit_product_form_item_countries_title": { "description": "Product edition - Countries - Title" }, - "edit_product_form_item_countries_hint": "Spain", + "edit_product_form_item_countries_hint": "İspanya", "@edit_product_form_item_countries_hint": { "description": "Product edition - Countries - input textfield hint" }, @@ -1084,15 +1084,15 @@ "description": "Product edition - Categories - input explainer, part 3" }, "edit_product_form_item_exit_confirmation": "Sayfadan ayrılmadan önce değişiklikleri kaydetmek istiyor musunuz?", - "edit_product_form_item_exit_confirmation_positive_button": "Save my changes", - "edit_product_form_item_exit_confirmation_negative_button": "Ignore my changes", + "edit_product_form_item_exit_confirmation_positive_button": "Değişikliklerimi kaydet", + "edit_product_form_item_exit_confirmation_negative_button": "Değişikliklerimi yoksay", "edit_product_form_item_ingredients_title": "İçerikler ve kökenleri", "@edit_product_form_item_ingredients_title": { "description": "Product edition - Ingredients - Title" }, "edit_product_form_item_add_valid_item_tooltip": "Ekle", - "edit_product_form_item_add_invalid_item_tooltip": "Please enter a text first", - "edit_product_form_item_remove_item_tooltip": "Remove", + "edit_product_form_item_add_invalid_item_tooltip": "Lütfen önce bir metin girin", + "edit_product_form_item_remove_item_tooltip": "Kaldır", "edit_product_form_item_packaging_title": "Ambalaj", "@edit_product_form_item_packaging_title": { "description": "Product edition - Packaging - Title" @@ -1110,7 +1110,7 @@ "description": "Product edition - Nutrition facts - Save button" }, "completed_basic_details_btn_text": "Temel bilgileri tamamlayın", - "not_implemented_snackbar_text": "Not implemented yet", + "not_implemented_snackbar_text": "Henüz uygulanmadı", "category_picker_page_appbar_text": "Kategoriler", "edit_ingredients_extrait_ingredients_btn_text": "İçindekileri çıkartın", "@edit_ingredients_extrait_ingredients_btn_text": { @@ -1247,7 +1247,7 @@ "@dev_preferences_test_environment_dialog_title": { "description": "User dev preferences - Info about test environment - Dialog title" }, - "dev_preferences_ml_kit_title": "Use ML Kit", + "dev_preferences_ml_kit_title": "ML Kitini Kullan", "@dev_preferences_ml_kit_title": { "description": "User dev preferences - Enable ML Kit - Title" }, @@ -1267,7 +1267,7 @@ "@dev_preferences_export_history_title": { "description": "User dev preferences - Export history - Title" }, - "dev_preferences_export_history_progress_error": "exception", + "dev_preferences_export_history_progress_error": "istisna", "@dev_preferences_export_history_progress_error": { "description": "User dev preferences - Export history - Item - Error" }, @@ -1351,11 +1351,11 @@ "@dev_mode_scan_preprocess_half_image": { "description": "Scan mode - Preprocess half image" }, - "dev_mode_scan_scan_full_image": "Full image scanning", + "dev_mode_scan_scan_full_image": "Tam görüntü tarama", "@dev_mode_scan_scan_full_image": { "description": "Scan mode - Scan full image" }, - "dev_mode_scan_scan_half_image": "Half image scanning", + "dev_mode_scan_scan_half_image": "Yarım görüntü tarama", "@dev_mode_scan_scan_half_image": { "description": "Scan mode - Scan half image" }, @@ -1415,7 +1415,7 @@ "@edit_product_action_confirm": { "description": "Product edition - FAB actions - confirm" }, - "signup_page_terms_of_use_line1": "I agree to the Open Food Facts ", + "signup_page_terms_of_use_line1": "Open Food Facts'i kabul ediyorum ", "@signup_page_terms_of_use_line1": { "description": "User consent for terms of use (line 1)" }, @@ -1544,11 +1544,11 @@ "@choose_image_source_title": { "description": "Title for the image source chooser" }, - "choose_image_source_body": "Please choose a image source", + "choose_image_source_body": "Lütfen bir resim kaynağı seçin", "@choose_image_source_body": { "description": "Body for the image source chooser" }, - "gallery_source_label": "Gallery", + "gallery_source_label": "Galeri", "@gallery_source_label": { "description": "Label for the gallery image source" }, @@ -1565,14 +1565,18 @@ } } }, - "capture": "Capture New", + "capture": "Yeni Yakala", "@capture": { "description": "Button label for taking a photo" }, - "choose_from_gallery": "Choose from gallery", + "choose_from_gallery": "Galeriden seç", "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "Resim en kısa sürede arka planda yüklenecektir.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1587,7 +1591,7 @@ "@no_internet_connection": { "description": "Message when there is no internet connection" }, - "world_results_label": "Entire world", + "world_results_label": "Tüm dünya", "@world_results_label": { "description": "Label describing the current source of the results: the entire world. Keep it short" }, @@ -1595,7 +1599,7 @@ "@world_results_action": { "description": "Label for the action button that displays the results from the entire world" }, - "clipboard_barcode_copy": "Copy barcode to clipboard", + "clipboard_barcode_copy": "Barkodu panoya kopyala", "@clipboard_barcode_copied": { "description": "Snackbar label after clipboard copy", "placeholders": { @@ -1605,13 +1609,25 @@ } } }, - "clipboard_barcode_copied": "Barcode {barcode} copied to the clipboard!", - "choose_app_language": "Choose App Language", + "clipboard_barcode_copied": "Barkod {barcode} panoya kopyalandı!", + "choose_app_language": "Uygulama Dilini Seçin", "@choose_app_language": { "description": "Choose Application Language" }, - "help_with_openfoodfacts": "Help with OpenFoodFacts", + "help_with_openfoodfacts": "OpenFoodFacts ile Yardım", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "Ürün en kısa sürede arka planda güncellenecektir.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "E-posta uygulaması yok!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Lütfen bize manuel olarak contact@openfoodfacts.org adresine bir e-posta gönderin", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ts.arb b/packages/smooth_app/lib/l10n/app_ts.arb index c7a189ffaf8..03cb27058b3 100644 --- a/packages/smooth_app/lib/l10n/app_ts.arb +++ b/packages/smooth_app/lib/l10n/app_ts.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_tt.arb b/packages/smooth_app/lib/l10n/app_tt.arb index c7bce7b5d11..3e7ce729038 100644 --- a/packages/smooth_app/lib/l10n/app_tt.arb +++ b/packages/smooth_app/lib/l10n/app_tt.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_tw.arb b/packages/smooth_app/lib/l10n/app_tw.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_tw.arb +++ b/packages/smooth_app/lib/l10n/app_tw.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ty.arb b/packages/smooth_app/lib/l10n/app_ty.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_ty.arb +++ b/packages/smooth_app/lib/l10n/app_ty.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ug.arb b/packages/smooth_app/lib/l10n/app_ug.arb index 12157b15fb0..741cfcc789c 100644 --- a/packages/smooth_app/lib/l10n/app_ug.arb +++ b/packages/smooth_app/lib/l10n/app_ug.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_uk.arb b/packages/smooth_app/lib/l10n/app_uk.arb index 1269f636327..16a223e817e 100644 --- a/packages/smooth_app/lib/l10n/app_uk.arb +++ b/packages/smooth_app/lib/l10n/app_uk.arb @@ -12,13 +12,13 @@ "@next_label": { "description": "A label on a button that says 'Next', pressing the button takes the user to the next screen." }, - "go_back_to_top": "Go back to top", + "go_back_to_top": "На початок", "save": "Зберегти", - "save_confirmation": "Are you sure you want to save?", + "save_confirmation": "Ви впевнені, що хочете зберегти?", "skip": "Пропустити", "cancel": "Відмінити", "@cancel": {}, - "ignore": "Ignore", + "ignore": "Ігнорувати", "@ignore": { "description": "'Ignore' button. Typical use case in combination with 'OK' and 'Cancel' buttons." }, @@ -40,7 +40,7 @@ "@error_occurred": {}, "featureInProgress": "Ми все ще працюємо над цією функцією, стежте за оновленнями", "@featureInProgress": {}, - "label_web": "View on the web", + "label_web": "Переглянути в Інтернеті", "@label_web": {}, "learnMore": "Докладніше", "@learnMore": {}, @@ -103,13 +103,13 @@ "description": "Looking for: BARCODE" }, "@Introduction screen": {}, - "welcomeToOpenFoodFacts": "Welcome to Open Food Facts", + "welcomeToOpenFoodFacts": "Вітаємо в Open Food Facts", "@welcomeToOpenFoodFacts": {}, "whatIsOff": "Open Food Facts - це світова некомерційна організація, що заснована місцевими спільнотами.", "@whatIsOff": { "description": "Description of Open Food Facts organization." }, - "offUtility": "Choose food that is good for you and the planet.", + "offUtility": "Обирайте їжу, що не шкодить ні Вам, ні планеті.", "@offUtility": { "description": "Description of what a user can use Open Food Facts for." }, @@ -132,7 +132,7 @@ "@login": { "description": "Text field hint: unified name for either username or e-mail address" }, - "login_page_username_or_email": "Please enter username or e-mail", + "login_page_username_or_email": "Введіть, буль ласка, ім'я користувача або адресу електронної пошти", "login_page_password_error_empty": "Будь ласка, введіть пароль", "create_account": "Створіть обліковий запис", "@create_account": { @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ur.arb b/packages/smooth_app/lib/l10n/app_ur.arb index 6a596b9bd96..60670d210d8 100644 --- a/packages/smooth_app/lib/l10n/app_ur.arb +++ b/packages/smooth_app/lib/l10n/app_ur.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_uz.arb b/packages/smooth_app/lib/l10n/app_uz.arb index 9203fbedce5..3d0889c3e41 100644 --- a/packages/smooth_app/lib/l10n/app_uz.arb +++ b/packages/smooth_app/lib/l10n/app_uz.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_ve.arb b/packages/smooth_app/lib/l10n/app_ve.arb index c7a189ffaf8..03cb27058b3 100644 --- a/packages/smooth_app/lib/l10n/app_ve.arb +++ b/packages/smooth_app/lib/l10n/app_ve.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_vi.arb b/packages/smooth_app/lib/l10n/app_vi.arb index 5e75507d0e6..55206a4df08 100644 --- a/packages/smooth_app/lib/l10n/app_vi.arb +++ b/packages/smooth_app/lib/l10n/app_vi.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_wa.arb b/packages/smooth_app/lib/l10n/app_wa.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_wa.arb +++ b/packages/smooth_app/lib/l10n/app_wa.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_wo.arb b/packages/smooth_app/lib/l10n/app_wo.arb index c7a189ffaf8..03cb27058b3 100644 --- a/packages/smooth_app/lib/l10n/app_wo.arb +++ b/packages/smooth_app/lib/l10n/app_wo.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_xh.arb b/packages/smooth_app/lib/l10n/app_xh.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_xh.arb +++ b/packages/smooth_app/lib/l10n/app_xh.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_yi.arb b/packages/smooth_app/lib/l10n/app_yi.arb index dca131f1f57..4cb954b7585 100644 --- a/packages/smooth_app/lib/l10n/app_yi.arb +++ b/packages/smooth_app/lib/l10n/app_yi.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_yo.arb b/packages/smooth_app/lib/l10n/app_yo.arb index ce3ae351a78..9ed43e68436 100644 --- a/packages/smooth_app/lib/l10n/app_yo.arb +++ b/packages/smooth_app/lib/l10n/app_yo.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_zh.arb b/packages/smooth_app/lib/l10n/app_zh.arb index 34d06208804..c91353beb45 100644 --- a/packages/smooth_app/lib/l10n/app_zh.arb +++ b/packages/smooth_app/lib/l10n/app_zh.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/l10n/app_zu.arb b/packages/smooth_app/lib/l10n/app_zu.arb index c3afaa06d0f..012f48c8440 100644 --- a/packages/smooth_app/lib/l10n/app_zu.arb +++ b/packages/smooth_app/lib/l10n/app_zu.arb @@ -1573,6 +1573,10 @@ "@choose_from_gallery": { "description": "Button label for choosing a photo from gallery" }, + "image_upload_queued": "The image will be uploaded in the background as soon as possible.", + "@image_upload_queued": { + "description": "Message when a photo is queued for upload" + }, "expand_nutrition_facts": "Expand nutrition facts table", "@expand_nutrition_facts": { "description": "Label for expanding nutrition facts table in application setting" @@ -1613,5 +1617,17 @@ "help_with_openfoodfacts": "Help with OpenFoodFacts", "@help_with_openfoodfacts": { "description": "Label for the email title" + }, + "product_task_background_schedule": "The product will be updated in the background as soon as possible.", + "@product_task_background_schedule": { + "description": "Message when a product is scheduled for background update" + }, + "no_email_client_available_dialog_title": "No email application!", + "@no_email_client_available_dialog_title": { + "description": "Title for the dialog when no email client is installed on the device" + }, + "no_email_client_available_dialog_content": "Please send us manually an email to contact@openfoodfacts.org", + "@no_email_client_available_dialog_content": { + "description": "Content for the dialog when no email client is installed on the device" } } \ No newline at end of file diff --git a/packages/smooth_app/lib/main.dart b/packages/smooth_app/lib/main.dart index a61ba52ab44..fe199f2290d 100644 --- a/packages/smooth_app/lib/main.dart +++ b/packages/smooth_app/lib/main.dart @@ -18,6 +18,7 @@ import 'package:smooth_app/data_models/user_preferences.dart'; import 'package:smooth_app/database/dao_string.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/helpers/analytics_helper.dart'; +import 'package:smooth_app/helpers/background_task_helper.dart'; import 'package:smooth_app/helpers/camera_helper.dart'; import 'package:smooth_app/helpers/data_importer/smooth_app_data_importer.dart'; import 'package:smooth_app/helpers/network_config.dart'; @@ -41,7 +42,6 @@ Future main({final bool screenshots = false}) async { final WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); - if (kReleaseMode) { await AnalyticsHelper.initSentry( appRunner: () => runApp(const SmoothApp()), @@ -99,6 +99,7 @@ Future _init1() async { ), daoString: DaoString(_localDatabase), ); + await callbackDispatcher(_localDatabase); AnalyticsHelper.setCrashReports(_userPreferences.crashReports); ProductQuery.setCountry(_userPreferences.userCountryCode); diff --git a/packages/smooth_app/lib/pages/offline_tasks_page.dart b/packages/smooth_app/lib/pages/offline_tasks_page.dart new file mode 100644 index 00000000000..6abbe2fa894 --- /dev/null +++ b/packages/smooth_app/lib/pages/offline_tasks_page.dart @@ -0,0 +1,202 @@ +import 'package:flutter/material.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; +import 'package:task_manager/task_manager.dart'; + +// TODO(ashaman999): add the translations later +const int POPUP_MENU_FIRST_ITEM = 0; + +class OfflineTaskPage extends StatefulWidget { + const OfflineTaskPage({ + super.key, + }); + + @override + State createState() => _OfflineTaskState(); +} + +class _OfflineTaskState extends State { + Future> _fetchListItems() async { + return TaskManager().listPendingTasks().then( + (Iterable value) => value.toList( + growable: false, + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Pending Background Tasks'), + actions: [ + PopupMenuButton( + onSelected: (_) async { + await _cancelAllTask(); + }, + itemBuilder: (BuildContext context) => >[ + const PopupMenuItem( + value: POPUP_MENU_FIRST_ITEM, child: Text('Cancel all')), + ], + ), + ], + leading: BackButton( + onPressed: () => Navigator.pop(context), + ), + ), + body: RefreshIndicator( + onRefresh: () async { + setState(() {}); + }, + child: Center( + child: FutureBuilder>( + future: _fetchListItems(), + builder: + (BuildContext context, AsyncSnapshot> snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center( + child: CircularProgressIndicator.adaptive(), + ); + } + if (snapshot.data!.isEmpty) { + return const EmptyScreen(); + } else { + return ListView.builder( + itemCount: snapshot.data!.length, + itemBuilder: (BuildContext context, int index) { + if (snapshot.data!.isEmpty) { + return const Center( + child: Text( + 'No data', + style: TextStyle(color: Colors.white, fontSize: 30), + ), + ); + } + return TaskListTile( + index, + snapshot.data![index].uniqueId, + snapshot.data![index].data!['processName'].toString(), + snapshot.data![index].data!['barcode'].toString(), + ); + }, + ); + } + }, + ), + ), + ), + ); + } + + Future _cancelAllTask() async { + String status = 'All tasks Cancelled'; + try { + await TaskManager().cancelTasks(); + } catch (e) { + status = 'Something went wrong'; + } + setState(() {}); + final SnackBar snackBar = SnackBar( + content: Text( + status, + ), + duration: SnackBarDuration.medium, + ); + setState(() {}); + if (!mounted) { + return; + } + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } +} + +class TaskListTile extends StatefulWidget { + const TaskListTile( + this.index, + this.uniqueId, + this.processName, + this.barcode, + ) : assert(index >= 0), + assert(uniqueId.length > 0), + assert(barcode.length > 0), + assert(processName.length > 0); + + final int index; + final String uniqueId; + final String processName; + final String barcode; + + @override + State createState() => _TaskListTileState(); +} + +class _TaskListTileState extends State { + @override + Widget build(BuildContext context) { + return ListTile( + leading: Text((widget.index + 1).toString()), + title: Text(widget.barcode), + subtitle: Text(widget.processName), + trailing: Wrap( + children: [ + IconButton( + onPressed: () { + String status = 'Retrying'; + try { + TaskManager().runTask(widget.uniqueId); + } catch (e) { + status = 'Error: $e'; + } + final SnackBar snackBar = SnackBar( + content: Text(status), + duration: SnackBarDuration.medium, + ); + if (!mounted) { + return; + } + ScaffoldMessenger.of(context).showSnackBar(snackBar); + setState(() {}); + }, + icon: const Icon(Icons.refresh)), + IconButton( + onPressed: () async { + await _cancelTask(widget.uniqueId); + + setState(() {}); + }, + icon: const Icon(Icons.cancel)) + ], + ), + ); + } + + Future _cancelTask(String uniqueId) async { + try { + await TaskManager().cancelTask(uniqueId); + const SnackBar snackBar = SnackBar( + content: Text('Cancelled'), + duration: SnackBarDuration.medium, + ); + if (!mounted) { + return; + } + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } catch (e) { + final SnackBar snackBar = SnackBar( + content: Text('Error: $e'), + duration: SnackBarDuration.medium, + ); + if (!mounted) { + return; + } + ScaffoldMessenger.of(context).showSnackBar(snackBar); + } + } +} + +class EmptyScreen extends StatelessWidget { + const EmptyScreen({Key? key}) : super(key: key); + @override + Widget build(BuildContext context) { + return const Center(child: Text('No Pending Tasks')); + } +} diff --git a/packages/smooth_app/lib/pages/onboarding/onboarding_bottom_bar.dart b/packages/smooth_app/lib/pages/onboarding/onboarding_bottom_bar.dart index d0f51d88135..fc6cac54684 100644 --- a/packages/smooth_app/lib/pages/onboarding/onboarding_bottom_bar.dart +++ b/packages/smooth_app/lib/pages/onboarding/onboarding_bottom_bar.dart @@ -111,10 +111,10 @@ class OnboardingBottomIcon extends StatelessWidget { @override Widget build(BuildContext context) => ElevatedButton( style: ElevatedButton.styleFrom( + foregroundColor: foregroundColor, + backgroundColor: backgroundColor, shape: const CircleBorder(), padding: const EdgeInsets.all(MEDIUM_SPACE), - primary: backgroundColor, - onPrimary: foregroundColor, ), onPressed: onPressed, child: Icon(icon), diff --git a/packages/smooth_app/lib/pages/personalized_ranking_page.dart b/packages/smooth_app/lib/pages/personalized_ranking_page.dart index 9577a450d9f..b25ac86713d 100644 --- a/packages/smooth_app/lib/pages/personalized_ranking_page.dart +++ b/packages/smooth_app/lib/pages/personalized_ranking_page.dart @@ -10,6 +10,7 @@ import 'package:smooth_app/data_models/up_to_date_product_provider.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/buttons/smooth_large_button_with_icon.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/helpers/analytics_helper.dart'; import 'package:smooth_app/helpers/product_compatibility_helper.dart'; import 'package:smooth_app/pages/product/common/product_list_item_simple.dart'; @@ -191,7 +192,7 @@ class _PersonalizedRankingPageState extends State ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(appLocalizations.product_removed_comparison), - duration: const Duration(seconds: 3), + duration: SnackBarDuration.medium, ), ); }, diff --git a/packages/smooth_app/lib/pages/preferences/user_preferences_connect.dart b/packages/smooth_app/lib/pages/preferences/user_preferences_connect.dart index d165678e863..a352dae8e92 100644 --- a/packages/smooth_app/lib/pages/preferences/user_preferences_connect.dart +++ b/packages/smooth_app/lib/pages/preferences/user_preferences_connect.dart @@ -1,5 +1,6 @@ import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_email_sender/flutter_email_sender.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -108,7 +109,28 @@ class UserPreferencesConnect extends AbstractUserPreferences { attachmentPaths: includeLogs == true ? Logs.logFilesPaths : null, ); - await FlutterEmailSender.send(email); + try { + await FlutterEmailSender.send(email); + } on PlatformException catch (e) { + if (e.code == 'not_available') { + // No email client installed on the device + showDialog( + context: context, + builder: (_) => SmoothAlertDialog( + title: + appLocalizations.no_email_client_available_dialog_title, + body: Text(appLocalizations + .no_email_client_available_dialog_content), + positiveAction: SmoothActionButton( + onPressed: () { + Navigator.of(context).pop(); + }, + text: appLocalizations.okay, + ), + ), + ); + } + } }, ), ]; diff --git a/packages/smooth_app/lib/pages/preferences/user_preferences_dev_mode.dart b/packages/smooth_app/lib/pages/preferences/user_preferences_dev_mode.dart index ef53daef0cc..b772f4f828d 100644 --- a/packages/smooth_app/lib/pages/preferences/user_preferences_dev_mode.dart +++ b/packages/smooth_app/lib/pages/preferences/user_preferences_dev_mode.dart @@ -13,6 +13,7 @@ import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; import 'package:smooth_app/generic_lib/loading_dialog.dart'; import 'package:smooth_app/helpers/data_importer/product_list_import_export.dart'; import 'package:smooth_app/helpers/data_importer/smooth_app_data_importer.dart'; +import 'package:smooth_app/pages/offline_tasks_page.dart'; import 'package:smooth_app/pages/onboarding/onboarding_flow_navigator.dart'; import 'package:smooth_app/pages/preferences/abstract_user_preferences.dart'; import 'package:smooth_app/pages/preferences/user_preferences_dialog_editor.dart'; @@ -270,6 +271,17 @@ class UserPreferencesDevMode extends AbstractUserPreferences { }, ), _dataImporterTile(), + ListTile( + title: const Text('Pending Tasks'), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => const OfflineTaskPage(), + ), + ); + }, + ), ListTile( title: Text( appLocalizations.dev_preferences_import_history_title, diff --git a/packages/smooth_app/lib/pages/preferences/user_preferences_settings.dart b/packages/smooth_app/lib/pages/preferences/user_preferences_settings.dart index 36cde628646..142850e12b9 100644 --- a/packages/smooth_app/lib/pages/preferences/user_preferences_settings.dart +++ b/packages/smooth_app/lib/pages/preferences/user_preferences_settings.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:matomo_tracker/matomo_tracker.dart'; @@ -14,7 +12,6 @@ import 'package:smooth_app/pages/onboarding/country_selector.dart'; import 'package:smooth_app/pages/preferences/abstract_user_preferences.dart'; import 'package:smooth_app/pages/preferences/user_preferences_page.dart'; import 'package:smooth_app/pages/preferences/user_preferences_widgets.dart'; -import 'package:smooth_app/pages/scan/camera_controller.dart'; import 'package:smooth_app/themes/theme_provider.dart'; /// Collapsed/expanded display of settings for the preferences page. @@ -52,9 +49,7 @@ class UserPreferencesSettings extends AbstractUserPreferences { @override List getBody() => const [ _ApplicationSettings(), - UserPreferencesListItemDivider(), _CameraSettings(), - UserPreferencesListItemDivider(), _PrivacySettings(), ]; } @@ -124,7 +119,6 @@ class _ApplicationSettings extends StatelessWidget { ), minVerticalPadding: MEDIUM_SPACE, ), - const UserPreferencesListItemDivider(), ], ); } @@ -168,11 +162,13 @@ class _PrivacySettings extends StatelessWidget { const _CrashReportingSetting(), const UserPreferencesListItemDivider(), const _SendAnonymousDataSetting(), + const UserPreferencesListItemDivider(), _ExpandPanelHelper( title: appLocalizations.expand_nutrition_facts, subtitle: appLocalizations.expand_nutrition_facts_body, panelId: KnowledgePanelCard.PANEL_NUTRITION_TABLE_ID, ), + const UserPreferencesListItemDivider(), _ExpandPanelHelper( title: appLocalizations.expand_ingredients, subtitle: appLocalizations.expand_ingredients_body, @@ -245,116 +241,12 @@ class _CameraSettings extends StatelessWidget { UserPreferencesTitle( label: appLocalizations.settings_app_camera, ), - const _CameraHighResolutionPresetSetting(), - const UserPreferencesListItemDivider(), const _CameraPlayScanSoundSetting(), - const UserPreferencesListItemDivider(), - if (Platform.isAndroid) ...const [ - _CameraFocusModeSetting(), - UserPreferencesListItemDivider(), - ], ], ); } } -class _CameraHighResolutionPresetSetting extends StatelessWidget { - const _CameraHighResolutionPresetSetting({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - final UserPreferences userPreferences = context.watch(); - - return UserPreferencesSwitchItem( - title: appLocalizations.camera_high_resolution_preset_toggle_title, - subtitle: appLocalizations.camera_high_resolution_preset_toggle_subtitle, - value: userPreferences.useVeryHighResolutionPreset, - onChanged: (final bool value) async { - await userPreferences.setUseVeryHighResolutionPreset(value); - }, - ); - } -} - -class _CameraFocusModeSetting extends StatelessWidget { - const _CameraFocusModeSetting({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - final UserPreferences userPreferences = context.watch(); - - return UserPreferencesMultipleChoicesItem( - title: appLocalizations.camera_focus_point_algorithm_title, - subtitle: appLocalizations.camera_focus_point_algorithm_subtitle( - getReadableMode( - appLocalizations, - userPreferences.cameraFocusPointAlgorithm, - ), - getReadableDescription( - appLocalizations, - userPreferences.cameraFocusPointAlgorithm, - ), - ), - values: CameraFocusPointAlgorithm.values, - descriptions: getDescriptions(appLocalizations), - labels: getLabels(appLocalizations), - currentValue: userPreferences.cameraFocusPointAlgorithm, - onChanged: (final CameraFocusPointAlgorithm value) async { - await userPreferences.setCameraFocusAlgorithm(value); - }, - ); - } - - String getReadableMode( - AppLocalizations appLocalizations, - CameraFocusPointAlgorithm cameraFocusPointAlgorithm, - ) { - switch (cameraFocusPointAlgorithm) { - case CameraFocusPointAlgorithm.newAlgorithm: - return appLocalizations - .camera_focus_point_algorithm_value_new_algorithm_label; - case CameraFocusPointAlgorithm.oldAlgorithm: - return appLocalizations - .camera_focus_point_algorithm_value_old_algorithm_label; - case CameraFocusPointAlgorithm.auto: - default: - return appLocalizations.camera_focus_point_algorithm_value_auto_label; - } - } - - String getReadableDescription( - AppLocalizations appLocalizations, - CameraFocusPointAlgorithm cameraFocusPointAlgorithm, - ) { - switch (cameraFocusPointAlgorithm) { - case CameraFocusPointAlgorithm.newAlgorithm: - return appLocalizations - .camera_focus_point_algorithm_value_new_algorithm_description; - case CameraFocusPointAlgorithm.oldAlgorithm: - return appLocalizations - .camera_focus_point_algorithm_value_old_algorithm_description; - case CameraFocusPointAlgorithm.auto: - default: - return appLocalizations - .camera_focus_point_algorithm_value_auto_description; - } - } - - Iterable getLabels(AppLocalizations appLocalizations) { - return CameraFocusPointAlgorithm.values.map((CameraFocusPointAlgorithm e) { - return getReadableMode(appLocalizations, e); - }); - } - - Iterable getDescriptions(AppLocalizations appLocalizations) { - return CameraFocusPointAlgorithm.values.map((CameraFocusPointAlgorithm e) { - return getReadableDescription(appLocalizations, e); - }); - } -} - class _CameraPlayScanSoundSetting extends StatelessWidget { const _CameraPlayScanSoundSetting({Key? key}) : super(key: key); diff --git a/packages/smooth_app/lib/pages/product/add_basic_details_page.dart b/packages/smooth_app/lib/pages/product/add_basic_details_page.dart index 5af93b40a77..fe9295e9f27 100644 --- a/packages/smooth_app/lib/pages/product/add_basic_details_page.dart +++ b/packages/smooth_app/lib/pages/product/add_basic_details_page.dart @@ -1,14 +1,20 @@ +import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:openfoodfacts/utils/CountryHelper.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/cards/product_cards/product_image_carousel.dart'; +import 'package:smooth_app/database/dao_product.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_text_form_field.dart'; -import 'package:smooth_app/pages/product/common/product_refresher.dart'; +import 'package:smooth_app/helpers/background_task_helper.dart'; +import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; +import 'package:task_manager/task_manager.dart'; class AddBasicDetailsPage extends StatefulWidget { const AddBasicDetailsPage( @@ -129,31 +135,67 @@ class _AddBasicDetailsPageState extends State { if (!_formKey.currentState!.validate()) { return; } - final bool savedAndRefreshed = - await ProductRefresher().saveAndRefresh( - context: context, - localDatabase: localDatabase, - product: Product( - productName: _productNameController.text, - quantity: _weightController.text, - brands: _brandNameController.text, - barcode: _product.barcode, + final Product inputProduct = Product( + productName: _productNameController.text, + quantity: _weightController.text, + brands: _brandNameController.text, + barcode: _product.barcode, + ); + final String uniqueId = UniqueIdGenerator.generateUniqueId( + _product.barcode!, BASIC_DETAILS); + final BackgroundOtherDetailsInput + backgroundBasicDetailsInput = + BackgroundOtherDetailsInput( + processName: PRODUCT_EDIT_TASK, + uniqueId: uniqueId, + barcode: _product.barcode!, + inputMap: jsonEncode(inputProduct.toJson()), + languageCode: ProductQuery.getLanguage().code, + user: jsonEncode(ProductQuery.getUser().toJson()), + country: ProductQuery.getCountry()!.iso2Code, + ); + await TaskManager().addTask( + Task( + data: backgroundBasicDetailsInput.toJson(), + uniqueId: uniqueId, ), - isLoggedInMandatory: widget.isLoggedInMandatory, ); - if (!savedAndRefreshed) { - return; + + final DaoProduct daoProduct = DaoProduct(localDatabase); + final Product? product = await daoProduct.get( + _product.barcode!, + ); + // We go and chek in the local database if the product is + // already in the database. If it is, we update the fields of the product. + //And if it is not, we create a new product with the fields of the _product + // and we insert it in the database. (Giving the user an immediate feedback) + if (product == null) { + daoProduct.put(Product( + barcode: _product.barcode, + productName: _productNameController.text, + brands: _brandNameController.text, + quantity: _weightController.text, + lang: ProductQuery.getLanguage(), + )); + } else { + product.productName = _productNameController.text; + product.brands = _brandNameController.text; + product.quantity = _weightController.text; + daoProduct.put(product); } + localDatabase.notifyListeners(); if (!mounted) { return; } ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: - Text(appLocalizations.basic_details_add_success), + content: Text( + appLocalizations.basic_details_add_success, + ), + duration: SnackBarDuration.medium, ), ); - Navigator.pop(context); + Navigator.pop(context, product); }, ), ), diff --git a/packages/smooth_app/lib/pages/product/add_new_product_page.dart b/packages/smooth_app/lib/pages/product/add_new_product_page.dart index 58989f8b0a1..1b9b4d7bfbc 100644 --- a/packages/smooth_app/lib/pages/product/add_new_product_page.dart +++ b/packages/smooth_app/lib/pages/product/add_new_product_page.dart @@ -4,6 +4,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/model/Product.dart'; import 'package:openfoodfacts/model/ProductImage.dart'; +import 'package:provider/provider.dart'; +import 'package:smooth_app/database/dao_product.dart'; +import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/buttons/smooth_large_button_with_icon.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; @@ -82,8 +85,22 @@ class _AddNewProductPageState extends State { action: SmoothActionButton( text: appLocalizations.finish, onPressed: () async { - await Navigator.maybePop( - context, _isProductLoaded ? widget.barcode : null); + final LocalDatabase localDatabase = + context.read(); + final DaoProduct daoProduct = DaoProduct(localDatabase); + final Product? product = + await daoProduct.get(widget.barcode); + if (product == null) { + final Product product = Product( + barcode: widget.barcode, + ); + daoProduct.put(product); + localDatabase.notifyListeners(); + } + if (mounted) { + await Navigator.maybePop( + context, _isProductLoaded ? widget.barcode : null); + } }, ), ), @@ -159,7 +176,6 @@ class _AddNewProductPageState extends State { _isProductLoaded = true; }); } - initialPhoto.delete(); }, ), ); @@ -167,16 +183,23 @@ class _AddNewProductPageState extends State { Widget _buildImageUploadedRow( BuildContext context, ImageField imageType, File image) { + final ThemeData themeData = Theme.of(context); return Padding( padding: _ROW_PADDING_TOP, child: Row( - mainAxisAlignment: MainAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox(height: 50, child: Image.file(image, fit: BoxFit.cover)), Expanded( - child: Center( - child: Text(_getPhotoUploadedLabelText(context, imageType), - style: Theme.of(context).textTheme.bodyText1))), + child: Center( + child: Text(_getAddPhotoButtonText(context, imageType), + style: themeData.textTheme.bodyText1), + ), + ), + Icon( + Icons.check_box, + color: themeData.bottomNavigationBarTheme.selectedItemColor, + ) ], ), ); @@ -198,23 +221,6 @@ class _AddNewProductPageState extends State { } } - String _getPhotoUploadedLabelText( - BuildContext context, ImageField imageType) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - switch (imageType) { - case ImageField.FRONT: - return appLocalizations.front_photo_uploaded; - case ImageField.INGREDIENTS: - return appLocalizations.ingredients_photo_uploaded; - case ImageField.NUTRITION: - return appLocalizations.nutritional_facts_photo_uploaded; - case ImageField.PACKAGING: - return appLocalizations.recycling_photo_uploaded; - case ImageField.OTHER: - return appLocalizations.other_photo_uploaded; - } - } - bool _isImageUploadedForType(ImageField imageType) { return (_uploadedImages[imageType] ?? []).isNotEmpty; } @@ -222,27 +228,30 @@ class _AddNewProductPageState extends State { Widget _buildNutritionInputButton() { if (_nutritionFactsAdded) { return Padding( - padding: _ROW_PADDING_TOP, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - const SizedBox( - width: 50.0, - child: Icon( - Icons.check, - color: Colors.greenAccent, - ), + padding: _ROW_PADDING_TOP, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SizedBox( + width: 50.0, + child: Icon( + Icons.check, + color: Theme.of(context) + .bottomNavigationBarTheme + .selectedItemColor, ), - Expanded( - child: Center( - child: Text( - AppLocalizations.of(context).nutritional_facts_added, - style: Theme.of(context).textTheme.bodyText1), - ), + ), + Expanded( + child: Center( + child: Text( + AppLocalizations.of(context).nutritional_facts_added, + style: Theme.of(context).textTheme.bodyText1), ), - ], - )); + ), + ], + ), + ); } return Padding( @@ -293,17 +302,18 @@ class _AddNewProductPageState extends State { Widget _buildaddInputDetailsButton() { if (_basicDetailsAdded) { + final ThemeData themeData = Theme.of(context); return Padding( padding: _ROW_PADDING_TOP, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ - const SizedBox( + SizedBox( width: 50.0, child: Icon( Icons.check, - color: Colors.greenAccent, + color: themeData.bottomNavigationBarTheme.selectedItemColor, ), ), Expanded( diff --git a/packages/smooth_app/lib/pages/product/common/product_list_page.dart b/packages/smooth_app/lib/pages/product/common/product_list_page.dart index 3edf28edec3..8dfcba636d6 100644 --- a/packages/smooth_app/lib/pages/product/common/product_list_page.dart +++ b/packages/smooth_app/lib/pages/product/common/product_list_page.dart @@ -12,6 +12,7 @@ import 'package:smooth_app/database/dao_product_list.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/loading_dialog.dart'; import 'package:smooth_app/helpers/robotoff_insight_helper.dart'; import 'package:smooth_app/pages/inherited_data_manager.dart'; @@ -308,7 +309,7 @@ class _ProductListPageState extends State ? appLocalizations.product_removed_history : appLocalizations.product_could_not_remove, ), - duration: const Duration(seconds: 3), + duration: SnackBarDuration.medium, ), ); // TODO(monsieurtanuki): add a snackbar ("put back the food") @@ -349,7 +350,7 @@ class _ProductListPageState extends State products.length, ), ), - duration: const Duration(seconds: 2), + duration: SnackBarDuration.short, ), ); setState(() {}); diff --git a/packages/smooth_app/lib/pages/product/common/product_query_page.dart b/packages/smooth_app/lib/pages/product/common/product_query_page.dart index 373ca823dda..e599bbd21ef 100644 --- a/packages/smooth_app/lib/pages/product/common/product_query_page.dart +++ b/packages/smooth_app/lib/pages/product/common/product_query_page.dart @@ -428,7 +428,7 @@ class _ProductQueryPageState extends State void _scrollToTop() { _scrollController.animateTo( 0, - duration: const Duration(seconds: 3), + duration: SnackBarDuration.medium, curve: Curves.linear, ); } diff --git a/packages/smooth_app/lib/pages/product/confirm_and_upload_picture.dart b/packages/smooth_app/lib/pages/product/confirm_and_upload_picture.dart index 1acfbf71c6c..3a9d2a05983 100644 --- a/packages/smooth_app/lib/pages/product/confirm_and_upload_picture.dart +++ b/packages/smooth_app/lib/pages/product/confirm_and_upload_picture.dart @@ -176,8 +176,7 @@ class _ConfirmAndUploadPictureState extends State { ), ), onPressed: () async { - final bool isPhotoUploaded = - await uploadCapturedPicture( + uploadCapturedPicture( context, barcode: widget.barcode, imageField: widget.imageType, @@ -186,10 +185,9 @@ class _ConfirmAndUploadPictureState extends State { if (!mounted) { return; } - retakenPhoto?.delete(); Navigator.pop( context, - isPhotoUploaded ? photo : null, + photo, ); }, label: Text( diff --git a/packages/smooth_app/lib/pages/product/edit_ingredients_page.dart b/packages/smooth_app/lib/pages/product/edit_ingredients_page.dart index c0327ecbe39..cf5c3fa046e 100644 --- a/packages/smooth_app/lib/pages/product/edit_ingredients_page.dart +++ b/packages/smooth_app/lib/pages/product/edit_ingredients_page.dart @@ -1,20 +1,26 @@ +import 'dart:convert'; import 'dart:io'; import 'dart:ui' show ImageFilter; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:openfoodfacts/utils/CountryHelper.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/data_models/up_to_date_product_provider.dart'; +import 'package:smooth_app/database/dao_product.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; +import 'package:smooth_app/helpers/background_task_helper.dart'; import 'package:smooth_app/helpers/picture_capture_helper.dart'; import 'package:smooth_app/pages/image_crop_page.dart'; -import 'package:smooth_app/pages/product/common/product_refresher.dart'; import 'package:smooth_app/pages/product/explanation_widget.dart'; import 'package:smooth_app/pages/product/ocr_helper.dart'; +import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; +import 'package:task_manager/task_manager.dart'; /// Editing with OCR a product field and the corresponding image. /// @@ -79,7 +85,7 @@ class _EditOcrPageState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(error), - duration: const Duration(seconds: 3), + duration: SnackBarDuration.medium, ), ); } @@ -90,7 +96,6 @@ class _EditOcrPageState extends State { // Returns a Future that resolves successfully only if everything succeeds, // otherwise it will resolve with the relevant error. Future _getImage(bool isNewImage) async { - bool isUploaded = true; if (isNewImage) { final File? croppedImageFile = await startImageCropping(context, showOptionDialog: true); @@ -105,18 +110,12 @@ class _EditOcrPageState extends State { if (!mounted) { return; } - isUploaded = await uploadCapturedPicture( + await uploadCapturedPicture( context, barcode: _product.barcode!, imageField: _helper.getImageField(), imageUri: croppedImageFile.uri, ); - - croppedImageFile.delete(); - } - - if (!isUploaded) { - throw Exception('Image could not be uploaded.'); } final String? extractedText = await _helper.getExtractedText(_product); @@ -131,12 +130,56 @@ class _EditOcrPageState extends State { } Future _updateText(final String text) async { + final Product minimalistProduct = + _helper.getMinimalistProduct(_product, text); + final String uniqueId = + UniqueIdGenerator.generateUniqueId(_product.barcode!, INGREDIENT_EDIT); + final BackgroundOtherDetailsInput backgroundOtherDetailsInput = + BackgroundOtherDetailsInput( + processName: PRODUCT_EDIT_TASK, + uniqueId: uniqueId, + barcode: minimalistProduct.barcode!, + languageCode: ProductQuery.getLanguage().code, + inputMap: jsonEncode(minimalistProduct.toJson()), + user: jsonEncode(ProductQuery.getUser().toJson()), + country: ProductQuery.getCountry()!.iso2Code, + ); + await TaskManager().addTask( + Task( + data: backgroundOtherDetailsInput.toJson(), + uniqueId: uniqueId, + ), + ); + + // ignore: use_build_context_synchronously final LocalDatabase localDatabase = context.read(); - return ProductRefresher().saveAndRefresh( - context: context, - localDatabase: localDatabase, - product: _helper.getMinimalistProduct(_product, text), + final DaoProduct daoProduct = DaoProduct(localDatabase); + final Product? localProduct = + await daoProduct.get(minimalistProduct.barcode!); + // We go and chek in the local database if the product is + // already in the database. If it is, we update the fields of the product. + //And if it is not, we create a new product with the fields of the minimalistProduct + // and we insert it in the database. (Giving the user an immediate feedback) + if (localProduct != null) { + localProduct.ingredientsText = minimalistProduct.ingredientsText; + await daoProduct.put(localProduct); + } else { + await daoProduct.put(minimalistProduct); + } + + localDatabase.notifyListeners(); + if (!mounted) { + return false; + } + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + AppLocalizations.of(context).product_task_background_schedule, + ), + duration: SnackBarDuration.medium, + ), ); + return true; } @override diff --git a/packages/smooth_app/lib/pages/product/edit_product_page.dart b/packages/smooth_app/lib/pages/product/edit_product_page.dart index 2d96eb45fee..ebe402b56de 100644 --- a/packages/smooth_app/lib/pages/product/edit_product_page.dart +++ b/packages/smooth_app/lib/pages/product/edit_product_page.dart @@ -10,6 +10,7 @@ import 'package:smooth_app/data_models/product_image_data.dart'; import 'package:smooth_app/data_models/up_to_date_product_provider.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; import 'package:smooth_app/helpers/product_cards_helper.dart'; import 'package:smooth_app/pages/product/add_basic_details_page.dart'; @@ -328,7 +329,7 @@ class _EditProductPageState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(appLocalizations.product_refreshed), - duration: const Duration(seconds: 2), + duration: SnackBarDuration.short, ), ); } @@ -385,7 +386,7 @@ class _EditProductPageState extends State { class _ListTitleItem extends StatelessWidget { const _ListTitleItem({ - required final this.title, + required this.title, this.subtitle, this.onTap, this.leading, diff --git a/packages/smooth_app/lib/pages/product/new_product_page.dart b/packages/smooth_app/lib/pages/product/new_product_page.dart index 79f8ed64652..e459b34774e 100644 --- a/packages/smooth_app/lib/pages/product/new_product_page.dart +++ b/packages/smooth_app/lib/pages/product/new_product_page.dart @@ -169,7 +169,7 @@ class _ProductPageState extends State with TraceableClientMixin { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(appLocalizations.product_refreshed), - duration: const Duration(seconds: 2), + duration: SnackBarDuration.short, ), ); } @@ -334,7 +334,7 @@ class _ProductPageState extends State with TraceableClientMixin { shape: const CircleBorder(), padding: const EdgeInsets.all( 18), // TODO(monsieurtanuki): cf. FloatingActionButton - primary: colorScheme.primary, + backgroundColor: colorScheme.primary, ), child: Icon(iconData, color: colorScheme.onPrimary), ), diff --git a/packages/smooth_app/lib/pages/product/nutrition_container.dart b/packages/smooth_app/lib/pages/product/nutrition_container.dart index c091a3c0852..6db409d3eb5 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_container.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_container.dart @@ -235,7 +235,7 @@ class NutritionContainer { bool alreadyEnergyKJ = false; // inner method, in order to use alreadyEnergyKJ without a private variable. - void _populateOrderedNutrientList(final List list) { + void populateOrderedNutrientList(final List list) { for (final OrderedNutrient nutrient in list) { if (nutrient.id != _energyKJId && !Nutriments.supportedNutrientIds.contains(nutrient.id)) { @@ -254,12 +254,12 @@ class NutritionContainer { _nutrients.add(nutrient); } if (nutrient.subNutrients != null) { - _populateOrderedNutrientList(nutrient.subNutrients!); + populateOrderedNutrientList(nutrient.subNutrients!); } } } - _populateOrderedNutrientList(nutrients); + populateOrderedNutrientList(nutrients); if (!alreadyEnergyKJ) { throw Exception('no energy or energyKJ found: very suspicious!'); @@ -298,7 +298,7 @@ class NutritionContainer { /// Converts a double (weight) value from grams. /// /// Typical use-case: after receiving a value from the BE. - double? _convertWeightFromG(final double? value, final Unit unit) { + double? convertWeightFromG(final double? value, final Unit unit) { if (value == null) { return null; } @@ -317,7 +317,7 @@ class NutritionContainer { for (int i = 0; i < 2; i++) { final bool perServing = i == 0; final String valueKey = getValueKey(nutrientId, perServing); - final double? value = _convertWeightFromG( + final double? value = convertWeightFromG( JsonObject.parseDouble(json[valueKey]), unit, ); diff --git a/packages/smooth_app/lib/pages/product/nutrition_page_loaded.dart b/packages/smooth_app/lib/pages/product/nutrition_page_loaded.dart index b4c158dc214..3e6051f8539 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page_loaded.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page_loaded.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -6,17 +8,20 @@ import 'package:intl/intl.dart'; import 'package:openfoodfacts/model/OrderedNutrient.dart'; import 'package:openfoodfacts/model/OrderedNutrients.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:openfoodfacts/utils/CountryHelper.dart'; import 'package:openfoodfacts/utils/UnitHelper.dart'; import 'package:provider/provider.dart'; +import 'package:smooth_app/database/dao_product.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/helpers/background_task_helper.dart'; import 'package:smooth_app/helpers/text_input_formatters_helper.dart'; -import 'package:smooth_app/pages/product/common/product_refresher.dart'; import 'package:smooth_app/pages/product/nutrition_container.dart'; import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; +import 'package:task_manager/task_manager.dart'; /// Actual nutrition page, with data already loaded. class NutritionPageLoaded extends StatefulWidget { @@ -526,11 +531,45 @@ class _NutritionPageLoadedState extends State { return false; } // if it fails, we stay on the same page - return ProductRefresher().saveAndRefresh( - context: context, - localDatabase: localDatabase, - product: changedProduct, - isLoggedInMandatory: widget.isLoggedInMandatory, + final String uniqueId = + UniqueIdGenerator.generateUniqueId(_product.barcode!, NUTRITION_EDIT); + final BackgroundOtherDetailsInput nutritonInputData = + BackgroundOtherDetailsInput( + processName: PRODUCT_EDIT_TASK, + uniqueId: uniqueId, + barcode: _product.barcode!, + languageCode: ProductQuery.getLanguage().code, + inputMap: jsonEncode(changedProduct.toJson()), + user: jsonEncode(ProductQuery.getUser().toJson()), + country: ProductQuery.getCountry()!.iso2Code, + ); + await TaskManager().addTask( + Task( + data: nutritonInputData.toJson(), + uniqueId: uniqueId, + ), + ); + final DaoProduct daoProduct = DaoProduct(localDatabase); + final Product? product = await daoProduct.get( + _product.barcode!, ); + // We go and chek in the local database if the product is + // already in the database. If it is, we update the fields of the product. + //And if it is not, we create a new product with the fields of the _product + // and we insert it in the database. (Giving the user an immediate feedback) + if (product != null) { + product.servingSize = changedProduct.servingSize; + product.nutriments = changedProduct.nutriments; + await daoProduct.put(product); + } + localDatabase.notifyListeners(); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(appLocalizations.product_task_background_schedule), + ), + ); + } + return true; } } diff --git a/packages/smooth_app/lib/pages/product/product_image_gallery_view.dart b/packages/smooth_app/lib/pages/product/product_image_gallery_view.dart index cbddded424e..ba62cdbac0e 100644 --- a/packages/smooth_app/lib/pages/product/product_image_gallery_view.dart +++ b/packages/smooth_app/lib/pages/product/product_image_gallery_view.dart @@ -10,6 +10,7 @@ import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view_gallery.dart'; import 'package:smooth_app/data_models/product_image_data.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/loading_dialog.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_gauge.dart'; import 'package:smooth_app/helpers/picture_capture_helper.dart'; @@ -42,7 +43,6 @@ class _ProductImageGalleryViewState extends State { final List allProductImageProviders = []; late String title; bool _hasPhoto = true; - bool _isRefreshed = false; late ProductImageData _productImageDataCurrent; int _currentIndex = 0; @@ -98,7 +98,7 @@ class _ProductImageGalleryViewState extends State { leading: IconButton( icon: Icon(ConstantIcons.instance.getBackIcon()), onPressed: () { - Navigator.maybePop(context, _isRefreshed); + Navigator.maybePop(context); }, )), backgroundColor: Colors.black, @@ -139,30 +139,14 @@ class _ProductImageGalleryViewState extends State { if (!mounted) { return; } - final bool isUploaded = - await uploadCapturedPicture( + await uploadCapturedPicture( context, barcode: widget.barcode!, imageField: _productImageDataCurrent.imageField, imageUri: croppedImageFile.uri, ); - - if (isUploaded) { - _isRefreshed = true; - if (!mounted) { - return; - } - final AppLocalizations appLocalizations = - AppLocalizations.of(context); - final String message = getImageUploadedMessage( - _productImageDataCurrent.imageField, - appLocalizations); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(message), - duration: const Duration(seconds: 3), - ), - ); + if (!mounted) { + return; } } } @@ -275,29 +259,28 @@ class _ProductImageGalleryViewState extends State { if (!mounted) { return; } - final bool isUploaded = await uploadCapturedPicture( + await uploadCapturedPicture( context, barcode: widget.barcode!, imageField: _productImageDataCurrent.imageField, imageUri: croppedImageFile.uri, ); - if (isUploaded) { - _isRefreshed = true; - if (!mounted) { - return; - } - final AppLocalizations appLocalizations = - AppLocalizations.of(context); - final String message = getImageUploadedMessage( - _productImageDataCurrent.imageField, appLocalizations); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(message), - duration: const Duration(seconds: 3), - ), - ); + if (!mounted) { + return; } + final AppLocalizations appLocalizations = + AppLocalizations.of(context); + final String message = appLocalizations.image_upload_queued; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(message), + duration: SnackBarDuration.medium, + ), + ); + Navigator.pop( + context, + ); } } }, @@ -344,7 +327,6 @@ class _ProductImageGalleryViewState extends State { ), ); if (photoUploaded != null) { - _isRefreshed = true; if (!mounted) { return; } diff --git a/packages/smooth_app/lib/pages/product/simple_input_page.dart b/packages/smooth_app/lib/pages/product/simple_input_page.dart index cabb5f47268..405d4e65b0f 100644 --- a/packages/smooth_app/lib/pages/product/simple_input_page.dart +++ b/packages/smooth_app/lib/pages/product/simple_input_page.dart @@ -1,18 +1,24 @@ +import 'dart:convert'; + import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:openfoodfacts/utils/CountryHelper.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/database/local_database.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/dialogs/smooth_alert_dialog.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/helpers/background_task_helper.dart'; import 'package:smooth_app/helpers/collections_helper.dart'; import 'package:smooth_app/helpers/product_cards_helper.dart'; -import 'package:smooth_app/pages/product/common/product_refresher.dart'; import 'package:smooth_app/pages/product/simple_input_page_helpers.dart'; import 'package:smooth_app/pages/product/simple_input_widget.dart'; +import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; +import 'package:task_manager/task_manager.dart'; /// Simple input page: we have a list of terms, we add, we remove, we save. class SimpleInputPage extends StatefulWidget { @@ -141,6 +147,7 @@ class _SimpleInputPageState extends State { final Product changedProduct = Product(barcode: widget.product.barcode); bool changed = false; bool added = false; + String pageName = ''; for (int i = 0; i < widget.helpers.length; i++) { if (widget.helpers[i].addItemsFromController(_controllers[i])) { added = true; @@ -148,6 +155,7 @@ class _SimpleInputPageState extends State { if (widget.helpers[i].getChangedProduct(changedProduct)) { changed = true; } + pageName = widget.helpers[i].getTitle(AppLocalizations.of(context)); } if (added) { setState(() {}); @@ -174,6 +182,8 @@ class _SimpleInputPageState extends State { .edit_product_form_item_exit_confirmation_positive_button, onPressed: () => Navigator.pop(context, true), ), + actionsAxis: Axis.vertical, + actionsOrder: SmoothButtonsBarOrder.numerical, ), ); if (pleaseSave == null) { @@ -183,12 +193,37 @@ class _SimpleInputPageState extends State { return true; } } - // if it fails, we stay on the same page - return ProductRefresher().saveAndRefresh( - context: context, - localDatabase: localDatabase, - product: changedProduct, + final String uniqueId = + UniqueIdGenerator.generateUniqueId(changedProduct.barcode!, pageName); + final BackgroundOtherDetailsInput backgroundOtherDetailsInput = + BackgroundOtherDetailsInput( + processName: PRODUCT_EDIT_TASK, + uniqueId: uniqueId, + barcode: changedProduct.barcode!, + languageCode: ProductQuery.getLanguage().code, + inputMap: jsonEncode(changedProduct.toJson()), + user: jsonEncode(ProductQuery.getUser().toJson()), + country: ProductQuery.getCountry()!.iso2Code, + ); + await TaskManager().addTask( + Task( + data: backgroundOtherDetailsInput.toJson(), + uniqueId: uniqueId, + ), + ); + localDatabase.notifyListeners(); + if (!mounted) { + return false; + } + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + appLocalizations.product_task_background_schedule, + ), + duration: SnackBarDuration.medium, + ), ); + return true; } @override diff --git a/packages/smooth_app/lib/pages/product_list_user_dialog_helper.dart b/packages/smooth_app/lib/pages/product_list_user_dialog_helper.dart index 8cc05a30fac..74b1eef3d30 100644 --- a/packages/smooth_app/lib/pages/product_list_user_dialog_helper.dart +++ b/packages/smooth_app/lib/pages/product_list_user_dialog_helper.dart @@ -45,6 +45,7 @@ class ProductListUserDialogHelper { }, ), ), + actionsAxis: Axis.vertical, negativeAction: SmoothActionButton( onPressed: () => Navigator.pop(context), text: appLocalizations.cancel, @@ -109,6 +110,8 @@ class ProductListUserDialogHelper { close: true, title: getProductName(product, appLocalizations), body: Column(children: children), + actionsAxis: Axis.vertical, + actionsOrder: SmoothButtonsBarOrder.numerical, negativeAction: SmoothActionButton( onPressed: () async { final ProductList? productList = diff --git a/packages/smooth_app/lib/pages/scan/camera_controller.dart b/packages/smooth_app/lib/pages/scan/camera_controller.dart index 29b7f7f20c2..ae45e977748 100644 --- a/packages/smooth_app/lib/pages/scan/camera_controller.dart +++ b/packages/smooth_app/lib/pages/scan/camera_controller.dart @@ -45,15 +45,11 @@ class SmoothCameraController extends CameraController { // Last focus point position Offset? _focusPoint; - // Focus point algorithm (for Android only) - CameraFocusPointAlgorithm? _algorithm; - Future init({ required FocusMode focusMode, required Offset focusPoint, required DeviceOrientation deviceOrientation, required onLatestImageAvailable onAvailable, - CameraFocusPointAlgorithm? algorithm, bool? enableTorch, }) async { if (!isInitialized) { @@ -62,10 +58,7 @@ class SmoothCameraController extends CameraController { await initialize(); await setFocusMode(focusMode); await setExposurePoint(focusPoint); - await setFocusPointTo( - focusPoint, - algorithm ?? CameraFocusPointAlgorithm.auto, - ); + await setFocusPointTo(focusPoint); await lockCaptureOrientation(deviceOrientation); await startImageStream(onAvailable); await enableFlash(enableTorch ?? preferences.useFlashWithCamera); @@ -209,14 +202,11 @@ class SmoothCameraController extends CameraController { Future setFocusPointTo( Offset? point, - CameraFocusPointAlgorithm? algorithm, ) async { await setExposurePoint(point); - - _algorithm = algorithm; await setFocusPoint( point, - (_algorithm ?? CameraFocusPointAlgorithm.auto).mode, + FocusPointMode.auto, ); _focusPoint = point; } @@ -242,20 +232,12 @@ class SmoothCameraController extends CameraController { /// Force the focus to the latest call to [setFocusPoint]. Future refocus() async { - return setFocusPoint(_focusPoint, _algorithm!.mode); + return setFocusPoint(_focusPoint, FocusPointMode.auto); } - Future updateFocusPointAlgorithm( - CameraFocusPointAlgorithm cameraFocusPointAlgorithm, - ) async { - if (_algorithm != cameraFocusPointAlgorithm) { - // If the app is running, make the change immediately - if (isInitialized && _state == _CameraState.resumed) { - return setFocusPointTo(_focusPoint, _algorithm); - } else { - // The update will be done, once the preview is resumed - _algorithm = cameraFocusPointAlgorithm; - } + Future forceFocus() async { + if (isInitialized && _state == _CameraState.resumed) { + return setFocusPointTo(_focusPoint); } } @@ -333,26 +315,3 @@ enum _CameraState { isBeingDisposed, disposed, } - -/// Custom algorithm for the focus point to fix issues with Android -/// On iOS, modes will simply be ignored -enum CameraFocusPointAlgorithm { - // Let the native part decide between [newAlgorithm] and [oldAlgorithm] - auto, - // Quicker algorithm, but may not work on old / Samsung devices - newAlgorithm, - // Old algorithm, which let more time between each focuses - oldAlgorithm; - - FocusPointMode get mode { - switch (this) { - case CameraFocusPointAlgorithm.newAlgorithm: - return FocusPointMode.newAlgorithm; - case CameraFocusPointAlgorithm.oldAlgorithm: - return FocusPointMode.oldAlgorithm; - case CameraFocusPointAlgorithm.auto: - default: - return FocusPointMode.auto; - } - } -} diff --git a/packages/smooth_app/lib/pages/scan/camera_image_full_getter.dart b/packages/smooth_app/lib/pages/scan/camera_image_full_getter.dart index 4d1231b9ce0..314e2436ad0 100644 --- a/packages/smooth_app/lib/pages/scan/camera_image_full_getter.dart +++ b/packages/smooth_app/lib/pages/scan/camera_image_full_getter.dart @@ -1,5 +1,3 @@ -import 'dart:typed_data'; - import 'package:camera/camera.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; diff --git a/packages/smooth_app/lib/pages/scan/ml_kit_scan_page.dart b/packages/smooth_app/lib/pages/scan/ml_kit_scan_page.dart index 50ea3babcec..e70aff6b192 100644 --- a/packages/smooth_app/lib/pages/scan/ml_kit_scan_page.dart +++ b/packages/smooth_app/lib/pages/scan/ml_kit_scan_page.dart @@ -123,9 +123,7 @@ class MLKitScannerPageState extends LifecycleAwareState if (_controller == null) { _startLiveFeed(); } else { - _controller!.updateFocusPointAlgorithm( - _userPreferences.cameraFocusPointAlgorithm, - ); + _controller!.forceFocus(); } } } @@ -255,9 +253,7 @@ class MLKitScannerPageState extends LifecycleAwareState SmoothCameraController( _userPreferences, _camera!, - _userPreferences.useVeryHighResolutionPreset - ? ResolutionPreset.veryHigh - : ResolutionPreset.high, + ResolutionPreset.high, imageFormatGroup: ImageFormatGroup.yuv420, ), ); @@ -312,7 +308,6 @@ class MLKitScannerPageState extends LifecycleAwareState WidgetsBinding.instance.addPostFrameCallback((_) { _controller?.setFocusPointTo( _focusPoint.offset, - _userPreferences.cameraFocusPointAlgorithm, ); }); } diff --git a/packages/smooth_app/lib/pages/scan/scan_page.dart b/packages/smooth_app/lib/pages/scan/scan_page.dart index d8ee941295d..24881998143 100644 --- a/packages/smooth_app/lib/pages/scan/scan_page.dart +++ b/packages/smooth_app/lib/pages/scan/scan_page.dart @@ -269,6 +269,7 @@ class _ScanPageTopWidget extends StatelessWidget { onPressed: () => Navigator.of(context).pop(true), lines: 2, ), + actionsAxis: Axis.vertical, ); }); }); diff --git a/packages/smooth_app/pubspec.lock b/packages/smooth_app/pubspec.lock index 98a3e70e10a..cd2749550c4 100644 --- a/packages/smooth_app/pubspec.lock +++ b/packages/smooth_app/pubspec.lock @@ -7,21 +7,21 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "44.0.0" + version: "46.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "4.4.0" + version: "4.6.0" archive: dependency: transitive description: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.11" + version: "3.3.0" args: dependency: transitive description: @@ -35,7 +35,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.2" + version: "2.9.0" audioplayers: dependency: "direct main" description: @@ -98,14 +98,14 @@ packages: name: barcode url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.2.3" barcode_widget: dependency: "direct main" description: name: barcode_widget url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3" boolean_selector: dependency: transitive description: @@ -133,7 +133,7 @@ packages: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.4.0" + version: "8.4.1" camera: dependency: "direct main" description: @@ -148,7 +148,7 @@ packages: description: path: "packages/camera/camera_platform_interface" ref: smooth_camera - resolved-ref: bc474ef0647d9f865857198e8af000702c72aeb4 + resolved-ref: a21ae5f359ea46a657814812478fd138c4de52f6 url: "https://github.com/g123k/plugins.git" source: git version: "2.1.6" @@ -157,7 +157,7 @@ packages: description: path: "packages/camera/camera_web" ref: smooth_camera - resolved-ref: bc474ef0647d9f865857198e8af000702c72aeb4 + resolved-ref: a21ae5f359ea46a657814812478fd138c4de52f6 url: "https://github.com/g123k/plugins.git" source: git version: "0.2.1+6" @@ -174,21 +174,28 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - charcode: + version: "1.2.1" + checked_yaml: dependency: transitive description: - name: charcode + name: checked_yaml url: "https://pub.dartlang.org" source: hosted - version: "1.3.1" + version: "2.0.1" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" code_builder: dependency: transitive description: @@ -203,6 +210,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.16.0" + connectivity_plus: + dependency: transitive + description: + name: connectivity_plus + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.6+1" + connectivity_plus_linux: + dependency: transitive + description: + name: connectivity_plus_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + connectivity_plus_macos: + dependency: transitive + description: + name: connectivity_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.4" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + connectivity_plus_web: + dependency: transitive + description: + name: connectivity_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.3" + connectivity_plus_windows: + dependency: transitive + description: + name: connectivity_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.2" convert: dependency: transitive description: @@ -223,7 +272,7 @@ packages: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.0.2" csslib: dependency: transitive description: @@ -259,6 +308,13 @@ packages: relative: true source: path version: "0.0.0" + dbus: + dependency: transitive + description: + name: dbus + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.8" device_frame: dependency: transitive description: @@ -272,42 +328,42 @@ packages: name: device_info_plus url: "https://pub.dartlang.org" source: hosted - version: "4.0.1" + version: "4.1.2" device_info_plus_linux: dependency: transitive description: name: device_info_plus_linux url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "3.0.0" device_info_plus_macos: dependency: transitive description: name: device_info_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "2.2.3" + version: "3.0.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.3.0+1" + version: "3.0.0" device_info_plus_web: dependency: transitive description: name: device_info_plus_web url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "3.0.0" device_info_plus_windows: dependency: transitive description: name: device_info_plus_windows url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "4.0.0" device_preview: dependency: "direct main" description: @@ -321,7 +377,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" ffi: dependency: transitive description: @@ -380,7 +436,7 @@ packages: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.9.3" + version: "0.10.0" flutter_lints: dependency: "direct dev" description: @@ -406,7 +462,7 @@ packages: name: flutter_native_splash url: "https://pub.dartlang.org" source: hosted - version: "2.2.7" + version: "2.2.8" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -420,7 +476,7 @@ packages: name: flutter_secure_storage url: "https://pub.dartlang.org" source: hosted - version: "5.1.0" + version: "5.1.2" flutter_secure_storage_linux: dependency: transitive description: @@ -462,7 +518,7 @@ packages: name: flutter_svg url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" + version: "1.1.4" flutter_test: dependency: "direct dev" description: flutter @@ -505,7 +561,7 @@ packages: name: fwfh_text_style url: "https://pub.dartlang.org" source: hosted - version: "2.22.08" + version: "2.22.08+1" glob: dependency: transitive description: @@ -699,14 +755,14 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.11" + version: "0.12.12" material_color_utilities: dependency: transitive description: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.4" + version: "0.1.5" matomo_tracker: dependency: "direct main" description: @@ -756,6 +812,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + nm: + dependency: transitive + description: + name: nm + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" openfoodfacts: dependency: "direct main" description: @@ -785,7 +848,7 @@ packages: name: package_info_plus url: "https://pub.dartlang.org" source: hosted - version: "1.4.3" + version: "1.4.3+1" package_info_plus_linux: dependency: transitive description: @@ -855,7 +918,7 @@ packages: name: path_provider_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.17" + version: "2.0.20" path_provider_ios: dependency: transitive description: @@ -890,7 +953,7 @@ packages: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.2" percent_indicator: dependency: "direct main" description: @@ -988,7 +1051,7 @@ packages: name: proj4dart url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" provider: dependency: "direct main" description: @@ -1030,21 +1093,21 @@ packages: name: sentry url: "https://pub.dartlang.org" source: hosted - version: "6.9.0" + version: "6.9.1" sentry_flutter: dependency: "direct main" description: name: sentry_flutter url: "https://pub.dartlang.org" source: hosted - version: "6.9.0" + version: "6.9.1" share_plus: dependency: "direct main" description: name: share_plus url: "https://pub.dartlang.org" source: hosted - version: "4.0.10" + version: "4.0.10+1" share_plus_linux: dependency: transitive description: @@ -1121,7 +1184,7 @@ packages: name: shared_preferences_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" shared_preferences_web: dependency: transitive description: @@ -1154,7 +1217,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.2" + version: "1.9.0" sqflite: dependency: "direct main" description: @@ -1196,14 +1259,14 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" sync_http: dependency: transitive description: name: sync_http url: "https://pub.dartlang.org" source: hosted - version: "0.3.0" + version: "0.3.1" synchronized: dependency: transitive description: @@ -1211,20 +1274,29 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.0+2" + task_manager: + dependency: "direct main" + description: + path: "." + ref: HEAD + resolved-ref: "29e009e760c973359adc99fb86e861dd948daa26" + url: "https://github.com/g123k/flutter_task_manager.git" + source: git + version: "0.0.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.9" + version: "0.4.12" tuple: dependency: transitive description: @@ -1238,7 +1310,7 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" unicode: dependency: transitive description: @@ -1343,7 +1415,7 @@ packages: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "8.2.2" + version: "9.0.0" watcher: dependency: transitive description: @@ -1372,13 +1444,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.0" + workmanager: + dependency: transitive + description: + name: workmanager + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.2.0+1" + version: "0.2.0+2" xml: dependency: transitive description: @@ -1394,5 +1473,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=2.17.0 <3.0.0" - flutter: ">=3.0.0" + dart: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0" diff --git a/packages/smooth_app/pubspec.yaml b/packages/smooth_app/pubspec.yaml index feb84a7c2ff..2e2be1cd8d2 100644 --- a/packages/smooth_app/pubspec.yaml +++ b/packages/smooth_app/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.0.0+600 publish_to: "none" environment: - sdk: ">=2.17.0 <3.0.0" - flutter: ">=3.0.0" + sdk: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0" dependencies: flutter: @@ -13,11 +13,11 @@ dependencies: flutter_localizations: sdk: flutter - barcode_widget: ^2.0.2 + barcode_widget: ^2.0.3 carousel_slider: ^4.1.1 cupertino_icons: ^1.0.5 device_preview: ^1.1.0 - flutter_svg: ^1.1.1 + flutter_svg: ^1.1.4 flutter_map: ^1.1.1 flutter_widget_from_html_core: any fwfh_selectable_text: ^0.8.3+1 @@ -39,7 +39,7 @@ dependencies: photo_view: ^0.14.0 uuid: ^3.0.6 provider: ^6.0.3 - sentry_flutter: ^6.6.3 # careful with upgrading cf: https://github.com/openfoodfacts/smooth-app/issues/1300 + sentry_flutter: ^6.9.1 # careful with upgrading cf: https://github.com/openfoodfacts/smooth-app/issues/1300 sqflite: ^2.0.2+1 url_launcher: ^6.1.3 visibility_detector: ^0.3.3 @@ -47,20 +47,23 @@ dependencies: # Camera (custom implementation for Android) camera: git: - url: 'https://github.com/g123k/plugins.git' - ref: 'smooth_camera' - path: 'packages/camera/camera' + url: "https://github.com/g123k/plugins.git" + ref: "smooth_camera" + path: "packages/camera/camera" camera_platform_interface: git: - url: 'https://github.com/g123k/plugins.git' - ref: 'smooth_camera' - path: 'packages/camera/camera_platform_interface' - + url: "https://github.com/g123k/plugins.git" + ref: "smooth_camera" + path: "packages/camera/camera_platform_interface" + task_manager: + git: + url: "https://github.com/g123k/flutter_task_manager.git" + audioplayers: ^1.0.0 percent_indicator: ^4.2.2 flutter_email_sender: ^5.1.0 flutter_native_splash: ^2.2.3+1 - google_mlkit_barcode_scanning: ^0.3.0 + google_mlkit_barcode_scanning: 0.3.0 image_cropper: ^2.0.3 auto_size_text: ^3.0.0 image: ^3.2.0 @@ -70,7 +73,7 @@ dependencies: flutter_isolate: ^2.0.2 rxdart: ^0.27.4 collection: ^1.16.0 - path: ^1.8.0 # careful with 1.8.1 because of https://github.com/flutter/flutter/issues/95478 + path: ^1.8.2 # careful with 1.8.1 because of https://github.com/flutter/flutter/issues/95478 path_provider: ^2.0.11 data_importer_shared: path: ../data_importer_shared @@ -84,7 +87,7 @@ dev_dependencies: sdk: flutter flutter_driver: sdk: flutter - flutter_launcher_icons: ^0.9.3 + flutter_launcher_icons: ^0.10.0 flutter_test: sdk: flutter mockito: ^5.2.0 @@ -123,8 +126,6 @@ flutter_native_splash: branding: assets/app/splashscreen_branding.png branding_dark: assets/app/splashscreen_branding_dark.png - - # https://developer.android.com/guide/topics/ui/splash-screen android_12: # Please note that the splash screen will be clipped to a circle on the center of the screen. diff --git a/packages/smooth_app/test/tests_utils/goldens.dart b/packages/smooth_app/test/tests_utils/goldens.dart index c29999f2155..5b8f28ccab4 100644 --- a/packages/smooth_app/test/tests_utils/goldens.dart +++ b/packages/smooth_app/test/tests_utils/goldens.dart @@ -1,5 +1,4 @@ import 'dart:developer'; -import 'dart:typed_data'; import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/version.txt b/version.txt index f2807196747..7d4ef04f654 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -3.8.1 +3.10.3