UNPKG

grunt-nks-i18n

Version:
388 lines (311 loc) 11.3 kB
I18n ==== * [download](#download) * [Loader supports](#loader-supports) * [config](#config) * [build json translation](#build-json-translation) * [methods](#methods) * [events](#events) * [example](#example) ## Download ```sh $ bower install nks-i18n; $ git clone https://github.com/konstantin-nizhinskiy/I18n.git; ``` ## Build json translation ### Getting Started If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: ```shell npm install grunt-nks-i18n --save-dev ``` Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: ```js grunt.loadNpmTasks('grunt-nks-i18n'); ``` ### i18n task _Run this task with the `grunt i18n` command._ Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. ### Options #### locales Type: `Array` Default: `['en']` Specify the location you want to create #### cache Type: `Boolean` Default: `true` Cache ald bundle json file before build new. Save in one cache file all keys, value #### cacheFile Type: `Boolean` Default: `true` On/off cache bundle file translation #### cacheDir Type: `String` Default: `cache/i18n/` Cache directory #### buildDoc Type: `Boolean` Default: `true` #### bundleFile Type: `Boolean` Default: `true` Saving a file translate where he was taken and placed in the cache #### typeTranslation Type: `String` Default: `json` Type build translation file (json,yml,js) #### loadJsTranslation: Type: `String` Default: ```js if (typeof define === 'function' && define.amd) { define(['i18n'], function (i18n) { return i18n.setTranslation(factory()) }) } else { i18n.setTranslation(factory()); } ``` Load function translation if you select type typeTranslation=='js' *file:* * AllKeys.md - All keys translation * AllKeysFileBuild.md - All keys file * AllKeysSize.md - All keys size translation * InfoBuild.md - Info last build translation #### reg Type: `String` Default: `(i18n\\.get\\([ ]{0,}[\'"])([A-Za-z.]+)([\'"])` This Regex finds keys in your file project ### grunt config ```js grunt.initConfig({ i18n: { options: { locales:['ua','en'] }, bundle1: { files: { 'test/translations/bundle1.min.js':[ 'test/**' ] } }, bundle2: { files: { 'test/translations/bundle2.min.js':[ 'test2/**' ] } } } }); //... ``` build file: * bundle1.min.en.json * bundle1.min.ua.json * bundle2.min.en.json * bundle2.min.ua.json ## Loader supports * AMD * CommonJS ## Config ```js i18n.setProperty({ locale: 'EN', // location on localeDefault: 'EN', //locale on default if key of main locale is empty versionJson: '1.1.1', // versionJson add to url params load file translation defaultValue: '' // You can set default value for translated }); ``` ## Methods Method | Arguments | info ----------------------|----------------------------|------------------------ changeLocale | locale,[callback] | Change locale get | key, [params], [option] | Get translations getByData | params, [option] | Get translations by data param set in function getLocale | | Get locale now load | url, [callback] | Load translations JSON setProperty | params | Set property i18n on | event, callback | Bind event callback off | event, [callback] | Unbind event callback once | event, callback | Bind once event callback trigger | event, param1,... | Trigger event ### Method changeLocale Change locale #### Arguments Arguments | Type | info ----------------|-----------|------------------------ locale | string | locale [ua,en...] callback | function | Callback on success change locale #### Events Events | Arguments | info ----------------|-----------|------------------------ changeLocale | locale | Event on success change locale #### Example ```js i18n.on("changeLocale",function(locale) { console.log("Event changeLocale",locale) }); i18n.changeLocale('en'); i18n.changeLocale('en',function(){console.log("run callback in function")}); ``` ### Method get Get translations #### Arguments Arguments | Type | info ----------------------|-----------|------------------------ key | string | Key translation params | function | Params merge with translation messengers option | object | Options translation option.defaultValue | string | default value translation #### Events Events | Arguments | info -------------------------|--------------------------|------------------------ error:translation:key | key,locale | Not fount key translation error | type_error,key,locale | Not fount key translation #### Example ```js /** * File translations * { "test.test.test": "Test test test", "count.books": "{{ count}} books", "book.name.pages.number": "Book {{ name }} page {{ number }}" } */ i18n.setProperty({ locale: 'en', localeDefault: 'en' }); console.log(i18n.get("test.test.test")); // Test test test console.log(i18n.get("count.books", {count: 20})); // 20 books console.log(i18n.get("book.name.pages.number", {name: 'JS', number: 201})); // Book JS page 201 console.log(i18n.get("test.test.test1")); // test.test.test1 console.log(i18n.get("test.test.test1",{},{defaultValue:'my value'})); // my value ``` ### Method getByData Get translations by data param set in function #### Arguments Arguments | Type | info ----------------------|------------------|------------------------ params | {string,object} | Params translation option | object | Options translation option.defaultValue | string | default value translation #### Events - #### Example ```js i18n.setProperty({ locale: 'en', localeDefault: 'en' }); console.log(i18n.getByData({"en":"test en","ua":"test ua"})); // test en console.log(i18n.getByData({"EN":"test en","UA":"test ua"})); // test en console.log(i18n.getByData("My data")); // My data console.log(i18n.getByData({"UA":"test ua"},{defaultValue:'my value'})); // my value ``` ### Method getLocale Get locale now #### Arguments - #### Events - #### Example ```js i18n.setProperty({ locale: 'en', localeDefault: 'en' }); console.log(i18n.getLocale()); // en ``` ### Method load Load translations JSON #### Arguments Arguments | Type | info ----------------------|--------------------|------------------------ urls | string[],string | Url json file translations callback | function | Callback function success load option | object | Options translation option.modulePrefix | string | You can set prefix url #### Events Events | Arguments | info -------------------------|---------------------------------------------|------------------------ load | url,data_json_file | load file json success error:load | xhr.statusText, xhr.status, xhr | error load json error | type_error,xhr.statusText, xhr.status, xhr | error load json #### Example ```js i18n.load( ['translations/bundle1.min','translations/bundle1.min'], function () { console.log("success load") }, { modulePrefix:"my_prefix" }); i18n.load( 'translations/bundle1.min', function () { console.log("success load") }, { modulePrefix:"my_prefix" }); i18n.load('translations/bundle1.min'); i18n.load(['translations/bundle1.min','translations/bundle2.min']); ``` ### Method setProperty Set property i18n #### Arguments Arguments | Type | info -------------------------|--------|------------------------ option | object | Options translation option.locale | string | Location [default:ua] option.localeDefault | string | Locale on default if key of main locale is empty [default:ua] option.versionJson | string | Version json add to url params load file translation [default:unix] option.defaultValue | string | Default value translation option.modulePrefix | object | Prefix url to module #### Events - #### Example ```js i18n.setProperty({ locale: 'en', localeDefault: 'en' }); ``` ## Events Event | Arguments | info ----------------------|-------------------------|------------------- changeLocale | locale | Event change locale load | url, JSON | Event load file json error:translation:key | key, locale | Event not fount key translation error:load | statusText, status, xhr | Event error load json translation error | type, * | All error event error:* ## Example ```html <!-- ... --> <script src="dist/I18n.js" type="application/javascript"></script> <script> i18n.setProperty({ locale: 'en', localeDefault: 'en' }); var demoFunction=function(){ console.log(i18n.get("test.test.test")); // Test test test console.log(i18n.get("count.books", {count: 20})); // 20 books console.log(i18n.get("book.name.pages.number", {name: 'JS', number: 201})); // Book JS page 201 console.log(i18n.get("test.test.test1")); // test.test.test1 console.log(i18n.get("test.test.test1",{},{defaultValue:'my value'})); // my value console.log(i18n.getByData({"en":"test.en","ua":"test.ua"})); // test.en }; i18n.load('translations/bundle1.min', demoFunction ); i18n.on('changeLocale',function(){ console.log('change locale'); demoFunction(); }); </script> <button onclick="i18n.changeLocale('ua')">UA</button> <button onclick="i18n.changeLocale('en')">EN</button> <!-- ... --> ```