messages 0.1.0
messages: ^0.1.0 copied to clipboard
A lightweight modular library for localization (l10n) functionality.
A lightweight modular library for localization (l10n) functionality.
Goals #
To enable localization which supports
- Localized file update without recompile,
- Easy and safe use through named method and argument generation,
- Small file size, treeshaking both unused locales and unused messages.
Status - experimental #
- Serialize to binary: -
- Serialize to JSON: ✔️
- Deserialize JSON: ✔️
- Deserialize JSON using browser JS: -
- Deserialize binary: -
- Tree shake message files: -
Partitioning #
The package is partitioned to allow a package to consume some parts of the library only as a dev_dependency, not including the message building and serialization packages in the dependencies for the application.
messages #
Contains the interface for a MessageList and the different subtypes of Messages as well as the functionality to parse a data file into a MessageList.
messages_builder #
The builder to generate the named methods and data files from the input arb translation files. Has a dependency on messages_serializer and messages.
messages_serializer #
The logic for serializing arb message files into data files.
Example #
Given translation message files such as these .arbs:
{
"@@locale":"en",
"@@context": "AboutPage",
"aboutMessage": "About {website}",
"@aboutMessage": {
"placeholders": {
"website" : {
"type":"string"
}
}
}
}
{
"@@locale":"fr",
"@@context": "AboutPage",
"aboutMessage": "À propos de {website}",
}
insert the message in your Dart application through
import 'dart:io';
import 'package:example/aboutpage_arb_file.g.dart';
import 'package:messages/messages_native.dart';
import 'package:messages/package_intl_object.dart';
void main() {
final aboutPageMessages = AboutPageMessages(
(String id) => File('lib/$id').readAsBytesSync(),
OldIntlObject(),
);
aboutPageMessages.loadLocale('fr');
print(aboutPageMessages.aboutMessage(website: 'mywebsite.com')); // 'À propos de mywebsite.com'
aboutPageMessages.loadLocale('en');
print(aboutPageMessages.aboutMessage(website: 'mywebsite.com')); // 'About mywebsite.com'
}