writeTranslations method
Write out the translated forms.
Implementation
void writeTranslations(
Iterable<TranslatedMessage> usableTranslations,
String locale,
) {
for (var translation in usableTranslations) {
// Some messages we generate as methods in this class. Simpler ones
// we inline in the map from names to messages.
var messagesThatNeedMethods =
translation.originalMessages.where(_hasArguments).toSet().toList();
for (var original in messagesThatNeedMethods) {
output
..write(' ')
..write(
original.toCodeForLocale(locale, _methodNameFor(original.name)))
..write('\n\n');
}
}
output.write(messagesDeclaration);
// Now write the map of names to either the direct translation or to a
// method.
var names = (usableTranslations
.expand((translation) => translation.originalMessages)
.toSet()
.toList()
..sort((a, b) => a.name.compareTo(b.name)))
.map((original) => " '${Message.escapeString(original.name)}'"
': ${_mapReference(original, locale)}')
.join(',\n');
output
..write(names)
..write('\n };\n}\n');
}