Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: new localized label 'sep' as separator before colon (especially in French) #3753

Merged
merged 7 commits into from
Mar 2, 2023
6 changes: 5 additions & 1 deletion packages/smooth_app/lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"@Utils": {},
"sep": "",
"@sep": {
"description": "Separator just before a colon (':'). Probably only populated in French and empty in other languages."
},
Comment on lines +3 to +6
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've read the discussion in the other PR but do we really need this, shouldn't these spaces be added in the Strings itself as you did in the app_fr.arb

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@M123-dev You're right, we don't need it as long as we have full sentences already localized.

But if we want to build a String with very specific business rules, we need this extra label. Off server needed it. And that would be used in the referenced PR.

Should the referenced PR use a colon rather than a comma, that's another story.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the server side, there are many places where we display a field name, a colon and a value. (e.g. "Categories: Coffees"). We do that with something that looks like [field name][sep]: [value], so that in French we can have "Catégories : Cafés".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't say why but that's never happened before in Smoothie.
Perhaps because we rather concatenate Widgets than Strings, or because the most verbose things come directly from the server as KP.

"yes": "Yes",
"@yes": {},
"add": "Add",
Expand Down Expand Up @@ -811,7 +815,7 @@
"placeholders": {
"version": {
"type": "String?",
"description": "Version of IOS (eg : 15)"
"description": "Version of IOS (eg: 15)"
},
"model": {
"type": "String?",
Expand Down
38 changes: 21 additions & 17 deletions packages/smooth_app/lib/l10n/app_fr.arb
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"@Utils": {},
"sep": " ",
"@sep": {
"description": "Separator just before a colon (':'). Probably only populated in French and empty in other languages."
},
"yes": "Oui",
"@yes": {},
"add": "Ajouter",
Expand Down Expand Up @@ -211,7 +215,7 @@
"sign_up_page_email_hint": "Courriel",
"sign_up_page_email_error_empty": "Une adresse est requise",
"sign_up_page_email_error_invalid": "E-mail invalide",
"sign_up_page_username_hint": "Nom d'utilisateur : visible publiquement",
"sign_up_page_username_hint": "Nom d'utilisateur : visible publiquement",
"sign_up_page_username_error_empty": "Veuillez saisir un nom d'utilisateur",
"sign_up_page_username_error_invalid": "Veuillez saisir un nom d'utilisateur valide",
"sign_up_page_username_description": "Le nom d'utilisateur ne peut pas contenir d'espaces, de majuscules ou de caractères spéciaux.",
Expand Down Expand Up @@ -456,7 +460,7 @@
"@ingredients_photo": {
"description": "Button label: For adding a picture of the Ingredients of a product"
},
"packaging_editing_instructions": "Listez toutes les pièces d'emballage séparées par une virgule ou un saut de ligne, avec leur quantité (par exemple 1 ou 6) type (par exemple bouteille, boîte, canette), matériau (par exemple plastique, métal, aluminium) et si disponible leur taille (par exemple 33cl) et consignes de recyclage.\nExemple : 1 bouteille en verre à recycler, 1 bouchon en plastique à jeter",
"packaging_editing_instructions": "Listez toutes les pièces d'emballage séparées par une virgule ou un saut de ligne, avec leur quantité (par exemple 1 ou 6) type (par exemple bouteille, boîte, canette), matériau (par exemple plastique, métal, aluminium) et si disponible leur taille (par exemple 33cl) et consignes de recyclage.\nExemple : 1 bouteille en verre à recycler, 1 bouchon en plastique à jeter",
"packaging_editing_error": "Échec de l'enregistrement de l'emballage.",
"packaging_editing_image_error": "Impossible d'obtenir une nouvelle image d'emballage.",
"packaging_editing_title": "Modifier l'emballage",
Expand Down Expand Up @@ -575,7 +579,7 @@
"@more_photos": {},
"no_product_found": "Aucun produit trouvé",
"@no_product_found": {},
"not_found": "non trouvé :",
"not_found": "non trouvé :",
"searchPanelHeader": "Recherchez ou scannez votre premier produit",
"@Product query status": {},
"refreshing_product": "Actualisation du produit",
Expand Down Expand Up @@ -603,7 +607,7 @@
"description": "The product data couldn't be refreshed"
},
"product_internet_error": "Impossible de récupérer les informations sur ce produit en raison d'une erreur réseau.",
"cached_results_from": "Résultats mis en cache depuis :",
"cached_results_from": "Résultats mis en cache depuis :",
"@cached_results_from": {
"description": "Cached results from: x time ago (time ago should not be added to the string)"
},
Expand All @@ -630,7 +634,7 @@
"@product_improvement_categories_but_no_nutriscore": {
"description": "Message for ProductImprovement.CATEGORIES_BUT_NO_NUTRISCORE"
},
"product_improvement_obsolete_nutrition_image": "L'image des informations nutritionnelles est obsolète : veuillez la mettre à jour.",
"product_improvement_obsolete_nutrition_image": "L'image des informations nutritionnelles est obsolète : veuillez la mettre à jour.",
"@product_improvement_obsolete_nutrition_image": {
"description": "Message for ProductImprovement.OBSOLETE_NUTRITION_IMAGE"
},
Expand Down Expand Up @@ -767,7 +771,7 @@
"@permissions_page_body2": {
"description": "second paragraph for the camera permission's page (onboarding)"
},
"contact_form_body_android": "Système d'exploitation : Android (SDK Int : {sdkInt} / Version : {release})\nModèle : {model}\nProduit : {product}\nAppareil : {device}\nMarque : {brand}",
"contact_form_body_android": "Système d'exploitation : Android (SDK Int : {sdkInt} / Version : {release})\nModèle : {model}\nProduit : {product}\nAppareil : {device}\nMarque : {brand}",
"@contact_form_body_android": {
"description": "Contact form content for Android devices",
"placeholders": {
Expand Down Expand Up @@ -797,13 +801,13 @@
}
}
},
"contact_form_body_ios": "OS : iOS ({version})\nModèle : {model}\nModèle localisé : {localizedModel}",
"contact_form_body_ios": "OS : iOS ({version})\nModèle : {model}\nModèle localisé : {localizedModel}",
"@contact_form_body_ios": {
"description": "Contact form content for iOS devices",
"placeholders": {
"version": {
"type": "String?",
"description": "Version of IOS (eg : 15)"
"description": "Version of IOS (eg: 15)"
},
"model": {
"type": "String?",
Expand Down Expand Up @@ -933,7 +937,7 @@
"description": "When the user is not connected"
},
"user_profile_subtitle_guest": "Connectez-vous ou inscrivez-vous pour rejoindre la communauté Open Food Facts",
"user_profile_title_id_email": "Identifiant Open Food Facts : {email}",
"user_profile_title_id_email": "Identifiant Open Food Facts : {email}",
"@user_profile_title_id_email": {
"description": "User login (when it's an email)",
"placeholders": {
Expand Down Expand Up @@ -984,7 +988,7 @@
"@camera_mode_title": {
"description": "Title for the mode for the camera/scanner"
},
"camera_mode_subtitle": "Ne modifiez cette valeur que si vous rencontrez des problèmes avec le scanner (impossible de décoder les codes-barres). Appuyez pour basculer entre les deux modes.\nLe mode actuel est : {mode}",
"camera_mode_subtitle": "Ne modifiez cette valeur que si vous rencontrez des problèmes avec le scanner (impossible de décoder les codes-barres). Appuyez pour basculer entre les deux modes.\nLe mode actuel est : {mode}",
"@camera_mode_subtitle": {
"description": "SubTitle for the mode for the camera/scanner",
"placeholders": {
Expand Down Expand Up @@ -1137,7 +1141,7 @@
"@edit_product_form_item_emb_codes_hint": {
"description": "Product edition - Traceability Codes - input textfield hint"
},
"edit_product_form_item_emb_codes_explanations": "En Europe, le code est une ellipse contenant les deux initiales du pays suivies par un nombre et CE.\nExemples : EMB 53062, FR 62.448.034 CE, 84 R 20, 33 RECOLTANT 522",
"edit_product_form_item_emb_codes_explanations": "En Europe, le code est une ellipse contenant les deux initiales du pays suivies par un nombre et CE.\nExemples : EMB 53062, FR 62.448.034 CE, 84 R 20, 33 RECOLTANT 522",
"@edit_product_form_item_emb_codes_examples": {
"description": "Product edition - EMB Codes - explanations"
},
Expand Down Expand Up @@ -1319,7 +1323,7 @@
"@dev_preferences_test_environment_title": {
"description": "User dev preferences - Info about test environment - Title"
},
"dev_preferences_test_environment_subtitle": "URL de base actuelle pour l'environnement de test : {url}",
"dev_preferences_test_environment_subtitle": "URL de base actuelle pour l'environnement de test : {url}",
"@dev_preferences_test_environment_subtitle": {
"description": "User dev preferences - Info about test environment - Value",
"placeholders": {
Expand Down Expand Up @@ -1377,7 +1381,7 @@
"description": "User dev preferences - Negative button label"
},
"dev_preferences_migration_title": "Migration des données depuis la V1",
"dev_preferences_migration_subtitle": "Statut : {status}",
"dev_preferences_migration_subtitle": "Statut : {status}",
"@dev_preferences_migration_subtitle": {
"placeholders": {
"status": {
Expand Down Expand Up @@ -1407,7 +1411,7 @@
"@dev_mode_scan_mode_title": {
"description": "User dev preferences - Scan mode - Title"
},
"dev_mode_scan_mode_subtitle": "Le mode de scan actuel est : « {mode} »",
"dev_mode_scan_mode_subtitle": "Le mode de scan actuel est : « {mode} »",
"@dev_mode_scan_mode_subtitle": {
"description": "User dev preferences - Scan mode - Subtitle",
"placeholders": {
Expand Down Expand Up @@ -1588,7 +1592,7 @@
"@confirm_clear": {
"description": "Asking about whether to clear the history list or not"
},
"confirm_clear_user_list": "Vous êtes sur le point d'effacer cette liste ({name}) : êtes-vous sûr de vouloir continuer ?",
"confirm_clear_user_list": "Vous êtes sur le point d'effacer cette liste ({name}) : êtes-vous sûr de vouloir continuer ?",
"@confirm_clear_user_list": {
"description": "Asking about whether to clear the list or not",
"placeholders": {
Expand All @@ -1597,7 +1601,7 @@
}
}
},
"confirm_delete_user_list": "Vous êtes sur le point de supprimer cette liste ({name}) : êtes-vous sûr de vouloir continuer ?",
"confirm_delete_user_list": "Vous êtes sur le point de supprimer cette liste ({name}) : êtes-vous sûr de vouloir continuer ?",
"@confirm_delete_user_list": {
"description": "Asking about whether to delete the list or not",
"placeholders": {
Expand All @@ -1606,7 +1610,7 @@
}
}
},
"importance_label": "{name} importance : {id}",
"importance_label": "{name} importance : {id}",
"@importance_label": {
"description": "Used when user selects a food preference. example: Vegan importance; mandatory",
"placeholders": {
Expand Down