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

@@ -0,0 +1,37 @@
import 'package:cubetiq/i18n_translator.dart';
import 'package:cubetiq/src/xlog/xlog.dart';
import 'package:cubetiq/text.dart';
import 'package:test/test.dart';
void main() {
test('test translate function', () {
var text1 = 'Hello, my name is {0}!';
var result1 = TextFormatter(text1).translate().format(args: ['Sambo']);
XLog.success(result1);
expect('Hello, my name is Sambo!', result1);
TranslatorFactory.setProvider(TranslatorProviderExample());
result1 = TextFormatter(text1).translate().format(args: ['Sambo']);
XLog.success(result1);
expect('ឈ្មោះរបស់អ្នកគឺ Sambo!', result1);
});
}
class TranslatorProviderExample implements TranslatorProvider {
@override
bool hasKey(String key) {
return false;
}
@override
String translate(String key,
{Map<String, dynamic>? params, String? fallback}) {
if (key == 'Hello, my name is {0}!') {
return 'ឈ្មោះរបស់អ្នកគឺ {0}!';
}
return key;
}
}

View File

@@ -4,10 +4,10 @@ import 'package:test/test.dart';
void main() {
test('text formatter function format', () {
var text1 = 'Hello, {0}!';
var result1 = TextFormatter(text1).format(['Sambo']);
var result1 = TextFormatter(text1).format(args: ['Sambo']);
var text2 = 'Hello, {name}!';
var result2 = TextFormatter(text2).decorate({'name': 'Chea'});
var result2 = TextFormatter(text2).decorate(params: {'name': 'Chea'});
expect('Hello, Sambo!', result1);
expect('Hello, Chea!', result2);