smooth-app icon indicating copy to clipboard operation
smooth-app copied to clipboard

Add the product main language to the details page (write)

Open monsieurtanuki opened this issue 1 year ago • 38 comments

Problem

Today it's not possible in the app to see or set the product main language (LANGUAGE / lang).

Proposed solution

Add the product main language to the details page (write).

Additional context

May explain #4672

monsieurtanuki avatar Nov 06 '23 18:11 monsieurtanuki

@monsieurtanuki i would like to work on this issue, please assign it to me.

I have gone through #4672 as well, it would be more helpful if you could brief me a little bit more about this issue.

Azad99-9 avatar Nov 08 '23 17:11 Azad99-9

Hi @Azad99-9! Let's focus on the current issue. After all I think the "main language" should be added to the "other details" page (cf. "website" field). Please post a screenshot here before any PR, just to check if you are in the right direction.

monsieurtanuki avatar Nov 09 '23 07:11 monsieurtanuki

main_language_bug

@monsieurtanuki Shall i add the main language option in this page after the website field.

Azad99-9 avatar Nov 09 '23 16:11 Azad99-9

@monsieurtanuki Shall i add the main language option in this page after the website field.

@Azad99-9 Yes, something like that.

monsieurtanuki avatar Nov 09 '23 17:11 monsieurtanuki

main_language_done @monsieurtanuki added the product specific language selector in the other details section and this is what it looks like. any followups?

Azad99-9 avatar Nov 16 '23 16:11 Azad99-9

@Azad99-9 Please consider that:

  • The language can be null and I don't see how it would look with your UI
  • The label is definitely incorrect - it should rather be "Main product language"

monsieurtanuki avatar Nov 16 '23 17:11 monsieurtanuki

@monsieurtanuki just need a little more clarity, All user interface elements within the specific product range should be displayed in the main language of the product ?

Azad99-9 avatar Nov 17 '23 04:11 Azad99-9

@Azad99-9 Not really sure what you mean but:

  • there is one single field in a product, called lang, a potentially null language, that contains what we call the product "main language", and this is what the issue is about - making it visible and editable
  • beyond that, there are localized fields that are Map<Language, String>, but this is not what the issue is about

monsieurtanuki avatar Nov 17 '23 06:11 monsieurtanuki

Yeah that was comprehensive, go it.👍

Azad99-9 avatar Nov 17 '23 07:11 Azad99-9

@Azad99-9 Please consider that:

  • The language can be null and I don't see how it would look with your UI
  • The label is definitely incorrect - it should rather be "Main product language"

@monsieurtanuki

  1. I've implemented a solution to address null values by setting English as the default language whenever the value is missing or null in the field product.lang.
  2. Additionally, I've introduced a new field named "product_main_language_title" across all "arb" files, which corresponds to the string "Main product language".

Shall i raise the pull request?

Azad99-9 avatar Nov 18 '23 19:11 Azad99-9

I've implemented a solution to address null values by setting English as the default language whenever the value is missing or null in the field product.lang.

English is NOT the default. null is the default. Please imagine a solution in the language selector where the language can be null, perhaps with an additional label like "not specified".

Additionally, I've introduced a new field named "product_main_language_title" across all "arb" files

Please just edit the file that you change, in this case probably ONLY app_en.arb.

which corresponds to the string "Main product language".

That's good.

monsieurtanuki avatar Nov 18 '23 20:11 monsieurtanuki

@monsieurtanuki When a new product is being created, the language selector is automatically setting the 'product main language' field to English by default. This setup indicates that the product main language field is always assigned a value and technically cannot be null, as the language selector widget lacks an option corresponding to null.

Would it be advisable to modify the language selector widget to include an additional option, such as 'not-specified,' allowing the 'product main language' field to accommodate null values, as previously suggested?.

Azad99-9 avatar Nov 20 '23 17:11 Azad99-9

When a new product is being created, the language selector is automatically setting the 'product main language' field to English by default.

Only if that's the way you coded it. lang can be null and we have to deal with this case. Actually it's probably populated by default with the lc parameter of the first saveProduct.

This setup indicates that the product main language field is always assigned a value and technically cannot be null.

Yes it technically can: String? lang.

Would it be advisable to modify the language selector widget to include an additional option, such as 'not-specified,' allowing the 'product main language' field to accommodate null values, as previously suggested?.

That's exactly what I suggested in my previous comment: "Please imagine a solution in the language selector where the language can be null, perhaps with an additional label like "not specified"."

