grunt-crowdin-net v0.1.1
grunt-crowdin-net
Grunt plugin for accessing the Crowdin API
Disclaimer
This is an unofficial API client library. Crowdin and the Crowdin API are the property of Crowdin, LLC.
Getting Started
This plugin requires Grunt ~0.4.5
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-crowdin-net --save-devOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-crowdin-net');The "crowdin" task
Overview
In your project's Gruntfile, add a section named crowdin to the data object passed into grunt.initConfig().
grunt.initConfig({
crowdin: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});Options
options.apiKey (REQUIRED)
Type: String
Your Crowdin API key.
options.endpointUrl (REQUIRED)
Type: String
The Crowdin endpoint URL for your project.
options.extract
Type: String
The directory to extract translations files to.
options.writeConfig
Type: String or Object
The config file (JSON) to write the list (Array) of available languages codes.
It can be set as an Object accepting the following options:
src: Config file to read.dest: Config file to write. Defaults tosrcvalue if not set.key: Name of the key containing the available languages. Defaults tolanguages.tmpl: Template file to apply, using grunt.template.process. Thesrcdata (JSON) will be extended by thekeyand passed to thetmpltemplate as theconfigvariable, before being written todest. See example below.
Usage Example
Simple example
grunt.initConfig({
crowdin: {
default: {
options: {
apiKey: '36d53ad244654f0d9f6198d53b781b76', // Your Crowdin API key - must be set
endpointUrl: 'http://api.crowdin.net/api/project/<your-project>', // Your Crowdin project endpoint URL - must be set
extract: 'data/i18n',
writeConfig: 'config/i18n.json'
}
}
}
});Assuming your project contains en_GB and en_US languages, using the above configuration will create the files data/i18n/en_GB.json and data/i18n/en_US.json with the languages keys/values, and create/update config/i18n.json with the following contents:
{
"languages": [
"en_GB",
"en_US"
]
}Customized config
// Gruntfile.js
grunt.initConfig({
crowdin: {
default: {
options: {
apiKey: '36d53ad244654f0d9f6198d53b781b76',
endpointUrl: 'http://api.crowdin.net/api/project/<your-project>',
writeConfig: {
src: 'config/i18n.json',
key: 'available_languages'
tmpl: 'config/template.js',
dest: 'build/config.js'
}
}
}
},
});
// config/i18n.json
{
"default_language": "en",
"json_url": "/data/i18n"
}
// config/template.js
var config = {
env: "dev",
i18n: <%= config %>
};
// Resulting build/config.js
var config = {
env: "dev",
i18n: {
"available_languages": [
"en_GB",
"en_US"
],
"default_language": "en",
"json_url": "/data/i18n"
}
};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.
License
Apache 2.0
Copyright 2014 Hailo