Line 17: |
Line 17: |
| | | |
| * Products that have different labels in different languages, with the same barcode | | * Products that have different labels in different languages, with the same barcode |
− | ** will be addressed by [[Project:Product versions]] | + | ** will be addressed by [[Project:Product versions and history]] |
| * Products that have different labels in different languages, with a different barcode | | * Products that have different labels in different languages, with a different barcode |
| ** we simply store them as different products | | ** we simply store them as different products |
Line 23: |
Line 23: |
| * Translating ingredients | | * Translating ingredients |
| ** will be addressed by ingredients taxonomy | | ** will be addressed by ingredients taxonomy |
| + | |
| + | == Current status == |
| + | |
| + | === Data entry === |
| + | |
| + | * There is a field to indicate the "main" language of a product |
| + | ** Values entered in the product edit form are considered to be in the "main" language of the product |
| + | ** Values entered in fields for which we have a taxonomy (categories, countries, labels, traces) are mapped according to the "main" language of the product |
| + | *** e.g. entering "jus de fruits" in the categories field when the main language is set to French will result in en:fruit-juices to be assigned. |
| + | * Values for nutrition facts are global and assigned to a canonical field |
| + | ** Except when the nutrient's name is unknown (i.e. not in our current nutrient taxonomy) |
| + | * Images are selected/cropped for the "main" language of the product (product front, ingredients and nutrition facts) |
| + | |
| + | === Data display === |
| + | |
| + | * Fields for which we have a taxonomy (categories, countries, labels, traces) are displayed in the target language. (target language is set by the subdomain, e.g. using http://world.openfoodfacts.org , we will see categories in English even for French products, using http://es.openfoodfacts.org will result in Spanish) |
| + | ** Only if the category exists in the taxonomy |
| + | ** Only if the target language exists for this category in the taxonomy |
| + | *** If the target language doesn't exist, English is used to display the field value |
| + | * Nutrition facts are displayed in the target language |
| + | * Fields without a taxonomy are displayed in the language they were entered in |
| + | ** common name, quantity, packaging, brands, origin of ingredients, manufacturing or processing places, city/state/country, stores, link to the product page, best before date |
| + | ** ingredients |
| + | * Images for product front, ingredients and nutrition facts are for the main language of the product (and not the target language) |
| + | |
| + | |
| + | == Solution == |
| + | |
| + | === Data entry === |
| + | |
| + | * Taxonomize as many fields as possible |
| + | ** Taxonomized field need to be completed in only one language |
| + | ** Packaging, origins of ingredients, purchase places |
| + | *** Note: packaging and purchase places do not correspond to text on the label |
| + | * Enable users to enter data for more than one language: |
| + | ** Select different images or different part of the images for product front, ingredients and nutrition facts |
| + | ** Enter data (text) for more than one language |
| + | |
| + | === Data display === |
| + | |
| + | * Taxonomized fields will be displayed in the target language |
| + | * Display other fields and pictures in the target language if the product has data in that language |
| + | * Indicate in which languages the product data is available, and provide a way to see it |
| + | |
| + | === Technical design === |
| + | |
| + | ==== Taxonomize all or most multilingual tag fields ==== |
| + | |
| + | * Packaging, origins of ingredients and purchase places are tag fields (they contain comma separated values) that are not yet taxonomized |
| + | * The existing taxonomy system will take care of the mapping between different languages |
| + | * The taxonomies need to be created or completed |
| + | * To be determined: what to do with brands? |
| + | ** Typically not translated |
| + | *** But exceptions exist |
| + | ** Could benefit from being taxonomized in order to have a hierarchy |
| + | |
| + | |
| + | ==== Selection/crop of images in more than one language |
| + | |
| + | * For product, ingredients and nutrition facts |
| + | |
| + | ==== Entry of fields in more than one language |
| + | |
| + | * Keep all exisiting fields as-is |
| + | ** e.g. ingredients, generic_name etc. |
| + | ** "ingredients_text":"Chocolate, milk" |
| + | ** For compatibility and to enable incremental implementation and deployment |
| + | * Create new fields suffixed by _lang, with a hash |
| + | ** "ingredients_text_lang":{"en":"Chocolate, milk", "fr":"Chocolat, lait"} |
| + | * Create new languages field |
| + | ** Hash that contains languages for which we have values for at least one field |
| + | ** "languages":{"en":"1", "fr":"1"} |