generateClassBody method
Generate class body only (no file header). Used by builder for inline mode.
Implementation
String generateClassBody(LocalizationSheet sheet) {
final buffer = StringBuffer();
final className =
'${StringUtils.sanitizeClassName(sheet.name)}Localizations';
buffer.writeln('class $className {');
buffer.writeln(' final String _languageCode;');
buffer.writeln();
buffer.writeln(' const $className(this._languageCode);');
buffer.writeln();
for (final translation in sheet.translations) {
final methodName = StringUtils.sanitizeMethodName(translation.key);
buffer.writeln(' /// Translation for key: ${translation.key}');
final params = _paramsFor(translation);
final paramSet = params.toSet();
final defaultTranslation = translation.values.values.first;
if (params.isNotEmpty) {
final paramList = params.map((p) => 'dynamic $p').join(', ');
buffer.writeln(' String $methodName({$paramList}) {');
} else {
buffer.writeln(' String get $methodName {');
}
buffer.writeln(' switch (_languageCode) {');
for (final languageCode in sheet.languageCodes) {
final translatedValue = translation.values[languageCode] ?? '';
buffer.writeln(" case '$languageCode':");
buffer.writeln(' return ${_literal(translatedValue, paramSet)};');
}
buffer.writeln(' default:');
buffer.writeln(' return ${_literal(defaultTranslation, paramSet)};');
buffer.writeln(' }');
buffer.writeln(' }');
buffer.writeln();
}
buffer.writeln('}');
return buffer.toString();
}