Skip to content

Very simple KeystoneJS i18n based on JSON locale files for last version of keystone

Notifications You must be signed in to change notification settings

scipe/keystone-i18n

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NPM version

Very simple KeystoneJS i18n based on JSON locale files & cookies

This plugin is a simple integration for Keystone of mashable/i18n node package, an amazingly powerful i18n for node - https://www.npmjs.com/package/i18n If you are looking for a more extensive i18n configuration, check their docs!

Installation

npm install --save keystone-i18n

Usage

  1. Create directory locales and default JSON file for each locale you want to use. You can parse more advanced locale files following mashup/i18n package markup guidelines

Example JSON locale file

{
  "Hello": "Hello",
  "Hello %s": "Hello %s",
  "weekend": "weekend",
  "Hello %s, how are you today? How was your %s.": "Hello %s, how are you today? How was your %s.",
  "Hi": "Hi",
  "Howdy": "Howdy",
  "%s cat": {
    "one": "%s cat",
    "other": "%s cats"
  },
  "cat": {
    "one": "%s cat",
    "other": "%s cats"
  }
}
  1. Load the plugin module
// Require keystone-i18n
var keystonei18n = require('keystone-i18n');
  1. Initialize keystone-i18n right before keystone app - default options are shown below
// Initialize Keystone i18n before starting keystone
keystonei18n.init({
    locales: ['en', 'es'],
    directory: __dirname + '/locales',
    defaultLocale: 'en',
    cookie: 'language'
});

// Start Keystone to connect to your database and initialise the web server
keystone.start();
  1. Basic syntax - Use __() to translate a single phrase and add it to locales files if unknown. Returns translated parsed and substituted string.
// template and global (this.locale == 'es') 
__('Hello'); // Hola 
__('Hello %s', 'Andrea'); // Hola Andrea
  1. Or use it into templates
//- Jade
h1 #{__('Hello')}
//- Twig
<h1>{{ __('Hello') }}</h1>
  1. Add to routes new controller
app.get('/lang/:lang', keystonei18n.switchLocale)

License

GNU General Public License

Author

Raul Huelamo - http://huelamo.info - raul@huelamo.info

TODO

  • Check Nunjucks / Handlebars compatibility
  • Generate locale files from Keystone CMS

About

Very simple KeystoneJS i18n based on JSON locale files for last version of keystone

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%