Task: Add i18n translator and factory for translatable for text formatter and default factory

This commit is contained in:
2021-06-17 15:25:40 +07:00
parent 84c0e44b87
commit 5915aafb95
12 changed files with 154 additions and 16 deletions

View File

@@ -3,8 +3,8 @@ import 'package:cubetiq/text.dart';
void main(List<String> args) {
var text1 = 'Hello, {0}, then do this it by {1}!';
var text2 = 'Hello, {firstName}, then do this it by {lastName}!';
var result1 = TextFormatter(text1).format(['Sambo', 'Chea']);
var result2 = TextFormatter(text2).decorate({
var result1 = TextFormatter(text1).format(args: ['Sambo', 'Chea']);
var result2 = TextFormatter(text2).decorate(params: {
'firstName': 'Sambo',
'lastName': 'Chea',
});

View File

@@ -0,0 +1,36 @@
import 'package:cubetiq/text.dart';
import 'package:cubetiq/i18n_translator.dart';
void main(List<String> args) {
var text = 'Your name is {name}!';
// Before set provider
var result = StringUtils.decorator(text, translate: true, params: {
'name': 'Sambo Chea',
});
print('Result Before => $result');
TranslatorFactory.setProvider(TranslatorProviderExample());
// After set provider
result = StringUtils.decorator(text, translate: true, params: {
'name': 'Sambo Chea',
});
print('Result After => $result');
}
class TranslatorProviderExample implements TranslatorProvider {
@override
bool hasKey(String key) {
return false;
}
@override
String translate(String key,
{Map<String, dynamic>? params, String? fallback}) {
if (key == 'Your name is {name}!') {
return 'ឈ្មោះរបស់អ្នកគឺ {name}!';
}
return key;
}
}