Giter Site home page Giter Site logo

jsonlang's Introduction

JSONLang

sampctl

Dependencies

Installation

Simply install to your project:

sampctl package install Tiaansu/JSONLang

Include in your code and begin using the library:

#include <JSONLang>

Usage

This package works by loading json files from I18n folder in the root directory.

These file should have the same keys, see the I18n directory in the repo for an example.

Loading JSON Languages

To load a language from a json file, use InitJsonLanguageFromFile with just the language filename (including extension), not the full file path. For example InitJsonLanguageFromFile("en-US.lang.json"); loads the I18n/en-US.lang.json file.

You could also combine this with the fsutil plugin and iterate through the I18n directory.

new
    Directory:dir = OpenDir("I18n"),
    entry[256],
    ENTRY_TYPE:type,
    name[64]
;

while (DirNext(dir, type, entry))
{
    if (type == E_REGULAR)
    {
        PathBase(entry, name);

        InitJsonLanguageFromFile(name);
    }
}

CloseDir(dir);

or just by simply using InitJsonLanguages() in OnGameModeInit.

Using JSON Language Strings

Now you've loaded json languages, you can use strings from each json language with the GetJsonLanguageString(json_lang_id, const key[], bool:encode = false) function. The first parameter is the language ID, which you can obtain via name with GetJsonLanguageID.

For Example:

SendClientMessage(playerid, -1, GetJsonLanguageString(GetJsonLanguageID("en-US"), "greet"));

Would send the string from en-US keyed by greet.

Per-Player Language

You can store a language ID for each player with SetPlayerJsonLanguage and retrieve it with GetPlayerJsonLanguage. For example, your server could display a list of languages in a dialog with GetJsonLanguageList and when the player selects a language, call SetPlayerJsonLanguage with their selection and then in future you can use GetPlayerJsonLanguage to obtain the language ID that player selected.

There is also a useful macro @L(playerid, key[]) which you can use to quickly get a string for a player using their assigned language ID.

SendClientMessage(playerid, -1, @L(playerid, "greet"));

Testing

To test, simply run the package:

sampctl package run

jsonlang's People

Contributors

tiaansu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.