🌐 I18n
The i18n module has been designed exclusively for the Mineral framework, it allows you to translate your textual content through yaml files.
Register the module
After installing the module, please register it within ./src/main.dart
following the scheme below :
Future<void> main () async {
final i18n = I18n([Lang.fr, Lang.enGB]);
Kernel kernel = Kernel()
..intents.defined(all: true)
..plugins.use([i18n]);
await kernel.init();
}
Translate your textual content
As a first step, please create a lang
folder containing {lang}.yaml
translation files.
We consider the following software structure :
lang/
foo/
fr.yaml
en.yaml
The files will contain the following keys :
# lang/foo/fr.yaml
bar: bar en français !
# lang/foo/en.yaml
bar: bar in english !
Then we can use the t()
function to translate our key path.
import 'package:mineral_i18n/mineral_i18n.dart';
class Foo extends MineralEvent<Ready> with Translation {
Future<void> handle (Ready event) async {
final String sentence = t(Lang.fr, 'foo.bar');
print(sentence); // bar en français !
final String sentence = t(Lang.en_GB, 'foo.bar');
print(sentence); // bar in english !
}
}
Injecting variables
The i18n module integrates the possibility of using variables thanks to special characters which will be replaced by the associated variable.
We consider the file lang/foo/en.yaml
as containing the following key set :
bar: {framework} is my favourite framework !
Our string is now waiting for a variable named xx which we will give it when we call the t()
function.
import 'package:mineral_i18n/mineral_i18n.dart';
class Foo extends MineralEvent<Ready> with Translation {
Future<void> handle (Ready event) async {
final String sentence = t(Lang.en_GB, 'foo.bar', { 'framework': 'Mineral' });
print(sentence); // Mineral is my favourite framework !
}
}