Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flozz/grunt-stonejs-tools
Stone.js Grunt plugin to extract / compile translatable strings
https://github.com/flozz/grunt-stonejs-tools
Last synced: 15 days ago
JSON representation
Stone.js Grunt plugin to extract / compile translatable strings
- Host: GitHub
- URL: https://github.com/flozz/grunt-stonejs-tools
- Owner: flozz
- License: bsd-3-clause
- Created: 2015-08-05T11:19:58.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-03-20T19:56:52.000Z (over 1 year ago)
- Last Synced: 2024-10-14T04:06:15.912Z (about 1 month ago)
- Language: JavaScript
- Size: 596 KB
- Stars: 3
- Watchers: 3
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE-BSD-3-Clause
Awesome Lists containing this project
README
# grunt-stonejs-tools
[![Lint and test](https://github.com/flozz/grunt-stonejs-tools/actions/workflows/tests.yml/badge.svg)](https://github.com/flozz/grunt-stonejs-tools/actions/workflows/tests.yml)
[![NPM Version](http://img.shields.io/npm/v/grunt-stonejs-tools.svg?style=flat)](https://www.npmjs.com/package/grunt-stonejs-tools)
[![License](http://img.shields.io/badge/license-BSD--3--Clause-blue.svg?style=flat)](https://github.com/flozz/grunt-stonejs-tools/blob/master/LICENSE-BSD-3-Clause)
[![Discord](https://img.shields.io/badge/chat-Discord-8c9eff?logo=discord&logoColor=ffffff)](https://discord.gg/P77sWhuSs4)> Stone.js Grunt plugin to extract / compile translatable strings
Related projects:
* [stone.js](https://github.com/flozz/stone.js)
* [stonejs-tools](https://github.com/flozz/stonejs-tools)## Getting Started
This plugin requires Grunt `~1.0.0`
If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
```shell
npm install grunt-stonejs-tools --save-dev
```Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
```javascript
grunt.loadNpmTasks('grunt-stonejs-tools');
```## The "stonejs" task
### Overview
In your project's Gruntfile, add a section named `stonejs` to the data object passed into `grunt.initConfig()`.
```javascript
grunt.initConfig({
stonejs: {
your_target: {
// Source files (js/html)
src: ['src/**/*.js', 'src/*.html'],
// Translation template (.pot)
pot: 'locales/catalog.pot',
// Localised translation files (.po)
po: ['locales/*.po'],
// Output folder (or file if the `merge` option is set to true)
output: 'locales/',
options: {
// your options here
}
},
},
});
```### Options
#### options.quiet
Type: `Boolean`
Default value: `false`Do not output the stonejs-tools log.
#### options.functions
Type: `Array`
Default value: `['_', 'gettext', 'lazyGettext', 'gettext_noop', 'N_']`List of the translation functions
#### options.pluralFunctions
Type: `Array`
Default value: `['ngettext', 'lazyNgettext']`List of the translation functions with plural forms support
#### options.contextFunctions
Type: `Array`
Default value: `['pgettext', 'lazyPgettext']`List of the translation functions with context support
#### options.pluralContextFunctions
Type: `Array`
Default value: `['npgettext', 'lazyNpgettext']`List of the translation functions with context and plural forms support
#### options.merge
Type: `boolean`
Default value: `false`Merge all locales into a single file.
#### options.format
Type: `String`
Values: `json` or `js`
Default value: `'json'`Output format for the built catalog.
### Usage Examples
#### Default Options
```javascript
grunt.initConfig({
stonejs: {
default: {
src: ['src/**/*.js', 'src/*.html'],
pot: 'locales/catalog.pot',
po: ['locales/*.po'],
output: 'locales/',
options: {
quiet: false,
functions: ['_', 'gettext', 'lazyGettext', 'gettext_noop', 'N_'],
pluralFunctions: ['ngettext', 'lazyNgettext'],
contextFunctions: ['pgettext', 'lazyPgettext'],
pluralContextFunctions: ['npgettext', 'lazyNpgettext'],
merge: false,
format: 'json'
}
}
},
});
```#### Custom Options
In this example, we output a merged javascript catalog.
```javascript
grunt.initConfig({
stonejs: {
default: {
src: ['src/**/*.js', 'src/*.html'],
pot: 'locales/catalog.pot',
po: ['locales/*.po'],
output: 'locales/catalog.js',
options: {
quiet: false,
functions: ['_', 'gettext', 'lazyGettext', 'gettext_noop', 'N_'],
pluralFunctions: ['ngettext', 'lazyNgettext'],
contextFunctions: ['pgettext', 'lazyPgettext'],
pluralContextFunctions: ['npgettext', 'lazyNpgettext'],
merge: true,
format: 'js'
}
}
},
});
```## Contributing
In 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](http://gruntjs.com/).
## Support this project
Want to support this project?
* [☕️ Buy me a coffee](https://www.buymeacoffee.com/flozz>)
* [💵️ Give me a tip on PayPal](https://www.paypal.me/0xflozz>)
* [❤️ Sponsor me on GitHub](https://github.com/sponsors/flozz>)## Changelog
* **[NEXT]** (changes on `master` but not released yet):
* Nothing yet ;)
* **v2.1.0:**
* Now requires stone-tools >= 1.5.0
* Updated dependencies* **v2.0.0:**
* Updates to support new stonejs-tools version.
* Support of Grunt < 1.0.0 dropped* **v1.0.2:** Updates peer dependencies to support Grunt 1.0
* **v1.0.1:** Clean useless files in the NPM package
* **v1.0.0:** First release