A flexible internationalization library working with JSON files in Haxe.
- Does not assume the task of handling the origin/source of the translations (e.g. opening files).
- Has nothing about date localization.
- Has been made with coded strings (
welcome/hello
) as translation key in mind, not sentences in a source language (Hello!
). - No additional dependency.
Install with Haxelib:
haxelib install jsoni18n
Then, Haxe command line arguments or in a HXML file:
-lib jsoni18n
It's JSON, objects and strings:
{
"welcome": {
"hello": "Hoy!",
"subtitle": "Welcome, :name!",
"content": {
"main": "Main content should be longer but you get the idea.",
"side": "Some useful side notes to shine in society."
}
},
"news": {
"list": {
"0": "Nothing to display.",
"1": "Only one new item.",
"_": ":_ new items."
}
},
"person": {
"f": "Woman", "m": "Man", "$": "Person"
},
"secret": {
"intro": "It's a secret page! Do you have authorization?"
}
}
Import:
import jsoni18n.I18n;
Initialization:
var i18n : I18n = new I18n();
Load data:
var jsonFileContent : String = myLangFileLoader();
i18n.loadFromString(jsonFileContent);
Now, to translate something:
var hello : String = i18n.tr("welcome/hello"); // Hoy!
You can add a prefix to keys from all data fetched by loadFromString() like this:
i18n.loadFromString(data, "ui/");
i18n.tr("ui/welcome/hello"); // Hoy!
You can pass variables to strings returned by tr() like this:
i18n.tr("welcome/subtitle", [ "name" => "Nekith" ]); // Welcome, Nekith!
It also handles pluralization for your convenience.
i18n.tr("news/list", [ "_" => 0 ]); // Nothing to display.
i18n.tr("news/list", [ "_" => 12 ]); // 12 new items.
It also handles concordance for your convenience.
i18n.tr("person", [ "$" => "f" ]); // Woman
i18n.tr("person", [ "$" => "o" ]); // Person
i18n.depthDelimiter = "."; // default: "/"
i18n.varPrefix = "@"; // default: ":"
i18n.pluralizationVar = "*"; // default: "_"
i18n.concordVar = "^"; // default: "$"
3-clause BSD. See LICENSE file.
Github issues are open if you have suggestions or bugs to report.
haxelib install utest
haxelib dev jsoni18n .
cd tests
haxe -main Main -lib jsoni18n -lib utest -hl build.hl
hl build.hl
Tested against:
- Haxe 4.2.5 - HashLink 1.11.0 and JS
- Haxe 4.2.5 - hxcpp
- Haxe 4.3.3 - hxcpp