Open monsieurtanuki opened 11 months ago
@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:
null
and I don't see how it would look with your UI@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:
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 editableMap<Language, String>
, but this is not what the issue is aboutYeah 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
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:
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
:
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?
Hi @panicoli0!
There's a lot of tap dancing in your code, and that's not a good sign.
Please don't call the language selector _multilingualHelper
because in the rest of the app it means different labels for different languages. What about _mainLanguageHelper
?
Your code does not change the main language on the server because you haven't coded it. You need to include lang
in UpToDateProvider
(not 100% sure about the name) so that it's copied to the product changes sent to the server.
There may be another side-effect to fix after that, but we'll see that later.
Hey @monsieurtanuki
Agree with your suggestion I will use _mainLanguageHelper
Just for testing purposes, I tried changing the website field, saving and loading and it works!
The problem is with the _product.lang. I don't know why is not being saved the same as the website (Despite that website(string) and lang(OpenFoodFactsLanguage).
here is the code that I'm using to store the product.lang:
Any chance to have a quick call between us? I can share the branch with you.
I just checked it inside the SDK. It looks like the lang
field is read only, or that we can't set it manually. See https://github.com/openfoodfacts/openfoodfacts-dart/pull/894
Do you have an other idea how to set it monsieurtanuki, otherwise we would have to ask Stéphane.
Unrelated: @panicoli0 I'd recommend posting your email in a harder to read format like name [at] test dot com
so that scrapers are having a hard time putting you on some email lists.
Hi @panicoli0! Unfortunately I cannot dedicate that much time to that issue. In addition to that, as @M123-dev noted, for some products we cannot change the main language. Maybe it's not a "good first issue" after all :(
hey @monsieurtanuki and @M123-dev what about to add a new field, like 'main_product_language' ?
Yes @panicoli0 but that would have to be done in the server.
@stephanegigandet is there a way to set the main product language, the lang
field
@M123-dev the "lang" field is not read only on the server side
I would have a look at it but I have issues with higher priorities.
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