smooth-app
smooth-app copied to clipboard
Add the product main language to the details page (write)
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 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.
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 Shall i add the main language option in this page after the website field.
@monsieurtanuki Shall i add the main language option in this page after the website field.
@Azad99-9 Yes, something like that.
@monsieurtanuki added the product specific language selector in the other details section and this is what it looks like.
any followups?
@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 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 Not really sure what you mean but:
- there is one single field in a product, called
lang
, a potentiallynull
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
Yeah that was comprehensive, go it.👍
@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
- 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.
- 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?
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 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?.
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 may i know what is the difference between "product query language" and product.lang.
@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.
Is there any update on this issue @Azad99-9?
Kindly unassign me this issue.
@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?
@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.
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 That's correct!
@abdullah-khudher Still working on it?
Can I take that issue?
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.
Hey @monsieurtanuki
I think that I got it, let me make it more visual just for clarification purposes.
So I created this mockup:
The idea is to have the capability to define the product's main language right?
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
The proper wording is "Main product language"
Agreed!
This is how is going to look:
Feel free to share your thoughts
@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
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?