diff --git a/.github/labeler.yml b/.github/labeler.yml index b77c7565add8..bd6cc840de9a 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -104,7 +104,8 @@ History: ⚙️🥗 Food preferences: - changed-files: - any-glob-to-any-file: 'packages/smooth_app/lib/widgets/attribute_button.dart' - + - any-glob-to-any-file: 'packages/smooth_app/lib/pages/preferences/user_preferences_attribute_group.dart' + 🤗 Onboarding: - changed-files: - any-glob-to-any-file: 'packages/smooth_app/lib/pages/onboarding/**/*' @@ -254,6 +255,7 @@ autocomplete: - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/simple_input_page.dart' - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/simple_input_page_helpers.dart' - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/simple_input_text_field.dart' + - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/edit_product_image_viewer.dart' ✏️ Editing - Nutrition input: - changed-files: @@ -264,7 +266,6 @@ autocomplete: - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_availability_container.dart' - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_container_helper.dart' - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_facts_editor.dart' - - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_image_viewer.dart' - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_size.dart' - any-glob-to-any-file: 'packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_switch.dart' diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml index 18c5c8eba718..c5ad35833686 100644 --- a/.github/workflows/crowdin.yml +++ b/.github/workflows/crowdin.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v4 - name: crowdin action - uses: crowdin/github-action@v2.5.1 + uses: crowdin/github-action@v2.5.2 continue-on-error: true with: # Upload sources to Crowdin diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 379e78b1de5d..94b86d9ad20e 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -20,13 +20,22 @@ jobs: tag_name: ${{ steps.release_please.outputs.tag_name }} steps: - name: Release-please - uses: googleapis/release-please-action@v4 + uses: googleapis/release-please-action@v4.1.1 id: release_please with: token: ${{ secrets.GITHUB_TOKEN }} release-type: simple pull-request-title-pattern: "chore${scope}: 🚀 Open Food Facts Mobile app - Release${component} ${version}." - changelog-types: '[{"type":"feat","section":"🚀 Features","hidden":false},{"type":"fix","section":"🐛 Bug Fixes","hidden":false},{"type":"docs","section":"📖 Documentation","hidden":false},{"type":"ci","section":"🤖 Automation","hidden":false},{"type":"refactor","section":"👷 Refactoring","hidden":false},{"type":"chore","section":"🛠 Miscellaneous","hidden":false},{"type":"l10n","section":"🌍 Translations","hidden":false}]' + changelog-types: | + [ + {"type":"feat","section":"🚀 Features","hidden":false}, + {"type":"fix","section":"🐛 Bug Fixes","hidden":false}, + {"type":"docs","section":"📖 Documentation","hidden":false}, + {"type":"ci","section":"🤖 Automation","hidden":false}, + {"type":"refactor","section":"👷 Refactoring","hidden":false}, + {"type":"chore","section":"🛠 Miscellaneous","hidden":false}, + {"type":"l10n","section":"🌍 Translations","hidden":false} + ] create-release: concurrency: diff --git a/packages/smooth_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/tinted_icon-1024.png b/packages/smooth_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/tinted_icon-1024.png index 68b75ce62cc4..5e4aa44e4cbe 100644 Binary files a/packages/smooth_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/tinted_icon-1024.png and b/packages/smooth_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/tinted_icon-1024.png differ diff --git a/packages/smooth_app/lib/data_models/preferences/user_preferences.dart b/packages/smooth_app/lib/data_models/preferences/user_preferences.dart index 8331338948a2..cd22ea695e5c 100644 --- a/packages/smooth_app/lib/data_models/preferences/user_preferences.dart +++ b/packages/smooth_app/lib/data_models/preferences/user_preferences.dart @@ -128,6 +128,10 @@ class UserPreferences extends ChangeNotifier { 'taglineFeedNewsDisplayed'; static const String _TAG_TAGLINE_FEED_NEWS_CLICKED = 'taglineFeedNewsClicked'; + /// Info messages + static const String _TAG_SHOW_BANNER_INPUT_PRODUCT_NAME = + 'bannerInputProductName'; + Future init(final ProductPreferences productPreferences) async { await _onMigrate(); @@ -483,6 +487,17 @@ class UserPreferences extends ChangeNotifier { } } + bool showInputProductNameBanner() => + _sharedPreferences.getBool(_TAG_SHOW_BANNER_INPUT_PRODUCT_NAME) ?? true; + + Future hideInputProductNameBanner() async { + await _sharedPreferences.setBool( + _TAG_SHOW_BANNER_INPUT_PRODUCT_NAME, + false, + ); + notifyListeners(); + } + ProductType get latestProductType => ProductType.fromOffTag( _sharedPreferences.getString(_TAG_LATEST_PRODUCT_TYPE)) ?? diff --git a/packages/smooth_app/lib/generic_lib/bottom_sheets/smooth_bottom_sheet.dart b/packages/smooth_app/lib/generic_lib/bottom_sheets/smooth_bottom_sheet.dart index bb600355685f..ca10bd62440f 100644 --- a/packages/smooth_app/lib/generic_lib/bottom_sheets/smooth_bottom_sheet.dart +++ b/packages/smooth_app/lib/generic_lib/bottom_sheets/smooth_bottom_sheet.dart @@ -682,20 +682,34 @@ abstract class SizeWidget implements Widget { class SmoothModalSheetBodyContainer extends StatelessWidget { const SmoothModalSheetBodyContainer({ required this.child, + this.padding, + this.safeArea = true, super.key, }); final Widget child; + final EdgeInsetsGeometry? padding; + final bool safeArea; @override Widget build(BuildContext context) { + EdgeInsetsGeometry padding = this.padding ?? + const EdgeInsetsDirectional.only( + start: MEDIUM_SPACE, + end: MEDIUM_SPACE, + top: VERY_SMALL_SPACE, + bottom: VERY_SMALL_SPACE, + ); + + if (safeArea) { + padding = padding.add( + EdgeInsetsDirectional.only( + bottom: MediaQuery.viewPaddingOf(context).bottom, + ), + ); + } return Padding( - padding: EdgeInsetsDirectional.only( - start: MEDIUM_SPACE, - end: MEDIUM_SPACE, - top: VERY_SMALL_SPACE, - bottom: VERY_SMALL_SPACE + MediaQuery.viewPaddingOf(context).bottom, - ), + padding: padding, child: DefaultTextStyle.merge( style: const TextStyle( fontSize: 15.0, diff --git a/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_chip.dart b/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_chip.dart index 36b16c1c9f53..e3f5c6df8934 100644 --- a/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_chip.dart +++ b/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_chip.dart @@ -16,7 +16,7 @@ class SmoothHtmlChip extends StatelessWidget { return CustomPaint( painter: _HtmlChipPainter( color: - context.lightTheme() ? extension.greyLight : extension.greyNormal, + context.lightTheme() ? extension.greyMedium : extension.greyNormal, textDirection: Directionality.of(context), ), child: const SizedBox.square(dimension: 10.0), diff --git a/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_decimal.dart b/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_decimal.dart index 4eceba05ff25..5ebc5ccfccf0 100644 --- a/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_decimal.dart +++ b/packages/smooth_app/lib/generic_lib/html/smooth_html_marker_decimal.dart @@ -19,7 +19,7 @@ class SmoothHtmlDecimal extends StatelessWidget { return CustomPaint( painter: _HtmlDecimalPainter( color: - context.lightTheme() ? extension.greyLight : extension.greyNormal, + context.lightTheme() ? extension.greyMedium : extension.greyNormal, index: index, textDirection: Directionality.of(context), textStyle: const TextStyle( diff --git a/packages/smooth_app/lib/generic_lib/widgets/smooth_card.dart b/packages/smooth_app/lib/generic_lib/widgets/smooth_card.dart index 8daf9bc973c6..beb373878ce1 100644 --- a/packages/smooth_app/lib/generic_lib/widgets/smooth_card.dart +++ b/packages/smooth_app/lib/generic_lib/widgets/smooth_card.dart @@ -118,6 +118,7 @@ class SmoothCardWithRoundedHeader extends StatelessWidget { this.titleBackgroundColor, this.contentBackgroundColor, this.borderRadius, + this.includeShadow = true, super.key, }); @@ -133,20 +134,23 @@ class SmoothCardWithRoundedHeader extends StatelessWidget { final Color? titleBackgroundColor; final Color? contentBackgroundColor; final BorderRadius? borderRadius; + final bool includeShadow; @override Widget build(BuildContext context) { return DecoratedBox( decoration: BoxDecoration( borderRadius: borderRadius ?? ROUNDED_BORDER_RADIUS, - boxShadow: const [ - BoxShadow( - color: Color(0x03000000), - blurRadius: 2.0, - spreadRadius: 0.0, - offset: Offset(0.0, 2.0), - ), - ], + boxShadow: includeShadow + ? const [ + BoxShadow( + color: Color(0x10000000), + blurRadius: 2.0, + spreadRadius: 0.0, + offset: Offset(0.0, 2.0), + ), + ] + : null, ), child: Column( children: [ @@ -209,6 +213,10 @@ class SmoothCardWithRoundedHeaderTop extends StatelessWidget { painter: _SmoothCardWithRoundedHeaderBackgroundPainter( color: color, radius: borderRadius?.topRight ?? ROUNDED_RADIUS, + shadowElevation: + SmoothCardWithRoundedHeaderTopShadowProvider.of(context) + ?.shadow ?? + 0.0, ), child: Padding( padding: titlePadding ?? @@ -282,6 +290,30 @@ class SmoothCardWithRoundedHeaderTop extends StatelessWidget { } } +class SmoothCardWithRoundedHeaderTopShadowProvider extends InheritedWidget { + const SmoothCardWithRoundedHeaderTopShadowProvider({ + required this.shadow, + required super.child, + super.key, + }); + + final double shadow; + + static SmoothCardWithRoundedHeaderTopShadowProvider? of( + BuildContext context) { + final SmoothCardWithRoundedHeaderTopShadowProvider? result = + context.dependOnInheritedWidgetOfExactType< + SmoothCardWithRoundedHeaderTopShadowProvider>(); + return result; + } + + @override + bool updateShouldNotify( + SmoothCardWithRoundedHeaderTopShadowProvider oldWidget) { + return oldWidget.shadow != shadow; + } +} + class SmoothCardWithRoundedHeaderBody extends StatelessWidget { const SmoothCardWithRoundedHeaderBody({ required this.child, @@ -320,10 +352,12 @@ class _SmoothCardWithRoundedHeaderBackgroundPainter extends CustomPainter { _SmoothCardWithRoundedHeaderBackgroundPainter({ required Color color, required this.radius, + required this.shadowElevation, }) : _paint = Paint()..color = color; final Radius radius; final Paint _paint; + final double shadowElevation; @override void paint(Canvas canvas, Size size) { @@ -355,6 +389,14 @@ class _SmoothCardWithRoundedHeaderBackgroundPainter extends CustomPainter { ) ..close(); + if (shadowElevation > 0.0) { + canvas.drawShadow( + path, + Colors.black.withValues(alpha: shadowElevation), + 2.0, + false, + ); + } canvas.drawPath(path, _paint); } @@ -362,7 +404,7 @@ class _SmoothCardWithRoundedHeaderBackgroundPainter extends CustomPainter { bool shouldRepaint( _SmoothCardWithRoundedHeaderBackgroundPainter oldDelegate, ) => - false; + shadowElevation != oldDelegate.shadowElevation; @override bool shouldRebuildSemantics( diff --git a/packages/smooth_app/lib/generic_lib/widgets/smooth_sliver_card.dart b/packages/smooth_app/lib/generic_lib/widgets/smooth_sliver_card.dart index 5bf4000cb7ef..71e5a1db7d20 100644 --- a/packages/smooth_app/lib/generic_lib/widgets/smooth_sliver_card.dart +++ b/packages/smooth_app/lib/generic_lib/widgets/smooth_sliver_card.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:sliver_tools/sliver_tools.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/helpers/num_utils.dart'; import 'package:smooth_app/widgets/widget_height.dart'; class SliverCardWithRoundedHeader extends StatefulWidget { @@ -125,7 +126,10 @@ class _SliverCardWithRoundedHeaderDelegate width: double.infinity, ), ), - child, + SmoothCardWithRoundedHeaderTopShadowProvider( + shadow: shrinkOffset.progressAndClamp(0.0, 30.0, 1.0), + child: child, + ), ], ); } diff --git a/packages/smooth_app/lib/generic_lib/widgets/smooth_text_form_field.dart b/packages/smooth_app/lib/generic_lib/widgets/smooth_text_form_field.dart index d5b466b937dc..80f15c9e3a66 100644 --- a/packages/smooth_app/lib/generic_lib/widgets/smooth_text_form_field.dart +++ b/packages/smooth_app/lib/generic_lib/widgets/smooth_text_form_field.dart @@ -31,6 +31,8 @@ class SmoothTextFormField extends StatefulWidget { this.spellCheckConfiguration, this.allowEmojis = true, this.maxLines, + this.borderRadius, + this.contentPadding, }); final TextFieldTypes type; @@ -51,6 +53,8 @@ class SmoothTextFormField extends StatefulWidget { final SpellCheckConfiguration? spellCheckConfiguration; final bool allowEmojis; final int? maxLines; + final BorderRadius? borderRadius; + final EdgeInsetsGeometry? contentPadding; @override State createState() => _SmoothTextFormFieldState(); @@ -76,7 +80,9 @@ class _SmoothTextFormFieldState extends State { Widget build(BuildContext context) { final bool enableSuggestions = widget.type == TextFieldTypes.PLAIN_TEXT; final bool autocorrect = widget.type == TextFieldTypes.PLAIN_TEXT; - final TextStyle textStyle = DefaultTextStyle.of(context).style; + final TextStyle textStyle = DefaultTextStyle.of(context).style.copyWith( + fontSize: 15.0, + ); final double textSize = textStyle.fontSize ?? 20.0; final AppLocalizations appLocalization = AppLocalizations.of(context); @@ -111,10 +117,12 @@ class _SmoothTextFormFieldState extends State { FilteringTextInputFormatter.deny(TextHelper.emojiRegex), ], decoration: InputDecoration( - contentPadding: const EdgeInsets.symmetric( - horizontal: LARGE_SPACE, - vertical: SMALL_SPACE, - ), + contentPadding: widget.contentPadding ?? + const EdgeInsets.symmetric( + horizontal: LARGE_SPACE, + vertical: SMALL_SPACE, + ), + isDense: widget.contentPadding != null, prefixIcon: widget.prefixIcon, filled: true, hintStyle: (widget.hintTextStyle ?? const TextStyle()).apply( @@ -122,12 +130,12 @@ class _SmoothTextFormFieldState extends State { ), hintText: widget.hintText, hintMaxLines: widget.maxLines ?? 2, - border: const OutlineInputBorder( - borderRadius: CIRCULAR_BORDER_RADIUS, + border: OutlineInputBorder( + borderRadius: widget.borderRadius ?? CIRCULAR_BORDER_RADIUS, ), - enabledBorder: const OutlineInputBorder( - borderRadius: CIRCULAR_BORDER_RADIUS, - borderSide: BorderSide( + enabledBorder: OutlineInputBorder( + borderRadius: widget.borderRadius ?? CIRCULAR_BORDER_RADIUS, + borderSide: const BorderSide( color: Colors.transparent, width: 5.0, ), diff --git a/packages/smooth_app/lib/helpers/paint_helper.dart b/packages/smooth_app/lib/helpers/paint_helper.dart new file mode 100644 index 000000000000..b3ced9b6dc27 --- /dev/null +++ b/packages/smooth_app/lib/helpers/paint_helper.dart @@ -0,0 +1,35 @@ +import 'package:flutter/rendering.dart'; + +class DashedLinePainter extends CustomPainter { + DashedLinePainter({ + required Color color, + this.dashGap = 3.0, + this.dashSpace = 3.0, + }) : _paint = Paint() + ..color = color + ..strokeWidth = 1.0; + + final double dashGap; + final double dashSpace; + + final Paint _paint; + + @override + void paint(Canvas canvas, Size size) { + double startX = 0.0; + + while (startX < size.width) { + canvas.drawLine( + Offset(startX, 0), + Offset(startX + dashGap, 0), + _paint, + ); + + startX += dashGap + dashSpace; + } + } + + @override + bool shouldRepaint(DashedLinePainter oldDelegate) => + dashGap != oldDelegate.dashGap || dashSpace != oldDelegate.dashSpace; +} 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 fe21e1d6f8f4..7912ff01e5f2 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 @@ -12,13 +12,16 @@ import 'package:smooth_app/helpers/product_cards_helper.dart'; import 'package:smooth_app/knowledge_panel/knowledge_panels/knowledge_panel_expanded_card.dart'; import 'package:smooth_app/knowledge_panel/knowledge_panels_builder.dart'; import 'package:smooth_app/pages/product/common/product_refresher.dart'; +import 'package:smooth_app/pages/product/nutrition_page/nutrition_page_loader.dart'; import 'package:smooth_app/pages/product/portion_calculator.dart'; import 'package:smooth_app/pages/product/product_field_editor.dart'; +import 'package:smooth_app/pages/product/simple_input_page_helpers.dart'; import 'package:smooth_app/pages/scan/carousel/scan_carousel_manager.dart'; import 'package:smooth_app/themes/smooth_theme.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; import 'package:smooth_app/themes/theme_provider.dart'; import 'package:smooth_app/widgets/smooth_app_bar.dart'; +import 'package:smooth_app/widgets/smooth_menu_button.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; /// Detail page of knowledge panels (if you click on the forward/more button). @@ -63,60 +66,63 @@ class _KnowledgePanelPageState extends State context.watch(); refreshUpToDate(); - return SmoothScaffold( - backgroundColor: context.lightTheme() - ? context.extension().primaryLight - : null, - appBar: SmoothAppBar( - title: Semantics( - label: _getTitleForAccessibility(appLocalizations, title), - child: Text( - title, + return Provider.value( + value: upToDateProduct, + child: SmoothScaffold( + backgroundColor: context.lightTheme() + ? context.extension().primaryLight + : null, + appBar: SmoothAppBar( + title: Semantics( + label: _getTitleForAccessibility(appLocalizations, title), + child: Text( + title, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + subTitle: Text( + getProductNameAndBrands(upToDateProduct, appLocalizations), maxLines: 1, overflow: TextOverflow.ellipsis, ), + actions: _actions(), ), - subTitle: Text( - getProductNameAndBrands(upToDateProduct, appLocalizations), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - actions: _actions(), - ), - body: RefreshIndicator( - onRefresh: () => _refreshProduct(context), - child: Scrollbar( - child: ListView( - physics: const AlwaysScrollableScrollPhysics(), - padding: EdgeInsetsDirectional.only( - top: SMALL_SPACE, - start: VERY_SMALL_SPACE, - end: VERY_SMALL_SPACE, - bottom: SMALL_SPACE + MediaQuery.viewPaddingOf(context).bottom, - ), - children: [ - SmoothCard( - padding: const EdgeInsetsDirectional.only( - bottom: LARGE_SPACE, - ), - child: DefaultTextStyle.merge( - style: const TextStyle(fontSize: 15.0, height: 1.5), - child: KnowledgePanelExpandedCard( - panelId: widget.panelId, - product: upToDateProduct, - isInitiallyExpanded: true, - isClickable: true, - ), - ), + body: RefreshIndicator( + onRefresh: () => _refreshProduct(context), + child: Scrollbar( + child: ListView( + physics: const AlwaysScrollableScrollPhysics(), + padding: EdgeInsetsDirectional.only( + top: SMALL_SPACE, + start: VERY_SMALL_SPACE, + end: VERY_SMALL_SPACE, + bottom: SMALL_SPACE + MediaQuery.viewPaddingOf(context).bottom, ), - if (PortionCalculator.isVisible(widget.panelId)) + children: [ SmoothCard( padding: const EdgeInsetsDirectional.only( bottom: LARGE_SPACE, ), - child: PortionCalculator(upToDateProduct), + child: DefaultTextStyle.merge( + style: const TextStyle(fontSize: 15.0, height: 1.5), + child: KnowledgePanelExpandedCard( + panelId: widget.panelId, + product: upToDateProduct, + isInitiallyExpanded: true, + isClickable: true, + ), + ), ), - ], + if (PortionCalculator.isVisible(widget.panelId)) + SmoothCard( + padding: const EdgeInsetsDirectional.only( + bottom: LARGE_SPACE, + ), + child: PortionCalculator(upToDateProduct), + ), + ], + ), ), ), ), @@ -174,17 +180,51 @@ class _KnowledgePanelPageState extends State } } - // TODO(g123k): Improve this mechanism to be more flexible List? _actions() { - if (widget.panelId == 'ingredients') { + if (['ingredients', 'ingredients_analysis_details'] + .contains(widget.panelId)) { return [ - IconButton( + _KnowledgePanelPageEditAction( + tooltip: AppLocalizations.of(context).ingredients_editing_title, onPressed: () async => ProductFieldOcrIngredientEditor().edit( context: context, product: upToDateProduct, ), - icon: const Icon(Icons.edit), - tooltip: AppLocalizations.of(context).ingredients_editing_title, + ), + ]; + } else if (widget.panelId == 'nutrition_facts_table') { + return [ + _KnowledgePanelPageEditAction( + tooltip: AppLocalizations.of(context).nutrition_facts_editing_title, + onPressed: () async => NutritionPageLoader.showNutritionPage( + product: upToDateProduct, + isLoggedInMandatory: true, + context: context, + ), + ), + ]; + } else if ([ + 'origins_of_ingredients', + 'environmental_score_origins_of_ingredients' + ].contains(widget.panelId)) { + return [ + _KnowledgePanelPageEditAction( + tooltip: AppLocalizations.of(context).origins_editing_title, + onPressed: () async => + ProductFieldSimpleEditor(SimpleInputPageOriginHelper()).edit( + context: context, + product: upToDateProduct, + ), + ), + ]; + } else if (widget.panelId == 'environmental_score_packaging') { + return [ + _KnowledgePanelPageEditAction( + tooltip: AppLocalizations.of(context).origins_editing_title, + onPressed: () async => ProductFieldPackagingEditor().edit( + context: context, + product: upToDateProduct, + ), ), ]; } @@ -198,3 +238,29 @@ class _KnowledgePanelPageState extends State properties.add(StringProperty('panelId', widget.panelId)); } } + +class _KnowledgePanelPageEditAction extends StatelessWidget { + const _KnowledgePanelPageEditAction({ + required this.tooltip, + required this.onPressed, + }); + + final String tooltip; + final VoidCallback onPressed; + + @override + Widget build(BuildContext context) { + return SmoothPopupMenuButton( + buttonIcon: const Icon(Icons.more_vert), + onSelected: (_) => onPressed(), + itemBuilder: (BuildContext context) { + return >[ + SmoothPopupMenuItem( + label: tooltip, + value: null, + icon: Icons.edit, + ), + ]; + }); + } +} diff --git a/packages/smooth_app/lib/l10n/app_aa.arb b/packages/smooth_app/lib/l10n/app_aa.arb index 395b8532edcd..da9859100ac4 100644 --- a/packages/smooth_app/lib/l10n/app_aa.arb +++ b/packages/smooth_app/lib/l10n/app_aa.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ak.arb b/packages/smooth_app/lib/l10n/app_ak.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_ak.arb +++ b/packages/smooth_app/lib/l10n/app_ak.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_am.arb b/packages/smooth_app/lib/l10n/app_am.arb index 5a2e37484390..66f5937f8cdf 100644 --- a/packages/smooth_app/lib/l10n/app_am.arb +++ b/packages/smooth_app/lib/l10n/app_am.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ar.arb b/packages/smooth_app/lib/l10n/app_ar.arb index 5ad602802bd5..71b85d52da68 100644 --- a/packages/smooth_app/lib/l10n/app_ar.arb +++ b/packages/smooth_app/lib/l10n/app_ar.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "معلومات التعبِئة", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "تحديث المعلومات الغذائية", "nutrition_page_title": "حقائق غذائية", - "nutrition_page_unspecified": "لم يتم تحديد المعلومات الغذائية على المنتج", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "نعم", + "nutrition_page_nutritional_info_value_negative": "لا", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "لكل 100 غرام", "nutrition_page_per_serving": "لكل وجبة", "nutrition_page_add_nutrient": "إضافة مادة غذائية", "nutrition_page_serving_size": "حجم الحصة", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "الرقم غير صحيح", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "تم تحديث المنتج!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "صور أكثر إثارة للاهتمام", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "مساهم", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "غير معروف", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "تحرير", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "الفئات", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_as.arb b/packages/smooth_app/lib/l10n/app_as.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_as.arb +++ b/packages/smooth_app/lib/l10n/app_as.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_az.arb b/packages/smooth_app/lib/l10n/app_az.arb index 0e94aab5b84c..fd72ed147019 100644 --- a/packages/smooth_app/lib/l10n/app_az.arb +++ b/packages/smooth_app/lib/l10n/app_az.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Bəli", + "nutrition_page_nutritional_info_value_negative": "Xeyr", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Töhfə verən", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Düzəliş etmək", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kateqoriyalar", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_be.arb b/packages/smooth_app/lib/l10n/app_be.arb index 26f2ec5cc610..c4439091a064 100644 --- a/packages/smooth_app/lib/l10n/app_be.arb +++ b/packages/smooth_app/lib/l10n/app_be.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Інфармацыя аб упакоўцы", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Абнавіць звесткі аб пажыўнасці", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Звесткі аб пажыўнасці не пазначаны на прадукце", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "на 100 г", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Недапушчальны лік", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Прадукт абноўлены!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Больш цікавых фота", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Запоўніце асноўныя звесткі", "not_implemented_snackbar_text": "Яшчэ не рэалізавана", "category_picker_page_appbar_text": "Катэгорыі", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_bg.arb b/packages/smooth_app/lib/l10n/app_bg.arb index e02a5ac4d45c..f9702cf6b453 100644 --- a/packages/smooth_app/lib/l10n/app_bg.arb +++ b/packages/smooth_app/lib/l10n/app_bg.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Информация на опаковката", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Актуализирай хранителните стойности", "nutrition_page_title": "Хранителни стойности", - "nutrition_page_unspecified": "Хранителните стойности не са посочени върху продукта", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Да", + "nutrition_page_nutritional_info_value_negative": "Не", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "на 100 г", "nutrition_page_per_serving": "на порция", "nutrition_page_add_nutrient": "Добави хранително вещество", "nutrition_page_serving_size": "Размер на порция", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Невалидно число", "nutrition_page_update_running": "Актуализиране на продукта на сървъра…", "nutrition_page_update_done": "Продуктът е актуализиран!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Още интересни снимки", "@more_photos": {}, "view_more_photo_button": "Виж всички съществуващи снимки за този продукт", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Сътрудник", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Дата", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Неизвестно", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Добре дошъл в Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Редактирай", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Попълни основните подробности", "not_implemented_snackbar_text": "Все още не е внедрено", "category_picker_page_appbar_text": "Категории", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_bm.arb b/packages/smooth_app/lib/l10n/app_bm.arb index 1c2ffafb7eb3..9c13c4a16ace 100644 --- a/packages/smooth_app/lib/l10n/app_bm.arb +++ b/packages/smooth_app/lib/l10n/app_bm.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Dɛmɛbaga", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Suguyaw", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_bn.arb b/packages/smooth_app/lib/l10n/app_bn.arb index 82f908d2ca94..176232fba105 100644 --- a/packages/smooth_app/lib/l10n/app_bn.arb +++ b/packages/smooth_app/lib/l10n/app_bn.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "হ্যাঁ", + "nutrition_page_nutritional_info_value_negative": "না", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "প্রতি পরিবেশনে", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "পরিবেশন পরিমাপ", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "শ্রেণীসমূহ", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_bo.arb b/packages/smooth_app/lib/l10n/app_bo.arb index e45638ce69b7..f34fa3c5c4d0 100644 --- a/packages/smooth_app/lib/l10n/app_bo.arb +++ b/packages/smooth_app/lib/l10n/app_bo.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_br.arb b/packages/smooth_app/lib/l10n/app_br.arb index d11f76def3d2..05c870021841 100644 --- a/packages/smooth_app/lib/l10n/app_br.arb +++ b/packages/smooth_app/lib/l10n/app_br.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ya", + "nutrition_page_nutritional_info_value_negative": "Ket", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Perzhiad", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Dianav", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Aozañ", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Rummadoù", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_bs.arb b/packages/smooth_app/lib/l10n/app_bs.arb index c9691fd84af7..169cf45238dd 100644 --- a/packages/smooth_app/lib/l10n/app_bs.arb +++ b/packages/smooth_app/lib/l10n/app_bs.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Da", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Saradnik", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Uredi", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorije", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ca.arb b/packages/smooth_app/lib/l10n/app_ca.arb index d346ba7410da..b960cd30ef6f 100644 --- a/packages/smooth_app/lib/l10n/app_ca.arb +++ b/packages/smooth_app/lib/l10n/app_ca.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informació de l'embolcall", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Actualitzar les dades nutricionals", "nutrition_page_title": "Informació nutricional", - "nutrition_page_unspecified": "Les dades nutricionals no estan especificades en el producte", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Si", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100 g", "nutrition_page_per_serving": "per porció", "nutrition_page_add_nutrient": "Afegir un nutrient", "nutrition_page_serving_size": "Mida de la porció", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Número no vàlid", "nutrition_page_update_running": "Actualització del producte al servidor…", "nutrition_page_update_done": "Producte actualitzat!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Més fotos interessants", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Voluntari/a", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Data", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Desconegut", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edita", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Detalls bàsics complets", "not_implemented_snackbar_text": "Encara no s'ha implementat", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ce.arb b/packages/smooth_app/lib/l10n/app_ce.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_ce.arb +++ b/packages/smooth_app/lib/l10n/app_ce.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_co.arb b/packages/smooth_app/lib/l10n/app_co.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_co.arb +++ b/packages/smooth_app/lib/l10n/app_co.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_cs.arb b/packages/smooth_app/lib/l10n/app_cs.arb index 5508fe8ba1fa..c00d73b6aa17 100644 --- a/packages/smooth_app/lib/l10n/app_cs.arb +++ b/packages/smooth_app/lib/l10n/app_cs.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informace o balení", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Aktualizujte výživová fakta", "nutrition_page_title": "Nutriční hodnoty", - "nutrition_page_unspecified": "Výživové údaje nejsou u produktu uvedeny", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ano", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "na 100 g", "nutrition_page_per_serving": "v jedné porci", "nutrition_page_add_nutrient": "Přidejte živinu", "nutrition_page_serving_size": "Velikost porce", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Neplatné číslo", "nutrition_page_update_running": "Aktualizace produktu na serveru…", "nutrition_page_update_done": "Produkt aktualizován!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Další zajímavé fotky", "@more_photos": {}, "view_more_photo_button": "Zobrazit všechny existující fotografie tohoto produktu", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Přispěvatel", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Datum", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Neznámo", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Vítejte v Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Upravit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Vyplňte základní údaje", "not_implemented_snackbar_text": "Zatím neimplementováno", "category_picker_page_appbar_text": "Kategorie", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Musíte vybrat doklad!", "prices_add_validation_error": "Chyba ověření", "prices_privacy_warning_title": "Upozornění na soukromí", - "prices_privacy_warning_message": "Ceny budou veřejné, spolu s obchodem, na který odkazují.\nTo by mohlo umožnit lidem, kteří znají váš pseudonym Open Food Facts:\n* odvodit, ve které oblasti žijete\n* vědět, co kupujete\nPokud s tím jste znepokojeni, změňte si prosím svůj pseudonym nebo si vytvořte nový účet Open Food Facts a přihlaste se pomocí něj do aplikace.", "prices_unknown_product": "Neznámý produkt", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_cv.arb b/packages/smooth_app/lib/l10n/app_cv.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_cv.arb +++ b/packages/smooth_app/lib/l10n/app_cv.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_cy.arb b/packages/smooth_app/lib/l10n/app_cy.arb index b0a34c5742e0..332b952dd750 100644 --- a/packages/smooth_app/lib/l10n/app_cy.arb +++ b/packages/smooth_app/lib/l10n/app_cy.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categorïau", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_da.arb b/packages/smooth_app/lib/l10n/app_da.arb index f7d2dc9d0923..f82e2dc27997 100644 --- a/packages/smooth_app/lib/l10n/app_da.arb +++ b/packages/smooth_app/lib/l10n/app_da.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Emballageoplysning", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Opdatér ernæringsfakta", "nutrition_page_title": "Ernæringsfakta", - "nutrition_page_unspecified": "Ernæringsfakta ikke angivet på produktet", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nej", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "pr. 100g", "nutrition_page_per_serving": "per portion", "nutrition_page_add_nutrient": "Tilføj et næringsstof", "nutrition_page_serving_size": "Portionsstørrelse", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Ugyldigt nummer", "nutrition_page_update_running": "Opdaterer produktet på serveren…", "nutrition_page_update_done": "Produkt opdateret!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Flere interessante fotos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Bidragsyder", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Ukendt", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Redigér", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Udfyld basisoplysninger", "not_implemented_snackbar_text": "Endnu ikke implementeret", "category_picker_page_appbar_text": "Kategorier", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_de.arb b/packages/smooth_app/lib/l10n/app_de.arb index 1dbbe6e1de95..653730542f1e 100644 --- a/packages/smooth_app/lib/l10n/app_de.arb +++ b/packages/smooth_app/lib/l10n/app_de.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Nährwertangaben bearbeiten", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Angaben zur Verpackung", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Fehlende Produktmarken hinzufügen", "score_update_nutrition_facts": "Nährwertangaben aktualisieren", "nutrition_page_title": "Nährwertangaben", - "nutrition_page_unspecified": "Auf dem Produkt sind keine Nährwertangaben angegeben", + "nutrition_page_nutritional_info_title": "Nährwert-Information", + "nutrition_page_nutritional_info_label": "Auf dem Produkt angegebene Werte:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nein", + "nutrition_page_nutritional_info_open_photo": "Foto öffnen", + "nutrition_page_nutritional_info_explanation": "Zu erledigen", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nährwertangaben:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "pro 100g", "nutrition_page_per_serving": "pro Portion", "nutrition_page_add_nutrient": "Nährstoff hinzufügen", "nutrition_page_serving_size": "Portionsgröße", + "nutrition_page_serving_size_hint": "Portionsgröße eingeben (z.B.: 100g)", + "nutrition_page_serving_size_explanation": "Zu erledigen", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Ungültige Nummer", "nutrition_page_update_running": "Produkt wird auf dem Server aktualisiert…", "nutrition_page_update_done": "Produkt aktualisiert!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Foto konnte nicht geladen werden", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Weitere interessante Fotos", "@more_photos": {}, "view_more_photo_button": "Alle vorhandenen Fotos für dieses Produkt anzeigen", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Mitwirkende(r)", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Mitwirkende (Produzent)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Datum", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unbekannt", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Willkommen bei Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1558,7 +1589,7 @@ "@edit_product_form_item_stores_type": { "description": "Product edition - Stores - input textfield type" }, - "edit_product_form_item_origins_title": "Herkunfte", + "edit_product_form_item_origins_title": "Herkunft", "@edit_product_form_item_origins_title": { "description": "Product edition - Origins - Title" }, @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "Zu erledigen", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Bearbeiten", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Herkunft bearbeiten", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Allgemeine Angaben vervollständigen", "not_implemented_snackbar_text": "Noch nicht implementiert", "category_picker_page_appbar_text": "Kategorien", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Sie müssen einen Nachweis auswählen!", "prices_add_validation_error": "Überprüfungsfehler", "prices_privacy_warning_title": "Datenschutzwarnung", - "prices_privacy_warning_message": "Die Preise werden zusammen mit dem Laden, auf den sie sich beziehen, veröffentlicht.\nDas könnte es Leuten, die Ihr Open Food Facts-Pseudonym kennen, ermöglichen:\n• Rückschlüsse auf Ihre Wohngegend ziehen\n• wissen, was Sie kaufen\nWenn Sie damit nicht einverstanden sind, ändern Sie bitte Ihr Pseudonym oder erstellen Sie ein neues Open Food Facts-Konto und melden Sie sich damit bei der App an.", "prices_unknown_product": "Unbekanntes Produkt", + "prices_privacy_warning_main_message": "Die Preise **werden zusammen mit dem Geschäft, auf das sie sich beziehen, öffentlich** sein.\n\nDas könnte es Leuten, die Ihr Pseudonym auf Open Food Facts kennen, ermöglichen:\n", + "prices_privacy_warning_message_bullet_1": "Ermitteln, in welcher Gegend Sie leben", + "prices_privacy_warning_message_bullet_2": "Erfahren, was Sie kaufen", + "prices_privacy_warning_sub_message": "Wenn Ihnen das unangenehm ist, ändern Sie bitte Ihr Pseudonym oder erstellen Sie ein neues Open Food Facts-Konto und melden Sie sich damit in der App an.", + "i_refuse": "Ablehnen", + "i_accept": "Akzeptieren", "prices_currency_change_proposal_title": "Währung ändern?", "prices_currency_change_proposal_message": "Ihre aktuelle Währung ist **{currency}**. Möchten Sie diese in **{newCurrency}** ändern?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_el.arb b/packages/smooth_app/lib/l10n/app_el.arb index 0d77803b2dc9..8f7aee0a0463 100644 --- a/packages/smooth_app/lib/l10n/app_el.arb +++ b/packages/smooth_app/lib/l10n/app_el.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Πληροφορίες συσκευασίας", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Ενημέρωση διατροφικών στοιχείων", "nutrition_page_title": "Διατροφικά Στοιχεία", - "nutrition_page_unspecified": "Τα διατροφικά στοιχεία δεν αναφέρονται στο προϊόν", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ναι", + "nutrition_page_nutritional_info_value_negative": "Όχι", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "ανά 100g", "nutrition_page_per_serving": "ανά μερίδα", "nutrition_page_add_nutrient": "Προσθέστε ένα θρεπτικό συστατικό", "nutrition_page_serving_size": "Μέγεθος μερίδας", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Μη έγκυρος αριθμός", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Το προϊόν ενημερώθηκε!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Περισσότερες ενδιαφέρουσες φωτογραφίες", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Συνεισφέρων", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Άγνωστος", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Επεξεργασία", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Συμπληρώστε τις βασικές λεπτομέρειες", "not_implemented_snackbar_text": "Δεν έχει υλοποιηθεί ακόμη", "category_picker_page_appbar_text": "Κατηγορίες", @@ -2013,7 +2052,7 @@ "product_type_label_food": "Food", "product_type_label_beauty": "Personal care", "product_type_label_pet_food": "Pet food", - "product_type_label_product": "Other", + "product_type_label_product": "Άλλο", "product_type_selection_title": "Product type", "product_type_selection_subtitle": "Select the type of this product", "product_type_selection_empty": "You need to select a product type first!", @@ -2047,7 +2086,7 @@ } } }, - "prices_barcode_search_not_found": "Product not found", + "prices_barcode_search_not_found": "Το προϊόν δεν βρέθηκε", "prices_barcode_search_none_yet": "No product yet", "prices_barcode_search_running": "Looking for {barcode}", "@prices_barcode_search_running": { @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { @@ -3347,7 +3391,7 @@ "@guide_nutriscore_v2_file_language": { "description": "The logo is only available in de/en/fr/ln/nl. Please use en if not available (in lowercase, please)." }, - "guide_nutriscore_v2_what_is_nutriscore_title": "What is the Nutri-Score?", + "guide_nutriscore_v2_what_is_nutriscore_title": "Τι είναι το Nutri-Score;", "guide_nutriscore_v2_what_is_nutriscore_paragraph1": "The Nutri-Score is a logo which aims to inform you about the **nutritional quality of foods**.", "@guide_nutriscore_v2_what_is_nutriscore_paragraph1": { "description": "Text between asterisks (eg: **My Text**) means text in bold. Please try to keep it." diff --git a/packages/smooth_app/lib/l10n/app_en.arb b/packages/smooth_app/lib/l10n/app_en.arb index 5d71371c6d98..0894fd5ca832 100644 --- a/packages/smooth_app/lib/l10n/app_en.arb +++ b/packages/smooth_app/lib/l10n/app_en.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -889,7 +893,7 @@ "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", - "@product_image_details_contributor": { + "@product_image_details_contributor_producer": { "description": "The name of the contributor (and also the owner field) who uploaded the image" }, "product_image_details_date": "Date", @@ -897,7 +901,7 @@ "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", - "@product_image_details_date": { + "@product_image_details_date_unknown": { "description": "Text to indicate the date of the image is unknown" }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", @@ -1736,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2259,8 +2267,6 @@ "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", "prices_unknown_product": "Unknown product", - "prices_privacy_warning_title": "Privacy warning", - "prices_unknown_product": "Unknown product", "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", "prices_privacy_warning_message_bullet_1": "Infer in which area you live", "prices_privacy_warning_message_bullet_2": "Know what you are buying", @@ -2510,8 +2516,83 @@ }, "basic_details": "Basic Details", "product_name": "Product Name", - "add_basic_details_product_name_error": "Please enter the product name", + "product_names": "Product Names", + "@product_names": { + "description": "Title for the section to edit the product name (in multiple languages)" + }, + "add_basic_details_product_name_add_translation": "Add a new translation", + "@add_basic_details_product_name_add_translation": { + "description": "Button to add a new translation for the product name" + }, + "add_basic_details_product_name_warning_translations": "Before validating, please ensure you only add a translation **if the language is not present on the packaging**", + "@add_basic_details_product_name_warning_translations": { + "description": "Warning message displayed on top of new translations for the product name" + }, + "add_basic_details_product_name_open_photo": "View front photo", + "@add_basic_details_product_name_open_photo": { + "description": "Button to view the front photo of the product (on top of the screen)" + }, + "add_basic_details_product_name_take_photo": "Take front photo", + "@add_basic_details_product_name_take_photo": { + "description": "Button to take a photo of the front of the product (when there is no photo yet)" + }, "add_basic_details_product_name_hint": "Input the name of the product (eg: Nutella)", + "@add_basic_details_product_name_hint": { + "description": "Placeholder when the product name text-field is empty" + }, + "add_basic_details_product_name_help_title": "Good practices: product name", + "@add_basic_details_product_name_help_title": { + "description": "Title for the help section about the product name" + }, + "add_basic_details_product_name_help_info1": "The product name is the **main name printed on the packaging**. It can be a registered trademark.", + "@add_basic_details_product_name_help_info1": { + "description": "Text explaining how to write the product name" + }, + "add_basic_details_product_name_help_info2": "**Note:** Please don't add a translation **if the language is not present on the packaging**.", + "@add_basic_details_product_name_help_info2": { + "description": "Text explaining how to write the product name" + }, + "explanation_section_good_examples": "Good examples", + "@explanation_section_good_examples": { + "description": "Title for the section with good examples" + }, + "explanation_section_bad_examples": "Bad examples", + "@explanation_section_bad_examples": { + "description": "Title for the section with bad examples" + }, + "add_basic_details_product_name_help_good_examples_1": "Nesquik", + "@add_basic_details_product_name_help_good_examples_1": { + "description": "A 1st good example for the product name (you can change it if necessary)" + }, + "add_basic_details_product_name_help_good_examples_2": "Tomato Ketchup", + "@add_basic_details_product_name_help_good_examples_2": { + "description": "A 2nd good example for the product name (you can change it if necessary)" + }, + "add_basic_details_product_name_help_bad_examples_1_explanation": "Don't include the brand in the name", + "@add_basic_details_product_name_help_bad_examples_1_explanation": { + "description": "Explanation for the first bad example" + }, + "add_basic_details_product_name_help_bad_examples_1_example": "Tomato Ketchup **by Heinz**", + "@add_basic_details_product_name_help_bad_examples_1_example": { + "description": "First bad example for the product name" + }, + "add_basic_details_product_name_help_bad_examples_2_explanation": "Don't use symbols ®, ™, © or similar", + "@add_basic_details_product_name_help_bad_examples_2_explanation": { + "description": "Explanation for the second bad example" + }, + "add_basic_details_product_name_help_bad_examples_2_example": "Nesquik**®**", + "@add_basic_details_product_name_help_bad_examples_2_example": { + "description": "Second bad example for the product name" + }, + "add_basic_details_product_name_other_translations": "{count,plural, one{{count} other translation} other{{count} other translations}}", + "@add_basic_details_product_name_other_translations": { + "description": "The number of other translations for a product name (count is always >= 1)", + "placeholders": { + "count": { + "type": "int" + } + } + }, "brand_name": "Brand name", "brand_names": "Brand names", "add_basic_details_brand_name_error": "Please enter the brand name", diff --git a/packages/smooth_app/lib/l10n/app_eo.arb b/packages/smooth_app/lib/l10n/app_eo.arb index 3311c5a1622d..01dc0850da80 100644 --- a/packages/smooth_app/lib/l10n/app_eo.arb +++ b/packages/smooth_app/lib/l10n/app_eo.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Jes", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Aldoni nutraĵon", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Kontribuanto", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Nekonata", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorioj", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_es.arb b/packages/smooth_app/lib/l10n/app_es.arb index b86693525499..5647dc1912db 100644 --- a/packages/smooth_app/lib/l10n/app_es.arb +++ b/packages/smooth_app/lib/l10n/app_es.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Editar Información nutricional", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Información sobre el envase", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Actualizar información nutricional", "nutrition_page_title": "Información nutricional", - "nutrition_page_unspecified": "La información nutricional no aparece en el producto", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Sí", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "por 100 g", "nutrition_page_per_serving": "por porción", "nutrition_page_add_nutrient": "Añadir un nutriente", "nutrition_page_serving_size": "Tamaño de la porción", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Número inválido", "nutrition_page_update_running": "Actualizando el producto en el servidor…", "nutrition_page_update_done": "¡Producto actualizado!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Más fotos interesantes", "@more_photos": {}, "view_more_photo_button": "Ver todas las fotos de este producto", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Colaborador/a", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Fecha", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Desconocido", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Bienvenida a Open Food Facts∫", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Editar", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Editar Orígenes", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Completa los detalles básicos", "not_implemented_snackbar_text": "Aún sin implementar", "category_picker_page_appbar_text": "Categorías", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Producto desconocido", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_et.arb b/packages/smooth_app/lib/l10n/app_et.arb index 5f9e6c6c61fe..7d467fd589b2 100644 --- a/packages/smooth_app/lib/l10n/app_et.arb +++ b/packages/smooth_app/lib/l10n/app_et.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Jah", + "nutrition_page_nutritional_info_value_negative": "Ei", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Panustaja", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Muuda", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategooriad", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_eu.arb b/packages/smooth_app/lib/l10n/app_eu.arb index ace3397a1019..9077c43d13f4 100644 --- a/packages/smooth_app/lib/l10n/app_eu.arb +++ b/packages/smooth_app/lib/l10n/app_eu.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Elikadura datuak", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Bai", + "nutrition_page_nutritional_info_value_negative": "Ez", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Gehitu mantenugai bat", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Produktua zerbitzarian eguneratzen…", "nutrition_page_update_done": "Produktua eguneratu da!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Argazki interesgarri gehiago", "@more_photos": {}, "view_more_photo_button": "Ikusi produktu honen argazki guztiak", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Ekarlea", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Ezezaguna", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Editatu", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategoriak", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_fa.arb b/packages/smooth_app/lib/l10n/app_fa.arb index 8fa7a560c29e..8d51049d62fe 100644 --- a/packages/smooth_app/lib/l10n/app_fa.arb +++ b/packages/smooth_app/lib/l10n/app_fa.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "بلی", + "nutrition_page_nutritional_info_value_negative": "خير", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "در هر وعده", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "دسته‌‎بندی‎ها", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_fi.arb b/packages/smooth_app/lib/l10n/app_fi.arb index de7d008f80f3..d567d11de117 100644 --- a/packages/smooth_app/lib/l10n/app_fi.arb +++ b/packages/smooth_app/lib/l10n/app_fi.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Pakkaustiedot", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Päivitä ravintosisältö", "nutrition_page_title": "Ravintosisältö", - "nutrition_page_unspecified": "Ravintosisältöä ei ole määritelty tuotteessa", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Kyllä", + "nutrition_page_nutritional_info_value_negative": "Ei", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "100 grammaa kohti", "nutrition_page_per_serving": "annosta kohti", "nutrition_page_add_nutrient": "Lisää ravintoaine", "nutrition_page_serving_size": "Annoskoko", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Virheellinen numero", "nutrition_page_update_running": "Päivitetään tuotteita palvelimella…", "nutrition_page_update_done": "Tuote päivitetty!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Lisää kuvia", "@more_photos": {}, "view_more_photo_button": "Näytä kaikki tämän tuotteen olemassa olevat kuvat", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Osallistuja", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Päivämäärä", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Tuntematon", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Tervetuloa Open Food Factsiin", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Muokkaa", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Täytä perustiedot", "not_implemented_snackbar_text": "Ei vielä käytössä", "category_picker_page_appbar_text": "Tuoteluokat", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Sinun on valittava todiste!", "prices_add_validation_error": "Tarkistusvirhe", "prices_privacy_warning_title": "Tietosuojavaroitus", - "prices_privacy_warning_message": "Hinnat ovat julkisia yhdessä kaupan kanssa, johon ne viittaavat.\nSe saattaa antaa ihmisille, jotka tietävät Open Food Facts -pseudonyymistäsi, mahdollisuuden:\n* päätellä, missä asut\n* tietää mitä ostat\nJos et ole tyytyväinen siihen, vaihda pseudonyymisi tai luo uusi Open Food Facts -tili ja kirjaudu sovellukseen sillä.", "prices_unknown_product": "Tuntematon tuote", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_fo.arb b/packages/smooth_app/lib/l10n/app_fo.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_fo.arb +++ b/packages/smooth_app/lib/l10n/app_fo.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_fr.arb b/packages/smooth_app/lib/l10n/app_fr.arb index e5fa9e0da516..85f903e13c1f 100644 --- a/packages/smooth_app/lib/l10n/app_fr.arb +++ b/packages/smooth_app/lib/l10n/app_fr.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informations sur l'emballage", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Ajouter les marques manquantes", "score_update_nutrition_facts": "Mettre à jour les informations nutritionnelles", "nutrition_page_title": "Informations nutritionnelles", - "nutrition_page_unspecified": "Les valeurs nutritionnelles ne sont pas spécifiées sur le produit", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Oui", + "nutrition_page_nutritional_info_value_negative": "Non", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "pour 100g", "nutrition_page_per_serving": "par portion", "nutrition_page_add_nutrient": "Ajouter un nutriment", "nutrition_page_serving_size": "Taille d'une portion", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Nombre invalide", "nutrition_page_update_running": "Mise à jour du produit sur le serveur...", "nutrition_page_update_done": "Produit mis à jour !", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Plus de photos intéressantes", "@more_photos": {}, "view_more_photo_button": "Voir toutes les photos existantes pour ce produit", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributeur", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Inconnu", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Bienvenue sur Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Modifier", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Compléter les informations de base", "not_implemented_snackbar_text": "Pas encore disponible", "category_picker_page_appbar_text": "Catégories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Vous devez choisir une preuve !", "prices_add_validation_error": "Erreur de validation", "prices_privacy_warning_title": "Avertissement de confidentialité", - "prices_privacy_warning_message": "Les prix seront publics, ainsi que le magasin auquel ils font référence.\nCela pourrait permettre aux personnes qui connaissent votre pseudonyme Open Food Facts de :\n* déduire dans quelle région vous habitez\n* savoir ce que vous achetez\nSi vous n'êtes pas à l'aise avec cela, veuillez changer votre pseudonyme ou créer un nouveau compte Open Food Facts et vous connecter à l'application avec celui-ci.", "prices_unknown_product": "Produit inconnu", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ga.arb b/packages/smooth_app/lib/l10n/app_ga.arb index 264f5f535ad2..654dcdb936df 100644 --- a/packages/smooth_app/lib/l10n/app_ga.arb +++ b/packages/smooth_app/lib/l10n/app_ga.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Tá", + "nutrition_page_nutritional_info_value_negative": "Níl", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Catagóirí", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_gd.arb b/packages/smooth_app/lib/l10n/app_gd.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_gd.arb +++ b/packages/smooth_app/lib/l10n/app_gd.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_gl.arb b/packages/smooth_app/lib/l10n/app_gl.arb index 718923da3b3e..3784561407bd 100644 --- a/packages/smooth_app/lib/l10n/app_gl.arb +++ b/packages/smooth_app/lib/l10n/app_gl.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Si", + "nutrition_page_nutritional_info_value_negative": "Non", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "por ración", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Tamaño da ración", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contribuínte", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Editar", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categorías", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_gu.arb b/packages/smooth_app/lib/l10n/app_gu.arb index c1d55c835e06..b43d7c96f9d0 100644 --- a/packages/smooth_app/lib/l10n/app_gu.arb +++ b/packages/smooth_app/lib/l10n/app_gu.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "શ્રેણીઓ", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ha.arb b/packages/smooth_app/lib/l10n/app_ha.arb index a3dc24d29f10..2a5e27479829 100644 --- a/packages/smooth_app/lib/l10n/app_ha.arb +++ b/packages/smooth_app/lib/l10n/app_ha.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_he.arb b/packages/smooth_app/lib/l10n/app_he.arb index 6e8b52b54569..f7848229586d 100644 --- a/packages/smooth_app/lib/l10n/app_he.arb +++ b/packages/smooth_app/lib/l10n/app_he.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "עריכת עובדות תזונתיות", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "פרטי אריזה", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "הוספת מותגי מוצרים חסרים", "score_update_nutrition_facts": "עדכון העובדות התזונתיות", "nutrition_page_title": "מפרט תזונתי", - "nutrition_page_unspecified": "העובדות התזונתיות לא מופיעות על המוצר", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "כן", + "nutrition_page_nutritional_info_value_negative": "לא", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "ל־100 ג׳", "nutrition_page_per_serving": "לכל הגשה", "nutrition_page_add_nutrient": "הוספת רכיב תזונתי", "nutrition_page_serving_size": "גודל ההגשה", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "מספר שגוי", "nutrition_page_update_running": "המוצר מתעדכן בשרת…", "nutrition_page_update_done": "המוצר עודכן!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "תמונות מעניינות נוספות", "@more_photos": {}, "view_more_photo_button": "הצגת כל התמונות הקיימות עבור מוצר זה", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "תרומה", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "תאריך", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "לא ידוע", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "ברוך בואך ל־Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "עריכה", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "עריכת מקורות", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "השלמת הפרטים הבסיסיים", "not_implemented_snackbar_text": "לא מיושם עדיין", "category_picker_page_appbar_text": "קטגוריות", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "חובה לבחור הוכחה!", "prices_add_validation_error": "שגיאת אימות", "prices_privacy_warning_title": "אזהרת פרטיות", - "prices_privacy_warning_message": "המחירים יהיו גלויים לציבור, לצד החנויות שקשורות אליהם.\nכך יכולים אנשים שמכירים את הכינוי שלך ב־Open Food Facts:\n* להסיק מה אזור המגורים שלך\n* לדעת מה בסל הקניות שלך\nאם לא נוח לך לחשוף מידע שכזה, נא לשנות את הכינוי שלך או ליצור חשבון חדש ב־Open Food Facts ולהיכנס אליו ביישומון.", "prices_unknown_product": "מוצר לא ידוע", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_hi.arb b/packages/smooth_app/lib/l10n/app_hi.arb index 15164df1d327..2e396a10f983 100644 --- a/packages/smooth_app/lib/l10n/app_hi.arb +++ b/packages/smooth_app/lib/l10n/app_hi.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "पोषण तथ्य", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "हाँ", + "nutrition_page_nutritional_info_value_negative": "नहीं", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "प्रत्येक हिस्सा", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "सेवारत माप", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "सहयोगी", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "संपादित करें", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "श्रेणियाँ", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_hr.arb b/packages/smooth_app/lib/l10n/app_hr.arb index a0dbafd3cd8d..57d7e7609eb0 100644 --- a/packages/smooth_app/lib/l10n/app_hr.arb +++ b/packages/smooth_app/lib/l10n/app_hr.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Da", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorije", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ht.arb b/packages/smooth_app/lib/l10n/app_ht.arb index 01c823a9338f..fc9c16c19e57 100644 --- a/packages/smooth_app/lib/l10n/app_ht.arb +++ b/packages/smooth_app/lib/l10n/app_ht.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Wi", + "nutrition_page_nutritional_info_value_negative": "Non", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Kontribitè", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Dat", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Modifye", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategori", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Pwodwi enkoni", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_hu.arb b/packages/smooth_app/lib/l10n/app_hu.arb index a7b206fc333e..5785afd1701b 100644 --- a/packages/smooth_app/lib/l10n/app_hu.arb +++ b/packages/smooth_app/lib/l10n/app_hu.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Csomagolási információk", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Hiányzó márkák hozzáadása", "score_update_nutrition_facts": "Tápértékadatok frissítése", "nutrition_page_title": "Tápértékadatok", - "nutrition_page_unspecified": "A tápértékadatok nincsenek feltüntetve a terméken", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Igen", + "nutrition_page_nutritional_info_value_negative": "Nem", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "100g-ra", "nutrition_page_per_serving": "adagonként", "nutrition_page_add_nutrient": "Tápanyag hozzáadása", "nutrition_page_serving_size": "Adag", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Érvénytelen szám", "nutrition_page_update_running": "Termék frissítése a szerveren…", "nutrition_page_update_done": "A termék frissítve!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "További érdekes képek", "@more_photos": {}, "view_more_photo_button": "Termék meglévő fotóinak megtekintése", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Hozzájáruló", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Ismeretlen", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Üdvözli az Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Szerkesztés", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Alapvető adatok kitöltés", "not_implemented_snackbar_text": "Még nincs implementálva", "category_picker_page_appbar_text": "Kategóriák", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Ki kell választani egy bizonylatot!", "prices_add_validation_error": "Érvényesítési hiba", "prices_privacy_warning_title": "Adatvédelmi figyelmeztetés", - "prices_privacy_warning_message": "Az árak nyilvánosak lesznek, a hozzájuk tartozó üzlettel együtt.\nEz lehetővé teheti az Open Food Factsen használt felhasználónevét ismerő emberek számára, hogy:\n* következtessenek a lakóhelyére\n* tudják, mit vásárol\nHa aggódik emiatt, változtassa meg a felhasználónevét, vagy hozzon létre egy másik Open Food Facts fiókot, és jelentkezzen be azzal az alkalmazásba.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_hy.arb b/packages/smooth_app/lib/l10n/app_hy.arb index 9008bf8a0f80..e7f085af32a3 100644 --- a/packages/smooth_app/lib/l10n/app_hy.arb +++ b/packages/smooth_app/lib/l10n/app_hy.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Այո", + "nutrition_page_nutritional_info_value_negative": "Ոչ", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_id.arb b/packages/smooth_app/lib/l10n/app_id.arb index c5b79d009855..c62889a3dff3 100644 --- a/packages/smooth_app/lib/l10n/app_id.arb +++ b/packages/smooth_app/lib/l10n/app_id.arb @@ -440,7 +440,7 @@ "myPreferences_profile_title": "Profil Anda", "myPreferences_profile_subtitle": "Kelola akun kontributor OpenFoodFacts Anda.", "myPreferences_settings_title": "Pengaturan Aplikasi", - "myPreferences_settings_subtitle": "Dark mode, Languages…", + "myPreferences_settings_subtitle": "Mode gelap, Bahasa…", "myPreferences_food_title": "Preferensi Makanan", "myPreferences_food_subtitle": "Pilih informasi tentang makanan yang paling penting bagi anda.", "myPreferences_food_comment": "Pilih informasi tentang makanan yang paling penting bagi anda, untuk memberi peringkat makanan sesuai preferensi anda, melihat informasi yang paling anda minati lebih dahulu dan dapatkan ringkasan kompatibilitas. Preferensi makanan tersebut tetap ada di perangkat anda, dan tidak terkait dengan akun kontributor OpenFoodFacts anda jika anda memilikinya.", @@ -522,7 +522,7 @@ "@label_refresh": { "description": "Refresh the cached product" }, - "label_reload": "Reload", + "label_reload": "Muat ulang", "@label_reload": { "description": "Reload a page" }, @@ -538,7 +538,7 @@ "imageType": {} } }, - "outdated_image_short_label": "may be outdated", + "outdated_image_short_label": "mungkin kedaluwarsa", "@outdated_image_short_label": { "description": "A label for outdated images" }, @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Ubah informasi nilai gizi", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informasi kemasan", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -631,7 +635,7 @@ "@crop_page_action_local_message": { "description": "The save of the picture locally failed - error dialog message" }, - "crop_page_action_retake": "Retake a photo", + "crop_page_action_retake": "Ambil ulang foto", "@crop_page_action_retake": { "description": "Button which allows users to retake a photo." }, @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Tambahkan merek produk yang kurang", "score_update_nutrition_facts": "Perbarui informasi nilai gizi", "nutrition_page_title": "Informasi nilai gizi", - "nutrition_page_unspecified": "Informasi nilai gizi tidak ditampilkan pada produk", + "nutrition_page_nutritional_info_title": "Info Nutrisi", + "nutrition_page_nutritional_info_label": "Nilai yang tertera pada produk:", + "nutrition_page_nutritional_info_value_positive": "Ya", + "nutrition_page_nutritional_info_value_negative": "Tidak", + "nutrition_page_nutritional_info_open_photo": "Buka foto", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nilai gizi:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per sajian", "nutrition_page_add_nutrient": "Tambahkan nutrisi", "nutrition_page_serving_size": "Takaran saji", + "nutrition_page_serving_size_hint": "Tambahkan ukuran porsi (contoh: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Nomor tidak valid", "nutrition_page_update_running": "Memperbarui produk di peladen…", "nutrition_page_update_done": "Produk diperbarui!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Foto tidak dapat dimuat", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Lebih banyak foto menarik", "@more_photos": {}, "view_more_photo_button": "Lihat semua foto yang ada untuk produk ini", @@ -855,24 +880,30 @@ "@product_image_action_choose_existing_photo": { "description": "Replace the existing picture with one from the product's photos" }, - "product_image_details_label": "Information about the photo", + "product_image_details_label": "Informasi tentang foto", "@product_image_details_label": { "description": "Label for the photo details" }, - "product_image_details_from_producer": "From the producer", + "product_image_details_from_producer": "Dari produsen", "@product_image_details_from_producer": { "description": "Text to indicate that the image was taken by the producer" }, "product_image_details_contributor": "Kontributor", "@product_image_details_contributor": { + "description": "The name of the contributor who uploaded the image" + }, + "product_image_details_contributor_producer": "Kontributor (produsen)", + "@product_image_details_contributor_producer": { "description": "The name of the contributor (and also the owner field) who uploaded the image" }, - "product_image_details_contributor_producer": "Contributor (producer)", "product_image_details_date": "Tanggal", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Tidak diketahui", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Selamat datang di Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1478,31 +1509,31 @@ "@edit_product_form_item_error_existing": { "description": "Error message when the user tries to re-submit an existing value" }, - "edit_product_form_item_add_action_brand": "Add a new brand", + "edit_product_form_item_add_action_brand": "Tambah merek baru", "@edit_product_form_item_add_action_brand": { "description": "Tooltip to show when the user long presses the (+) button on a brand" }, - "edit_product_form_item_add_action_label": "Add a new label", + "edit_product_form_item_add_action_label": "Tambah label baru", "@edit_product_form_item_add_action_label": { "description": "Tooltip to show when the user long presses the (+) button on a label" }, - "edit_product_form_item_add_action_store": "Add a new store", + "edit_product_form_item_add_action_store": "Tambah toko baru", "@edit_product_form_item_add_action_store": { "description": "Tooltip to show when the user long presses the (+) button on a store" }, - "edit_product_form_item_add_action_origin": "Add a new origin", + "edit_product_form_item_add_action_origin": "Tambah sumber baru", "@edit_product_form_item_add_action_origin": { "description": "Tooltip to show when the user long presses the (+) button on an origin" }, - "edit_product_form_item_add_action_emb_code": "Add a new traceability code", + "edit_product_form_item_add_action_emb_code": "Tambah kode penelusuran baru", "@edit_product_form_item_add_action_emb_code": { "description": "Tooltip to show when the user long presses the (+) button on a traceability code" }, - "edit_product_form_item_add_action_country": "Add a new country", + "edit_product_form_item_add_action_country": "Tambah negara baru", "@edit_product_form_item_add_action_country": { "description": "Tooltip to show when the user long presses the (+) button on a country" }, - "edit_product_form_item_add_action_category": "Add a new category", + "edit_product_form_item_add_action_category": "Tambah kategori baru", "@edit_product_form_item_add_action_category": { "description": "Tooltip to show when the user long presses the (+) button on a category" }, @@ -1657,11 +1688,11 @@ "edit_product_form_item_add_valid_item_tooltip": "Tambahkan", "edit_product_form_item_add_invalid_item_tooltip": "Harap masukkan teks", "edit_product_form_item_remove_item_tooltip": "Hapus", - "edit_product_form_item_save_edit_item_tooltip": "Save your edit", + "edit_product_form_item_save_edit_item_tooltip": "Simpan suntingan Anda", "@edit_product_form_item_save_edit_item_tooltip": { "description": "The user can edit an existing item. This action will save the change." }, - "edit_product_form_item_cancel_edit_item_tooltip": "Cancel your edit", + "edit_product_form_item_cancel_edit_item_tooltip": "Batalkan suntingan Anda", "@edit_product_form_item_cancel_edit_item_tooltip": { "description": "The user can edit an existing item. This action will cancel the change (and return to the initial value)." }, @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Sunting", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Ubah Sumber", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Lengkapi informasi dasar", "not_implemented_snackbar_text": "Belum diimplementasi", "category_picker_page_appbar_text": "Kategori", @@ -2227,10 +2266,15 @@ "prices_proof_mandatory": "Anda harus memilih bukti!", "prices_add_validation_error": "Kesalahan validasi", "prices_privacy_warning_title": "Peringatan privasi", - "prices_privacy_warning_message": "Harga akan dipublikasikan, bersama dengan toko yang dirujuk.\nHal ini memungkinkan orang-orang yang mengetahui nama samaran Open Food Facts Anda untuk:\n* menyimpulkan di daerah mana Anda tinggal\n* mengetahui apa yang Anda beli\nJika Anda merasa tidak nyaman dengan hal tersebut, silakan ubah nama samaran Anda, atau buat akun Open Food Facts yang baru dan masuk ke dalam aplikasi dengan akun tersebut.", "prices_unknown_product": "Produk tidak diketahui", - "prices_currency_change_proposal_title": "Change the currency?", - "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", + "prices_privacy_warning_main_message": "Harga **akan dipublikasikan**, beserta toko yang dirujuk.\n\nHal ini memungkinkan orang yang mengetahui nama samaran Open Food Facts Anda untuk:\n", + "prices_privacy_warning_message_bullet_1": "Menebak di area mana Anda tinggal", + "prices_privacy_warning_message_bullet_2": "Mengetahui apa yang Anda beli", + "prices_privacy_warning_sub_message": "Jika Anda merasa tidak nyaman dengan hal itu, silakan ganti nama samaran Anda, atau buat akun Open Food Facts baru dan masuk ke aplikasi menggunakan akun tersebut.", + "i_refuse": "Saya menolak", + "i_accept": "Saya setuju", + "prices_currency_change_proposal_title": "Ubah mata uang?", + "prices_currency_change_proposal_message": "Mata uang Anda saat ini adalah **{currency}**. Apa Anda mau mengubahnya ke **{newCurrency}**?", "@prices_currency_change_proposal_message": { "description": "Message to ask the user if they want to change the currency", "placeholders": { @@ -2242,7 +2286,7 @@ } } }, - "prices_currency_change_proposal_action_approve": "Yes, use {newCurrency}", + "prices_currency_change_proposal_action_approve": "Ya, gunakan {newCurrency}", "@prices_currency_change_proposal_action_approve": { "description": "Button to approve the currency change", "placeholders": { @@ -2251,7 +2295,7 @@ } } }, - "prices_currency_change_proposal_action_cancel": "No, keep {currency}", + "prices_currency_change_proposal_action_cancel": "Tidak, simpan {currency}", "@prices_currency_change_proposal_action_cancel": { "description": "Button to cancel the currency change", "placeholders": { @@ -2746,7 +2790,7 @@ "@country_picker_label": { "description": "Choose Application Country" }, - "currency_picker_label": "Your currency", + "currency_picker_label": "Mata uang Anda", "@currency_picker_label": { "description": "Choose Application Country" }, @@ -2838,7 +2882,7 @@ } } }, - "portion_calculator_computation_error": "Missing data. Calculation could not be performed.", + "portion_calculator_computation_error": "Data tidak ditemukan. Perhitungan tidak dapat dilakukan.", "@portion_calculator_computation_error": { "description": "Error message to explain that the computation of the portion calculator failed." }, diff --git a/packages/smooth_app/lib/l10n/app_ii.arb b/packages/smooth_app/lib/l10n/app_ii.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_ii.arb +++ b/packages/smooth_app/lib/l10n/app_ii.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_is.arb b/packages/smooth_app/lib/l10n/app_is.arb index 6f71694cad26..0c5c74e324a8 100644 --- a/packages/smooth_app/lib/l10n/app_is.arb +++ b/packages/smooth_app/lib/l10n/app_is.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_it.arb b/packages/smooth_app/lib/l10n/app_it.arb index 4db26f39fd9e..3008dab486d0 100644 --- a/packages/smooth_app/lib/l10n/app_it.arb +++ b/packages/smooth_app/lib/l10n/app_it.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informazioni sull'imballaggio", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Aggiungi le marche mancanti del prodotto", "score_update_nutrition_facts": "Aggiorna i valori nutrizionali", "nutrition_page_title": "Informazioni nutrizionali", - "nutrition_page_unspecified": "I valori nutrizionali non sono specificati sul prodotto", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Sì", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per porzione", "nutrition_page_add_nutrient": "Aggiungi un nutriente", "nutrition_page_serving_size": "Porzione", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Numero non valido", "nutrition_page_update_running": "Caricando il prodotto sul server…", "nutrition_page_update_done": "Prodotto aggiornato!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Altre foto che potrebbero interessarti", "@more_photos": {}, "view_more_photo_button": "Visualizza tutte le foto esistenti per questo prodotto", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributore", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Data", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Sconosciuto", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Benvenuti in Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Modifica", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Completa i dettagli di base", "not_implemented_snackbar_text": "Non ancora implementato", "category_picker_page_appbar_text": "Categorie", @@ -2170,7 +2209,7 @@ } } }, - "prices_button_count_proof": "{count,plural, one {}=0{Nessuna prova} =1{Una prova} other{{count} prove}}", + "prices_button_count_proof": "{count,plural, =0{Nessuna prova} =1{Una prova} other{{count} prove}}", "@prices_button_count_proof": { "description": "Number of proofs, for a button", "placeholders": { @@ -2179,7 +2218,7 @@ } } }, - "prices_button_count_product": "{count,plural, one {}=0{Nessun prodotto} =1{Un prodotto} other{{count} prodotti}}", + "prices_button_count_product": "{count,plural, =0{Nessun prodotto} =1{Un prodotto} other{{count} prodotti}}", "@prices_button_count_product": { "description": "Number of products, for a button", "placeholders": { @@ -2188,7 +2227,7 @@ } } }, - "prices_button_count_user": "{count,plural, one {}=0{Nessun utente} =1{Un utente} other{{count} utenti}}", + "prices_button_count_user": "{count,plural, =0{Nessun utente} =1{Un utente} other{{count} utenti}}", "@prices_button_count_user": { "description": "Number of users, for a button", "placeholders": { @@ -2197,7 +2236,7 @@ } } }, - "prices_button_count_price": "{count,plural, one {}=0{Nessun prezzo} =1{Un prezzo} other{{count} prezzi}}", + "prices_button_count_price": "{count,plural, =0{Nessun prezzo} =1{Un prezzo} other{{count} prezzi}}", "@prices_button_count_price": { "description": "Number of prices, for a button", "placeholders": { @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Devi selezionare una prova!", "prices_add_validation_error": "Errore di validazione", "prices_privacy_warning_title": "Avviso sulla privacy", - "prices_privacy_warning_message": "I prezzi saranno pubblici, insieme al negozio a cui si riferiscono.\nQuesto potrebbe permettere alle persone che conoscono il tuo pseudonimo di Open Food Facts di:\n* dedurre in quale zona vivi\n* sapere cosa stai comprando\nSe ti senti a disagio con ciò, cambia il tuo pseudonimo, oppure crea un nuovo account di Open Food Facts e accedi all'app con esso.", "prices_unknown_product": "Prodotto sconosciuto", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_iu.arb b/packages/smooth_app/lib/l10n/app_iu.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_iu.arb +++ b/packages/smooth_app/lib/l10n/app_iu.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ja.arb b/packages/smooth_app/lib/l10n/app_ja.arb index 11349361f390..d89f0c01b1c0 100644 --- a/packages/smooth_app/lib/l10n/app_ja.arb +++ b/packages/smooth_app/lib/l10n/app_ja.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "パッケージ情報", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "栄養成分表を更新", "nutrition_page_title": "栄養成分表", - "nutrition_page_unspecified": "栄養成分表が製品に明記されていません", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "はい", + "nutrition_page_nutritional_info_value_negative": "いいえ", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "100gあたり", "nutrition_page_per_serving": "一食当たり", "nutrition_page_add_nutrient": "栄養成分を追加", "nutrition_page_serving_size": "一人前の分量", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "無効な数字です", "nutrition_page_update_running": "サーバー…で製品を更新しています", "nutrition_page_update_done": "製品が更新されました!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "より興味深い画像", "@more_photos": {}, "view_more_photo_button": "この製品の既存の写真をすべて表示", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "貢献者", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "不明", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "編集", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "基本情報を完成させる", "not_implemented_snackbar_text": "まだ実装されていません", "category_picker_page_appbar_text": "カテゴリー", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_jv.arb b/packages/smooth_app/lib/l10n/app_jv.arb index fee066b05fd1..c3429d362f51 100644 --- a/packages/smooth_app/lib/l10n/app_jv.arb +++ b/packages/smooth_app/lib/l10n/app_jv.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Kasunyatan nutrisi", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Nggih", + "nutrition_page_nutritional_info_value_negative": "Mboten", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Nambah nutrisi", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ka.arb b/packages/smooth_app/lib/l10n/app_ka.arb index 1ba41d91cf8e..4fcf142143fd 100644 --- a/packages/smooth_app/lib/l10n/app_ka.arb +++ b/packages/smooth_app/lib/l10n/app_ka.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "დიახ", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_kk.arb b/packages/smooth_app/lib/l10n/app_kk.arb index 82662ed1901d..3c297d292d0b 100644 --- a/packages/smooth_app/lib/l10n/app_kk.arb +++ b/packages/smooth_app/lib/l10n/app_kk.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Иә", + "nutrition_page_nutritional_info_value_negative": "Жоқ", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Порция мөлшері", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Санаттар", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_km.arb b/packages/smooth_app/lib/l10n/app_km.arb index 44f7bd11f2bd..8c6fe2df14bf 100644 --- a/packages/smooth_app/lib/l10n/app_km.arb +++ b/packages/smooth_app/lib/l10n/app_km.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "កែសម្រួល", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_kn.arb b/packages/smooth_app/lib/l10n/app_kn.arb index 9384b5861c46..0c1d210b6bdd 100644 --- a/packages/smooth_app/lib/l10n/app_kn.arb +++ b/packages/smooth_app/lib/l10n/app_kn.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "ಪೌಷ್ಟಿಕ ಅಂಶಗಳು", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "ಹೌದು", + "nutrition_page_nutritional_info_value_negative": "ಇಲ್ಲ", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "ವಿತರಣೆಯ ಗಾತ್ರ", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "ಕೊಡುಗೆದಾರರು", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "ತಿದ್ದು", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "ವರ್ಗಗಳು", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ko.arb b/packages/smooth_app/lib/l10n/app_ko.arb index fe637bd73872..98ac617bd905 100644 --- a/packages/smooth_app/lib/l10n/app_ko.arb +++ b/packages/smooth_app/lib/l10n/app_ko.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "포장 정보", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "영양 성분 갱신", "nutrition_page_title": "영양 성분 정보", - "nutrition_page_unspecified": "영양성분표가 상품에 명시되어 있지 않습니다", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "예", + "nutrition_page_nutritional_info_value_negative": "아니요", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "100g 당", "nutrition_page_per_serving": "인분", "nutrition_page_add_nutrient": "영양소 추가하기", "nutrition_page_serving_size": "서빙 사이즈", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "잘못된 번호", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "제품 업데이트됨", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "기타 흥미로운 사진", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "기여자", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "알 수 없음", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "수정", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "기본 세부 정보 완성", "not_implemented_snackbar_text": "아직 구현되지 않았어요", "category_picker_page_appbar_text": "카테고리", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ku.arb b/packages/smooth_app/lib/l10n/app_ku.arb index b027a4aa427b..7d17b1d8f556 100644 --- a/packages/smooth_app/lib/l10n/app_ku.arb +++ b/packages/smooth_app/lib/l10n/app_ku.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Erê", + "nutrition_page_nutritional_info_value_negative": "No no", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per di xizmeta", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Vebir", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_kw.arb b/packages/smooth_app/lib/l10n/app_kw.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_kw.arb +++ b/packages/smooth_app/lib/l10n/app_kw.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ky.arb b/packages/smooth_app/lib/l10n/app_ky.arb index 07f0cd8471fd..722a89ab0acf 100644 --- a/packages/smooth_app/lib/l10n/app_ky.arb +++ b/packages/smooth_app/lib/l10n/app_ky.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Аш болумдуу зат кошуңуз", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Оңдоо", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_la.arb b/packages/smooth_app/lib/l10n/app_la.arb index ef45dc4c1694..36aaadc0c0b0 100644 --- a/packages/smooth_app/lib/l10n/app_la.arb +++ b/packages/smooth_app/lib/l10n/app_la.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_lb.arb b/packages/smooth_app/lib/l10n/app_lb.arb index 62668cb921b7..6299279ca680 100644 --- a/packages/smooth_app/lib/l10n/app_lb.arb +++ b/packages/smooth_app/lib/l10n/app_lb.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Jo", + "nutrition_page_nutritional_info_value_negative": "Nee", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Gréisst vun der Portioun", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Änneren", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorien", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_lo.arb b/packages/smooth_app/lib/l10n/app_lo.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_lo.arb +++ b/packages/smooth_app/lib/l10n/app_lo.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_lt.arb b/packages/smooth_app/lib/l10n/app_lt.arb index 626b782860b6..005103904505 100644 --- a/packages/smooth_app/lib/l10n/app_lt.arb +++ b/packages/smooth_app/lib/l10n/app_lt.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Redaguoti maistinę vertę", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informacija apie pakuotę", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Pridėti trūkstamus produktų prekių ženklus", "score_update_nutrition_facts": "Atnaujinkite mitybos faktus", "nutrition_page_title": "Maistingumo faktai", - "nutrition_page_unspecified": "Mitybos faktai ant gaminio nenurodyti", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Taip", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "už 100 g", "nutrition_page_per_serving": "porcijoje", "nutrition_page_add_nutrient": "Pridėti maistinę medžiagą", "nutrition_page_serving_size": "Porcijos dydis", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Neteisingas numeris", "nutrition_page_update_running": "Atnaujinamas produktas serveryje…", "nutrition_page_update_done": "Produktas atnaujintas!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Daugiau įdomių nuotraukų", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Pagalbininkas", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Data", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Nežinoma", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Sveiki atvykę į „Open Food Facts“", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Redaguoti", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Redaguoti kilmę", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Užpildyti pagrindinę informaciją", "not_implemented_snackbar_text": "Dar neįgyvendinta", "category_picker_page_appbar_text": "Kategorijos", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Kainos bus skelbiamos viešai, kartu pateikiant informaciją apie parduotuvę, kurioje produktas buvo pirktas.\nTai gali leisti žmonėms, žinantiems jūsų „Open Food Facts“ slapyvardį:\n* padaryti išvadą, kurioje vietovėje gyvenate\n* sužinoti, ką perkate\nJei tai jums nepatinka, galite pakeisti savo slapyvardį arba sukurti naują „Open Food Facts“ paskyrą ir su ja prisijungti prie programėlės.", "prices_unknown_product": "Nežinomas produktas", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_lv.arb b/packages/smooth_app/lib/l10n/app_lv.arb index ece2b087ab82..6022f8113bc7 100644 --- a/packages/smooth_app/lib/l10n/app_lv.arb +++ b/packages/smooth_app/lib/l10n/app_lv.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Uztura fakti", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Jā", + "nutrition_page_nutritional_info_value_negative": "Nē", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "uz porciju", "nutrition_page_add_nutrient": "Pievienojiet uzturvielu", "nutrition_page_serving_size": "Porcijas lielums", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Atbalstītājs", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Rediģēt", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorijas", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_mg.arb b/packages/smooth_app/lib/l10n/app_mg.arb index abcb500b7f60..f628d01485d4 100644 --- a/packages/smooth_app/lib/l10n/app_mg.arb +++ b/packages/smooth_app/lib/l10n/app_mg.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Eny", + "nutrition_page_nutritional_info_value_negative": "Tsia", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Mpandray anjara", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Ovaina", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Sokajy", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_mi.arb b/packages/smooth_app/lib/l10n/app_mi.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_mi.arb +++ b/packages/smooth_app/lib/l10n/app_mi.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ml.arb b/packages/smooth_app/lib/l10n/app_ml.arb index 0dd13c060bd9..c3cbcf9bb9b7 100644 --- a/packages/smooth_app/lib/l10n/app_ml.arb +++ b/packages/smooth_app/lib/l10n/app_ml.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "വിഭാഗങ്ങൾ", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_mn.arb b/packages/smooth_app/lib/l10n/app_mn.arb index ad6919173506..634ddf3ee39a 100644 --- a/packages/smooth_app/lib/l10n/app_mn.arb +++ b/packages/smooth_app/lib/l10n/app_mn.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Тийм", + "nutrition_page_nutritional_info_value_negative": "Үгүй", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Хувь нэмэр оруулагч", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Засвар хийх", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Ангилалууд", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_mr.arb b/packages/smooth_app/lib/l10n/app_mr.arb index 50d90ea48586..7919d3b81dc7 100644 --- a/packages/smooth_app/lib/l10n/app_mr.arb +++ b/packages/smooth_app/lib/l10n/app_mr.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ho", + "nutrition_page_nutritional_info_value_negative": "Nahi", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ms.arb b/packages/smooth_app/lib/l10n/app_ms.arb index b4f18f662567..d30f0c8fb97d 100644 --- a/packages/smooth_app/lib/l10n/app_ms.arb +++ b/packages/smooth_app/lib/l10n/app_ms.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Maklumat pembungkusan", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ya", + "nutrition_page_nutritional_info_value_negative": "Tidak", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "setiap hidangan", "nutrition_page_add_nutrient": "Tambah nutrien", "nutrition_page_serving_size": "Saiz hidangan", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Foto yang lebih menarik", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Tidak diketahui", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Lengkapkan butiran asas", "not_implemented_snackbar_text": "Belum dilaksanakan lagi", "category_picker_page_appbar_text": "Kategori-kategori", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_mt.arb b/packages/smooth_app/lib/l10n/app_mt.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_mt.arb +++ b/packages/smooth_app/lib/l10n/app_mt.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_my.arb b/packages/smooth_app/lib/l10n/app_my.arb index fd9aee144744..7e36d196f591 100644 --- a/packages/smooth_app/lib/l10n/app_my.arb +++ b/packages/smooth_app/lib/l10n/app_my.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "ဟုတ္", + "nutrition_page_nutritional_info_value_negative": "မဟုတ္", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_nb.arb b/packages/smooth_app/lib/l10n/app_nb.arb index a8c0f4522feb..36b297d96165 100644 --- a/packages/smooth_app/lib/l10n/app_nb.arb +++ b/packages/smooth_app/lib/l10n/app_nb.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Ernæringsinnhold", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nei", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per porsjon", "nutrition_page_add_nutrient": "Legg til et næringsstoff", "nutrition_page_serving_size": "Porsjonstørrelse", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Bidrager", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Ukjent", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Rediger ", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Fullfør grunnleggende detaljer", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorier", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ne.arb b/packages/smooth_app/lib/l10n/app_ne.arb index 7f57c17e0673..70954b0cf69b 100644 --- a/packages/smooth_app/lib/l10n/app_ne.arb +++ b/packages/smooth_app/lib/l10n/app_ne.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "हाे", + "nutrition_page_nutritional_info_value_negative": "होइन", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_nl.arb b/packages/smooth_app/lib/l10n/app_nl.arb index 62a3e0845078..20eee7ae2d2e 100644 --- a/packages/smooth_app/lib/l10n/app_nl.arb +++ b/packages/smooth_app/lib/l10n/app_nl.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Verpakkingsinformatie", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Voedingswaarden bijwerken", "nutrition_page_title": "Voedingswaarden", - "nutrition_page_unspecified": "De voedingswaarden zijn niet op het product vermeld", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nee", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per portie", "nutrition_page_add_nutrient": "Voeg voedingsstof toe", "nutrition_page_serving_size": "Grootte van een portie", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Ongeldig nummer", "nutrition_page_update_running": "Het product bijwerken op de server…", "nutrition_page_update_done": "Product bijgewerkt!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Meer interessante foto's", "@more_photos": {}, "view_more_photo_button": "Bekijk alle bestaande foto's voor dit product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Bijdrager", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Datum", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Onbekend", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welkom bij Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1115,7 +1146,7 @@ "count": {} } }, - "multiselect_title": "{count,plural, one {}=0{Geen geselecteerd product} =1{Eén geselecteerd product} other{{count} geselecteerde producten}}", + "multiselect_title": "{count,plural, =0{Geen geselecteerd product} =1{Eén geselecteerd product} other{{count} geselecteerde producten}}", "@multiselect_title": { "description": "Page title with the number of selected items", "placeholders": { @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Bewerken", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Basisdetails aanvullen", "not_implemented_snackbar_text": "Nog niet geïmplementeerd", "category_picker_page_appbar_text": "Categorieën", @@ -2032,8 +2071,8 @@ "prices_app_dev_mode_flag": "Snelkoppeling naar de Prijzen-app op de productpagina", "prices_app_button": "Ga naar de Prijzen-app", "prices_generic_title": "Prijzen", - "prices_add_n_prices": "{count,plural, one {}=1{Voeg een prijs toe} other{Voeg {count} prijzen toe}}", - "prices_send_n_prices": "{count,plural, one {}=1{Verstuur 1 prijs} other{Verstuur {count} prijzen}}", + "prices_add_n_prices": "{count,plural, =1{Voeg een prijs toe} other{Voeg {count} prijzen toe}}", + "prices_send_n_prices": "{count,plural, =1{Verstuur 1 prijs} other{Verstuur {count} prijzen}}", "prices_add_an_item": "Item toevoegen", "prices_add_a_price": "Voeg een prijs toe", "prices_add_a_receipt": "Een ontvangstbewijs toevoegen", @@ -2061,7 +2100,7 @@ "prices_barcode_enter": "Voer de streepjescode in", "prices_barcode_reader_action": "Streepjescodelezer", "prices_view_prices": "Bekijk de prijzen", - "prices_product_accessibility_summary": "{count,plural, one {}=1{1 prijs} other{{count} prijzen}} voor {product}", + "prices_product_accessibility_summary": "{count,plural, =1{1 prijs} other{{count} prijzen}} voor {product}", "@prices_product_accessibility_summary": { "description": "A card summarizing the number of prices for a product", "placeholders": { @@ -2073,7 +2112,7 @@ } } }, - "prices_list_length_one_page": "{count,plural, one {}=0{Nog geen prijs} =1{Slechts één prijs} other{Alle {count} prijzen}}", + "prices_list_length_one_page": "{count,plural, =0{Nog geen prijs} =1{Slechts één prijs} other{Alle {count} prijzen}}", "@prices_list_length_one_page": { "description": "Number of prices for one-page result", "placeholders": { @@ -2125,7 +2164,7 @@ "@prices_open_proof": { "description": "Button to open a proof" }, - "prices_proofs_list_length_one_page": "{count,plural, one {}=0{Nog geen bewijs} =1{Slechts één bewijs} other{Alle {count} bewijzen}}", + "prices_proofs_list_length_one_page": "{count,plural, =0{Nog geen bewijs} =1{Slechts één bewijs} other{Alle {count} bewijzen}}", "@prices_proofs_list_length_one_page": { "description": "Number of proofs for one-page result", "placeholders": { @@ -2170,7 +2209,7 @@ } } }, - "prices_button_count_proof": "{count,plural, one {}=0{Geen bewijs} =1{Eén bewijs} other{{count} bewijzen}}", + "prices_button_count_proof": "{count,plural, =0{Geen bewijs} =1{Eén bewijs} other{{count} bewijzen}}", "@prices_button_count_proof": { "description": "Number of proofs, for a button", "placeholders": { @@ -2179,7 +2218,7 @@ } } }, - "prices_button_count_product": "{count,plural, one {}=0{Geen product} =1{Eén product} other{{count} producten}}", + "prices_button_count_product": "{count,plural, =0{Geen product} =1{Eén product} other{{count} producten}}", "@prices_button_count_product": { "description": "Number of products, for a button", "placeholders": { @@ -2188,7 +2227,7 @@ } } }, - "prices_button_count_user": "{count,plural, one {}=0{Geen gebruiker} =1{Eén gebruiker} other{{count} gebruikers}}", + "prices_button_count_user": "{count,plural, =0{Geen gebruiker} =1{Eén gebruiker} other{{count} gebruikers}}", "@prices_button_count_user": { "description": "Number of users, for a button", "placeholders": { @@ -2197,7 +2236,7 @@ } } }, - "prices_button_count_price": "{count,plural, one {}=0{Geen prijs} =1{Eén prijs} other{{count} prijzen}}", + "prices_button_count_price": "{count,plural, =0{Geen prijs} =1{Eén prijs} other{{count} prijzen}}", "@prices_button_count_price": { "description": "Number of prices, for a button", "placeholders": { @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Je moet een bewijs selecteren!", "prices_add_validation_error": "Validatiefout", "prices_privacy_warning_title": "Privacywaarschuwing", - "prices_privacy_warning_message": "De prijzen zijn openbaar, samen met de winkel waarnaar ze verwijzen.\nHierdoor kunnen mensen die uw Open Food Facts-pseudoniem kennen het volgende doen:\n* afleiden in welk gebied u woont\n* weten wat u koopt\n$Als u zich daar niet prettig bij voelt, wijzig dan uw pseudoniem of maak een nieuw Open Food Facts-account aan en log daarmee in op de app.", "prices_unknown_product": "Onbekend product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { @@ -3152,7 +3196,7 @@ "@download_top_products": { "description": "Download the top 1000 products in your country for instant scanning" }, - "download_top_n_products": "Top {count,plural, one {}other{{count} producten}} downloaden in uw land voor direct scannen", + "download_top_n_products": "Top {count,plural, other{{count} producten}} downloaden in uw land voor direct scannen", "@download_top_n_products": { "placeholders": { "count": { diff --git a/packages/smooth_app/lib/l10n/app_nn.arb b/packages/smooth_app/lib/l10n/app_nn.arb index c763f0110a35..f73e2c936295 100644 --- a/packages/smooth_app/lib/l10n/app_nn.arb +++ b/packages/smooth_app/lib/l10n/app_nn.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nei", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per porsjon", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Porsjonstørrelse", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Bidrager", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorier", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_no.arb b/packages/smooth_app/lib/l10n/app_no.arb index c763f0110a35..f73e2c936295 100644 --- a/packages/smooth_app/lib/l10n/app_no.arb +++ b/packages/smooth_app/lib/l10n/app_no.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nei", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per porsjon", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Porsjonstørrelse", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Bidrager", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategorier", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_nr.arb b/packages/smooth_app/lib/l10n/app_nr.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_nr.arb +++ b/packages/smooth_app/lib/l10n/app_nr.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_oc.arb b/packages/smooth_app/lib/l10n/app_oc.arb index 6011c1fd996a..b6ed1536714e 100644 --- a/packages/smooth_app/lib/l10n/app_oc.arb +++ b/packages/smooth_app/lib/l10n/app_oc.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Òc", + "nutrition_page_nutritional_info_value_negative": "Non", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Desconegut", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Modificar", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categorias", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_or.arb b/packages/smooth_app/lib/l10n/app_or.arb index 05fd0974b46c..196de7bf9c73 100644 --- a/packages/smooth_app/lib/l10n/app_or.arb +++ b/packages/smooth_app/lib/l10n/app_or.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "ହଁ", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_pa.arb b/packages/smooth_app/lib/l10n/app_pa.arb index 42245e0e6ee4..798dbb0c85a1 100644 --- a/packages/smooth_app/lib/l10n/app_pa.arb +++ b/packages/smooth_app/lib/l10n/app_pa.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_pl.arb b/packages/smooth_app/lib/l10n/app_pl.arb index 3615085ea304..8ce03120000f 100644 --- a/packages/smooth_app/lib/l10n/app_pl.arb +++ b/packages/smooth_app/lib/l10n/app_pl.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informacje dot. opakowania", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Zaktualizuj informacje o produkcie", "nutrition_page_title": "Wartość odżywcza", - "nutrition_page_unspecified": "Nie podano wartości odżywczych dla tego produktu", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Tak", + "nutrition_page_nutritional_info_value_negative": "Nie", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "w 100 g", "nutrition_page_per_serving": "na porcję", "nutrition_page_add_nutrient": "Dodaj składnik odżywczy", "nutrition_page_serving_size": "Wielkość porcji", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Nieprawidłowa liczba", "nutrition_page_update_running": "Aktualizacja statusu produktu…", "nutrition_page_update_done": "Produkt zaktualizowany!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Więcej interesujących zdjęć", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Współtwórca", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Data", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Nieznany", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edytuj", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Uzupełnij podstawowe informacje", "not_implemented_snackbar_text": "Jeszcze niezaimplementowane", "category_picker_page_appbar_text": "Kategorie", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Nieznany produkt", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_pt.arb b/packages/smooth_app/lib/l10n/app_pt.arb index cbcc86c65b36..a565c5e58169 100644 --- a/packages/smooth_app/lib/l10n/app_pt.arb +++ b/packages/smooth_app/lib/l10n/app_pt.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Editar informações nutricionais", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informação da embalagem", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Adicionar marcas que faltam de produtos", "score_update_nutrition_facts": "Atualizar dados nutricionais", "nutrition_page_title": "Informações nutricionais", - "nutrition_page_unspecified": "A informação nutricional não é está presente no produto", + "nutrition_page_nutritional_info_title": "Informação nutricional", + "nutrition_page_nutritional_info_label": "Valores especificados no produto:", + "nutrition_page_nutritional_info_value_positive": "Sim", + "nutrition_page_nutritional_info_value_negative": "Não", + "nutrition_page_nutritional_info_open_photo": "Abrir fotografia", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Valores nutricionais:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "por 100g", "nutrition_page_per_serving": "por porção", "nutrition_page_add_nutrient": "Adicionar um nutriente", "nutrition_page_serving_size": "Tamanho da porção", + "nutrition_page_serving_size_hint": "Insira o tamanho da porção (por exemplo: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Número inválido", "nutrition_page_update_running": "A atualizar o produto no servidor…", "nutrition_page_update_done": "Produto atualizado!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Não foi possível carregar a fotografia", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Mais fotografias interessantes", "@more_photos": {}, "view_more_photo_button": "Ver todas as fotografias existentes para este produto", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Colaborador", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Colaborador (produtor)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Data", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Desconhecido", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Bem-vindo ao Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Editar", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Editar origens", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Detalhes básicos completos", "not_implemented_snackbar_text": "Ainda não implementado", "category_picker_page_appbar_text": "Categorias", @@ -2073,7 +2112,7 @@ } } }, - "prices_list_length_one_page": "{count,plural, one {}=0{Ainda sem preço} =1{Apenas um preço} other{Todos os {count} preços}}", + "prices_list_length_one_page": "{count,plural, =0{Ainda sem preço} =1{Apenas um preço} other{Todos os {count} preços}}", "@prices_list_length_one_page": { "description": "Number of prices for one-page result", "placeholders": { @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Tem de selecionar um comprovativo!", "prices_add_validation_error": "Erro de validação", "prices_privacy_warning_title": "Aviso de privacidade", - "prices_privacy_warning_message": "Os preços serão públicos, juntamente com a loja a que se referem.\nIsto pode permitir que as pessoas que conhecem o seu pseudónimo Open Food Facts possam:\n* inferir em que zona vive\n* saber o que está a comprar\nSe não se sentir à vontade com isso, altere o seu pseudónimo ou crie uma nova conta Open Food Facts e inicie sessão na aplicação com essa conta.", "prices_unknown_product": "Produto desconhecido", + "prices_privacy_warning_main_message": "Os preços **serão públicos**, juntamente com a loja a que se referem.\n\nIsto pode permitir que as pessoas que conhecem o nome da sua conta no Open Food Facts possam:\n", + "prices_privacy_warning_message_bullet_1": "Deduzir em que área vive", + "prices_privacy_warning_message_bullet_2": "Saber o que compra", + "prices_privacy_warning_sub_message": "Se não se sentir à vontade com isso, altere o nome da sua conta ou crie uma nova conta no Open Food Facts e inicie sessão na aplicação com essa nova conta.", + "i_refuse": "Não aceito", + "i_accept": "Aceito", "prices_currency_change_proposal_title": "Alterar a moeda?", "prices_currency_change_proposal_message": "A moeda atual é **{currency}**. Quer alterá-la para **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_qu.arb b/packages/smooth_app/lib/l10n/app_qu.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_qu.arb +++ b/packages/smooth_app/lib/l10n/app_qu.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_rm.arb b/packages/smooth_app/lib/l10n/app_rm.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_rm.arb +++ b/packages/smooth_app/lib/l10n/app_rm.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ro.arb b/packages/smooth_app/lib/l10n/app_ro.arb index 61e0df3b0277..db4e220ab2db 100644 --- a/packages/smooth_app/lib/l10n/app_ro.arb +++ b/packages/smooth_app/lib/l10n/app_ro.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informații despre ambalaj", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Actualizați informațiile nutriționale", "nutrition_page_title": "Valori nutriționale", - "nutrition_page_unspecified": "Valorile nutriționale nu sunt specificate pe produs", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Da", + "nutrition_page_nutritional_info_value_negative": "Nu", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "la 100g", "nutrition_page_per_serving": "per porție", "nutrition_page_add_nutrient": "Adăugați un nutrient", "nutrition_page_serving_size": "Cantitatea unei porții", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Număr nevalid", "nutrition_page_update_running": "Se actualizează produsul pe server...", "nutrition_page_update_done": "Produs actualizat!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Mai multe fotografii interesante", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Colaborator", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Necunoscut", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Modificare", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Detalii de bază complete", "not_implemented_snackbar_text": "Neimplementat încă", "category_picker_page_appbar_text": "Categorii", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ru.arb b/packages/smooth_app/lib/l10n/app_ru.arb index 58b1e44da7ff..5ee95947bc3b 100644 --- a/packages/smooth_app/lib/l10n/app_ru.arb +++ b/packages/smooth_app/lib/l10n/app_ru.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Информация об упаковке", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Введите данные о пищевой ценности", "nutrition_page_title": "Пищевая ценность", - "nutrition_page_unspecified": "Пищевая ценность не указана на продукте", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Да", + "nutrition_page_nutritional_info_value_negative": "Нет", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "на 100 грамм", "nutrition_page_per_serving": "на порцию", "nutrition_page_add_nutrient": "Добавить питательное вещество", "nutrition_page_serving_size": "Размер порции", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Неверный номер", "nutrition_page_update_running": "Обновление продукта на сервере…", "nutrition_page_update_done": "Обновления продукта!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Больше интересных фото", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Участник", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Неизвестный", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Редактировать", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Детальная информация", "not_implemented_snackbar_text": "Пока что не реализовано", "category_picker_page_appbar_text": "Категории", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sa.arb b/packages/smooth_app/lib/l10n/app_sa.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_sa.arb +++ b/packages/smooth_app/lib/l10n/app_sa.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sc.arb b/packages/smooth_app/lib/l10n/app_sc.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_sc.arb +++ b/packages/smooth_app/lib/l10n/app_sc.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sd.arb b/packages/smooth_app/lib/l10n/app_sd.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_sd.arb +++ b/packages/smooth_app/lib/l10n/app_sd.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sg.arb b/packages/smooth_app/lib/l10n/app_sg.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_sg.arb +++ b/packages/smooth_app/lib/l10n/app_sg.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_si.arb b/packages/smooth_app/lib/l10n/app_si.arb index 1c4ec6cbdde8..a903e97a9d09 100644 --- a/packages/smooth_app/lib/l10n/app_si.arb +++ b/packages/smooth_app/lib/l10n/app_si.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sk.arb b/packages/smooth_app/lib/l10n/app_sk.arb index 4f4c2d1169f2..03c3dbc04335 100644 --- a/packages/smooth_app/lib/l10n/app_sk.arb +++ b/packages/smooth_app/lib/l10n/app_sk.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informácie o balení", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Aktualizujte fakty o výžive", "nutrition_page_title": "Výživové údaje", - "nutrition_page_unspecified": "Na produkte nie sú uvedené výživové údaje", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Áno", + "nutrition_page_nutritional_info_value_negative": "Nie", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "na 100 g", "nutrition_page_per_serving": "na jednu porciu", "nutrition_page_add_nutrient": "Pridajte živinu", "nutrition_page_serving_size": "Veľkosť porcie", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Neplatné číslo", "nutrition_page_update_running": "Aktualizácia produktu na serveri…", "nutrition_page_update_done": "Produkt bol aktualizovaný!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Viac zaujímavých fotiek", "@more_photos": {}, "view_more_photo_button": "Zobraziť všetky existujúce fotografie tohto produktu", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Prispievateľ", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Dátum", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Neznámy", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Upraviť", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Kategórie", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sl.arb b/packages/smooth_app/lib/l10n/app_sl.arb index 3c39855fe4a6..890d98463a0c 100644 --- a/packages/smooth_app/lib/l10n/app_sl.arb +++ b/packages/smooth_app/lib/l10n/app_sl.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informacije o embalaži", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Posodobi hranilne vrednosti", "nutrition_page_title": "Dejstva o hranilni vrednosti", - "nutrition_page_unspecified": "Podatki o hranilni vrednosti niso navedeni na izdelku", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Da", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "na 100 g", "nutrition_page_per_serving": "na porcijo", "nutrition_page_add_nutrient": "Dodaj hranilo", "nutrition_page_serving_size": "Velikost obroka", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Neveljavna številka", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Izdelek posodobljen!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Ostale fotografije", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Sodelavec", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Neznano", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Uredi", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Izpolnite osnovne podatke", "not_implemented_snackbar_text": "Še ni implementirano", "category_picker_page_appbar_text": "Kategorije", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sn.arb b/packages/smooth_app/lib/l10n/app_sn.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_sn.arb +++ b/packages/smooth_app/lib/l10n/app_sn.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_so.arb b/packages/smooth_app/lib/l10n/app_so.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_so.arb +++ b/packages/smooth_app/lib/l10n/app_so.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sq.arb b/packages/smooth_app/lib/l10n/app_sq.arb index f2583467c268..8d781dca26c3 100644 --- a/packages/smooth_app/lib/l10n/app_sq.arb +++ b/packages/smooth_app/lib/l10n/app_sq.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Informacion i paketimit", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Perditesoni faktet ushqyese.", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Faktet ushqyese nuk jane te specifikuara ne produkt.", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Po ", + "nutrition_page_nutritional_info_value_negative": "Jo", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "për 100 g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Numer i pavlefshem, jo i sakte.", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Produkti u perditesua.", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Me shume foto interesante", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sr.arb b/packages/smooth_app/lib/l10n/app_sr.arb index 12272736acf2..cb8386f187d0 100644 --- a/packages/smooth_app/lib/l10n/app_sr.arb +++ b/packages/smooth_app/lib/l10n/app_sr.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Da", + "nutrition_page_nutritional_info_value_negative": "Ne", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Porcija", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Izmeni", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Категорије", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ss.arb b/packages/smooth_app/lib/l10n/app_ss.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_ss.arb +++ b/packages/smooth_app/lib/l10n/app_ss.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_st.arb b/packages/smooth_app/lib/l10n/app_st.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_st.arb +++ b/packages/smooth_app/lib/l10n/app_st.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sv.arb b/packages/smooth_app/lib/l10n/app_sv.arb index f7f0b0a16fea..aabd8030d427 100644 --- a/packages/smooth_app/lib/l10n/app_sv.arb +++ b/packages/smooth_app/lib/l10n/app_sv.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Förpackningsinformation", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Uppdatera näringsfakta", "nutrition_page_title": "Näringsfakta", - "nutrition_page_unspecified": "Näringsfakta anges inte på produkten", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Ja", + "nutrition_page_nutritional_info_value_negative": "Nej", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per portion", "nutrition_page_add_nutrient": "Lägg till ett näringsämne", "nutrition_page_serving_size": "Portionsstorlek", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Ogiltigt nummer", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Produkt uppdaterad!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Fler intressanta bilder", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Medverkande", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Okänd", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Redigera", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Komplettera grundläggande uppgifter", "not_implemented_snackbar_text": "Inte implementerat ännu", "category_picker_page_appbar_text": "Kategorier", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_sw.arb b/packages/smooth_app/lib/l10n/app_sw.arb index c5e9af478a3e..cecfff5bf89c 100644 --- a/packages/smooth_app/lib/l10n/app_sw.arb +++ b/packages/smooth_app/lib/l10n/app_sw.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Hariri", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ta.arb b/packages/smooth_app/lib/l10n/app_ta.arb index 6fb7a70fcd28..57fed5459b57 100644 --- a/packages/smooth_app/lib/l10n/app_ta.arb +++ b/packages/smooth_app/lib/l10n/app_ta.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "ஊட்டச்சத்து உண்மைகளைத் திருத்தவும்", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "ஊட்டச்சத்து தகவல்கள்", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "ஊட்டச்சத்துத் தகவல்", + "nutrition_page_nutritional_info_label": "தயாரிப்பில் குறிப்பிடப்பட்ட மதிப்புகள்:", + "nutrition_page_nutritional_info_value_positive": "ஆம்", + "nutrition_page_nutritional_info_value_negative": "இல்லை", + "nutrition_page_nutritional_info_open_photo": "படத்தைத் திறக்கவும்", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "ஊட்டச்சத்து மதிப்புகள்:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "பரிமாறும் அளவை உள்ளிடவும் (எ. கா: 100 கிராம்)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "புகைப்படத்தை ஏற்ற முடியவில்லை", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "பங்களிப்பாளர் (தயாரிப்பாளர்)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "திருத்து", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "மூலங்களைத் திருத்தவும்", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "நாணயத்தை மாற்றவா?", "prices_currency_change_proposal_message": "உங்கள் தற்போதைய நாணயத்தை **{currency}**. இதை **{newCurrency}** ஆக மாற்ற விரும்புகிறீர்களா?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_te.arb b/packages/smooth_app/lib/l10n/app_te.arb index 12e598e41f4a..fd1fe2de864e 100644 --- a/packages/smooth_app/lib/l10n/app_te.arb +++ b/packages/smooth_app/lib/l10n/app_te.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "అవును", + "nutrition_page_nutritional_info_value_negative": "నో", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "కంట్రిబ్యూటర్", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "మార్చు", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "వర్గాలు", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_tg.arb b/packages/smooth_app/lib/l10n/app_tg.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_tg.arb +++ b/packages/smooth_app/lib/l10n/app_tg.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_th.arb b/packages/smooth_app/lib/l10n/app_th.arb index 84c797a4d454..bea6bd5d9b56 100644 --- a/packages/smooth_app/lib/l10n/app_th.arb +++ b/packages/smooth_app/lib/l10n/app_th.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "รายละเอียดการบรรจุ", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "อัพเดทข้อมูลโภชนาการ", "nutrition_page_title": "ข้อมูลโภชนาการ", - "nutrition_page_unspecified": "ไม่ได้ระบุข้อมูลโภชนาการบนผลิตภัณฑ์", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "ถูกต้อง", + "nutrition_page_nutritional_info_value_negative": "ไม่ใช่", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "ต่อ 100 กรัม", "nutrition_page_per_serving": "ต่อการให้บริการ", "nutrition_page_add_nutrient": "เพิ่มสารอาหารอื่นๆ", "nutrition_page_serving_size": "หน่วยบริโภค", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "หมายเลขไม่ถูกต้อง", "nutrition_page_update_running": "กำลังอัพเดทผลิตภัณฑ์บนเซิร์ฟเวอร์…", "nutrition_page_update_done": "อัพเดทผลิตภัณฑ์สำเร็จ!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "รูปภาพอื่นๆที่น่าสนใจ", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "ไม่ทราบ", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "แก้ไข", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "หมวดหมู่", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ti.arb b/packages/smooth_app/lib/l10n/app_ti.arb index 55e254ec5bb0..4d1225c3ff2d 100644 --- a/packages/smooth_app/lib/l10n/app_ti.arb +++ b/packages/smooth_app/lib/l10n/app_ti.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_tl.arb b/packages/smooth_app/lib/l10n/app_tl.arb index 12c37e849276..f434118d7ea0 100644 --- a/packages/smooth_app/lib/l10n/app_tl.arb +++ b/packages/smooth_app/lib/l10n/app_tl.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Oo", + "nutrition_page_nutritional_info_value_negative": "Hindi", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "bawat serving", "nutrition_page_add_nutrient": "Magdagdag ng sustansya", "nutrition_page_serving_size": "Sukat ng serving", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Taga-ambag", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Hindi alam", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Mga kategorya", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_tn.arb b/packages/smooth_app/lib/l10n/app_tn.arb index 58aa14afef65..5f0e379164bb 100644 --- a/packages/smooth_app/lib/l10n/app_tn.arb +++ b/packages/smooth_app/lib/l10n/app_tn.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_tr.arb b/packages/smooth_app/lib/l10n/app_tr.arb index e1e97d2a7ee0..7331b0e83b45 100644 --- a/packages/smooth_app/lib/l10n/app_tr.arb +++ b/packages/smooth_app/lib/l10n/app_tr.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Paketleme bilgileri", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Besin değerleri bilgilerini güncelle", "nutrition_page_title": "Besin Değerleri", - "nutrition_page_unspecified": "Ürünün üzerinde besin değerleri bilgisi yer almıyor", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Evet", + "nutrition_page_nutritional_info_value_negative": "Hayır", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "100g başına", "nutrition_page_per_serving": "porsiyon başına", "nutrition_page_add_nutrient": "Besin ögesi ekle", "nutrition_page_serving_size": "Porsiyon ölçüsü", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Geçersiz numara", "nutrition_page_update_running": "Ürün sunucuda güncelleniyor…", "nutrition_page_update_done": "Ürün güncellendi!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Daha ilginç fotoğraflar", "@more_photos": {}, "view_more_photo_button": "Bu ürüne ait mevcut tüm fotoğrafları görüntüle", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Katkı sağlayan", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Tarih", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Bilinmeyen", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Open Food Facts'e Hoş Geldiniz", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Düzenle", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Temel bilgileri tamamlayın", "not_implemented_snackbar_text": "Henüz uygulanmadı", "category_picker_page_appbar_text": "Kategoriler", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Bir bedel seçmeniz gerekiyor!", "prices_add_validation_error": "Doğrulama hatası", "prices_privacy_warning_title": "Gizlilik uyarısı", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Bilinmeyen ürün", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ts.arb b/packages/smooth_app/lib/l10n/app_ts.arb index 58aa14afef65..5f0e379164bb 100644 --- a/packages/smooth_app/lib/l10n/app_ts.arb +++ b/packages/smooth_app/lib/l10n/app_ts.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_tt.arb b/packages/smooth_app/lib/l10n/app_tt.arb index 40b4d9f07989..9dcb93463033 100644 --- a/packages/smooth_app/lib/l10n/app_tt.arb +++ b/packages/smooth_app/lib/l10n/app_tt.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Әе", + "nutrition_page_nutritional_info_value_negative": "Юк", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Билгесез", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Үзгәртү", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_tw.arb b/packages/smooth_app/lib/l10n/app_tw.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_tw.arb +++ b/packages/smooth_app/lib/l10n/app_tw.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ty.arb b/packages/smooth_app/lib/l10n/app_ty.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_ty.arb +++ b/packages/smooth_app/lib/l10n/app_ty.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ug.arb b/packages/smooth_app/lib/l10n/app_ug.arb index cf01222c3e2d..c9e0644ecd78 100644 --- a/packages/smooth_app/lib/l10n/app_ug.arb +++ b/packages/smooth_app/lib/l10n/app_ug.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "ھەئە", + "nutrition_page_nutritional_info_value_negative": "ياق", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_uk.arb b/packages/smooth_app/lib/l10n/app_uk.arb index a360784617e5..e4eacb325105 100644 --- a/packages/smooth_app/lib/l10n/app_uk.arb +++ b/packages/smooth_app/lib/l10n/app_uk.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Редагувати харчові показники", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Інформація про упакування", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Додати відсутні бренди товарів", "score_update_nutrition_facts": "Оновити поживні речовини", "nutrition_page_title": "Детальна харчова цінність", - "nutrition_page_unspecified": "На продукті не вказані поживні речовини", + "nutrition_page_nutritional_info_title": "Інформація про харчову цінність", + "nutrition_page_nutritional_info_label": "Значення, вказані на продукті:", + "nutrition_page_nutritional_info_value_positive": "Так", + "nutrition_page_nutritional_info_value_negative": "Ні", + "nutrition_page_nutritional_info_open_photo": "Відкрити фото", + "nutrition_page_nutritional_info_explanation": "ЗРОБИТИ", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Харчова цінність:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "на 100 г.", "nutrition_page_per_serving": "в одній порції", "nutrition_page_add_nutrient": "Додати поживну речовину", "nutrition_page_serving_size": "Розмір порції", + "nutrition_page_serving_size_hint": "Введення службового розміру (наприклад: 100g)", + "nutrition_page_serving_size_explanation": "ЗРОБИТИ", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Недійсний номер", "nutrition_page_update_running": "Оновлення продукту на сервері…", "nutrition_page_update_done": "Продукт оновлено!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Не вдалося завантажити фото", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Більше цікавих фото", "@more_photos": {}, "view_more_photo_button": "Переглянути всі наявні фотографії цього продукту", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Учасник", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Автор (продюсер)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Дата", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Невідомий", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Вітаємо в Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "ЗРОБИТИ", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Редагувати", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Редагувати походження", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Заповніть основні деталі", "not_implemented_snackbar_text": "Ще не реалізовано", "category_picker_page_appbar_text": "Категорії", @@ -2033,7 +2072,7 @@ "prices_app_button": "Перейдіть у додаток Ціни", "prices_generic_title": "Ціни", "prices_add_n_prices": "{count,plural, =1{Додайте ціну} other{Додайте {count} цін}}", - "prices_send_n_prices": "{count,plural, =1{Надіслати{count} ціну} few {Надіслати {count} ціни} many {Надіслати {count} цін}=1{Надіслати ціну} other{Надіслати {count} ціни}}", + "prices_send_n_prices": "{count,plural, =1{Надіслати{count} ціну} few {Надіслати {count} ціни} many {Надіслати {count} цін}other{Надіслати {count} ціни}}", "prices_add_an_item": "Додати елемент", "prices_add_a_price": "Додати ціну", "prices_add_a_receipt": "Додати чек", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "Вам потрібно вибрати доказ!", "prices_add_validation_error": "Помилка перевірки", "prices_privacy_warning_title": "Попередження про конфіденційність", - "prices_privacy_warning_message": "Ціни будуть публічними разом із магазином, до якого вони відносяться.\nЦе може дозволити людям, які знають ваш псевдонім в Open Food Facts,:\n* припустити, в якій місцевості ви живете\n* дізнатися, що ви купуєте\nЯкщо вам це неприємно, будь ласка, змініть свій псевдонім або створіть новий обліковий запис Open Food Facts і увійдіть в застосунок з ним.", "prices_unknown_product": "Невідомий продукт", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ur.arb b/packages/smooth_app/lib/l10n/app_ur.arb index 3e169a2ea300..b2335f2727f0 100644 --- a/packages/smooth_app/lib/l10n/app_ur.arb +++ b/packages/smooth_app/lib/l10n/app_ur.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "تدوین کریں", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_uz.arb b/packages/smooth_app/lib/l10n/app_uz.arb index 2474d3d3242a..e8dc67acec3a 100644 --- a/packages/smooth_app/lib/l10n/app_uz.arb +++ b/packages/smooth_app/lib/l10n/app_uz.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Toifalar", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_ve.arb b/packages/smooth_app/lib/l10n/app_ve.arb index 58aa14afef65..5f0e379164bb 100644 --- a/packages/smooth_app/lib/l10n/app_ve.arb +++ b/packages/smooth_app/lib/l10n/app_ve.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_vi.arb b/packages/smooth_app/lib/l10n/app_vi.arb index 6ed89eab81f5..120ef8f7edf3 100644 --- a/packages/smooth_app/lib/l10n/app_vi.arb +++ b/packages/smooth_app/lib/l10n/app_vi.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Thông tin bao bì", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Cập nhật thông tin dinh dưỡng", "nutrition_page_title": "Giá trị dinh dưỡng", - "nutrition_page_unspecified": "Thành phần dinh dưỡng không được chỉ định trên sản phẩm", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Có", + "nutrition_page_nutritional_info_value_negative": "Không", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "mỗi 100g", "nutrition_page_per_serving": "mỗi khẩu", "nutrition_page_add_nutrient": "Thêm chất dinh dưỡng", "nutrition_page_serving_size": "Kích thước phục vụ", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Số không hợp lệ", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Sản phẩm được cập nhật!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "Nhiều hình ảnh thú vị hơn", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Người đóng góp", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Không biết", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Chỉnh sửa", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Hoàn thành thông tin cơ bản", "not_implemented_snackbar_text": "Chưa thực hiện", "category_picker_page_appbar_text": "Thể loại", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_wa.arb b/packages/smooth_app/lib/l10n/app_wa.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_wa.arb +++ b/packages/smooth_app/lib/l10n/app_wa.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_wo.arb b/packages/smooth_app/lib/l10n/app_wo.arb index 58aa14afef65..5f0e379164bb 100644 --- a/packages/smooth_app/lib/l10n/app_wo.arb +++ b/packages/smooth_app/lib/l10n/app_wo.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_xh.arb b/packages/smooth_app/lib/l10n/app_xh.arb index ebd817e7ffd1..19292fd816a1 100644 --- a/packages/smooth_app/lib/l10n/app_xh.arb +++ b/packages/smooth_app/lib/l10n/app_xh.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_yi.arb b/packages/smooth_app/lib/l10n/app_yi.arb index e45638ce69b7..f34fa3c5c4d0 100644 --- a/packages/smooth_app/lib/l10n/app_yi.arb +++ b/packages/smooth_app/lib/l10n/app_yi.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_yo.arb b/packages/smooth_app/lib/l10n/app_yo.arb index 2fa4838a4df3..0152ea3ff772 100644 --- a/packages/smooth_app/lib/l10n/app_yo.arb +++ b/packages/smooth_app/lib/l10n/app_yo.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Awon eka", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_zh.arb b/packages/smooth_app/lib/l10n/app_zh.arb index 5972bdb5ba00..0e30a79a9373 100644 --- a/packages/smooth_app/lib/l10n/app_zh.arb +++ b/packages/smooth_app/lib/l10n/app_zh.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "包裝資訊", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "更新營養成分", "nutrition_page_title": "營養成分", - "nutrition_page_unspecified": "產品未具體標明營養成分", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "是", + "nutrition_page_nutritional_info_value_negative": "否", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "每 100 克", "nutrition_page_per_serving": "每份", "nutrition_page_add_nutrient": "新增營養", "nutrition_page_serving_size": "份量", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "無效數值", "nutrition_page_update_running": "正在更新服务器上的产品…", "nutrition_page_update_done": "產品更新了!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "更多奇妙照片", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "貢獻者", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "未知", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "編輯", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "完善基本信息", "not_implemented_snackbar_text": "尚未生效", "category_picker_page_appbar_text": "類別", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/l10n/app_zu.arb b/packages/smooth_app/lib/l10n/app_zu.arb index d68361d50fcf..ed791a02af9a 100644 --- a/packages/smooth_app/lib/l10n/app_zu.arb +++ b/packages/smooth_app/lib/l10n/app_zu.arb @@ -562,6 +562,10 @@ "@nutrition_facts_photo": { "description": "Button label: For adding a picture of the nutrition facts of a product" }, + "nutrition_facts_editing_title": "Edit Nutrition Facts", + "@nutrition_facts_editing_title": { + "description": "Title of the button where users can edit the nutrition facts of a product" + }, "packaging_information": "Packaging information", "@packaging_information": { "description": "Button label: For adding a picture of the packaging of a product" @@ -767,11 +771,28 @@ "score_add_missing_product_brands": "Add missing product brands", "score_update_nutrition_facts": "Update nutrition facts", "nutrition_page_title": "Nutrition Facts", - "nutrition_page_unspecified": "Nutrition facts are not specified on the product", + "nutrition_page_nutritional_info_title": "Nutritional information", + "nutrition_page_nutritional_info_label": "Values specified on the product:", + "nutrition_page_nutritional_info_value_positive": "Yes", + "nutrition_page_nutritional_info_value_negative": "No", + "nutrition_page_nutritional_info_open_photo": "Open photo", + "nutrition_page_nutritional_info_explanation": "TODO", + "@nutrition_page_nutritional_info_explanation": { + "description": "DO NOT TRANSLATE Text to explain when we should set the toggle to off (no nutrition facts)" + }, + "nutrition_page_serving_type_label": "Nutritional values:", + "@nutrition_page_serving_type_label": { + "description": "Label to let the user choose between per 100g or per serving" + }, "nutrition_page_per_100g": "per 100g", "nutrition_page_per_serving": "per serving", "nutrition_page_add_nutrient": "Add a nutrient", "nutrition_page_serving_size": "Serving size", + "nutrition_page_serving_size_hint": "Input a serving size (eg: 100g)", + "nutrition_page_serving_size_explanation": "TODO", + "@nutrition_page_serving_size_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in the serving size" + }, "nutrition_page_invalid_number": "Invalid number", "nutrition_page_update_running": "Updating the product on the server…", "nutrition_page_update_done": "Product updated!", @@ -779,6 +800,10 @@ "@nutrition_page_take_serving_size_from_product_quantity": { "description": "Button label: Use the product quantity as serving size (nutrition page)" }, + "nutrition_page_photo_error": "Unable to load the photo", + "@nutrition_page_photo_error": { + "description": "Error message when the nutrition facts photo can't be loaded" + }, "more_photos": "More interesting photos", "@more_photos": {}, "view_more_photo_button": "View all existing photos for this product", @@ -865,14 +890,20 @@ }, "product_image_details_contributor": "Contributor", "@product_image_details_contributor": { - "description": "The name of the contributor (and also the owner field) who uploaded the image" + "description": "The name of the contributor who uploaded the image" }, "product_image_details_contributor_producer": "Contributor (producer)", + "@product_image_details_contributor_producer": { + "description": "The name of the contributor (and also the owner field) who uploaded the image" + }, "product_image_details_date": "Date", "@product_image_details_date": { - "description": "Text to indicate the date of the image is unknown" + "description": "Text to indicate the date of the image" }, "product_image_details_date_unknown": "Unknown", + "@product_image_details_date_unknown": { + "description": "Text to indicate the date of the image is unknown" + }, "homepage_main_card_logo_description": "Welcome to Open Food Facts", "@homepage_main_card_logo_description": { "description": "Description for accessibility of the Open Food Facts logo on the homepage" @@ -1677,6 +1708,10 @@ "@edit_product_form_item_nutrition_facts_subtitle": { "description": "Product edition - Nutrition facts - SubTitle" }, + "edit_product_form_item_nutrition_facts_explanation": "TODO", + "@edit_product_form_item_nutrition_facts_explanation": { + "description": "DO NOT TRANSLATE Text to explain what to input in nutrition facts" + }, "edit_product_form_save": "Edit", "@edit_product_form_save": { "description": "Product edition - Nutrition facts - Save button" @@ -1705,6 +1740,10 @@ "@product_field_website_title": { "description": "Title of a product field: website" }, + "origins_editing_title": "Edit Origins", + "@origins_editing_title": { + "description": "Title of the button where users can edit the origins of a product" + }, "completed_basic_details_btn_text": "Complete basic details", "not_implemented_snackbar_text": "Not implemented yet", "category_picker_page_appbar_text": "Categories", @@ -2227,8 +2266,13 @@ "prices_proof_mandatory": "You need to select a proof!", "prices_add_validation_error": "Validation error", "prices_privacy_warning_title": "Privacy warning", - "prices_privacy_warning_message": "Prices will be public, along with the store they refer to.\nThat might allow people who know about your Open Food Facts pseudonym to:\n* infer in which area you live\n* know what you are buying\nIf you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", "prices_unknown_product": "Unknown product", + "prices_privacy_warning_main_message": "Prices **will be public**, along with the store they refer to.\n\nThat might allow people who know about your Open Food Facts pseudonym to:\n", + "prices_privacy_warning_message_bullet_1": "Infer in which area you live", + "prices_privacy_warning_message_bullet_2": "Know what you are buying", + "prices_privacy_warning_sub_message": "If you are uneasy with that, please change your pseudonym, or create a new Open Food Facts account and log into the app with it.", + "i_refuse": "I refuse", + "i_accept": "I accept", "prices_currency_change_proposal_title": "Change the currency?", "prices_currency_change_proposal_message": "Your current currency is **{currency}**. Would you like to change it to **{newCurrency}**?", "@prices_currency_change_proposal_message": { diff --git a/packages/smooth_app/lib/pages/input/debounced_text_editing_controller.dart b/packages/smooth_app/lib/pages/input/debounced_text_editing_controller.dart new file mode 100644 index 000000000000..6cd6a6ba861e --- /dev/null +++ b/packages/smooth_app/lib/pages/input/debounced_text_editing_controller.dart @@ -0,0 +1,55 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +/// Wraps a TextEditingController and debounces its changes. +class DebouncedTextEditingController extends TextEditingController { + DebouncedTextEditingController({ + TextEditingController? controller, + this.debounceTime = const Duration(milliseconds: 500), + }) { + replaceWith(controller ?? TextEditingController()); + } + + final Duration debounceTime; + TextEditingController? _controller; + Timer? _debounce; + + void replaceWith(TextEditingController controller) { + _controller?.removeListener(_onWrappedTextEditingControllerChanged); + _controller = controller; + _controller?.addListener(_onWrappedTextEditingControllerChanged); + } + + void _onWrappedTextEditingControllerChanged() { + if (_debounce?.isActive == true) { + _debounce!.cancel(); + } + + _debounce = Timer( + debounceTime, + () => super.notifyListeners(), + ); + } + + @override + set text(String newText) => _controller?.value = value; + + @override + String get text => _controller?.text ?? ''; + + @override + TextEditingValue get value => _controller?.value ?? TextEditingValue.empty; + + @override + set value(TextEditingValue newValue) => _controller?.value = newValue; + + @override + void clear() => _controller?.clear(); + + @override + void dispose() { + _debounce?.cancel(); + super.dispose(); + } +} diff --git a/packages/smooth_app/lib/pages/input/smooth_autocomplete_text_field.dart b/packages/smooth_app/lib/pages/input/smooth_autocomplete_text_field.dart index 1c698472b74e..83e8a28421a1 100644 --- a/packages/smooth_app/lib/pages/input/smooth_autocomplete_text_field.dart +++ b/packages/smooth_app/lib/pages/input/smooth_autocomplete_text_field.dart @@ -7,6 +7,7 @@ import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_text_form_field.dart'; import 'package:smooth_app/helpers/strings_helper.dart'; +import 'package:smooth_app/pages/input/debounced_text_editing_controller.dart'; import 'package:smooth_app/pages/product/autocomplete.dart'; /// Autocomplete text field. @@ -52,12 +53,14 @@ class _SmoothAutocompleteTextFieldState bool _loading = false; String? _selectedSearch; - late _DebouncedTextEditingController _debouncedController; + late DebouncedTextEditingController _debouncedController; @override void initState() { super.initState(); - _debouncedController = _DebouncedTextEditingController(widget.controller); + _debouncedController = DebouncedTextEditingController( + controller: widget.controller, + ); } @override @@ -94,13 +97,15 @@ class _SmoothAutocompleteTextFieldState ], textCapitalization: widget.textCapitalization ?? TextCapitalization.none, - style: widget.textStyle, + style: widget.textStyle ?? + DefaultTextStyle.of(context).style.copyWith(fontSize: 15.0), decoration: InputDecoration( contentPadding: widget.padding ?? const EdgeInsets.symmetric( horizontal: SMALL_SPACE, vertical: SMALL_SPACE, ), + isDense: widget.padding != null, suffixIcon: widget.suffixIcon, filled: true, hintStyle: SmoothTextFormField.defaultHintTextStyle(context), @@ -233,49 +238,3 @@ class _SearchResults extends DelegatingList { @override int get hashCode => _uniqueId; } - -class _DebouncedTextEditingController extends TextEditingController { - _DebouncedTextEditingController(TextEditingController controller) { - replaceWith(controller); - } - - TextEditingController? _controller; - Timer? _debounce; - - void replaceWith(TextEditingController controller) { - _controller?.removeListener(_onWrappedTextEditingControllerChanged); - _controller = controller; - _controller?.addListener(_onWrappedTextEditingControllerChanged); - } - - void _onWrappedTextEditingControllerChanged() { - if (_debounce?.isActive == true) { - _debounce!.cancel(); - } - - _debounce = Timer(const Duration(milliseconds: 500), () { - super.notifyListeners(); - }); - } - - @override - set text(String newText) => _controller?.value = value; - - @override - String get text => _controller?.text ?? ''; - - @override - TextEditingValue get value => _controller?.value ?? TextEditingValue.empty; - - @override - set value(TextEditingValue newValue) => _controller?.value = newValue; - - @override - void clear() => _controller?.clear(); - - @override - void dispose() { - _debounce?.cancel(); - super.dispose(); - } -} diff --git a/packages/smooth_app/lib/pages/onboarding/knowledge_panel_page_template.dart b/packages/smooth_app/lib/pages/onboarding/knowledge_panel_page_template.dart index 1edb11b3e27e..6c287870e27c 100644 --- a/packages/smooth_app/lib/pages/onboarding/knowledge_panel_page_template.dart +++ b/packages/smooth_app/lib/pages/onboarding/knowledge_panel_page_template.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -77,6 +79,7 @@ class _KnowledgePanelPageTemplateState if (snapshot.connectionState != ConnectionState.done) { return const Center(child: CircularProgressIndicator.adaptive()); } + final List children = KnowledgePanelsBuilder.getChildren( context, panelElement: KnowledgePanelsBuilder.getRootPanelElement( @@ -89,7 +92,7 @@ class _KnowledgePanelPageTemplateState return ColoredBox( color: widget.backgroundColor, child: SafeArea( - bottom: false, + bottom: Platform.isAndroid, child: Stack( fit: StackFit.expand, children: [ diff --git a/packages/smooth_app/lib/pages/preferences/user_preferences_languages_list.dart b/packages/smooth_app/lib/pages/preferences/user_preferences_languages_list.dart index 23f16e6c6be7..392e9d5fcd34 100644 --- a/packages/smooth_app/lib/pages/preferences/user_preferences_languages_list.dart +++ b/packages/smooth_app/lib/pages/preferences/user_preferences_languages_list.dart @@ -59,7 +59,7 @@ class Languages { OpenFoodFactsLanguage.EWE: 'Eʋegbe', OpenFoodFactsLanguage.BASQUE: 'euskara', OpenFoodFactsLanguage.PERSIAN: 'فارسی', - OpenFoodFactsLanguage.FINNISH: 'Suomalainen', + OpenFoodFactsLanguage.FINNISH: 'Suomi', OpenFoodFactsLanguage.FAROESE: 'Faroese', OpenFoodFactsLanguage.FRENCH: 'Français', OpenFoodFactsLanguage.FIJIAN_LANGUAGE: 'Fijian', diff --git a/packages/smooth_app/lib/pages/preferences/user_preferences_widgets.dart b/packages/smooth_app/lib/pages/preferences/user_preferences_widgets.dart index d46cce8da43a..e329c1047504 100644 --- a/packages/smooth_app/lib/pages/preferences/user_preferences_widgets.dart +++ b/packages/smooth_app/lib/pages/preferences/user_preferences_widgets.dart @@ -4,6 +4,7 @@ import 'package:provider/provider.dart'; import 'package:smooth_app/generic_lib/bottom_sheets/smooth_bottom_sheet.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/helpers/paint_helper.dart'; import 'package:smooth_app/pages/preferences/user_preferences_item.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; import 'package:smooth_app/themes/theme_provider.dart'; @@ -29,7 +30,7 @@ class UserPreferencesListItemDivider extends StatelessWidget { double.infinity, 1.0, ), - painter: _DashedLinePainter( + painter: DashedLinePainter( color: Theme.of(context).dividerColor, ), ), @@ -37,37 +38,6 @@ class UserPreferencesListItemDivider extends StatelessWidget { } } -class _DashedLinePainter extends CustomPainter { - _DashedLinePainter({ - required Color color, - }) : _paint = Paint() - ..color = color - ..strokeWidth = 1.0; - - static const double _DASHED_WIDTH = 3.0; - static const double _DASHED_SPACE = 3.0; - - final Paint _paint; - - @override - void paint(Canvas canvas, Size size) { - double startX = 0.0; - - while (startX < size.width) { - canvas.drawLine( - Offset(startX, 0), - Offset(startX + _DASHED_WIDTH, 0), - _paint, - ); - - startX += _DASHED_WIDTH + _DASHED_SPACE; - } - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) => false; -} - class UserPreferencesSwitchWidget extends StatelessWidget { const UserPreferencesSwitchWidget({ required this.title, diff --git a/packages/smooth_app/lib/pages/prices/product_price_add_page.dart b/packages/smooth_app/lib/pages/prices/product_price_add_page.dart index 6d840495a4af..0a51744aa830 100644 --- a/packages/smooth_app/lib/pages/prices/product_price_add_page.dart +++ b/packages/smooth_app/lib/pages/prices/product_price_add_page.dart @@ -304,7 +304,7 @@ class _ProductPriceAddPageState extends State const SizedBox(width: MEDIUM_SPACE), CircleAvatar( radius: radius, - backgroundColor: extension.greyLight, + backgroundColor: extension.greyMedium, child: const app_icons.Arrow.right( color: Colors.white, size: defaultIconSize, diff --git a/packages/smooth_app/lib/pages/product/add_basic_details/add_basic_details_name.dart b/packages/smooth_app/lib/pages/product/add_basic_details/add_basic_details_name.dart new file mode 100644 index 000000000000..6cf9c40f169d --- /dev/null +++ b/packages/smooth_app/lib/pages/product/add_basic_details/add_basic_details_name.dart @@ -0,0 +1,906 @@ +import 'dart:io'; +import 'dart:math' as math; + +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:flutter/material.dart' hide Listener; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:provider/provider.dart'; +import 'package:smooth_app/data_models/preferences/user_preferences.dart'; +import 'package:smooth_app/database/dao_string_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/duration_constants.dart'; +import 'package:smooth_app/generic_lib/widgets/language_priority.dart'; +import 'package:smooth_app/generic_lib/widgets/languages_selector.dart'; +import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/generic_lib/widgets/smooth_text_form_field.dart'; +import 'package:smooth_app/helpers/paint_helper.dart'; +import 'package:smooth_app/helpers/provider_helper.dart'; +import 'package:smooth_app/pages/input/debounced_text_editing_controller.dart'; +import 'package:smooth_app/pages/preferences/user_preferences_languages_list.dart'; +import 'package:smooth_app/pages/product/gallery_view/product_image_gallery_view.dart'; +import 'package:smooth_app/pages/product/multilingual_helper.dart'; +import 'package:smooth_app/pages/product/owner_field_info.dart'; +import 'package:smooth_app/resources/app_icons.dart' as icons; +import 'package:smooth_app/themes/smooth_theme.dart'; +import 'package:smooth_app/themes/smooth_theme_colors.dart'; +import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_explanation_banner.dart'; +import 'package:smooth_app/widgets/smooth_text.dart'; +import 'package:smooth_app/widgets/widget_height.dart'; + +/// Widget to edit the product name in multiple languages +class AddProductNameInputWidget extends StatefulWidget { + const AddProductNameInputWidget({ + required this.product, + required this.onShowImagePreview, + super.key, + }); + + final Product product; + final Function( + ImageField imageField, + OpenFoodFactsLanguage language, + ) onShowImagePreview; + + @override + State createState() => + _AddProductNameInputWidgetState(); +} + +class _AddProductNameInputWidgetState extends State { + final Map + _controllers = {}; + + static const int MIN_COLLAPSED_COUNT = 3; + + bool _collapsed = true; + + @override + Widget build(BuildContext context) { + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return Provider( + create: (_) => widget.product, + child: SmoothCardWithRoundedHeader( + title: appLocalizations.product_names, + leading: const icons.Milk.happy(), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (widget.product.hasOwnerField(ProductField.NAME_IN_LANGUAGES)) + const OwnerFieldSmoothCardIcon(), + const _ProductNameAddNewLanguage(), + const _ProductNameExplanation(), + ], + ), + contentPadding: EdgeInsets.zero, + child: ValueNotifierListener( + listener: ( + final BuildContext context, + _ProductNameEditorProviderState? oldValue, + _ProductNameEditorProviderState value, + ) { + if (oldValue?.productNames.length != value.productNames.length) { + for (final _EditingProductName productName + in value.productNames) { + if (!_controllers.containsKey(productName.language)) { + _controllers[productName.language] = + DebouncedTextEditingController( + controller: TextEditingController(text: productName.name) + ..addListener( + () { + context + .read() + .onNameChanged( + productName.language, + _controllers[productName.language]!.text, + ); + }, + ), + ); + } + } + } + }, + child: ConsumerValueNotifierFilter( + buildWhen: (_ProductNameEditorProviderState? oldValue, + _ProductNameEditorProviderState value) => + oldValue?.productNames.length != value.productNames.length || + oldValue?.addedLanguages.length != value.addedLanguages.length, + builder: ( + final BuildContext context, + final _ProductNameEditorProviderState value, + _, + ) { + final int count = _collapsed + ? math.min( + value.productNames.length - value.addedLanguages.length, + MIN_COLLAPSED_COUNT) + : value.productNames.length; + + final bool collapsed = _collapsed && + value.productNames.length - value.addedLanguages.length > + MIN_COLLAPSED_COUNT; + + return Column( + children: [ + ...value.productNames.sublist(0, count).map( + (_EditingProductName productName) => + _ProductNameInputWidget( + productName: productName, + controller: _controllers[productName.language]!, + onShowImagePreview: () { + widget.onShowImagePreview( + ImageField.FRONT, + productName.language, + ); + }, + ), + ), + if (value.addedLanguages.isNotEmpty && + _collapsed) ...[ + const _ProductNameNewTranslationWarning(), + ...value.productNames + .sublist(value.productNames.length - + value.addedLanguages.length) + .map( + (_EditingProductName productName) => + _ProductNameInputWidget( + productName: productName, + controller: _controllers[productName.language]!, + onShowImagePreview: () { + widget.onShowImagePreview( + ImageField.FRONT, + productName.language, + ); + }, + ), + ), + ], + if (collapsed) + _ProductNameCollapsedSection( + onTap: () => setState(() { + _collapsed = false; + }), + ) + else + const SizedBox(height: BALANCED_SPACE), + ], + ); + }, + ), + ), + ), + ); + } + + @override + void dispose() { + for (final DebouncedTextEditingController controller + in _controllers.values) { + controller.dispose(); + } + _controllers.clear(); + super.dispose(); + } +} + +class _ProductNameAddNewLanguage extends StatelessWidget { + const _ProductNameAddNewLanguage(); + + @override + Widget build(BuildContext context) { + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return IconButton( + icon: const icons.Add.circled(), + tooltip: appLocalizations.add_basic_details_product_name_add_translation, + onPressed: () => _openLanguagePicker(context), + ); + } + + Future _openLanguagePicker(BuildContext context) async { + final ProductNameEditorProvider provider = + context.read(); + final Product product = context.read(); + + final List selectedLanguages = provider + .value.productNames + .map((final _EditingProductName productName) => productName.language) + .toList(growable: false); + + final OpenFoodFactsLanguage? language = + await LanguagesSelector.openLanguageSelector( + context, + selectedLanguages: selectedLanguages, + languagePriority: LanguagePriority( + product: product, + selectedLanguages: selectedLanguages, + daoStringList: DaoStringList(context.read()), + ), + ); + + if (language != null) { + provider.addLanguage(language); + } + } +} + +class _ProductNameInputWidget extends StatefulWidget { + const _ProductNameInputWidget({ + required this.productName, + required this.controller, + required this.onShowImagePreview, + }); + + final _EditingProductName productName; + final TextEditingController controller; + final VoidCallback onShowImagePreview; + + @override + State<_ProductNameInputWidget> createState() => + _ProductNameInputWidgetState(); +} + +class _ProductNameInputWidgetState extends State<_ProductNameInputWidget> { + bool _photoTaken = false; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + final bool lightTheme = context.lightTheme(); + + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return KeyedSubtree( + key: ValueKey(widget.productName.language), + child: Padding( + padding: const EdgeInsetsDirectional.only( + top: BALANCED_SPACE, + start: 11.0, + end: 8.0, + ), + child: IconButtonTheme( + data: const IconButtonThemeData( + style: ButtonStyle( + fixedSize: WidgetStatePropertyAll(Size.square(40.0)), + iconSize: WidgetStatePropertyAll(24.0), + padding: WidgetStatePropertyAll( + EdgeInsetsDirectional.all(SMALL_SPACE), + ), + tapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + ), + child: IntrinsicHeight( + child: Row( + children: [ + AspectRatio( + aspectRatio: 1.0, + child: Tooltip( + message: Languages().getNameInEnglish( + widget.productName.language, + ), + child: CircleAvatar( + backgroundColor: lightTheme + ? extension.primaryMedium + : extension.primarySemiDark, + child: AutoSizeText( + widget.productName.language.offTag.toUpperCase(), + style: TextStyle( + color: lightTheme + ? extension.primaryDark + : extension.primaryLight, + fontWeight: FontWeight.w700, + fontSize: 17.0, + ), + ), + ), + ), + ), + const SizedBox(width: 6.0), + Expanded( + child: SmoothTextFormField( + controller: widget.controller, + type: TextFieldTypes.PLAIN_TEXT, + hintText: + appLocalizations.add_basic_details_product_name_hint, + hintTextStyle: + SmoothTextFormField.defaultHintTextStyle(context), + borderRadius: CIRCULAR_BORDER_RADIUS, + contentPadding: const EdgeInsets.symmetric( + horizontal: LARGE_SPACE, + vertical: 10.5, + ), + allowEmojis: false, + maxLines: 1, + ), + ), + const SizedBox(width: 2.0), + if (widget.productName.hasPhoto || _photoTaken) + IconButton( + icon: icons.Picture.checkAlt( + color: extension.success, + ), + tooltip: appLocalizations + .add_basic_details_product_name_open_photo, + onPressed: widget.onShowImagePreview, + ) + else + IconButton( + icon: icons.Picture.add( + color: lightTheme + ? extension.primaryDark + : extension.primaryNormal, + ), + tooltip: appLocalizations + .add_basic_details_product_name_take_photo, + onPressed: () => _takePicture(context), + ) + ], + ), + ), + ), + ), + ); + } + + Future _takePicture(BuildContext context) async { + final File? file = await ProductImageGalleryView.takePicture( + context: context, + product: context.read(), + language: widget.productName.language, + imageField: ImageField.FRONT, + pictureSource: UserPictureSource.SELECT, + ); + + if (file != null) { + setState(() => _photoTaken = true); + } + } +} + +class _ProductNameCollapsedSection extends StatelessWidget { + const _ProductNameCollapsedSection({ + required this.onTap, + }); + + final VoidCallback onTap; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + final bool lightTheme = context.lightTheme(); + + final _ProductNameEditorProviderState state = + context.watch().value; + final int count = state.productNames.length - + (math.min(state.productNames.length, + _AddProductNameInputWidgetState.MIN_COLLAPSED_COUNT) + + state.addedLanguages.length); + + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: BALANCED_SPACE), + CustomPaint( + foregroundPainter: DashedLinePainter( + color: extension.primaryMedium, + dashGap: 4.0, + dashSpace: 4.0, + ), + size: const Size(double.infinity, 1.0), + child: Ink( + decoration: BoxDecoration( + borderRadius: const BorderRadius.only( + bottomLeft: ROUNDED_RADIUS, + bottomRight: ROUNDED_RADIUS, + ), + color: lightTheme + ? extension.primaryLight + : extension.primarySemiDark, + ), + child: InkWell( + onTap: onTap, + borderRadius: const BorderRadius.only( + bottomLeft: ROUNDED_RADIUS, + bottomRight: ROUNDED_RADIUS, + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: SMALL_SPACE, + ), + child: icons.AppIconTheme( + color: lightTheme + ? extension.greyMedium + : extension.primaryLight, + size: 8.0, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const icons.DoubleChevron.down(), + const SizedBox(width: SMALL_SPACE), + Text( + AppLocalizations.of(context) + .add_basic_details_product_name_other_translations( + count, + ), + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 15.0, + fontStyle: FontStyle.italic, + color: lightTheme + ? extension.primaryDark + : extension.primaryMedium, + ), + ), + const SizedBox(width: MEDIUM_SPACE), + const icons.DoubleChevron.down(), + ], + ), + ), + ), + ), + ), + ), + ], + ); + } +} + +class _ProductNameExplanation extends StatelessWidget { + const _ProductNameExplanation(); + + @override + Widget build(BuildContext context) { + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return ExplanationTitleIcon( + title: appLocalizations.add_basic_details_product_name_help_title, + margin: EdgeInsets.zero, + padding: EdgeInsets.zero, + safeArea: false, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ExplanationBodyInfo( + text: appLocalizations.add_basic_details_product_name_help_info1, + ), + ExplanationGoodExamplesContainer( + items: [ + appLocalizations + .add_basic_details_product_name_help_good_examples_1, + appLocalizations + .add_basic_details_product_name_help_good_examples_2, + ], + ), + const SizedBox(height: SMALL_SPACE), + ExplanationBadExamplesContainer( + items: [ + appLocalizations + .add_basic_details_product_name_help_bad_examples_1_example, + appLocalizations + .add_basic_details_product_name_help_bad_examples_2_example, + ], + explanations: [ + appLocalizations + .add_basic_details_product_name_help_bad_examples_1_explanation, + appLocalizations + .add_basic_details_product_name_help_bad_examples_2_explanation, + ], + ), + const SizedBox(height: VERY_LARGE_SPACE), + ExplanationBodyInfo( + text: appLocalizations.add_basic_details_product_name_help_info2, + icon: false, + safeArea: true, + ), + ], + ), + ); + } +} + +class _ProductNameNewTranslationWarning extends StatefulWidget { + const _ProductNameNewTranslationWarning(); + + @override + State<_ProductNameNewTranslationWarning> createState() => + _ProductNameNewTranslationWarningState(); +} + +class _ProductNameNewTranslationWarningState + extends State<_ProductNameNewTranslationWarning> + with SingleTickerProviderStateMixin { + /// Animation to hide the banner + AnimationController? _controller; + Animation? _animation; + Size? _size; + + @override + Widget build(BuildContext context) { + if (!context.watch().showInputProductNameBanner()) { + return EMPTY_WIDGET; + } + + final SmoothColorsThemeExtension extension = + context.extension(); + final bool lightTheme = context.lightTheme(); + + double? height; + if (_size != null && _animation != null) { + height = _size!.height - _animation!.value; + } else { + height = _size?.height; + } + + return SizedBox( + width: _size?.width, + height: height, + child: MeasureSize( + onChange: (Size size) { + if (size != _size && _controller == null) { + _size = size; + } + }, + child: Padding( + padding: const EdgeInsetsDirectional.only(top: MEDIUM_SPACE), + child: Container( + color: lightTheme ? extension.greyLight : extension.primaryDark, + child: ClipRRect( + child: Stack( + children: [ + PositionedDirectional( + bottom: 0.0, + start: 0.0, + child: ExcludeSemantics( + child: Transform.translate( + offset: const Offset(-12.0, 07.0), + child: icons.Warning( + size: 55.0, + color: lightTheme + ? extension.greyMedium + : extension.primaryTone, + ), + ), + ), + ), + Padding( + padding: const EdgeInsetsDirectional.only( + start: 62.0, + top: 9.0, + bottom: BALANCED_SPACE, + end: 17.0, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: TextWithBoldParts( + text: AppLocalizations.of(context) + .add_basic_details_product_name_warning_translations, + textStyle: const TextStyle(height: 1.6), + ), + ), + const SizedBox(width: VERY_SMALL_SPACE), + DecoratedBox( + decoration: ShapeDecoration( + shape: const CircleBorder(), + color: lightTheme + ? extension.greyMedium + : extension.primaryTone, + ), + child: Material( + type: MaterialType.transparency, + child: Tooltip( + message: MaterialLocalizations.of(context) + .closeButtonTooltip, + child: InkWell( + customBorder: const CircleBorder(), + onTap: _startAnimation, + child: const Padding( + padding: + EdgeInsetsDirectional.all(SMALL_SPACE), + child: icons.Close( + size: 10.0, + color: Colors.white, + ), + ), + ), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ); + } + + void _startAnimation() { + if (_size == null) { + return; + } + + _controller = AnimationController( + duration: SmoothAnimationsDuration.medium, + vsync: this, + ) + ..addListener(() => setState(() {})) + ..addStatusListener((final AnimationStatus status) { + if (status == AnimationStatus.completed) { + context.read().hideInputProductNameBanner(); + } + }); + _animation = Tween(begin: 0.0, end: _size!.height).animate( + CurvedAnimation(curve: Curves.easeInOutCubic, parent: _controller!), + ); + _controller!.forward(); + } + + @override + void dispose() { + _controller?.dispose(); + super.dispose(); + } +} + +class ProductNameEditorProvider + extends ValueNotifier<_ProductNameEditorProviderState> { + ProductNameEditorProvider() + : super( + _ProductNameEditorProviderState.init(), + ); + + void loadLanguages({ + required final Product product, + final ImageField? imageField, + OpenFoodFactsLanguage? userLanguage, + }) { + final Map localizedNames = + {}; + final List<_EditingProductName> productNames = <_EditingProductName>[]; + + // Add existing languages + final Map? multilingualTexts = + product.productNameInLanguages; + if (multilingualTexts != null) { + for (final OpenFoodFactsLanguage language in multilingualTexts.keys) { + final String name = + MultilingualHelper.getCleanText(multilingualTexts[language]); + if (name.isNotEmpty) { + localizedNames[language] = name; + } + } + } + + /// Add photos without name + if (product.selectedImages != null && imageField != null) { + for (final ProductImage image in product.images!) { + if (image.field == imageField) { + if (image.language != null && + !productNames.any((final _EditingProductName productName) => + productName.language == image.language)) { + final OpenFoodFactsLanguage language = image.language!; + + if (localizedNames.containsKey(language)) { + productNames.add( + _EditingProductName.initial( + language: language, + initialName: localizedNames[language]!, + hasPhoto: true, + ), + ); + } else { + productNames.add( + _EditingProductName.initial( + language: language, + initialName: '', + hasPhoto: true, + ), + ); + } + } + } + } + } + + /// Add existing languages without photo + for (final OpenFoodFactsLanguage language in localizedNames.keys) { + if (!productNames.any((final _EditingProductName productName) => + productName.language == language)) { + productNames.add( + _EditingProductName.initial( + language: language, + initialName: localizedNames[language]!, + hasPhoto: false, + ), + ); + } + } + + /// Add user language + if (userLanguage != null) { + if (!productNames.any((final _EditingProductName productName) => + productName.language == userLanguage)) { + productNames.add( + _EditingProductName.initial( + language: userLanguage, + initialName: '', + hasPhoto: false, + ), + ); + } + } + + final OpenFoodFactsLanguage? productLanguage = product.lang; + productNames.sort( + (final _EditingProductName a, final _EditingProductName b) { + // Product language is always first + if (a.language == productLanguage) { + return -1; + } else if (b.language == productLanguage) { + return 1; + } + + // Then user language + if (a.language == userLanguage && b.language != productLanguage) { + return -1; + } else if (b.language == userLanguage && + a.language != productLanguage) { + return 1; + } + + return a.language.offTag.compareTo(b.language.offTag); + }, + ); + + value = _ProductNameEditorProviderState( + productNames: productNames, + addedLanguages: const [], + ); + } + + void addLanguage(OpenFoodFactsLanguage language) { + final List<_EditingProductName> productNames = + List<_EditingProductName>.from(value.productNames); + productNames.add( + _EditingProductName.initial( + language: language, + initialName: '', + hasPhoto: false, + ), + ); + + value = _ProductNameEditorProviderState( + productNames: productNames, + addedLanguages: List.from(value.addedLanguages) + ..add(language), + ); + } + + void onNameChanged( + OpenFoodFactsLanguage language, + String name, + ) { + final List<_EditingProductName> productNames = value.productNames; + final int index = productNames.indexWhere( + (final _EditingProductName productName) => + productName.language == language, + ); + + if (index >= 0) { + final List<_EditingProductName> editedProductNames = + List<_EditingProductName>.from(value.productNames); + editedProductNames[index] = productNames[index].copyWith(name: name); + + value = _ProductNameEditorProviderState( + productNames: editedProductNames, + addedLanguages: value.addedLanguages, + ); + } + } + + Map getChangedProductNames() { + final Map changedProductNames = + {}; + + for (final _EditingProductName productName in value.productNames) { + if (productName.initialName != productName.name) { + changedProductNames[productName.language] = productName.name; + } + } + + return changedProductNames; + } + + bool hasChanged() { + if (value.addedLanguages.isNotEmpty) { + return true; + } + + for (final _EditingProductName productName in value.productNames) { + if (productName.initialName != productName.name) { + return true; + } + } + + return false; + } +} + +@immutable +class _ProductNameEditorProviderState { + const _ProductNameEditorProviderState({ + required this.productNames, + required this.addedLanguages, + }); + + _ProductNameEditorProviderState.init() + : productNames = <_EditingProductName>[], + addedLanguages = []; + + final List<_EditingProductName> productNames; + final List addedLanguages; +} + +class _EditingProductName { + _EditingProductName({ + required this.language, + required this.initialName, + required this.name, + required this.hasPhoto, + }); + + _EditingProductName.initial({ + required OpenFoodFactsLanguage language, + required String initialName, + required bool hasPhoto, + }) : this( + language: language, + initialName: initialName, + name: initialName, + hasPhoto: hasPhoto, + ); + + final OpenFoodFactsLanguage language; + final String initialName; + final String name; + final bool hasPhoto; + + _EditingProductName copyWith({ + OpenFoodFactsLanguage? language, + String? initialName, + String? name, + bool? hasPhoto, + }) { + return _EditingProductName( + language: language ?? this.language, + initialName: initialName ?? this.initialName, + name: name ?? this.name, + hasPhoto: hasPhoto ?? this.hasPhoto, + ); + } + + @override + // ignore: avoid_equals_and_hash_code_on_mutable_classes + bool operator ==(Object other) => + identical(this, other) || + other is _EditingProductName && + runtimeType == other.runtimeType && + language == other.language; + + @override + // ignore: avoid_equals_and_hash_code_on_mutable_classes + int get hashCode => language.hashCode; +} diff --git a/packages/smooth_app/lib/pages/product/add_basic_details/add_basic_details_page.dart b/packages/smooth_app/lib/pages/product/add_basic_details/add_basic_details_page.dart new file mode 100644 index 000000000000..c6a13c0f28c0 --- /dev/null +++ b/packages/smooth_app/lib/pages/product/add_basic_details/add_basic_details_page.dart @@ -0,0 +1,357 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:provider/provider.dart'; +import 'package:smooth_app/background/background_task_details.dart'; +import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/generic_lib/widgets/smooth_text_form_field.dart'; +import 'package:smooth_app/helpers/analytics_helper.dart'; +import 'package:smooth_app/helpers/product_cards_helper.dart'; +import 'package:smooth_app/pages/input/unfocus_field_when_tap_outside.dart'; +import 'package:smooth_app/pages/product/add_basic_details/add_basic_details_name.dart'; +import 'package:smooth_app/pages/product/common/product_buttons.dart'; +import 'package:smooth_app/pages/product/common/product_refresher.dart'; +import 'package:smooth_app/pages/product/edit_product_image_viewer.dart'; +import 'package:smooth_app/pages/product/may_exit_page_helper.dart'; +import 'package:smooth_app/pages/product/multilingual_helper.dart'; +import 'package:smooth_app/pages/product/owner_field_info.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/pages/text_field_helper.dart'; +import 'package:smooth_app/query/product_query.dart'; +import 'package:smooth_app/resources/app_icons.dart' as icons; +import 'package:smooth_app/themes/smooth_theme.dart'; +import 'package:smooth_app/themes/smooth_theme_colors.dart'; +import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_scaffold.dart'; +import 'package:smooth_app/widgets/will_pop_scope.dart'; + +/// Input of a product's basic details, like name, quantity and brands. +/// +/// The product name input is either monolingual or multilingual, depending on +/// the product data version. +class AddBasicDetailsPage extends StatefulWidget { + const AddBasicDetailsPage( + this.product, { + required this.isLoggedInMandatory, + }); + + final Product product; + final bool isLoggedInMandatory; + + @override + State createState() => _AddBasicDetailsPageState(); +} + +class _AddBasicDetailsPageState extends State { + final TextEditingController _productNameController = TextEditingController(); + final TextEditingController _brandsController = TextEditingController(); + late final TextEditingControllerWithHistory _weightController; + + final double _heightSpace = LARGE_SPACE; + final GlobalKey _formKey = GlobalKey(); + late final Product _product; + + final SimpleInputPageBrandsHelper _brandsHelper = + SimpleInputPageBrandsHelper(); + final ProductNameEditorProvider _productNameEditorProvider = + ProductNameEditorProvider(); + + /// Arg used to show the image preview. + OpenFoodFactsLanguage? _imageLanguagePreview; + + @override + void initState() { + super.initState(); + _product = widget.product; + _weightController = TextEditingControllerWithHistory( + text: MultilingualHelper.getCleanText(_product.quantity ?? ''), + ); + } + + @override + Widget build(BuildContext context) { + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return WillPopScope2( + onWillPop: () async => (await _mayExitPage(saving: false), null), + child: UnfocusFieldWhenTapOutside( + child: ChangeNotifierProvider( + create: (_) => _productNameEditorProvider + ..loadLanguages( + product: _product, + userLanguage: ProductQuery.getLanguage(), + imageField: ImageField.FRONT, + ), + child: SmoothScaffold( + fixKeyboard: true, + appBar: buildEditProductAppBar( + context: context, + title: appLocalizations.basic_details, + product: _product, + ), + backgroundColor: context.lightTheme() + ? context.extension().primaryLight + : null, + body: Provider.value( + value: _product, + child: _buildForm( + context: context, + appLocalizations: appLocalizations, + ), + ), + bottomNavigationBar: ProductBottomButtonsBar( + onSave: () async => _exitPage( + await _mayExitPage(saving: true), + ), + onCancel: () async => _exitPage( + await _mayExitPage(saving: false), + ), + ), + ), + ), + ), + ); + } + + @override + void dispose() { + _productNameController.dispose(); + _brandsController.dispose(); + _weightController.dispose(); + super.dispose(); + } + + Widget _buildForm({ + required BuildContext context, + required AppLocalizations appLocalizations, + }) { + return Form( + key: _formKey, + child: Scrollbar( + child: Column( + children: [ + EditProductImageViewer( + visible: _imageLanguagePreview != null, + onClose: () => setState(() => _imageLanguagePreview = null), + imageField: ImageField.FRONT, + language: _imageLanguagePreview, + ), + Expanded( + child: ListView( + padding: const EdgeInsetsDirectional.only( + top: MEDIUM_SPACE, + start: MEDIUM_SPACE, + end: MEDIUM_SPACE, + ), + children: [ + AddProductNameInputWidget( + product: widget.product, + onShowImagePreview: (_, OpenFoodFactsLanguage language) => + setState(() { + _imageLanguagePreview = language; + }), + ), + SizedBox(height: _heightSpace), + _ProductBrandsInputWidget( + textController: _brandsController, + helper: _brandsHelper, + ), + SizedBox(height: _heightSpace), + _ProductQuantityInputWidget( + textController: _weightController, + ownerField: _isOwnerField(ProductField.QUANTITY), + ), + // in order to be able to scroll suggestions + const SizedBox(height: 50.0), + ], + ), + ), + ], + ), + ), + ); + } + + /// Exits the page if the [flag] is `true`. + void _exitPage(final bool flag) { + if (flag) { + Navigator.of(context).pop(); + } + } + + /// Returns `true` if we should really exit the page. + /// + /// Parameter [saving] tells about the context: are we leaving the page, + /// or have we clicked on the "save" button? + Future _mayExitPage({required final bool saving}) async { + final Product? minimalistProduct = _getMinimalistProduct(); + if (minimalistProduct == null) { + return true; + } + + if (!saving) { + final bool? pleaseSave = + await MayExitPageHelper().openSaveBeforeLeavingDialog(context); + if (pleaseSave == null) { + _brandsHelper.restoreItemsBeforeLastAddition(); + return false; + } + if (pleaseSave == false) { + return true; + } + if (!mounted) { + return false; + } + } + + if (!mounted) { + return false; + } + if (!await ProductRefresher().checkIfLoggedIn( + context, + isLoggedInMandatory: widget.isLoggedInMandatory, + )) { + return false; + } + + if (!mounted) { + return false; + } + + AnalyticsHelper.trackProductEdit( + AnalyticsEditEvents.basicDetails, + _product, + true, + ); + await BackgroundTaskDetails.addTask( + minimalistProduct, + context: context, + stamp: BackgroundTaskDetailsStamp.basicDetails, + productType: _product.productType, + ); + + return true; + } + + /// Returns a [Product] with the values from the text fields. + Product? _getMinimalistProduct() { + final Product result = Product(barcode: _product.barcode); + bool hasChanged = false; + + if (_weightController.isDifferentFromInitialValue) { + result.quantity = _weightController.text; + hasChanged = true; + } + + _brandsHelper.addItemsFromController( + _brandsController, + clearController: false, + ); + if (_brandsHelper.getChangedProduct(result)) { + hasChanged = true; + } + + if (_productNameEditorProvider.hasChanged()) { + hasChanged = true; + result.productNameInLanguages = + _productNameEditorProvider.getChangedProductNames(); + } + + if (hasChanged) { + return result; + } else { + return null; + } + } + + bool _isOwnerField( + final ProductField productField, { + final OpenFoodFactsLanguage? language, + }) => + _product.hasOwnerField(productField, language: language); +} + +class _ProductBrandsInputWidget extends StatelessWidget { + const _ProductBrandsInputWidget({ + required this.textController, + required this.helper, + }); + + final TextEditingController textController; + final SimpleInputPageBrandsHelper helper; + + @override + Widget build(BuildContext context) { + return SimpleInputWidget( + helper: helper, + product: context.watch(), + controller: textController, + displayTitle: true, + newElementsToTop: false, + ); + } +} + +class _ProductQuantityInputWidget extends StatelessWidget { + const _ProductQuantityInputWidget({ + required this.textController, + required this.ownerField, + }); + + final TextEditingController textController; + final bool ownerField; + + @override + Widget build(BuildContext context) { + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return _BasicDetailInputWrapper( + title: appLocalizations.quantity, + icon: const icons.Scale.alt(), + ownerField: ownerField, + child: SmoothTextFormField( + controller: textController, + type: TextFieldTypes.PLAIN_TEXT, + hintText: appLocalizations.add_basic_details_quantity_hint, + hintTextStyle: SmoothTextFormField.defaultHintTextStyle(context), + allowEmojis: false, + borderRadius: CIRCULAR_BORDER_RADIUS, + contentPadding: const EdgeInsets.symmetric( + horizontal: LARGE_SPACE, + vertical: MEDIUM_SPACE, + ), + maxLines: 1, + ), + ); + } +} + +class _BasicDetailInputWrapper extends StatelessWidget { + const _BasicDetailInputWrapper({ + required this.title, + required this.icon, + required this.child, + required this.ownerField, + }); + + final String title; + final Widget icon; + final Widget child; + final bool ownerField; + + @override + Widget build(BuildContext context) { + return SmoothCardWithRoundedHeader( + title: title, + leading: icon, + trailing: ownerField ? const OwnerFieldSmoothCardIcon() : null, + contentPadding: EdgeInsets.zero, + child: Padding( + padding: const EdgeInsetsDirectional.all(MEDIUM_SPACE), + child: child, + ), + ); + } +} 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 deleted file mode 100644 index 8d1499d5f361..000000000000 --- a/packages/smooth_app/lib/pages/product/add_basic_details_page.dart +++ /dev/null @@ -1,540 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:openfoodfacts/openfoodfacts.dart'; -import 'package:provider/provider.dart'; -import 'package:smooth_app/background/background_task_details.dart'; -import 'package:smooth_app/cards/product_cards/product_image_carousel.dart'; -import 'package:smooth_app/data_models/preferences/user_preferences.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/generic_lib/widgets/smooth_text_form_field.dart'; -import 'package:smooth_app/helpers/analytics_helper.dart'; -import 'package:smooth_app/helpers/product_cards_helper.dart'; -import 'package:smooth_app/helpers/provider_helper.dart'; -import 'package:smooth_app/pages/input/unfocus_field_when_tap_outside.dart'; -import 'package:smooth_app/pages/preferences/user_preferences_dev_mode.dart'; -import 'package:smooth_app/pages/product/common/product_buttons.dart'; -import 'package:smooth_app/pages/product/common/product_refresher.dart'; -import 'package:smooth_app/pages/product/may_exit_page_helper.dart'; -import 'package:smooth_app/pages/product/multilingual_helper.dart'; -import 'package:smooth_app/pages/product/owner_field_info.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/pages/text_field_helper.dart'; -import 'package:smooth_app/query/product_query.dart'; -import 'package:smooth_app/resources/app_icons.dart' as icons; -import 'package:smooth_app/themes/smooth_theme.dart'; -import 'package:smooth_app/themes/smooth_theme_colors.dart'; -import 'package:smooth_app/themes/theme_provider.dart'; -import 'package:smooth_app/widgets/smooth_scaffold.dart'; -import 'package:smooth_app/widgets/will_pop_scope.dart'; - -/// Input of a product's basic details, like name, quantity and brands. -/// -/// The product name input is either monolingual or multilingual, depending on -/// the product data version. -class AddBasicDetailsPage extends StatefulWidget { - const AddBasicDetailsPage( - this.product, { - required this.isLoggedInMandatory, - }); - - final Product product; - final bool isLoggedInMandatory; - - @override - State createState() => _AddBasicDetailsPageState(); -} - -class _AddBasicDetailsPageState extends State { - final TextEditingController _productNameController = TextEditingController(); - final TextEditingController _brandsController = TextEditingController(); - late final TextEditingControllerWithHistory _weightController; - - final double _heightSpace = LARGE_SPACE; - final GlobalKey _formKey = GlobalKey(); - late final Product _product; - - final SimpleInputPageBrandsHelper _brandsHelper = - SimpleInputPageBrandsHelper(); - late final MultilingualHelper _multilingualHelper; - - /// Only used when there's not enough place - bool _showPhotosBanner = false; - - @override - void initState() { - super.initState(); - _product = widget.product; - _weightController = TextEditingControllerWithHistory( - text: MultilingualHelper.getCleanText(_product.quantity ?? ''), - ); - _multilingualHelper = MultilingualHelper( - controller: _productNameController, - ); - _multilingualHelper.init( - multilingualTexts: _product.productNameInLanguages, - monolingualText: _product.productName, - productLanguage: _product.lang, - ); - } - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - - return WillPopScope2( - onWillPop: () async => (await _mayExitPage(saving: false), null), - child: UnfocusFieldWhenTapOutside( - child: SmoothScaffold( - fixKeyboard: true, - appBar: buildEditProductAppBar( - context: context, - title: appLocalizations.basic_details, - product: _product, - actions: [ - IconButton( - onPressed: () => setState(() { - _showPhotosBanner = !_showPhotosBanner; - }), - icon: const icons.ImageGallery(), - tooltip: appLocalizations.show_product_pictures, - enableFeedback: true, - ), - ], - ), - backgroundColor: context.lightTheme() - ? context.extension().primaryLight - : null, - body: Provider.value( - value: _product, - child: _buildForm( - context: context, - appLocalizations: appLocalizations, - showPhotos: _showPhotosBanner, - ), - ), - bottomNavigationBar: ProductBottomButtonsBar( - onSave: () async => _exitPage( - await _mayExitPage(saving: true), - ), - onCancel: () async => _exitPage( - await _mayExitPage(saving: false), - ), - ), - ), - ), - ); - } - - @override - void dispose() { - _productNameController.dispose(); - _brandsController.dispose(); - _weightController.dispose(); - super.dispose(); - } - - Widget _buildForm({ - required BuildContext context, - required AppLocalizations appLocalizations, - required bool showPhotos, - }) { - return Column( - children: [ - Expanded( - child: Form( - key: _formKey, - child: Scrollbar( - child: ListView( - padding: const EdgeInsetsDirectional.only( - top: MEDIUM_SPACE, - start: MEDIUM_SPACE, - end: MEDIUM_SPACE, - ), - children: [ - ConsumerFilter( - buildWhen: ( - UserPreferences? previousValue, - UserPreferences currentValue, - ) { - return previousValue?.getFlag(UserPreferencesDevMode - .userPreferencesFlagSpellCheckerOnOcr) != - currentValue.getFlag(UserPreferencesDevMode - .userPreferencesFlagSpellCheckerOnOcr); - }, - builder: (BuildContext context, UserPreferences prefs, - Widget? child) { - if (_multilingualHelper.isMonolingual()) { - return _ProductMonolingualNameInputWidget( - textController: _productNameController, - ownerField: _isOwnerField(ProductField.NAME), - ); - } else { - return _ProductMultilingualNameInputWidget( - textController: _productNameController, - ownerField: _isOwnerField( - ProductField.NAME_IN_LANGUAGES, - language: _multilingualHelper.getCurrentLanguage(), - ), - multilingualHelper: _multilingualHelper, - product: _product, - setState: setState, - ); - } - }, - ), - SizedBox(height: _heightSpace), - _ProductBrandsInputWidget( - textController: _brandsController, - helper: _brandsHelper, - ), - SizedBox(height: _heightSpace), - _ProductQuantityInputWidget( - textController: _weightController, - ownerField: _isOwnerField(ProductField.QUANTITY), - ), - // in order to be able to scroll suggestions - const SizedBox(height: 50.0), - ], - ), - ), - ), - ), - Offstage( - offstage: !showPhotos, - child: AnimatedOpacity( - duration: SmoothAnimationsDuration.short, - opacity: showPhotos ? 1.0 : 0.0, - child: Padding( - padding: const EdgeInsets.all(MEDIUM_SPACE), - child: SmoothCardWithRoundedHeader( - title: appLocalizations.edit_product_form_item_photos_title, - leading: const icons.Camera.happy(), - contentPadding: EdgeInsets.zero, - child: ClipRRect( - borderRadius: ROUNDED_BORDER_RADIUS, - child: ProductImageCarousel( - _product, - height: MediaQuery.sizeOf(context).height * 0.10, - ), - ), - ), - ), - ), - ), - ], - ); - } - - /// Exits the page if the [flag] is `true`. - void _exitPage(final bool flag) { - if (flag) { - Navigator.of(context).pop(); - } - } - - /// Returns `true` if we should really exit the page. - /// - /// Parameter [saving] tells about the context: are we leaving the page, - /// or have we clicked on the "save" button? - Future _mayExitPage({required final bool saving}) async { - final Product? minimalistProduct = _getMinimalistProduct(); - if (minimalistProduct == null) { - return true; - } - - if (!saving) { - final bool? pleaseSave = - await MayExitPageHelper().openSaveBeforeLeavingDialog(context); - if (pleaseSave == null) { - _brandsHelper.restoreItemsBeforeLastAddition(); - return false; - } - if (pleaseSave == false) { - return true; - } - if (!mounted) { - return false; - } - } - - if (!mounted) { - return false; - } - if (!await ProductRefresher().checkIfLoggedIn( - context, - isLoggedInMandatory: widget.isLoggedInMandatory, - )) { - return false; - } - - if (!mounted) { - return false; - } - - AnalyticsHelper.trackProductEdit( - AnalyticsEditEvents.basicDetails, - _product, - true, - ); - await BackgroundTaskDetails.addTask( - minimalistProduct, - context: context, - stamp: BackgroundTaskDetailsStamp.basicDetails, - productType: _product.productType, - ); - - return true; - } - - /// Returns a [Product] with the values from the text fields. - Product? _getMinimalistProduct() { - final Product result = Product(barcode: _product.barcode); - bool hasChanged = false; - - if (_weightController.isDifferentFromInitialValue) { - result.quantity = _weightController.text; - hasChanged = true; - } - - _brandsHelper.addItemsFromController( - _brandsController, - clearController: false, - ); - if (_brandsHelper.getChangedProduct(result)) { - hasChanged = true; - } - - if (_multilingualHelper.isMonolingual()) { - final String? changed = _multilingualHelper.getChangedMonolingualText(); - if (changed != null) { - result.productName = changed; - hasChanged = true; - } - } else { - final Map? changed = - _multilingualHelper.getChangedMultilingualText(); - if (changed != null) { - result.productNameInLanguages = changed; - hasChanged = true; - } - } - - if (hasChanged) { - return result; - } else { - return null; - } - } - - bool _isOwnerField( - final ProductField productField, { - final OpenFoodFactsLanguage? language, - }) => - _product.getOwnerFieldTimestamp( - OwnerField.productField( - productField, - language ?? ProductQuery.getLanguage(), - ), - ) != - null; -} - -class _ProductMonolingualNameInputWidget extends StatelessWidget { - const _ProductMonolingualNameInputWidget({ - required this.textController, - required this.ownerField, - }); - - final TextEditingController textController; - final bool ownerField; - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - - return _BasicDetailInputWrapper( - title: appLocalizations.quantity, - icon: const icons.Scale.alt(), - ownerField: ownerField, - child: SmoothTextFormField( - controller: textController, - type: TextFieldTypes.PLAIN_TEXT, - hintText: appLocalizations.add_basic_details_product_name_hint, - spellCheckConfiguration: (context.read().getFlag( - UserPreferencesDevMode - .userPreferencesFlagSpellCheckerOnOcr) ?? - false) && - (Platform.isAndroid || Platform.isIOS) - ? const SpellCheckConfiguration() - : const SpellCheckConfiguration.disabled(), - maxLines: 1, - ), - ); - } -} - -class _ProductMultilingualNameInputWidget extends StatelessWidget { - const _ProductMultilingualNameInputWidget({ - required this.product, - required this.textController, - required this.multilingualHelper, - required this.setState, - required this.ownerField, - }); - - final Product product; - final TextEditingController textController; - final MultilingualHelper multilingualHelper; - final void Function(void Function()) setState; - final bool ownerField; - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - - return _BasicDetailInputWrapper( - title: appLocalizations.product_name, - icon: const icons.Milk.happy(), - ownerField: ownerField, - contentPadding: const EdgeInsetsDirectional.only( - bottom: MEDIUM_SPACE, - ), - child: Column( - children: [ - SizedBox( - width: double.infinity, - child: multilingualHelper.getLanguageSelector( - setState: setState, - product: product, - icon: DecoratedBox( - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Theme.of(context).colorScheme.secondary, - ), - child: const Padding( - padding: EdgeInsetsDirectional.only(top: 0.5), - child: Icon(Icons.expand_more_outlined), - ), - ), - padding: const EdgeInsetsDirectional.symmetric( - horizontal: 21.0, - vertical: SMALL_SPACE, - ), - borderRadius: BorderRadius.vertical( - top: ROUNDED_BORDER_RADIUS.topLeft, - ), - ), - ), - Padding( - padding: const EdgeInsetsDirectional.only( - top: VERY_SMALL_SPACE, - start: MEDIUM_SPACE, - end: MEDIUM_SPACE, - ), - child: SmoothTextFormField( - controller: textController, - type: TextFieldTypes.PLAIN_TEXT, - hintText: appLocalizations.add_basic_details_product_name_hint, - hintTextStyle: SmoothTextFormField.defaultHintTextStyle(context), - spellCheckConfiguration: (context.read().getFlag( - UserPreferencesDevMode - .userPreferencesFlagSpellCheckerOnOcr) ?? - false) && - (Platform.isAndroid || Platform.isIOS) - ? const SpellCheckConfiguration() - : const SpellCheckConfiguration.disabled(), - ), - ), - ], - ), - ); - } -} - -class _ProductBrandsInputWidget extends StatelessWidget { - const _ProductBrandsInputWidget({ - required this.textController, - required this.helper, - }); - - final TextEditingController textController; - final SimpleInputPageBrandsHelper helper; - - @override - Widget build(BuildContext context) { - return SimpleInputWidget( - helper: helper, - product: context.watch(), - controller: textController, - displayTitle: true, - newElementsToTop: false, - ); - } -} - -class _ProductQuantityInputWidget extends StatelessWidget { - const _ProductQuantityInputWidget({ - required this.textController, - required this.ownerField, - }); - - final TextEditingController textController; - final bool ownerField; - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - - return _BasicDetailInputWrapper( - title: appLocalizations.quantity, - icon: const icons.Scale.alt(), - ownerField: ownerField, - child: SmoothTextFormField( - controller: textController, - type: TextFieldTypes.PLAIN_TEXT, - hintText: appLocalizations.add_basic_details_quantity_hint, - hintTextStyle: SmoothTextFormField.defaultHintTextStyle(context), - allowEmojis: false, - maxLines: 1, - ), - ); - } -} - -class _BasicDetailInputWrapper extends StatelessWidget { - const _BasicDetailInputWrapper({ - required this.title, - required this.icon, - required this.child, - required this.ownerField, - this.contentPadding, - }); - - final String title; - final Widget icon; - final Widget child; - final bool ownerField; - final EdgeInsetsGeometry? contentPadding; - - @override - Widget build(BuildContext context) { - return SmoothCardWithRoundedHeader( - title: title, - leading: icon, - trailing: ownerField ? const OwnerFieldSmoothCardIcon() : null, - contentPadding: EdgeInsets.zero, - child: Padding( - padding: contentPadding ?? - const EdgeInsetsDirectional.all( - MEDIUM_SPACE, - ), - child: child, - ), - ); - } -} diff --git a/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_image.dart b/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_image.dart index e7e1b24710a4..8a0506cf5ea3 100644 --- a/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_image.dart +++ b/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_image.dart @@ -3,7 +3,6 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; -import 'package:rive/rive.dart' show RiveAnimation; import 'package:smooth_app/database/transient_file.dart'; import 'package:smooth_app/generic_lib/bottom_sheets/smooth_bottom_sheet.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; @@ -14,6 +13,7 @@ import 'package:smooth_app/helpers/ui_helpers.dart'; import 'package:smooth_app/pages/image/product_image_helper.dart'; import 'package:smooth_app/pages/product/edit_ocr/edit_ocr_page.dart'; import 'package:smooth_app/pages/product/edit_ocr/ocr_helper.dart'; +import 'package:smooth_app/pages/product/helpers/pinch_to_zoom_indicator.dart'; import 'package:smooth_app/pages/product/owner_field_info.dart'; import 'package:smooth_app/resources/app_animations.dart'; import 'package:smooth_app/resources/app_icons.dart' as icons; @@ -96,24 +96,33 @@ class _EditOCRImageWidgetState extends State { headerIcons = Tooltip( message: appLocalizations.product_image_outdated_message, textAlign: TextAlign.center, - child: DecoratedBox( - decoration: BoxDecoration( - color: extension.warning, - borderRadius: ROUNDED_BORDER_RADIUS, + child: ConstrainedBox( + constraints: const BoxConstraints( + minHeight: 40.0, + minWidth: 40.0, ), - child: Material( - type: MaterialType.transparency, - child: InkWell( - customBorder: const CircleBorder(), - onTap: () => _openOutdatedPictureExplanations(context), - child: const Padding( - padding: EdgeInsetsDirectional.only( - top: 6.5, - bottom: 7.5, - start: 7.0, - end: 7.0, + child: Padding( + padding: const EdgeInsetsDirectional.all(VERY_SMALL_SPACE), + child: Material( + type: MaterialType.transparency, + child: InkWell( + customBorder: const CircleBorder(), + onTap: () => _openOutdatedPictureExplanations(context), + child: DecoratedBox( + decoration: BoxDecoration( + color: extension.warning, + borderRadius: ROUNDED_BORDER_RADIUS, + ), + child: const Padding( + padding: EdgeInsetsDirectional.only( + top: 6.5, + bottom: 7.5, + start: 7.0, + end: 7.0, + ), + child: icons.Outdated(size: 15.0), + ), ), - child: icons.Outdated(size: 15.0), ), ), ), @@ -293,9 +302,7 @@ class _EditOCRImageFoundState extends State<_EditOCRImageFound> { if (state == OcrState.IMAGE_LOADED && !_isLoading) const Align( alignment: AlignmentDirectional.bottomEnd, - child: ExcludeSemantics( - child: _EditOCRPinchToZoom(), - ), + child: PinchToZoomExplainer(), ) else if (state == OcrState.IMAGE_LOADING) const Center( @@ -339,62 +346,6 @@ class _EditOCRImageFoundState extends State<_EditOCRImageFound> { } } -class _EditOCRPinchToZoom extends StatelessWidget { - const _EditOCRPinchToZoom(); - - @override - Widget build(BuildContext context) { - final AppLocalizations appLocalizations = AppLocalizations.of(context); - - return Tooltip( - message: appLocalizations - .edit_product_form_item_ingredients_pinch_to_zoom_tooltip, - child: InkWell( - customBorder: const CircleBorder(), - onTap: () { - showSmoothModalSheet( - context: context, - builder: (BuildContext context) { - final double width = MediaQuery.sizeOf(context).width * 0.5; - - return SmoothModalSheet( - title: appLocalizations - .edit_product_form_item_ingredients_pinch_to_zoom_title, - prefixIndicator: true, - body: SafeArea( - child: Column( - children: [ - TextWithBoldParts( - text: appLocalizations - .edit_product_form_item_ingredients_pinch_to_zoom_message, - textStyle: const TextStyle(fontSize: 15.0), - ), - const SizedBox(height: LARGE_SPACE), - ExcludeSemantics( - child: SizedBox( - width: width, - height: (width * 172.0) / 247.0, - child: const RiveAnimation.asset( - 'assets/animations/explanations.riv', - artboard: 'pinch-to-zoom', - ), - ), - ) - ], - ), - ), - ); - }, - ); - }, - child: const SmoothIndicatorIcon( - icon: icons.PinchToZoom(), - ), - ), - ); - } -} - class _EditOCRImageNotFound extends StatelessWidget { const _EditOCRImageNotFound({ required this.onTap, @@ -668,10 +619,10 @@ class _ExtractTextAnimation extends StatefulWidget { final Color tintColorGradient; @override - State<_ExtractTextAnimation> createState() => __ExtractTextAnimationState(); + State<_ExtractTextAnimation> createState() => _ExtractTextAnimationState(); } -class __ExtractTextAnimationState extends State<_ExtractTextAnimation> +class _ExtractTextAnimationState extends State<_ExtractTextAnimation> with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _progress; @@ -682,7 +633,9 @@ class __ExtractTextAnimationState extends State<_ExtractTextAnimation> _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 1200), - ) + ); + + _controller ..addListener(() => setState(() {})) ..addStatusListener((AnimationStatus status) { if (_controller.isCompleted) { diff --git a/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_page.dart b/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_page.dart index 7da07adbee6f..367c9d49f9a3 100644 --- a/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_page.dart +++ b/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_page.dart @@ -15,6 +15,8 @@ import 'package:smooth_app/generic_lib/loading_dialog.dart'; import 'package:smooth_app/helpers/analytics_helper.dart'; import 'package:smooth_app/helpers/product_cards_helper.dart'; import 'package:smooth_app/helpers/ui_helpers.dart'; +import 'package:smooth_app/pages/input/unfocus_field_when_tap_outside.dart'; +import 'package:smooth_app/pages/product/common/product_buttons.dart'; import 'package:smooth_app/pages/product/common/product_refresher.dart'; import 'package:smooth_app/pages/product/edit_ocr/edit_ocr_image.dart'; import 'package:smooth_app/pages/product/edit_ocr/edit_ocr_tabbar.dart'; @@ -27,7 +29,6 @@ import 'package:smooth_app/themes/smooth_theme.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; import 'package:smooth_app/themes/theme_provider.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; -import 'package:smooth_app/widgets/v2/smooth_buttons_bar.dart'; /// Editing with OCR a product field and the corresponding image. /// @@ -89,88 +90,85 @@ class _EditOcrPageState extends State with UpToDateMixin { value: _extractState(transientFile), ), ], - child: SmoothScaffold( - extendBodyBehindAppBar: false, - appBar: buildEditProductAppBar( - context: context, - title: _helper.getTitle(appLocalizations), - product: upToDateProduct, - bottom: !_multilingualHelper.isMonolingual() - ? EditOcrTabBar( - onTabChanged: (OpenFoodFactsLanguage language) { - if (_multilingualHelper.changeLanguage(language)) { - onNextFrame( - () => setState(() {}), - forceRedraw: true, - ); - } - }, - imageField: _helper.getImageField(), - languagesWithText: _getLanguagesWithText(), - ) - : null, - ), - backgroundColor: context.lightTheme() - ? context.extension().primaryLight - : null, - body: ListView( - padding: const EdgeInsetsDirectional.all(MEDIUM_SPACE), - children: [ - EditOCRImageWidget( - helper: _helper, - transientFile: transientFile, - ownerField: upToDateProduct.isImageLocked( - _helper.getImageField(), - _multilingualHelper.getCurrentLanguage(), - ) ?? - false, - onEditImage: () async => Navigator.push( - context, - MaterialPageRoute( - builder: (_) => ProductImageSwipeableView.imageField( + child: UnfocusFieldWhenTapOutside( + child: SmoothScaffold( + extendBodyBehindAppBar: false, + appBar: buildEditProductAppBar( + context: context, + title: _helper.getTitle(appLocalizations), + product: upToDateProduct, + bottom: !_multilingualHelper.isMonolingual() + ? EditOcrTabBar( + onTabChanged: (OpenFoodFactsLanguage language) { + if (_multilingualHelper.changeLanguage(language)) { + onNextFrame( + () => setState(() {}), + forceRedraw: true, + ); + } + }, imageField: _helper.getImageField(), - product: upToDateProduct, - initialLanguage: _multilingualHelper.getCurrentLanguage(), - isLoggedInMandatory: widget.isLoggedInMandatory, + languagesWithText: _getLanguagesWithText(), + ) + : null, + ), + backgroundColor: context.lightTheme() + ? context.extension().primaryLight + : null, + body: ListView( + padding: const EdgeInsetsDirectional.all(MEDIUM_SPACE), + children: [ + EditOCRImageWidget( + helper: _helper, + transientFile: transientFile, + ownerField: upToDateProduct.isImageLocked( + _helper.getImageField(), + _multilingualHelper.getCurrentLanguage(), + ) ?? + false, + onEditImage: () async => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => ProductImageSwipeableView.imageField( + imageField: _helper.getImageField(), + product: upToDateProduct, + initialLanguage: _multilingualHelper.getCurrentLanguage(), + isLoggedInMandatory: widget.isLoggedInMandatory, + ), ), ), + onExtractText: () async => _extractData(), + onTakePicture: () async => _takePicture(), ), - onExtractText: () async => _extractData(), - onTakePicture: () async => _takePicture(), - ), - const SizedBox(height: MEDIUM_SPACE), - EditOCRTextField( - helper: _helper, - controller: _controller, - extraButton: _helper.hasAddExtraPhotoButton() - ? EditOCRExtraButton( - barcode: upToDateProduct.barcode!, - productType: upToDateProduct.productType, - multilingualHelper: _multilingualHelper, - isLoggedInMandatory: widget.isLoggedInMandatory, - ) - : null, - isOwnerField: _helper.isOwnerField( - upToDateProduct, - _multilingualHelper.getCurrentLanguage(), + const SizedBox(height: MEDIUM_SPACE), + EditOCRTextField( + helper: _helper, + controller: _controller, + extraButton: _helper.hasAddExtraPhotoButton() + ? EditOCRExtraButton( + barcode: upToDateProduct.barcode!, + productType: upToDateProduct.productType, + multilingualHelper: _multilingualHelper, + isLoggedInMandatory: widget.isLoggedInMandatory, + ) + : null, + isOwnerField: _helper.isOwnerField( + upToDateProduct, + _multilingualHelper.getCurrentLanguage(), + ), ), - ), - ], - ), - bottomNavigationBar: SmoothButtonsBar2( - positiveButton: SmoothActionButton2( - text: appLocalizations.save, - onPressed: () async { + ], + ), + resizeToAvoidBottomInset: true, + bottomNavigationBar: ProductBottomButtonsBar( + onSave: () async { await _updateText(); if (!context.mounted) { return; } - Navigator.pop(context); + Navigator.of(context).pop(); }, - ), - negativeButton: SmoothActionButton2( - text: appLocalizations.cancel, - onPressed: () => Navigator.pop(context), + onCancel: () => Navigator.of(context).pop(), ), ), ), diff --git a/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_textfield.dart b/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_textfield.dart index 568d255ff4d0..0e0dbec0f014 100644 --- a/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_textfield.dart +++ b/packages/smooth_app/lib/pages/product/edit_ocr/edit_ocr_textfield.dart @@ -15,8 +15,8 @@ import 'package:smooth_app/pages/product/edit_ocr/edit_ocr_page.dart'; import 'package:smooth_app/pages/product/edit_ocr/ocr_helper.dart'; import 'package:smooth_app/pages/product/multilingual_helper.dart'; import 'package:smooth_app/pages/product/owner_field_info.dart'; -import 'package:smooth_app/pages/product/simple_input_widget.dart'; import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_explanation_banner.dart'; class EditOCRTextField extends StatelessWidget { const EditOCRTextField({ diff --git a/packages/smooth_app/lib/pages/product/edit_product_barcode.dart b/packages/smooth_app/lib/pages/product/edit_product_barcode.dart index c36fdbbf865b..7a99811568d3 100644 --- a/packages/smooth_app/lib/pages/product/edit_product_barcode.dart +++ b/packages/smooth_app/lib/pages/product/edit_product_barcode.dart @@ -42,6 +42,7 @@ class _EditProductBarcodeState extends State { top: SMALL_SPACE, bottom: VERY_SMALL_SPACE, ), + includeShadow: false, child: MergeSemantics( child: Padding( padding: const EdgeInsetsDirectional.only( diff --git a/packages/smooth_app/lib/pages/product/edit_product_image_viewer.dart b/packages/smooth_app/lib/pages/product/edit_product_image_viewer.dart new file mode 100644 index 000000000000..1d9e9d479e5f --- /dev/null +++ b/packages/smooth_app/lib/pages/product/edit_product_image_viewer.dart @@ -0,0 +1,196 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:openfoodfacts/openfoodfacts.dart'; +import 'package:provider/provider.dart'; +import 'package:scanner_shared/scanner_shared.dart'; +import 'package:smooth_app/database/transient_file.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; +import 'package:smooth_app/helpers/ui_helpers.dart'; +import 'package:smooth_app/pages/product/helpers/pinch_to_zoom_indicator.dart'; +import 'package:smooth_app/query/product_query.dart'; +import 'package:smooth_app/resources/app_icons.dart' as icons; +import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_indicator_icon.dart'; + +class EditProductImageViewer extends StatefulWidget { + const EditProductImageViewer({ + required this.visible, + required this.onClose, + required this.imageField, + this.language, + super.key, + }); + + final bool visible; + final VoidCallback onClose; + final ImageField imageField; + final OpenFoodFactsLanguage? language; + + @override + State createState() => _EditProductImageViewerState(); +} + +class _EditProductImageViewerState extends State + with SingleTickerProviderStateMixin { + late final AnimationController _controller; + late final Animation _animation; + + bool _isLoading = true; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: SmoothAnimationsDuration.medium, + reverseDuration: SmoothAnimationsDuration.short, + vsync: this, + )..addListener(() => setState(() {})); + _animation = Tween(begin: 0.0, end: 1.0).animate( + CurvedAnimation(parent: _controller, curve: Curves.easeOutSine), + ); + } + + @override + void didUpdateWidget(covariant EditProductImageViewer oldWidget) { + super.didUpdateWidget(oldWidget); + + if (widget.visible) { + _controller.forward(); + } else { + _controller.reverse(); + } + } + + @override + Widget build(BuildContext context) { + if (_controller.value == 0.0) { + return EMPTY_WIDGET; + } + + return ExcludeSemantics( + child: SizedOverflowBox( + size: Size( + double.infinity, + MediaQuery.sizeOf(context).height * 0.2 * _animation.value, + ), + child: SizedBox( + width: double.infinity, + height: MediaQuery.sizeOf(context).height * 0.2, + child: ColoredBox( + color: context.lightTheme() ? Colors.grey[850]! : Colors.grey[800]!, + child: Stack( + children: [ + Positioned.fill( + child: InteractiveViewer( + child: Image( + fit: BoxFit.contain, + image: TransientFile.fromProduct( + context.watch(), + widget.imageField, + widget.language ?? ProductQuery.getLanguage(), + ).getImageProvider()!, + frameBuilder: _frameBuilder, + loadingBuilder: _loadingBuilder, + errorBuilder: _errorBuilder, + ), + ), + ), + PositionedDirectional( + top: 1.0, + end: 3.5, + child: Offstage( + offstage: _animation.value != 1.0, + child: Material( + type: MaterialType.transparency, + child: InkWell( + customBorder: const CircleBorder(), + onTap: widget.onClose, + child: Tooltip( + message: AppLocalizations.of(context).close, + child: const SmoothIndicatorIcon( + icon: icons.Close( + size: 14.0, + ), + ), + ), + ), + ), + ), + ), + PositionedDirectional( + bottom: 1.0, + end: 3.5, + child: Offstage( + offstage: _animation.value != 1.0, + child: const PinchToZoomExplainer(), + ), + ) + ], + ), + ), + ), + ), + ); + } + + Widget _frameBuilder( + BuildContext context, + Widget child, + int? frame, + bool wasSynchronouslyLoaded, + ) { + if (frame == null) { + return _loadingWidget(); + } else if (_isLoading) { + onNextFrame( + () => setState(() => _isLoading = false), + ); + } + return child; + } + + Widget _loadingBuilder( + BuildContext context, + Widget child, + ImageChunkEvent? loadingProgress, + ) { + if (loadingProgress == null) { + return child; + } + return _loadingWidget(); + } + + Widget _errorBuilder( + BuildContext context, + Object error, + StackTrace? stackTrace, + ) { + onNextFrame( + () => setState(() => _isLoading = false), + ); + + return FractionallySizedBox( + widthFactor: 0.6, + child: Center( + child: Text( + AppLocalizations.of(context).nutrition_page_photo_error, + textAlign: TextAlign.center, + style: const TextStyle( + color: Colors.white, + fontSize: 15.0, + ), + ), + ), + ); + } + + Widget _loadingWidget() { + return const Center(child: CircularProgressIndicator()); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } +} diff --git a/packages/smooth_app/lib/pages/product/helpers/pinch_to_zoom_indicator.dart b/packages/smooth_app/lib/pages/product/helpers/pinch_to_zoom_indicator.dart new file mode 100644 index 000000000000..47b83909dc74 --- /dev/null +++ b/packages/smooth_app/lib/pages/product/helpers/pinch_to_zoom_indicator.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:rive/rive.dart' show RiveAnimation; +import 'package:smooth_app/generic_lib/bottom_sheets/smooth_bottom_sheet.dart'; +import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/resources/app_icons.dart' as icons; +import 'package:smooth_app/widgets/smooth_indicator_icon.dart'; +import 'package:smooth_app/widgets/smooth_text.dart'; + +class PinchToZoomExplainer extends StatelessWidget { + const PinchToZoomExplainer(); + + @override + Widget build(BuildContext context) { + final AppLocalizations appLocalizations = AppLocalizations.of(context); + + return ExcludeSemantics( + child: Tooltip( + message: appLocalizations + .edit_product_form_item_ingredients_pinch_to_zoom_tooltip, + child: InkWell( + customBorder: const CircleBorder(), + onTap: () { + showSmoothModalSheet( + context: context, + builder: (BuildContext context) { + final double width = MediaQuery.sizeOf(context).width * 0.5; + + return SmoothModalSheet( + title: appLocalizations + .edit_product_form_item_ingredients_pinch_to_zoom_title, + prefixIndicator: true, + body: SafeArea( + child: Column( + children: [ + TextWithBoldParts( + text: appLocalizations + .edit_product_form_item_ingredients_pinch_to_zoom_message, + textStyle: const TextStyle(fontSize: 15.0), + ), + const SizedBox(height: LARGE_SPACE), + ExcludeSemantics( + child: SizedBox( + width: width, + height: (width * 172.0) / 247.0, + child: const RiveAnimation.asset( + 'assets/animations/explanations.riv', + artboard: 'pinch-to-zoom', + ), + ), + ) + ], + ), + ), + ); + }, + ); + }, + child: const SmoothIndicatorIcon( + icon: icons.PinchToZoom(), + ), + ), + ), + ); + } +} diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/nutrition_page.dart b/packages/smooth_app/lib/pages/product/nutrition_page/nutrition_page.dart index 91e0fd1c3555..5eaa334a7a5e 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page/nutrition_page.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page/nutrition_page.dart @@ -18,21 +18,21 @@ import 'package:smooth_app/helpers/product_cards_helper.dart'; import 'package:smooth_app/helpers/ui_helpers.dart'; import 'package:smooth_app/pages/input/unfocus_field_when_tap_outside.dart'; import 'package:smooth_app/pages/product/common/product_buttons.dart'; +import 'package:smooth_app/pages/product/edit_product_image_viewer.dart'; import 'package:smooth_app/pages/product/may_exit_page_helper.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_add_nutrient_button.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_availability_container.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_container_helper.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_facts_editor.dart'; -import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_image_viewer.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_serving_size.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_serving_switch.dart'; import 'package:smooth_app/pages/product/simple_input_number_field.dart'; -import 'package:smooth_app/pages/product/simple_input_widget.dart'; import 'package:smooth_app/pages/text_field_helper.dart'; import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/resources/app_icons.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_explanation_banner.dart'; import 'package:smooth_app/widgets/smooth_scaffold.dart'; import 'package:smooth_app/widgets/will_pop_scope.dart'; @@ -120,32 +120,35 @@ class _NutritionPageLoadedState extends State title: appLocalizations.nutrition_page_title, product: upToDateProduct, actions: [ - IconButton( - icon: const Icon(Icons.image_rounded), - tooltip: ImageField.NUTRITION - .getProductImageButtonText(appLocalizations), - onPressed: () { - if (TransientFile.fromProduct( - upToDateProduct, - ImageField.NUTRITION, - ProductQuery.getLanguage(), - ).isImageAvailable()) { - setState(() { - _imageVisible = !_imageVisible; - }); - } else { - ImageField.NUTRITION.openDetails( - context, + if (!_imageVisible) + IconButton( + icon: const Icon(Icons.image_rounded), + tooltip: ImageField.NUTRITION + .getProductImageButtonText(appLocalizations), + onPressed: () { + if (TransientFile.fromProduct( upToDateProduct, - widget.isLoggedInMandatory, - ); - } - }, - ), + ImageField.NUTRITION, + ProductQuery.getLanguage(), + ).isImageAvailable()) { + setState(() { + _imageVisible = !_imageVisible; + }); + } else { + ImageField.NUTRITION.openDetails( + context, + upToDateProduct, + widget.isLoggedInMandatory, + ); + } + }, + ), ]), body: Column( children: [ - NutritionImageViewer( + EditProductImageViewer( + imageField: ImageField.NUTRITION, + language: ProductQuery.getLanguage(), visible: _imageVisible, onClose: () => setState(() => _imageVisible = false), ), @@ -372,20 +375,15 @@ class _NutritionPageBodyState extends State<_NutritionPageBody> { } widgets.add( - Padding( - padding: const EdgeInsetsDirectional.only( - start: VERY_LARGE_SPACE, - end: MEDIUM_SPACE, - ), - child: ChangeNotifierProvider.value( - value: controllers[nutrient]!, - child: NutrientRow( - nutritionContainer, - decimalNumberFormat, - orderedNutrient, - i, - i == displayableNutrients.length - 1, - ), + ChangeNotifierProvider.value( + value: controllers[nutrient]!, + child: NutrientRow( + nutritionContainer: nutritionContainer, + decimalNumberFormat: decimalNumberFormat, + orderedNutrient: orderedNutrient, + position: i, + isLast: i == displayableNutrients.length - 1, + highlighted: _nutrientToHighlight == orderedNutrient, ), ), ); @@ -422,7 +420,7 @@ class _NutritionPageBodyState extends State<_NutritionPageBody> { setState(() => _nutrientToHighlight = nutrient); }, ), - ExplanationTitleIcon( + ExplanationTitleIcon.text( title: appLocalizations.edit_product_form_item_nutrition_facts_title, text: appLocalizations diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_add_nutrient_button.dart b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_add_nutrient_button.dart index ec1df3fe3bfc..97b8dbef3e67 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_add_nutrient_button.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_add_nutrient_button.dart @@ -33,7 +33,7 @@ class NutritionAddNutrientButton extends StatelessWidget { return Padding( padding: const EdgeInsetsDirectional.only( - top: LARGE_SPACE, + top: BALANCED_SPACE, start: MEDIUM_SPACE, end: MEDIUM_SPACE, bottom: MEDIUM_SPACE, diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_availability_container.dart b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_availability_container.dart index 377386904638..48805d7c6d17 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_availability_container.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_availability_container.dart @@ -4,9 +4,9 @@ import 'package:provider/provider.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_container_helper.dart'; -import 'package:smooth_app/pages/product/simple_input_widget.dart'; import 'package:smooth_app/resources/app_icons.dart' as icons; import 'package:smooth_app/widgets/smooth_dropdown.dart'; +import 'package:smooth_app/widgets/smooth_explanation_banner.dart'; /// A toggle to indicate whether a product has nutrition facts. class NutritionAvailabilityContainer extends StatelessWidget { @@ -24,13 +24,13 @@ class NutritionAvailabilityContainer extends StatelessWidget { child: SmoothCardWithRoundedHeader( title: appLocalizations.nutrition_page_nutritional_info_title, leading: const icons.Milk.happy(), - trailing: ExplanationTitleIcon( + trailing: ExplanationTitleIcon.text( title: appLocalizations.nutrition_page_nutritional_info_title, text: appLocalizations.nutrition_page_nutritional_info_explanation, ), contentPadding: const EdgeInsetsDirectional.only( - start: VERY_LARGE_SPACE, - end: LARGE_SPACE, + start: LARGE_SPACE, + end: MEDIUM_SPACE, top: SMALL_SPACE, bottom: SMALL_SPACE, ), diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_facts_editor.dart b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_facts_editor.dart index c055745a9cf4..b790bf1c4dbb 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_facts_editor.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_facts_editor.dart @@ -5,6 +5,7 @@ import 'package:intl/intl.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:provider/provider.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/helpers/text_input_formatters_helper.dart'; import 'package:smooth_app/pages/product/nutrition_page/nutrition_page.dart'; import 'package:smooth_app/pages/product/nutrition_page/widgets/nutrition_container_helper.dart'; @@ -15,63 +16,129 @@ import 'package:smooth_app/themes/smooth_theme.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; import 'package:smooth_app/widgets/smooth_dropdown.dart'; -class NutrientRow extends StatelessWidget { - const NutrientRow( - this.nutritionContainer, - this.decimalNumberFormat, - this.orderedNutrient, - this.position, - this.isLast, - ); +class NutrientRow extends StatefulWidget { + const NutrientRow({ + required this.nutritionContainer, + required this.decimalNumberFormat, + required this.orderedNutrient, + required this.position, + required this.isLast, + required this.highlighted, + }); final NutritionContainerHelper nutritionContainer; final NumberFormat decimalNumberFormat; final OrderedNutrient orderedNutrient; final int position; final bool isLast; + final bool highlighted; + + @override + State createState() => _NutrientRowState(); +} + +class _NutrientRowState extends State + with SingleTickerProviderStateMixin { + late final AnimationController _controller; + Animation? _colorAnimation; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: SmoothAnimationsDuration.medium, + vsync: this, + ) + ..addListener(() => setState(() {})) + ..addStatusListener((final AnimationStatus status) { + if (status == AnimationStatus.completed) { + _colorAnimation = null; + } + }); + } + + @override + void didUpdateWidget(covariant NutrientRow oldWidget) { + super.didUpdateWidget(oldWidget); + + if (oldWidget.highlighted != widget.highlighted && widget.highlighted) { + _colorAnimation = ColorTween( + begin: _getColor(context.extension()), + end: context.extension().secondaryLight, + ).animate(_controller); + _controller.repeat(count: 4, reverse: true); + } + } @override Widget build(BuildContext context) { - final String key = orderedNutrient.id; - - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded( - flex: 6, - child: KeyedSubtree( - key: Key('$key-value'), - child: _NutrientValueCell( - decimalNumberFormat, - orderedNutrient, - position, - isLast, - ), - ), + final SmoothColorsThemeExtension extension = + context.extension(); + final String key = widget.orderedNutrient.id; + + Color color; + if (_colorAnimation != null) { + color = _colorAnimation!.value!; + } else { + color = _getColor(extension); + } + + return ColoredBox( + color: color, + child: Padding( + padding: const EdgeInsetsDirectional.only( + start: MEDIUM_SPACE, + end: MEDIUM_SPACE, ), - Expanded( - flex: 5, - child: KeyedSubtree( - key: Key('$key-unit'), - child: IntrinsicHeight( - child: Row( - children: [ - Expanded( - child: _NutrientUnitCell( - nutritionContainer, - orderedNutrient, - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + flex: 6, + child: KeyedSubtree( + key: Key('$key-value'), + child: _NutrientValueCell( + widget.decimalNumberFormat, + widget.orderedNutrient, + widget.position, + widget.isLast, + ), + ), + ), + Expanded( + flex: 5, + child: KeyedSubtree( + key: Key('$key-unit'), + child: IntrinsicHeight( + child: Row( + children: [ + Expanded( + child: _NutrientUnitCell( + widget.nutritionContainer, + widget.orderedNutrient, + ), + ), + const _NutrientUnitVisibility() + ], ), - const _NutrientUnitVisibility() - ], + ), ), ), - ), + ], ), - ], + ), ); } + + Color _getColor(SmoothColorsThemeExtension extension) => + widget.position.isEven ? extension.cellEven : extension.cellOdd; + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } } class _NutrientValueCell extends StatelessWidget { @@ -99,50 +166,95 @@ class _NutrientValueCell extends StatelessWidget { final bool isLast = position == focusNodes.length - 1; final Nutrient? nutrient = orderedNutrient.nutrient; + final bool ownerFieldVisible = nutrient != null && + product.getOwnerFieldTimestamp(OwnerField.nutrient(nutrient)) != null; + return Semantics( label: orderedNutrient.name, value: controller.text, textField: true, excludeSemantics: true, - child: TextFormField( - controller: controller, - enabled: controller.isSet, - focusNode: focusNodes[orderedNutrient], - decoration: InputDecoration( - enabledBorder: const UnderlineInputBorder(), - labelText: orderedNutrient.name, - suffixIcon: nutrient == null || - product.getOwnerFieldTimestamp( - OwnerField.nutrient(nutrient)) == - null - ? null - : IconButton( - onPressed: () => showOwnerFieldInfoInModalSheet(context), - icon: const OwnerFieldIcon(), - ), + child: Padding( + padding: const EdgeInsetsDirectional.only( + top: SMALL_SPACE, + bottom: SMALL_SPACE, ), - keyboardType: const TextInputType.numberWithOptions( - signed: false, - decimal: true, + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsetsDirectional.only( + start: VERY_SMALL_SPACE, + bottom: VERY_SMALL_SPACE, + ), + child: Text( + orderedNutrient.name!, + style: const TextStyle( + fontWeight: FontWeight.w600, + fontSize: 15.0, + ), + ), + ), + DecoratedBox( + decoration: BoxDecoration( + color: controller.isSet + ? Theme.of(context).inputDecorationTheme.fillColor + : Theme.of(context).disabledColor, + borderRadius: BorderRadius.circular(8.0), + ), + child: Padding( + padding: const EdgeInsetsDirectional.symmetric( + horizontal: MEDIUM_SPACE, + ), + child: TextFormField( + controller: controller, + enabled: controller.isSet, + focusNode: focusNodes[orderedNutrient], + decoration: const InputDecoration.collapsed( + hintText: '', + ), + keyboardType: const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), + textInputAction: isLast ? null : TextInputAction.next, + inputFormatters: [ + FilteringTextInputFormatter.allow( + SimpleInputNumberField.getNumberRegExp( + decimal: true), + ), + DecimalSeparatorRewriter(decimalNumberFormat), + ], + validator: (String? value) { + if (value == null || value.trim().isEmpty) { + return null; + } + try { + decimalNumberFormat.parse(value); + return null; + } catch (e) { + return appLocalizations + .nutrition_page_invalid_number; + } + }, + ), + ), + ), + ], + ), + ), + if (ownerFieldVisible) + IconButton( + onPressed: () => showOwnerFieldInfoInModalSheet(context), + icon: const OwnerFieldIcon(), + ) + else + const SizedBox(width: MEDIUM_SPACE), + ], ), - textInputAction: isLast ? null : TextInputAction.next, - inputFormatters: [ - FilteringTextInputFormatter.allow( - SimpleInputNumberField.getNumberRegExp(decimal: true), - ), - DecimalSeparatorRewriter(decimalNumberFormat), - ], - validator: (String? value) { - if (value == null || value.trim().isEmpty) { - return null; - } - try { - decimalNumberFormat.parse(value); - return null; - } catch (e) { - return appLocalizations.nutrition_page_invalid_number; - } - }, ), ); } @@ -235,7 +347,7 @@ class _NutrientUnitVisibility extends StatelessWidget { return AspectRatio( aspectRatio: 1.0, - child: Ink( + child: DecoratedBox( decoration: ShapeDecoration( color: isValueSet ? context @@ -244,24 +356,27 @@ class _NutrientUnitVisibility extends StatelessWidget { : Theme.of(context).disabledColor, shape: const CircleBorder(), ), - child: InkWell( - customBorder: const CircleBorder(), - onTap: () { - if (isValueSet) { - controller.text = '-'; - } else { - if (controller.previousValue != '-') { - controller.text = controller.previousValue ?? '-'; + child: Material( + type: MaterialType.transparency, + child: InkWell( + customBorder: const CircleBorder(), + onTap: () { + if (isValueSet) { + controller.text = '-'; } else { - controller.text = ''; + if (controller.previousValue != '-') { + controller.text = controller.previousValue ?? '-'; + } else { + controller.text = ''; + } } - } - }, - child: Icon( - isValueSet - ? Icons.visibility_rounded - : Icons.visibility_off_rounded, - color: Colors.white, + }, + child: Icon( + isValueSet + ? Icons.visibility_rounded + : Icons.visibility_off_rounded, + color: Colors.white, + ), ), ), ), diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_image_viewer.dart b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_image_viewer.dart deleted file mode 100644 index b0b530794a99..000000000000 --- a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_image_viewer.dart +++ /dev/null @@ -1,140 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:openfoodfacts/openfoodfacts.dart'; -import 'package:provider/provider.dart'; -import 'package:scanner_shared/scanner_shared.dart'; -import 'package:smooth_app/database/transient_file.dart'; -import 'package:smooth_app/helpers/ui_helpers.dart'; -import 'package:smooth_app/query/product_query.dart'; -import 'package:smooth_app/resources/app_icons.dart'; -import 'package:smooth_app/themes/theme_provider.dart'; -import 'package:smooth_app/widgets/smooth_indicator_icon.dart'; - -class NutritionImageViewer extends StatefulWidget { - const NutritionImageViewer({ - required this.visible, - required this.onClose, - super.key, - }); - - final bool visible; - final VoidCallback onClose; - - @override - State createState() => _NutritionImageViewerState(); -} - -class _NutritionImageViewerState extends State { - bool _isLoading = true; - - @override - Widget build(BuildContext context) { - if (!widget.visible) { - return EMPTY_WIDGET; - } - - return ExcludeSemantics( - child: SizedBox( - height: MediaQuery.sizeOf(context).height * 0.2, - width: double.infinity, - child: ColoredBox( - color: context.lightTheme() ? Colors.grey[850]! : Colors.grey[800]!, - child: Stack( - children: [ - Positioned.fill( - child: InteractiveViewer( - child: Image( - fit: BoxFit.contain, - image: TransientFile.fromProduct( - context.watch(), - ImageField.NUTRITION, - ProductQuery.getLanguage(), - ).getImageProvider()!, - frameBuilder: _frameBuilder, - loadingBuilder: _loadingBuilder, - errorBuilder: _errorBuilder, - ), - ), - ), - PositionedDirectional( - top: 1.0, - end: 2.5, - child: Material( - type: MaterialType.transparency, - child: InkWell( - customBorder: const CircleBorder(), - onTap: widget.onClose, - child: Tooltip( - message: AppLocalizations.of(context).close, - child: const SmoothIndicatorIcon( - icon: Padding( - padding: EdgeInsetsDirectional.all(2.0), - child: Close(), - ), - ), - ), - ), - ), - ) - ], - ), - ), - ), - ); - } - - Widget _frameBuilder( - BuildContext context, - Widget child, - int? frame, - bool wasSynchronouslyLoaded, - ) { - if (frame == null) { - return _loadingWidget(); - } else if (_isLoading) { - onNextFrame( - () => setState(() => _isLoading = false), - ); - } - return child; - } - - Widget _loadingBuilder( - BuildContext context, - Widget child, - ImageChunkEvent? loadingProgress, - ) { - if (loadingProgress == null) { - return child; - } - return _loadingWidget(); - } - - Widget _errorBuilder( - BuildContext context, - Object error, - StackTrace? stackTrace, - ) { - onNextFrame( - () => setState(() => _isLoading = false), - ); - - return FractionallySizedBox( - widthFactor: 0.6, - child: Center( - child: Text( - AppLocalizations.of(context).nutrition_page_photo_error, - textAlign: TextAlign.center, - style: const TextStyle( - color: Colors.white, - fontSize: 15.0, - ), - ), - ), - ); - } - - Widget _loadingWidget() { - return const Center(child: CircularProgressIndicator()); - } -} diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_size.dart b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_size.dart index 200f909125f1..79d39bab0627 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_size.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_size.dart @@ -5,9 +5,9 @@ import 'package:provider/provider.dart'; import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_text_form_field.dart'; -import 'package:smooth_app/pages/product/simple_input_widget.dart'; import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/resources/app_animations.dart'; +import 'package:smooth_app/widgets/smooth_explanation_banner.dart'; /// A toggle to indicate whether a product has nutrition facts. class NutritionServingSize extends StatelessWidget { @@ -42,12 +42,12 @@ class NutritionServingSize extends StatelessWidget { end: 4.0, bottom: 4.5, ), - trailing: ExplanationTitleIcon( + trailing: ExplanationTitleIcon.text( title: appLocalizations.nutrition_page_serving_size, text: appLocalizations.nutrition_page_serving_size_explanation, ), contentPadding: const EdgeInsetsDirectional.only( - start: LARGE_SPACE, + start: MEDIUM_SPACE, end: MEDIUM_SPACE, top: SMALL_SPACE, bottom: SMALL_SPACE, diff --git a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_switch.dart b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_switch.dart index de6e4c8cc104..608156b94912 100644 --- a/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_switch.dart +++ b/packages/smooth_app/lib/pages/product/nutrition_page/widgets/nutrition_serving_switch.dart @@ -23,13 +23,13 @@ class NutritionServingSwitch extends StatelessWidget { decoration: BoxDecoration( color: context.lightTheme() ? extension.primaryMedium - : extension.primaryUltraBlack.lighten(0.01), + : extension.primaryUltraBlack.lighten(0.03), borderRadius: const BorderRadius.vertical(top: ROUNDED_RADIUS), ), child: Padding( padding: const EdgeInsetsDirectional.only( - start: VERY_LARGE_SPACE, - end: LARGE_SPACE, + start: LARGE_SPACE, + end: MEDIUM_SPACE, top: SMALL_SPACE, bottom: SMALL_SPACE, ), @@ -41,7 +41,7 @@ class NutritionServingSwitch extends StatelessWidget { child: Text( appLocalizations.nutrition_page_serving_type_label, style: const TextStyle( - fontWeight: FontWeight.w600, + fontWeight: FontWeight.bold, fontSize: 14.5, ), ), diff --git a/packages/smooth_app/lib/pages/product/owner_field_info.dart b/packages/smooth_app/lib/pages/product/owner_field_info.dart index 674377471c0c..bf36844b0786 100644 --- a/packages/smooth_app/lib/pages/product/owner_field_info.dart +++ b/packages/smooth_app/lib/pages/product/owner_field_info.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:smooth_app/generic_lib/bottom_sheets/smooth_bottom_sheet.dart'; import 'package:smooth_app/generic_lib/duration_constants.dart'; import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/query/product_query.dart'; import 'package:smooth_app/widgets/smooth_banner.dart'; import 'package:smooth_app/widgets/widget_height.dart'; @@ -195,3 +197,18 @@ class OwnerFieldSmoothCardIcon extends StatelessWidget { ); } } + +extension OwnerFieldProductExtension on Product { + bool hasOwnerField( + ProductField productField, { + OpenFoodFactsLanguage? language, + }) { + return getOwnerFieldTimestamp( + OwnerField.productField( + productField, + language ?? ProductQuery.getLanguage(), + ), + ) != + null; + } +} diff --git a/packages/smooth_app/lib/pages/product/product_field_editor.dart b/packages/smooth_app/lib/pages/product/product_field_editor.dart index 8a3d9298b2cc..36c764f1d8dd 100644 --- a/packages/smooth_app/lib/pages/product/product_field_editor.dart +++ b/packages/smooth_app/lib/pages/product/product_field_editor.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; import 'package:smooth_app/helpers/analytics_helper.dart'; -import 'package:smooth_app/pages/product/add_basic_details_page.dart'; +import 'package:smooth_app/pages/product/add_basic_details/add_basic_details_page.dart'; import 'package:smooth_app/pages/product/common/product_refresher.dart'; import 'package:smooth_app/pages/product/edit_new_packagings.dart'; import 'package:smooth_app/pages/product/edit_ocr/edit_ocr_page.dart'; diff --git a/packages/smooth_app/lib/pages/product/product_page/footer/new_product_footer.dart b/packages/smooth_app/lib/pages/product/product_page/footer/new_product_footer.dart index fa91a6648ef8..0d993edabab1 100644 --- a/packages/smooth_app/lib/pages/product/product_page/footer/new_product_footer.dart +++ b/packages/smooth_app/lib/pages/product/product_page/footer/new_product_footer.dart @@ -99,7 +99,7 @@ class _ProductFooterButtonsBar extends StatelessWidget { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.0), ), - side: BorderSide(color: themeExtension.greyLight), + side: BorderSide(color: themeExtension.greyMedium), padding: const EdgeInsetsDirectional.symmetric( horizontal: 19.0, ), diff --git a/packages/smooth_app/lib/pages/product/simple_input_widget.dart b/packages/smooth_app/lib/pages/product/simple_input_widget.dart index 92d865f39239..fbf7dc8ca8ad 100644 --- a/packages/smooth_app/lib/pages/product/simple_input_widget.dart +++ b/packages/smooth_app/lib/pages/product/simple_input_widget.dart @@ -3,7 +3,6 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:openfoodfacts/openfoodfacts.dart'; -import 'package:smooth_app/generic_lib/bottom_sheets/smooth_bottom_sheet.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'; @@ -19,6 +18,7 @@ import 'package:smooth_app/resources/app_icons.dart' as icons; import 'package:smooth_app/themes/smooth_theme.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_explanation_banner.dart'; /// Simple input widget: we have a list of terms, we add, we remove. class SimpleInputWidget extends StatefulWidget { @@ -104,14 +104,14 @@ class _SimpleInputWidgetState extends State { hintText: widget.helper.getAddHint(appLocalizations), controller: widget.controller, padding: const EdgeInsets.symmetric( - horizontal: MEDIUM_SPACE, - vertical: SMALL_SPACE, + horizontal: LARGE_SPACE, + vertical: MEDIUM_SPACE, ), margin: const EdgeInsetsDirectional.only( start: 3.0, ), productType: widget.product.productType, - borderRadius: ROUNDED_BORDER_RADIUS, + borderRadius: CIRCULAR_BORDER_RADIUS, ), ), Tooltip( @@ -164,6 +164,9 @@ class _SimpleInputWidgetState extends State { leading: widget.helper.getIcon(), title: widget.helper.getTitle(appLocalizations), trailing: trailingHeader, + contentPadding: const EdgeInsetsDirectional.only( + top: BALANCED_SPACE, + ), child: child, ); } @@ -349,58 +352,6 @@ class _SimpleInputWidgetState extends State { } } -class ExplanationTitleIcon extends StatelessWidget { - const ExplanationTitleIcon({ - required this.title, - required this.text, - }) : - // ignore: avoid_field_initializers_in_const_classes - type = null; - - const ExplanationTitleIcon.type({ - required this.type, - required this.text, - }) : - // ignore: avoid_field_initializers_in_const_classes - title = null; - - final String? title; - final String? type; - final String text; - - @override - Widget build(BuildContext context) { - final String title = this.title ?? - AppLocalizations.of(context).edit_product_form_item_help(type!); - - return SmoothCardHeaderButton( - tooltip: title, - child: const icons.Help(), - onTap: () { - showSmoothModalSheet( - context: context, - builder: (BuildContext context) { - return SmoothModalSheet( - title: title, - prefixIndicator: true, - headerBackgroundColor: - SmoothCardWithRoundedHeaderTop.getHeaderColor( - context, - ), - body: SmoothModalSheetBodyContainer( - child: Align( - alignment: AlignmentDirectional.topStart, - child: Text(text), - ), - ), - ); - }, - ); - }, - ); - } -} - class _SimpleInputListItem extends StatefulWidget { const _SimpleInputListItem({ required this.term, diff --git a/packages/smooth_app/lib/themes/smooth_theme.dart b/packages/smooth_app/lib/themes/smooth_theme.dart index 5390ede6facd..ed7101beff18 100644 --- a/packages/smooth_app/lib/themes/smooth_theme.dart +++ b/packages/smooth_app/lib/themes/smooth_theme.dart @@ -41,7 +41,9 @@ class SmoothTheme { } final SmoothColorsThemeExtension smoothExtension = - SmoothColorsThemeExtension.defaultValues(); + SmoothColorsThemeExtension.defaultValues( + brightness == Brightness.light, + ); final TextTheme textTheme = brightness == Brightness.dark ? getTextTheme(themeProvider, textContrastProvider) diff --git a/packages/smooth_app/lib/themes/smooth_theme_colors.dart b/packages/smooth_app/lib/themes/smooth_theme_colors.dart index 9dd25b2f4d52..d10867caabc7 100644 --- a/packages/smooth_app/lib/themes/smooth_theme_colors.dart +++ b/packages/smooth_app/lib/themes/smooth_theme_colors.dart @@ -21,10 +21,13 @@ class SmoothColorsThemeExtension required this.red, required this.greyDark, required this.greyNormal, + required this.greyMedium, required this.greyLight, + required this.cellOdd, + required this.cellEven, }); - SmoothColorsThemeExtension.defaultValues() + SmoothColorsThemeExtension.defaultValues(bool lightTheme) : primaryUltraBlack = const Color(0xFF201A17), primaryBlack = const Color(0xFF341100), primaryDark = const Color(0xFF483527), @@ -43,7 +46,12 @@ class SmoothColorsThemeExtension red = const Color(0xFFEB5757), greyDark = const Color(0xFF666666), greyNormal = const Color(0xFF6C6C6C), - greyLight = const Color(0xFF8F8F8F); + greyMedium = const Color(0xFF8F8F8F), + greyLight = const Color(0xFFE0E0E0), + cellOdd = + lightTheme ? const Color(0xFFFAF8F6) : const Color(0xFF2D251E), + cellEven = + lightTheme ? const Color(0xFFFFFFFF) : const Color(0xFF201A17); // Ristreto final Color primaryUltraBlack; @@ -78,10 +86,15 @@ class SmoothColorsThemeExtension final Color green; final Color orange; final Color red; + final Color greyDark; final Color greyNormal; + final Color greyMedium; final Color greyLight; + final Color cellOdd; + final Color cellEven; + @override ThemeExtension copyWith({ Color? primaryUltraBlack, @@ -102,7 +115,10 @@ class SmoothColorsThemeExtension Color? red, Color? greyDark, Color? greyNormal, + Color? greyMedium, Color? greyLight, + Color? cellOdd, + Color? cellEven, }) { return SmoothColorsThemeExtension( primaryUltraBlack: primaryUltraBlack ?? this.primaryUltraBlack, @@ -123,7 +139,10 @@ class SmoothColorsThemeExtension red: red ?? this.red, greyDark: greyDark ?? this.greyDark, greyNormal: greyDark ?? this.greyDark, + greyMedium: greyMedium ?? this.greyMedium, greyLight: greyLight ?? this.greyLight, + cellOdd: cellOdd ?? this.cellOdd, + cellEven: cellEven ?? this.cellEven, ); } @@ -227,11 +246,26 @@ class SmoothColorsThemeExtension other.greyNormal, t, )!, + greyMedium: Color.lerp( + greyMedium, + other.greyMedium, + t, + )!, greyLight: Color.lerp( greyLight, other.greyLight, t, )!, + cellOdd: Color.lerp( + cellOdd, + other.cellOdd, + t, + )!, + cellEven: Color.lerp( + cellEven, + other.cellEven, + t, + )!, ); } } diff --git a/packages/smooth_app/lib/widgets/smooth_dropdown.dart b/packages/smooth_app/lib/widgets/smooth_dropdown.dart index df66cf956437..b13a6aa973be 100644 --- a/packages/smooth_app/lib/widgets/smooth_dropdown.dart +++ b/packages/smooth_app/lib/widgets/smooth_dropdown.dart @@ -3,6 +3,7 @@ import 'package:smooth_app/generic_lib/design_constants.dart'; import 'package:smooth_app/resources/app_icons.dart' as icons; import 'package:smooth_app/themes/smooth_theme.dart'; import 'package:smooth_app/themes/smooth_theme_colors.dart'; +import 'package:smooth_app/themes/theme_provider.dart'; class SmoothDropdownButton extends StatelessWidget { const SmoothDropdownButton({ @@ -45,7 +46,7 @@ class SmoothDropdownButton extends StatelessWidget { ), ); } else { - child = _createDropdownMenu(); + child = _createDropdownMenu(context); } return DecoratedBox( @@ -60,7 +61,7 @@ class SmoothDropdownButton extends StatelessWidget { ); } - DropdownButton _createDropdownMenu() { + DropdownButton _createDropdownMenu(BuildContext context) { return DropdownButton( icon: const icons.Chevron.down( color: Colors.white, @@ -100,9 +101,9 @@ class SmoothDropdownButton extends StatelessWidget { ); }).toList(growable: false); }, - style: const TextStyle( + style: TextStyle( fontSize: 14.0, - color: Colors.black, + color: context.lightTheme() ? Colors.black : null, ), items: items .map( diff --git a/packages/smooth_app/lib/widgets/smooth_explanation_banner.dart b/packages/smooth_app/lib/widgets/smooth_explanation_banner.dart new file mode 100644 index 000000000000..05f899e934f0 --- /dev/null +++ b/packages/smooth_app/lib/widgets/smooth_explanation_banner.dart @@ -0,0 +1,415 @@ +import 'package:collection/collection.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:smooth_app/generic_lib/bottom_sheets/smooth_bottom_sheet.dart'; +import 'package:smooth_app/generic_lib/design_constants.dart'; +import 'package:smooth_app/generic_lib/widgets/smooth_card.dart'; +import 'package:smooth_app/resources/app_icons.dart' as icons; +import 'package:smooth_app/themes/smooth_theme.dart'; +import 'package:smooth_app/themes/smooth_theme_colors.dart'; +import 'package:smooth_app/themes/theme_provider.dart'; +import 'package:smooth_app/widgets/smooth_text.dart'; + +class ExplanationTitleIcon extends StatelessWidget { + const ExplanationTitleIcon({ + required this.title, + required Widget child, + this.margin, + this.padding, + this.safeArea = true, + }) : + // ignore: avoid_field_initializers_in_const_classes + type = null, + _child = child; + + ExplanationTitleIcon.text({ + required this.title, + required String text, + }) : + // ignore: avoid_field_initializers_in_const_classes + type = null, + margin = null, + padding = null, + safeArea = true, + _child = Text(text); + + ExplanationTitleIcon.type({ + required this.type, + required String text, + }) : + // ignore: avoid_field_initializers_in_const_classes + title = null, + margin = null, + padding = null, + safeArea = true, + _child = Text(text); + + final String? title; + final String? type; + final EdgeInsetsGeometry? margin; + final EdgeInsetsGeometry? padding; + final Widget _child; + final bool safeArea; + + @override + Widget build(BuildContext context) { + final String title = this.title ?? + AppLocalizations.of(context).edit_product_form_item_help(type!); + + return SmoothCardHeaderButton( + tooltip: title, + child: const icons.Help(), + onTap: () { + showSmoothModalSheet( + context: context, + isScrollControlled: true, + builder: (BuildContext context) { + return SmoothModalSheet( + title: title, + prefixIndicator: true, + headerBackgroundColor: + SmoothCardWithRoundedHeaderTop.getHeaderColor( + context, + ), + bodyPadding: margin, + body: SmoothModalSheetBodyContainer( + padding: padding, + safeArea: safeArea, + child: Align( + alignment: AlignmentDirectional.topStart, + child: _child, + ), + ), + ); + }, + ); + }, + ); + } +} + +class ExplanationBodyTitle extends StatelessWidget { + const ExplanationBodyTitle({ + required this.label, + super.key, + }); + + final String label; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + final bool lightTheme = context.lightTheme(); + + return Padding( + padding: const EdgeInsetsDirectional.only( + top: SMALL_SPACE, + bottom: MEDIUM_SPACE, + ), + child: ColoredBox( + color: extension.primaryLight, + child: SizedBox( + width: double.infinity, + child: Padding( + padding: const EdgeInsetsDirectional.symmetric( + horizontal: LARGE_SPACE, + vertical: SMALL_SPACE, + ), + child: Row( + children: [ + SmoothModalSheetHeaderPrefixIndicator( + color: lightTheme + ? extension.primaryUltraBlack + : extension.primaryLight, + ), + const SizedBox(width: SMALL_SPACE), + Expanded( + child: Text( + label, + style: const TextStyle( + fontSize: 16.0, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ExplanationBodyInfo extends StatelessWidget { + const ExplanationBodyInfo({ + required this.text, + this.icon = true, + this.safeArea = false, + }); + + final String text; + final bool icon; + final bool safeArea; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + final bool lightTheme = context.lightTheme(); + + return ColoredBox( + color: lightTheme ? extension.primaryMedium : extension.primaryTone, + child: ClipRect( + child: Padding( + padding: EdgeInsetsDirectional.only( + bottom: safeArea ? MediaQuery.viewPaddingOf(context).bottom : 0.0, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + if (icon) + Align( + alignment: AlignmentDirectional.bottomCenter, + child: icons.AppIconTheme( + color: lightTheme + ? extension.primaryNormal + : extension.primaryMedium, + child: Transform.translate( + offset: const Offset(-17.0, 09.0), + child: const icons.Info(size: 55.0), + ), + ), + ), + Expanded( + child: Padding( + padding: EdgeInsetsDirectional.only( + start: icon ? SMALL_SPACE : LARGE_SPACE, + end: LARGE_SPACE, + top: MEDIUM_SPACE, + bottom: MEDIUM_SPACE, + ), + child: TextWithBoldParts( + text: text, + textStyle: TextStyle( + color: lightTheme ? extension.primaryDark : Colors.white, + ), + ), + ), + ), + ], + ), + ), + ), + ); + } +} + +class ExplanationGoodExamplesContainer extends StatelessWidget { + const ExplanationGoodExamplesContainer({required this.items, super.key}) + : assert(items.length > 0); + + final List items; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + + return Column( + children: [ + _ExplanationContainerTitle( + label: AppLocalizations.of(context).explanation_section_good_examples, + foregroundColor: Colors.white, + backgroundColor: extension.success, + ), + ...items.map( + (String item) => _ExplanationBodyListItem( + icon: const icons.Check(size: 11.0), + iconBackgroundColor: extension.success, + iconPadding: EdgeInsets.zero, + example: item, + ), + ), + ], + ); + } +} + +class ExplanationBadExamplesContainer extends StatelessWidget { + const ExplanationBadExamplesContainer( + {required this.items, required this.explanations, super.key}) + : assert(items.length > 0), + assert(items.length == explanations.length); + + final List items; + final List explanations; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + + return Column( + children: [ + _ExplanationContainerTitle( + label: AppLocalizations.of(context).explanation_section_bad_examples, + foregroundColor: Colors.white, + backgroundColor: extension.error, + ), + ...items.mapIndexed( + (int position, String item) => _ExplanationBodyListItem( + icon: const icons.Close(size: 11.0), + iconBackgroundColor: extension.error, + iconPadding: EdgeInsetsDirectional.zero, + example: item, + explanation: explanations[position], + ), + ), + ], + ); + } +} + +class _ExplanationContainerTitle extends StatelessWidget { + const _ExplanationContainerTitle({ + required this.label, + required this.foregroundColor, + required this.backgroundColor, + }); + + final String label; + final Color foregroundColor; + final Color backgroundColor; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsetsDirectional.only( + start: LARGE_SPACE, + end: LARGE_SPACE, + top: MEDIUM_SPACE, + ), + child: DecoratedBox( + decoration: BoxDecoration( + color: backgroundColor, + borderRadius: ANGULAR_BORDER_RADIUS, + ), + child: Padding( + padding: const EdgeInsetsDirectional.symmetric( + horizontal: LARGE_SPACE, + vertical: SMALL_SPACE, + ), + child: Row( + children: [ + SmoothModalSheetHeaderPrefixIndicator( + color: foregroundColor, + ), + const SizedBox(width: LARGE_SPACE), + Expanded( + child: Text( + label, + style: TextStyle( + color: foregroundColor, + fontWeight: FontWeight.bold, + ), + ), + ), + ], + ), + ), + ), + ); + } +} + +class _ExplanationBodyListItem extends StatelessWidget { + const _ExplanationBodyListItem({ + required this.icon, + required this.iconBackgroundColor, + required this.iconPadding, + required this.example, + this.explanation, + }); + + final Widget icon; + final Color iconBackgroundColor; + final EdgeInsetsGeometry iconPadding; + final String example; + final String? explanation; + + @override + Widget build(BuildContext context) { + final SmoothColorsThemeExtension extension = + context.extension(); + final bool lightTheme = context.lightTheme(); + + return Padding( + padding: const EdgeInsetsDirectional.only( + start: 25.0, + end: 25.0, + top: 10.0, + ), + child: Row( + crossAxisAlignment: explanation == null + ? CrossAxisAlignment.center + : CrossAxisAlignment.start, + children: [ + SizedBox.square( + dimension: 24.0, + child: DecoratedBox( + decoration: ShapeDecoration( + shape: const CircleBorder(), + color: iconBackgroundColor, + ), + child: Padding( + padding: iconPadding, + child: icon, + ), + ), + ), + SizedBox(width: explanation != null ? 11.0 : 13.0), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (explanation != null) ...[ + Padding( + padding: const EdgeInsetsDirectional.only(start: 2.0), + child: Text( + explanation!, + style: TextStyle( + color: lightTheme + ? extension.primaryDark + : extension.primaryLight, + fontWeight: FontWeight.bold, + ), + ), + ), + const SizedBox(height: VERY_SMALL_SPACE), + ], + DecoratedBox( + decoration: BoxDecoration( + color: lightTheme + ? extension.primaryLight + : extension.primaryMedium, + borderRadius: ROUNDED_BORDER_RADIUS, + ), + child: Padding( + padding: const EdgeInsetsDirectional.symmetric( + horizontal: MEDIUM_SPACE, + vertical: BALANCED_SPACE, + ), + child: TextWithBoldParts( + text: example, + textStyle: const TextStyle(color: Colors.black), + ), + ), + ) + ], + ) + ], + ), + ); + } +} diff --git a/packages/smooth_app/pubspec.lock b/packages/smooth_app/pubspec.lock index ed850ad92243..1568f2d52689 100644 --- a/packages/smooth_app/pubspec.lock +++ b/packages/smooth_app/pubspec.lock @@ -230,34 +230,34 @@ packages: dependency: "direct main" description: name: camera - sha256: "26ff41045772153f222ffffecba711a206f670f5834d40ebf5eed3811692f167" + sha256: "413d2b34fe28496c35c69ede5b232fb9dd5ca2c3a4cb606b14efc1c7546cc8cb" url: "https://pub.dev" source: hosted - version: "0.11.0+2" + version: "0.11.1" camera_android_camerax: dependency: transitive description: name: camera_android_camerax - sha256: abcfa1ac32bd03116b4cfda7e8223ab391f01966e65823c064afe388550d1b3d + sha256: "7cc6adf1868bdcf4e63a56b24b41692dfbad2bec1cdceea451c77798f6a605c3" url: "https://pub.dev" source: hosted - version: "0.6.10+3" + version: "0.6.13" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: b5093a82537b64bb88d4244f8e00b5ba69e822a5994f47b31d11400e1db975e5 + sha256: "3f81ee3e88a79b0b010f0233d42625926299551b05d5dc995267a0b35bc33247" url: "https://pub.dev" source: hosted - version: "0.9.17+1" + version: "0.9.18" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: b3ede1f171532e0d83111fe0980b46d17f1aa9788a07a2fbed07366bbdbb9061 + sha256: "953e7baed3a7c8fae92f7200afeb2be503ff1a17c3b4e4ed7b76f008c2810a31" url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.9.0" camera_web: dependency: transitive description: @@ -310,10 +310,10 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: e0817759ec6d2d8e57eb234e6e57d2173931367a865850c7acea40d4b4f9c27d + sha256: "8a68739d3ee113e51ad35583fdf9ab82c55d09d693d3c39da1aebab87c938412" url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "6.1.2" connectivity_plus_platform_interface: dependency: transitive description: @@ -812,10 +812,10 @@ packages: dependency: "direct main" description: name: http - sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.3.0" http_parser: dependency: "direct main" description: @@ -1914,4 +1914,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.6.1 <4.0.0" - flutter: ">=3.24.0" + flutter: ">=3.27.0" diff --git a/packages/smooth_app/pubspec.yaml b/packages/smooth_app/pubspec.yaml index ce09f01c9245..f344b65d2b87 100644 --- a/packages/smooth_app/pubspec.yaml +++ b/packages/smooth_app/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: flutter_secure_storage: 9.2.4 hive: 2.2.3 hive_flutter: 1.1.0 - http: 1.2.2 + http: 1.3.0 http_parser: 4.1.2 image_picker: 1.1.2 iso_countries: 2.2.0 @@ -65,7 +65,7 @@ dependencies: webview_flutter_wkwebview: 3.16.3 flutter_custom_tabs: 2.1.0 flutter_image_compress: 2.4.0 - connectivity_plus: 6.1.1 + connectivity_plus: 6.1.2 dart_ping: 9.0.1 dart_ping_ios: 4.0.2 flutter_animation_progress_bar: 2.3.1 @@ -87,7 +87,7 @@ dependencies: # We use two different scanning engines, # mobile scanner powered by ML Kit for the Play Store and Apple App Store, # but qr_code_scanner which uses the open source ZXing for F-Droid - camera: 0.11.0+2 + camera: 0.11.1 scanner_shared: path: ../scanner/shared