monsieurtanuki avatar Nov 20 '23 18:11 monsieurtanuki

@monsieurtanuki may i know what is the difference between "product query language" and product.lang.

Azad99-9 avatar Nov 20 '23 18:11 Azad99-9

@Azad99-9 In this issue it's "product MAIN language" and lang. For instance, you can query in Dutch a product in Belgium whose main language is French.

monsieurtanuki avatar Nov 20 '23 19:11 monsieurtanuki

Is there any update on this issue @Azad99-9?

abdullah-khudher avatar Dec 22 '23 20:12 abdullah-khudher

Kindly unassign me this issue.

Azad99-9 avatar Dec 22 '23 20:12 Azad99-9

@monsieurtanuki There is a product main language dropdown on the details page to choose the language when trying to add a new product.

Do you mean in some other place?

WhatsApp Image 2023-12-25 at 12 38 53 AM

WhatsApp Image 2023-12-25 at 12 42 15 AM

abdullah-khudher avatar Dec 24 '23 21:12 abdullah-khudher

@abdullah-khudher Again, there are localized fields. For each of them, there is a language selector. For instance, the name of the product is X in English and Y in French. Like in your screenshots.

AND, there's a field that contains the product MAIN language. That's what the issue is about.

monsieurtanuki avatar Dec 25 '23 10:12 monsieurtanuki

As far as I understood it (Correct me if I'm wrong): Say there is a product sold in Germany

[Example Brand] Soyamilch

We can have its name in English:

[Example brand] Soy milk

But we can specify the main language of a product, which in this case would be German, since that's what's on the product.

That's what the lang field in the product is for

M123-dev avatar Dec 27 '23 15:12 M123-dev

@M123-dev That's correct!

monsieurtanuki avatar Dec 27 '23 17:12 monsieurtanuki

@abdullah-khudher Still working on it?

monsieurtanuki avatar Jan 19 '24 07:01 monsieurtanuki

Can I take that issue?

panicoli0 avatar Mar 14 '24 12:03 panicoli0

Hi @panicoli0! You can see in that thread what needs to be done regarding UI and code. Don't hesitate to ask additional questions before sending a PR.

monsieurtanuki avatar Mar 14 '24 13:03 monsieurtanuki

Hey @monsieurtanuki I think that I got it, let me make it more visual just for clarification purposes. So I created this mockup: image

The idea is to have the capability to define the product's main language right?

panicoli0 avatar Mar 14 '24 17:03 panicoli0

The idea is to have the capability to define the product's main language right?

@panicoli0 Indeed it is. But I suggest you code in the "additional details" page (where "website" is) because:

  • two language selectors in the same page is source of confusion for users and developers
  • the "main language" field is rather a minor field and there's no reason to put it in the "basic details" page

monsieurtanuki avatar Mar 14 '24 17:03 monsieurtanuki

The proper wording is "Main product language"

teolemon avatar Mar 15 '24 08:03 teolemon

Agreed! This is how is going to look: image

Feel free to share your thoughts

panicoli0 avatar Mar 15 '24 10:03 panicoli0

@panicoli0 Not a big fan of the "Main product language" looking like a chapter title but that's the right page, that will do for the moment.

Please note that this is the only language selector case where the language may be null:

  • you'll have to deal with that
  • without much impact to the rest of the app

monsieurtanuki avatar Mar 15 '24 11:03 monsieurtanuki

I just spotted that product.lang is not editable and is always coming as default with a value of ENGLISH. I tried to save the value the same as we did for the website without success.

/// Returns a [Product] with the values from the text fields.
  Product? _getMinimalistProduct() {
    // Product()
    //   ..barcode = _product.barcode
    //   ..website = _websiteController.text;

    Product? result;
    Product getBasicProduct() => Product()
      ..barcode = _product.barcode
      ..lang = _multilingualHelper.getCurrentLanguage()
      ..website = _websiteController.text;

    if (_websiteController.isDifferentFromInitialValue) {
      result ??= getBasicProduct();
      result.website = _websiteController.text;
    }
    _multilangualHelperControllerWithHistory.text =
        _multilingualHelper.getCurrentLanguage().toString();
    if (_multilangualHelperControllerWithHistory.isDifferentFromInitialValue) {
      result ??= getBasicProduct();
      result.lang = _multilingualHelper.getCurrentLanguage();
    }
    return result;
  }

something from outside is resetting the value to ENGLISH. Any clue about it?

panicoli0 avatar Mar 18 '24 13:03 panicoli0