public static function snakePlural(string $value): string
    {
        if (isset(self::$snakePluralCache[$value])) {
            return self::$snakePluralCache[$value];
        }

        $snake_case = self::convertCamelCaseToSnakeCase($value);
        $snakeCaseEx = explode('_', $snake_case);

        $plural = '';
        foreach ($snakeCaseEx as $word) {
            if ($word !== '') {
                if (substr($word, -1, mb_strlen($word)) === 'y') {  // si finit par "y" ...
                    $w = substr($word, 0, -1);
                    $test = substr($word, -2, mb_strlen($word));
                    if (preg_match("/^[BCDFGHJKLMNPQRSTVWXZ]+y$/i", $test)) {
                        $plural .= '_'.$w.'ies';  // ... si finit par "consonne + y" -> mettre "ies" à la place
                    } else {
                        $plural .= '_'.$word.'s';  // ... si finit par "voyelle + y" -> mettre "ys" à la place
                    }
                } elseif (substr($word, -1, mb_strlen($word)) === 'o') {
                    $plural .= '_'.$word.'es';  // si finit par "o" -> mettre "oes" à la place
                } else {
                    $plural .= '_'.$word.'s';  // si non, ajouter un "s"
                }
            }
        }

        return self::$snakePluralCache[$value] = trim($plural, '_');
    }