Skip to content

A flexible internationalization library working with JSON files in Haxe.

License

Notifications You must be signed in to change notification settings

HacksawStudios/jsoni18n

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsoni18n

A flexible internationalization library working with JSON files in Haxe.

Build Status

Installation

Haxelib:

haxelib install jsoni18n

OpenFL project XML file:

<haxelib name="jsoni18n" />

OpenFL project HXP file:

haxelibs.push(new Haxelib("jsoni18n"));

Haxe command line arguments:

haxe -lib jsoni18n ...

Usage

JSON files

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." }
    },
    "secret": {
        "intro": "It's a secret page! Do you have authorization?"
    }
}

Basics

There's only one import:

import jsoni18n.I18n;

Initialization:

var i18n : I18n = new I18n();

For the following examples, we assume you do something like this:

// it could be Reg.lang, context.userLang, App.instance.settings["currentLanguage"] or ...
var lang : String = myGetCurrentLanguage();

Then you load data:

var jsonFileContent : String = myLangFileLoader();
// or if you use OpenFL:
// var jsonFileContent : String = Assets.getText(filename);
i18n.loadFromString(jsonFileContent);

Now, to translate something:

var hello : String = i18n.tr("welcome/hello");

Prefix

You can add prefixes to keys from all data fetched by loadFromString() like this:

i18n.loadFromString(data, "ui/");
i18n.tr("ui/welcome/hello"); // Hoy!

Variables

You can pass variables to strings returned by tr() like this:

i18n.tr("welcome/subtitle", [ "name" => "Nekith" ]); // Welcome, Nekith!

Pluralization

It also handles pluralization for your convenience.

i18n.tr("news/list", [ "_" => 0 ]); // Nothing to display.
i18n.tr("news/list", [ "_" => 12 ]); // 12 new items.

Configuration

i18n.depthDelimiter    =  ".";  // default: "/"
i18n.varPrefix         =  "@";  // default: ":"
i18n.pluralizationVar  =  "*";  // default: "_"

License

3-clause BSD. See LICENSE file.

Development

Github issues are open if you have suggestions or bugs to report.

Tests

haxelib dev jsoni18n .
cd tests
haxe -main Main -lib jsoni18n -cpp build
cd build
./Main

Tested against:

  • 3.4.7
  • 3.4.6

About

A flexible internationalization library working with JSON files in Haxe.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Haxe 100.0%