blob: 261e05dda9deb436c84a239e7f9dbb1662f33edf [file] [log] [blame] [edit]
// Generated by package:messages_builder.
// ignore_for_file: library_prefixes, non_constant_identifier_names
// ignore_for_file: unused_import
import 'package:intl/intl.dart';
import 'package:messages/messages_json.dart';
import 'HomePage_de_empty.g.dart' deferred as HomePage_de_empty;
import 'HomePage_en_empty.g.dart' deferred as HomePage_en_empty;
class HomePageMessages {
HomePageMessages(this._assetLoader);
final Future<String> Function(String id) _assetLoader;
String _currentLocale = 'en';
final Map<String, MessageList> _messages = {};
static const _dataFiles = {
'de': ('packages/example/assets/testarb_de.arb.json', 'hbDN1MhX'),
'en': ('packages/example/assets/testarb.arb.json', 'dr9Md951')
};
String get currentLocale => _currentLocale;
MessageList get _currentMessages => _messages[currentLocale]!;
String getById(
String id, [
List<dynamic> args = const [],
]) {
return _currentMessages.generateStringAtId(id, args);
}
static Iterable<String> get knownLocales => _dataFiles.keys;
Future<void> loadLocale(String locale) async {
if (!_messages.containsKey(locale)) {
final info = _dataFiles[locale];
final dataFile = info?.$1;
if (dataFile == null) {
throw ArgumentError('Locale $locale is not in $knownLocales');
}
if (locale == 'de') {
await HomePage_de_empty.loadLibrary();
} else if (locale == 'en') {
await HomePage_en_empty.loadLibrary();
}
final data = await _assetLoader(dataFile);
final messageList = MessageListJson.fromString(data, _pluralSelector);
if (messageList.preamble.hash != info?.$2) {
throw ArgumentError('''
Messages file for locale $locale has different hash "${messageList.preamble.hash}" than generated code "${info?.$2}".''');
}
_messages[locale] = messageList;
}
_currentLocale = locale;
}
Future<void> loadAllLocales() async {
for (final locale in knownLocales) {
await loadLocale(locale);
}
}
String helloAndWelcome(
String firstName,
String lastName,
) =>
_currentMessages.generateStringAtIndex(0, [firstName, lastName]);
String helloAndWelcome2(
String firstName,
String lastName,
) =>
_currentMessages.generateStringAtIndex(1, [firstName, lastName]);
String newMessages(int newMessages) =>
_currentMessages.generateStringAtIndex(2, [newMessages]);
String newMessages2(
String gender,
int newVar,
) =>
_currentMessages.generateStringAtIndex(3, [gender, newVar]);
}
Message _pluralSelector(
num howMany,
String locale, {
required Message other,
Message? few,
Message? many,
Map<int, Message>? numberCases,
Map<int, Message>? wordCases,
}) {
return Intl.pluralLogic(
howMany,
few: few,
many: many,
zero: numberCases?[0] ?? wordCases?[0],
one: numberCases?[1] ?? wordCases?[1],
two: numberCases?[2] ?? wordCases?[2],
other: other,
locale: locale,
);
}