@gram-lang/i18n
Ce package centralise la normalisation des unités/du temps et les dictionnaires de chaînes UI, exploités en interne par tout le pipeline (le parser ne normalise pas les unités : cela se fait lors du scaling dans @gram-lang/kitchen et de la standardisation des masses dans @gram-lang/analyzer). Le but : que "càs", "tbsp" et "cuillère à soupe" soient toujours reconnus comme la même unité, peu importe la locale utilisée pour rédiger la recette ou la base de données.
Unités canoniques & alias
Section intitulée « Unités canoniques & alias »normalizeUnit fait correspondre tout alias reconnu (anglais ou français, insensible à la casse) à sa forme canonique courte :
| Canonique | Alias |
|---|---|
tsp | càc, cac, c.à.c, cuillère à café, cuillères à café, cuillere a cafe, cuilleres a cafe |
tbsp | càs, cas, c.à.s, cuillère à soupe, cuillères à soupe, cuillere a soupe, cuilleres a soupe |
tad | soupçon, soupcons |
dash | trait |
pinch | pincée, pincee, pincées, pincees |
smidgen | poussière, poussiere, poussières, poussieres |
drop | goutte, gouttes |
fl oz | once liquide, onces liquides |
ml | millilitre, millilitres |
cl | centilitre, centilitres |
dl | décilitre, décilitres, decilitre, decilitres |
l | litre, litres |
tasse | tasse, tasses |
mg | milligramme, milligrammes |
g | gramme, grammes |
kg | kilo, kilos, kilogramme, kilogrammes |
livre | livre, livres |
oz | once, onces |
Une unité non reconnue est simplement retournée en minuscules, expurgée de ses espaces superflus (trim).
Unités de temps
Section intitulée « Unités de temps »Le même principe de normalisation via alias, appliqué cette fois aux durées :
| Canonique | Alias |
|---|---|
d | j, jour, jours |
h | heure, heures |
m | min, mins, minute, minutes |
s | sec, secs, seconde, secondes |
Catégories d’ingrédients par défaut
Section intitulée « Catégories d’ingrédients par défaut »Catégories de repli exploitées par gram shop (et d’autres consommateurs) pour regrouper la liste de courses par famille culinaire, lorsqu’un ingrédient de la base n’a pas de category explicite :
| Catégories par défaut |
|---|
| Légumes |
| Fruits |
| Viandes |
| Poissons & Fruits de mer |
| Crémerie |
| Céréales |
| Légumineuses |
| Noix & Graines |
| Huiles |
| Herbes |
| Épices |
| Condiments |
| Sucres |
| Boissons |
| Autres |
CATEGORY_KEYS exporte les clés stables, invariantes par langue (produce, dairy, meat, pantry, …). La fonction getCategoryLabels(lang) permet ensuite de résoudre ces clés en libellés traduits :
Tables de conversion d’unités
Section intitulée « Tables de conversion d’unités »@gram-lang/i18n fait office de source de vérité unique (Single Source of Truth) pour les facteurs de conversion intra-famille (UNIT_CONVERSIONS) et les multiplicateurs de durée en minutes (TIME_TO_MINUTES) :