addLocale method
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);
}