{"_id":"grunt-translate","_rev":"75-b47b86e84f41691de94d7fde63291cd6","name":"grunt-translate","description":"Translate dynamic texts","dist-tags":{"latest":"0.3.40"},"versions":{"0.0.1":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.0.1","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"grunt.js","bin":{"grunt-translate":"bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","http":"0.0.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-contrib-dot-compiler":"~0.2.14","grunt-contrib-watch":"~0.1.4"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.0.1","dist":{"shasum":"36cb87857327cd2011bd608443ae73b585efbb03","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.0.1.tgz","integrity":"sha512-wbULp+M3KlRZ4bYwOMKzGk4UuGIpBV7+6ZNmSfolZLEn/hHtnZ17KVfpSdWgMbd8zHHhV5k/EgGB01Mk9+43pg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEvuMHKDSTsLQ0KPEu88sU+aTwO/zNDDhbp6YQ6yhPfbAiAIqp0RRcaePJN3ruweQRq4ieRtZZRySDhCcAjEaaojIw=="}]},"_npmVersion":"1.1.65","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.2.0":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.2.0","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.2.0","dist":{"shasum":"90c8addb3f65891e8586b3ee20fa73e183f51035","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.2.0.tgz","integrity":"sha512-O/7p4RfqHmHl0yxmrM+tum2HwUG5Ip1S8xN7EUl95sHKFx+LQTms0OcwQLeD556W8Aukh09SFiTeUL+/WFqPdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjLcioUbD5BurXu7E8cW0E8utOleTY7zLOqg+yfnDmGAIgbopqpAyfN53p3PaSurD0wOoDCAZP3w6ZjZUS5epCPNs="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.2.1":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.2.1","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.2.1","dist":{"shasum":"584cfa0d9c222d736f97f0ace077f216d4537a04","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.2.1.tgz","integrity":"sha512-1hDPwKkJoINdhk4xKEEaC0Mbyzg66oH3EE2XNSpodMmpz8mfgjlnH/JpDYoOx/MbEtT+mKqHgZYeSAD9mksaMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjb3TQU5/tfH7OGp+dRn7SCiIFQrRDlKRuuqqxloesUAiBGK57ExE5qbjN1MwocI5I5Aq546e4PrjaijLeu4Zey3w=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.2.2":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.2.2","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.2.2","dist":{"shasum":"7cb05de6b84ff8ae1818e65f3cddb753b556ecf5","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.2.2.tgz","integrity":"sha512-jp27tnX3BFfxRXHk4vIvyBR0TYQzPBkxBHElQxWJaEdNAenlQFKFQ7IygBYgsxP15BRetL7ILdIjmaENWu6QmQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvkMxKKTh24VdiLHJhL+ZhSDmRKzYaCmnE4XZ9JxqQtgIgSQyv8rf/ks8rRVaFvB7zkEeN9pTOZ4S9+i4l7/JVdlY="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.2.3":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.2.3","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.2.3","dist":{"shasum":"9f06ca487f34bfd4bc15c265d39a18d31fd0b168","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.2.3.tgz","integrity":"sha512-PcROfL19cb3ZALu+if4sDMvCU6YlyvEG+F8MZNzN/NQIWRbqp7r8XWwNgLLamv/U0Z65jg/XLe0l2avh1qhrUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCMAwgA0BwPBVAMhxGEmIO8PAveKNSBvG9CohUYZ1gngIgMLI1c9GrBdBwxZPZO6vkFAmRQRuMtFX03Rbwh/jUp3A="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.2.4":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.2.4","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.2.4","dist":{"shasum":"0760484df04b096cd63905a2ab3e339acf7e6c8f","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.2.4.tgz","integrity":"sha512-dfse/eGLWy4XWZjVZ0D/f3TOp7VisNXLkwy7yA5TB07+t5txiIE1cXmnkRIcTa2+yYHQ5w5B7hmW3J1bdYf5eg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHffsJVp2ByyJyhopj9VgnndEYKlAhgeFnVL9DA60XV+AiAiXjOQY4mLhiLycQuEce/QVD75kgvkJdLcwdRUjrulsg=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.2.5":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.2.5","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.2.5","dist":{"shasum":"f9e0f03f92406f1db0ec301c8deb503c31f0cdf9","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.2.5.tgz","integrity":"sha512-+BRLMyPejeQecaFhy4HmmX2gRymqCkevHzR7rTpa9loV4MjmqHhrEeak4YPJFs9GnQJe8pvWj0wmu5JwWqLRKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTPE8ptM012hzAUuN7N1RnqFsDZAvXw70tWJOHO7p7fQIga4v5a4LrZynR2ENaQU0CvTgqM724dARRA7Ic3Hx22fI="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.1":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.1","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.1","dist":{"shasum":"534f83c9c4780797ceba6fab02fbb3d3590b4756","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.1.tgz","integrity":"sha512-fYbrCclf7tVJtxlODXRgCYg8ofZxmr8PboABXgoCBSI8vhm0jOOQNEnqszycuxp1u3kmy456ZpPZxoQ6iDcf7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2E9bwbzdb7yTK/YsAs9IPrkvDQJxPqs4g/AbiKTjKDwIhAMpW3/zZpD6JQnRl0ev71/yQvYgbWGUQ4jRLC05o8OYv"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.2":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.2","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","zombie":"~1.4.1","connect-modrewrite":"~0.2.3"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.2","dist":{"shasum":"b346fecd0cd09daa77e8c99ee30695c79fbb345a","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.2.tgz","integrity":"sha512-8yDvcoL5trqiQ1BZcfpJvyf/itqeljHeuvFda3d61xmWpI6UfNLv6+pp803Y/KnZ5Bn01nSGZ6plne5DmBqQTg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBTqdnNlBRChdnRrUcgHLRGUm/AgiFt3LylSUQLrznrrAiBHMw+kdXglvj0ifHwbJsPYVQ5ImtAs6xqySAQq1D4IRA=="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.7":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.7","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.7","dist":{"shasum":"92a9f0c0278856b8551754b992d72c0e59f90f6c","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.7.tgz","integrity":"sha512-19J6BQekZLrnXYW8yvzWxk0+CwSqPzupcptAhf4ALtdrXqTD/m4DAFGDtTnPZFAD812lK4WZkbHb4zWh5chCrQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8OP/5GmJOHCr2pN0pZKK/F7DJhTUykdnggu9TLqyc9AiEAo8+5CkBFDkc5ETSbsHnBxeSkX0nZjJz0H7kurE7QGGY="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.8":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.8","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.8","dist":{"shasum":"9ec2205a8622d1bfb49ad82e8cdf3fae2fbd74ab","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.8.tgz","integrity":"sha512-+uI2CpkuxsiAeCBngMoFI+6h96sRNw7qkbxq1LrcQRwESwqvo//ke5VMPXKghIEkqmFvX/QhscUA3dffBhLzfQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHs+Hh3BQ/SGOGTUI++Z2+4BY54qiFhT+dkkyA4+H4mzAiEAzF/uis8xfyfvxZHY8BJ3dVaON25QSFSUUVTJYqCe9zA="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.9":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.9","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.9","dist":{"shasum":"aceece5f5e507ba9cf82885112e1960771cc2045","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.9.tgz","integrity":"sha512-670S0soVS65JNeFtgRUBP+aAPAefsVC2Q+edpu0OOq1NTWmap7/AWR6cPtygN3gg70+U2wCRdYlzNMX7CNUqqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF1jWede+7r542yKY+OpoMOaDMLzfPQNlDPKtdigBTT1AiAeiDdpkanvliYn5kw68Ajr0uq/Z55WFrO2eopnIpd5RA=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.10":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.10","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.10","dist":{"shasum":"526281e2b4d31085a85edb8b3b03475a06f8db23","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.10.tgz","integrity":"sha512-oq92g4sKLBsgDEjBav+t+86aCEKX5OYfLgTvXV8ypiKGo54etT5DxbmhZe8dnOkUIo98qRZC7eE0mqwioQGz6Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdCUOgThm29ovC67RTSy31JBOvBCOS9tyy+sb4R/xjTAiEA8zusdsM8N+E+5BsMbrkxStbA2YSMEBpj1Z9BYdK6Mzs="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.11":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.11","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","requirejs":"~2.1.2","express":"~3.1.0","optparse":"~1.0.4","jsdom":"~0.3.4","backbone":"~0.9.10","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","grunt-jsdoc":"~0.2.4","lunr":"http://github.com/tinganho/lunr.js/tarball/master","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.11","dist":{"shasum":"a3729ee6bdc501fdd7b0b05d01527afc68e5a588","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.11.tgz","integrity":"sha512-FOn0oN4CEAxsPhTCZG9PaO2eTOZVxwu5yVnPHFLRDIfu90Nb6iWH3IZNo+eQ1S1I3z2/Qy93ewnicOqYuqlBBA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHpSGwXLCLWIOeEjSUPuAypWq35EgIBfPERuCg5Z0khMAiAnRG95G1NscH1DTrvoQTB4+UfTnmBJaOvb0++JeAnPXw=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.14":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.14","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.14","dist":{"shasum":"308a49ee9118b2abc5113c68691a8f65dce33f4b","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.14.tgz","integrity":"sha512-4ON6uASmnz5i5chiDdhQhWUQnx+RzjsrxWQHIf25qsgRpViuwu7Qq9s8cU++EPi2cG2wvWNgkYOKu8wSLyHfqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoGsc4EqrMq00Sgw7QVC3rd3ra+16mgzLb9/ao8XsTMgIgF3C5Wr56n7A62ToCuNowzoVE2JWtO0dBk1Bf90/Tcg8="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.15":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.15","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.15","dist":{"shasum":"b92a2a9ae75b13c67137bfa72d8fb22ea701747a","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.15.tgz","integrity":"sha512-m1F7qP9ooIRpdvunGryZ3XfoHFkRvuQmaGv8VUkDZVn+ORVnTrMwaoZworc2J63eTafJBX0x9A4Ph43Ebv+Jag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAuQaTtQOmy1Z2U8cWR3vvoFuO9sMM/egJjaC+qE3WKYAiEAh2zhi7c+m/Kpu3QougBwNgbze3YAfO+A4AC+TCTWMZA="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.16":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.16","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.16","dist":{"shasum":"189a4e79bfeb33841d03ead0726840ece5e78265","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.16.tgz","integrity":"sha512-v7pXUQUXQp84t1GdGts1zJZ2dbv0eMHWrn2vY4/jFjYHj5/ykORIKRXgUbkEayiPMmCr5UKryk0w6S6u2kgFkQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEt9TwIL+Ca/+ahwjdfk5I64MPPnf0gmdSx0CETifsA/AiBMy106p2DWhTC9Hu6eb8fWYAPP6d2kDrodniqGH5BaBw=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.17":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.17","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.17","dist":{"shasum":"63ad8121f7c9d7a3d3a5ca6f88b9dfac60abcbdf","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.17.tgz","integrity":"sha512-F0LX0GagiHcqI4m/mKwQdG6uZhnRe0XePAoI6tN+q3cnT4vNkCVk9Ngq5sIgbueQ0DD1CPqFAaR+6R17isbz2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGX2Pzaxzz6f2Wz92uoFiEGfq06XZDnaOjIQ3ZQ+gntaAiBGhXltNHOHfU492wjOW61VpN7RDWqoDlvgHzspDfNwLQ=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.18":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.18","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.18","dist":{"shasum":"2c6e29bfe6aa7a67f479c7c3749a38c577067879","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.18.tgz","integrity":"sha512-g+4ugJHKcTSeW1WU1qJtRBSNAPQXVtSdgd566K9KTAnx7c8ONvjgHeMobVVUrdUjfdfaG125QqHFVnfz6gs55A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJ1aIqxgBSP8LT+R9L5dii1Lb+pcF/q3QRzsXOoOT2YAiATkkcnBcIPhPkmR9jb5+AAlgifzZO0IawPwZVdnTuvZA=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.19":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.19","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.19","dist":{"shasum":"fc20272d24f8dd8810a505fe20491688ac4cd3dd","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.19.tgz","integrity":"sha512-2lZ7j+XhlIWFOe1jyYCe6QZOrtL/JP+HcL8wOp2RIVGYUGZ8SW3VjUddfFSm+1/MYnNcFrNC6IUDgTaBVkXSXA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXyV6QTePXAwIO+FB8y3xCmUhT27hJre0hwmKZ5K5GyQIhAMFTlZ6uo34AFgCtwigIS8c9YlV4qzPPWzlzkd8MD6Ce"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.20":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.20","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1","zombie":"~1.4.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.20","dist":{"shasum":"859a26d6599df85fdcce2da6ee3581ebe9784527","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.20.tgz","integrity":"sha512-1HbcTGV5uCy1J1cyqMsQoOqBKo7TV/zALHo64oGNtQaPYA2mlmnkb5tCMsZLRV/NfaeGzScKWkUv/PC98pSKuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDme+4S4YgLJMyg62MLANkAvf84Ymt78jj+CBwwnql11wIgHK1WkfQ7BQU1KJJp6ycqKY6VoCR8loFslkD/Iji2yA0="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.24":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.24","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.24","dist":{"shasum":"3c1dd644065d2aae1af13918a94781eeb7e80034","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.24.tgz","integrity":"sha512-mxrA+oMR4muX4I4mOmofo02qeiojrf2usAT9k1gdCVDLySx8fwlp4wHwW6g781jNE4WJn7epszYAHpysJ3eH1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbCpnYj4zgpDElfXRLrcW+DXv94ssQmEWkDvjc1h6dJgIgaclIzGNcffr+qQteYIMhOx1RXkliEW/lSf0gVbYyPwg="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.25":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.25","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.25","dist":{"shasum":"2ed38ecca4a71d06c6b97f4be1a957857e73be14","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.25.tgz","integrity":"sha512-hkt/l4373MOLSO9J19Jhehn3E+I1jIz6PN6zVrRF/qSZaX75zz6013/brrIMB8PQVb4xDXonZGAyNtloUildyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD6iwolNi0KRHJUlGPC4pqShjFdS67bvjGCnXkraTbTwIhAM4WrljQcv28gbl7hWI/5Vudokukygg0QA52PMhvBZIK"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.28":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.28","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.28","dist":{"shasum":"078c22c96a5f2fb092ca42fa7cc8b41f06ce1f64","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.28.tgz","integrity":"sha512-Aus/bxvuU6DUyTLPvM0wqtzl5nv6yvZBSCWErK2SCwLAgXjeNkm5HsXnh4lWMNbbMSsd+LoswTsbZjQ01iOQJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/anMovvi3tYY/Po0xUJwbrpExTcYYqvpF5atZGaVoegIhAPqDBgrTRo0tb8twpsjQlZJ+KMUD1AtayuFiHNiejltH"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.29":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.29","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.29","dist":{"shasum":"96366edfe7e937c1115ff15ab403ea0bf0d7dd5a","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.29.tgz","integrity":"sha512-y6rot/fDLU1NQf0nwWIZjFp2V54qgnxNKZaHgpcaMGbEDUC+x6wS9qw6R/TQZycSvTtyxjGGOaryDuI3xu2I8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQ8S2UdIGn2Bh9Px7QxgWaEPq/oHeN7Q2FdhTGg8NhWgIhAIrDZE2oHreAB2tzMJSl66ILvgowbOD4u96vF9pLUV5n"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.30":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.30","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.30","dist":{"shasum":"07e97821a30ff2b24e647a4ddaca93f66202b1b9","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.30.tgz","integrity":"sha512-Jo8BI7lplcBrJjBe8WtAsZ5clznJXe7levYGX4s2ktf/lBhh8l7VgU2hDqROVJH35JhIuO7l7wabqyYaCnL8HQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLUJdjDQjLQNR4T0koETWLw7B/DKg8e35SPKqH3ABCAAIgGnJ2jwDsP8cObhSzJcP1J9eQE3NyvHQPsaYQfzU+wzY="}]},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.31":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.31","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.31","dist":{"shasum":"7e478a608c414adc7d3d1732eee5e77ff2d521e7","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.31.tgz","integrity":"sha512-VXs0hKxemc8e+1PMMetNV9uECpqPPhPzfAifg8l6D6gqQW1hzGf5yqvNQVUxy1zz40VOdwYXd++s3ykD0E7Alg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBA/kvr1AuDbXJrIh7YUgn7D1Hg7DLNw7hcjGI8qAXdFAiEAlo9e8jG89xmQH8fMYH7m5JrW3Ul0+TzmfppsG1na5o4="}]},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.32":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.32","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.32","dist":{"shasum":"18010ae71eda2a67d21d300a76604b51426d7909","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.32.tgz","integrity":"sha512-P4qx+Y36EbzgFOnzl/SkniLteHZEohE4xEndRmy8PHYJHOy5hsdRas1vL7ayjjzua5zo6t4j6V6GNpKMZrRKqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICViOqVsAywlaOdMWR0zkqVV9fEAXzIvKvBTlM1WhpEjAiAUQIHYOQu2RwzClaoEmxNb07dUtv8FqjOHwPMZCT7bHA=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.33":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.33","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.33","dist":{"shasum":"43b60b12c2753851368c1d208421bc123295aa7f","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.33.tgz","integrity":"sha512-krp1Oztb56TeuVQtAoVGPvJpmc7XNY7IF4LjVEQdoiXEd3rxkLD3t8oc8HiS6w7nypxfH07mpeaaaOfmgm40Ig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFxDY/yx7wOMI7oOAQi2NorCbMt8YXqOvBcLaeftcaQqAiBlsIpHZIf1H6VAdG5hzLQ1VmQmRxD9zdDsyx7CS4GHfA=="}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.34":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.34","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.34","dist":{"shasum":"e2916881b1be47456ac95ae4b919db74ca6302ac","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.34.tgz","integrity":"sha512-LERhoewPhFpa5MgT+TWpGVhxPHYnvudWQvMlcydpwfsKye/d0vzEuurRC6potfJXz8uEAVEbC5R0P6XRvDAqEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0hl7dlGpztq0SsbINomQXPa88sW+xijAQAWP+mcn/WgIhANdQGPlCQR4bF5HvKxK4GmoIMMZAGGUKNN5sg5rRT1GR"}]},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.35":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.35","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.35","dist":{"shasum":"cd9aa699f8bbe8cc03ea8a7ae2a9cb47172513e2","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.35.tgz","integrity":"sha512-3vv2Xvxxf1ADEJif19lKmod0E6RWiC2I0xZNqbYLujrF8Hug+2l1aCO0ld0etYdn9klRTEcpSCV6OduWv+G1OQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7VeTTu9OOn3Wcmtfh1/hR2v6aHfufIUStqLditTnUtAIhAK6+7wQRFe7I18UeKmQl+1ZVhJ5388Zs9umgHqzVrqkL"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.36":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.36","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.36","dist":{"shasum":"5296ae6a04c18300076e17316457bffd4305046e","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.36.tgz","integrity":"sha512-JAeWoubK3va50LObqPPHl8zN/iirbt5ChcbB1McZ0vl19EiflQx2ZUQh2Ed2jjQn2q4cezJ81FVUK0Y+QcSxSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDHo5bqHXUXQ/JoSKZvXqyXS1bfcwc00VceeS9nV9DMQAiBiH5/Agov0vKkLWBB1xRwu2B2a71BkzQphtkAOrDaWUQ=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.37":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.37","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.37","dist":{"shasum":"1b827fe6ab1f85c0a5e60780d224bb10c9ca0bd5","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.37.tgz","integrity":"sha512-dJlSCqJbdDvO6332Kjxa+OYbIPNqv1um0dQlR/TPK1a/jxCDePv/CZ1eklHZvbbI1aRRQBGOflJxo9Ui1BazWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDC12unCZ/S2urJTI1hAIM6prcJQG+q2n66/Fg06sZU0wIhAMmMqJo0fPFPsBRfC+1OZv/Feq6sUnRuhcfcmNSu/iW9"}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.38":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.38","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.38","dist":{"shasum":"6b5999b7d0ff140aa33eaeb259e436a8191626f8","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.38.tgz","integrity":"sha512-WOZExYRJxOATLfHTIxuc0thyWEqZk/Ee6UCdL05ZF+Y31D80OMEpeXm/D4zIgOUEtwnzSpng7VPTTCYq83PYyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBfvl0SGQkMbE6ZieFUuRFY5aZ0Epoph0kulWdCTQnSSAiABXgdRO74YfBAWRmIcKrTZpFp7dNdJdg0YYSjpEX9qBA=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.39":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.39","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.39","dist":{"shasum":"f87cb177a505d1dbe4f18fea68f692e9b2f76065","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.39.tgz","integrity":"sha512-aEnl6QCTXI3ZL/gHQmrLuTkieH4yXZ/kyr0LSOiClnNb739FczKoJlhUe9P/6KCHICuGpeo0823rxX7aVQyQJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6yqZPOs5jqVjkL+FDd0q6VrLBgTz28sxn9VWcRww4rAiEA8TcV5cc77YrOTQRuzT3OFJAaZlcrXN32Czw79pKWC90="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]},"0.3.40":{"name":"grunt-translate","description":"Translate dynamic texts","version":"0.3.40","homepage":"https://github.com/tinganho/grunt-translate","author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"},"bugs":{"url":"https://github.com/tinganho/grunt-translate/issues"},"licenses":[{"type":"MIT","url":"https://github.com/tinganho/grunt-translate/blob/master/LICENSE-MIT"}],"main":"Gruntfile.js","bin":{"gt":"./bin/gt"},"engines":{"node":"*"},"scripts":{"test":"bin/test"},"dependencies":{"grunt":"~0.4.1","amdefine":"0.0.4","express":"~3.1.0","optparse":"~1.0.4","findup-sync":"~0.1.1","colors":"~0.6.0-1","grunt-open":"~0.2.0","open":"0.0.3","supertest":"~0.5.1","cheerio":"~0.10.7","grunt-contrib-connect":"~0.2.0","connect-modrewrite":"~0.3.16","autoroute":"~0.2.1","lunr":"~0.4.0","requirejs":"~2.1.6","zombie":"~2.0.0-alpha19","prompt":"~0.2.11","grunt-dot-compiler":"~0.5.1"},"devDependencies":{"grunt-contrib-jshint":"~0.1.0","chai":"~1.4.2","mocha":"~1.8.1","grunt-contrib-compass":"~0.1.0","grunt-dot-compiler":"~0.3.13","grunt-contrib-watch":"~0.1.4","grunt-contrib-requirejs":"~0.4.0","grunt-regarde":"~0.1.1"},"keywords":["gruntplugin"],"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","readmeFilename":"README.md","_id":"grunt-translate@0.3.40","dist":{"shasum":"c9edf3f082603dcdeed105d036b60b4b2f5d6c69","tarball":"https://registry.npmjs.org/grunt-translate/-/grunt-translate-0.3.40.tgz","integrity":"sha512-HC4KojFbn5unl5Q6sGabglNphP0NcxeQU8iLPYImQfllILp2AMIGYcASsLqQEvuq7o010eAcnamkGre+rMnysQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGzTlyK32XkgmBV4MYawjs9N9/zJMeOLR1l56p/r4/VAiEA+BVEWSd8wLyCf9oQxn2dT85aDx4JYfHLUn11j/xiuJw="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"tinganho","email":"tingan87@gmail.com"},"maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}]}},"readme":"grunt-contrib-translate [![Build Status](https://travis-ci.org/tinganho/grunt-contrib-translate.png)](https://travis-ci.org/tinganho/grunt-contrib-translate)\n==============\nTranslate dynamic text\n\n## Getting Started\nInstall this grunt plugin next to your project's [grunt.js gruntfile][getting_started] with: `npm install grunt-contrib-translate`\n\nThen add this line to your project's `grunt.js` gruntfile:\n\n```javascript\ngrunt.loadNpmTasks('grunt-contrib-translate');\n```\n\n\n## Goal\n\nTranslator should be able to translate both static and dynamic text without requiring to know a single thing about programming. The translation solution should be scalable to all languages. A developer should be able to access the translates through a grunt command. There should be grunt command for update hashes from source and compile translation.\n## Problems\nThis can not be done today. The most popular translation standard is the gettext standard. It can deal with singular and plurals, but it gets more complicated on dynamic texts. It usually require a `printf` function, that inserts string into the translated text. `Printf` solution is not optimal since it is not part of Gettext. Also you can not update the hashes with the variables directly from source. With no variables available in the translation interface. It is quite hard to translate without contacting the developer.\n\n## Solution For Translators\n\nA translator translates in grunt-contrib-translate by:\n\n* (1) Search a hash string in a Translation Interface\n* (2) Translate it and hit save\n\n## Solution For Developers\nThe translation function:\n```javascript\ngt(TRANSLATION_HASH, JAVASCRIPT_OBJECT);\n```\n\nA developers workflow using grunt-translate:\n\n* (1) Use function `gt()` with a unique hash\n* (2) Update translation hashes from source\n* (3) Translates on the default language\n* (4) Compiles all the translations till ready to use in `gt()`\n\n## Storage files\nen.json:\n```javascript\n{\n  'trin_hello_world': {\n      vars : ['$property1', '$property2']\n      translations: ['if', '$property1', '>', 'constant', 'Hello ${property1}'], ['elseif', '$property2', '>', 'Hello ${property1}'], ['else', 'Hello ${property1}']\n  }\n  ...\n}\n\n```\nlanguages.json\n```javascript\n{\n  'en': 'english',\n  'fr': 'french',\n  ...\n}\n```\n\n\n\n[grunt]: http://gruntjs.com/\n[getting_started]: https://github.com/gruntjs/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n_(Coming soon)_\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].\n\n## Release History\n_(Nothing yet)_\n\n## License\nCopyright (c) 2013 Tingan Ho\nLicensed under the MIT license.\n","maintainers":[{"name":"tinganho","email":"tingan87@gmail.com"}],"time":{"modified":"2022-06-18T16:10:56.436Z","created":"2013-02-23T20:05:26.809Z","0.0.1":"2013-02-23T20:05:29.919Z","0.2.0":"2013-05-07T03:42:48.697Z","0.2.1":"2013-05-07T04:57:54.050Z","0.2.2":"2013-05-07T05:03:12.060Z","0.2.3":"2013-05-07T05:13:06.823Z","0.2.4":"2013-05-07T05:27:41.430Z","0.2.5":"2013-05-07T06:58:00.021Z","0.3.1":"2013-05-07T07:01:12.024Z","0.3.2":"2013-05-08T14:59:36.764Z","0.3.7":"2013-06-20T07:15:35.311Z","0.3.8":"2013-06-25T11:58:00.769Z","0.3.9":"2013-06-25T15:34:14.234Z","0.3.10":"2013-06-25T15:48:02.806Z","0.3.11":"2013-06-25T16:39:16.234Z","0.3.14":"2013-06-28T03:45:56.880Z","0.3.15":"2013-07-01T15:00:11.822Z","0.3.16":"2013-07-01T15:11:17.252Z","0.3.17":"2013-07-03T12:13:49.140Z","0.3.18":"2013-07-03T14:53:09.405Z","0.3.19":"2013-07-03T14:55:09.440Z","0.3.20":"2013-07-03T16:08:03.819Z","0.3.24":"2013-07-06T16:30:35.265Z","0.3.25":"2013-07-08T18:56:40.848Z","0.3.28":"2013-07-15T07:03:10.038Z","0.3.29":"2013-07-18T09:15:49.412Z","0.3.30":"2013-07-22T14:33:30.250Z","0.3.31":"2013-07-22T17:33:59.746Z","0.3.32":"2013-08-16T11:46:32.337Z","0.3.33":"2013-08-19T06:49:37.724Z","0.3.34":"2013-08-19T09:01:57.041Z","0.3.35":"2013-10-11T07:11:57.322Z","0.3.36":"2013-10-11T07:27:24.104Z","0.3.37":"2013-10-11T07:55:07.393Z","0.3.38":"2013-12-02T10:50:12.488Z","0.3.39":"2013-12-02T11:01:55.979Z","0.3.40":"2013-12-02T12:09:30.838Z"},"author":{"name":"Tingan Ho","email":"tingan87@gmail.com"},"repository":{"type":"git","url":"git://github.com/tinganho/grunt-translate.git"}}