oxfordComma function

String oxfordComma(
  1. List<String> items, {
  2. String locale = 'en',
})

Join items using an Oxford comma in English, and no serial comma in French.

Implementation

String oxfordComma(List<String> items, {String locale = 'en'}) {
  if (items.isEmpty) return '';
  if (items.length == 1) return items.first;
  final conj = locale.toLowerCase().startsWith('fr') ? 'et' : 'and';
  final serialComma = !locale.toLowerCase().startsWith('fr');
  if (items.length == 2) return '${items[0]} $conj ${items[1]}';
  final leading = items.sublist(0, items.length - 1).join(', ');
  final comma = serialComma ? ',' : '';
  return '$leading$comma $conj ${items.last}';
}