addLocale method

Future<void> addLocale(
  1. String locale
)

Creates a new empty locale file.

Implementation

Future<void> addLocale(String locale) async {
  final normalizedLocale = locale.trim().replaceAll('-', '_');

  // Validate locale code format
  final localePattern = RegExp(r'^[a-zA-Z]{2,3}(?:_[a-zA-Z0-9]{2,8})*$');
  if (!localePattern.hasMatch(normalizedLocale)) {
    throw CatalogOperationException(
      'Invalid locale code "$locale". Use format like "en", "en_US", or "zh_CN".',
    );
  }

  final dataset = await _repository.load();
  if (dataset.locales.contains(normalizedLocale)) {
    throw CatalogOperationException('Locale "$normalizedLocale" already exists.');
  }

  await _repository.createLocaleFile(normalizedLocale);
}