diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-01-23 22:05:11 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-01-23 22:05:11 +0100 |
commit | b66e9d2bed3f7a8b7bf841134a53548f9017c540 (patch) | |
tree | 6a6fe0ba2484ffead49cf00e535b3316d76ecb12 /lib/generators/website.js | |
parent | d0f910d65fe4c0a1b611cf97deabe8797e239ef2 (diff) | |
download | gitbook-b66e9d2bed3f7a8b7bf841134a53548f9017c540.zip gitbook-b66e9d2bed3f7a8b7bf841134a53548f9017c540.tar.gz gitbook-b66e9d2bed3f7a8b7bf841134a53548f9017c540.tar.bz2 |
Load locales to translate layout
Diffstat (limited to 'lib/generators/website.js')
-rw-r--r-- | lib/generators/website.js | 58 |
1 files changed, 39 insertions, 19 deletions
diff --git a/lib/generators/website.js b/lib/generators/website.js index af4cd0c..5fd7fd1 100644 --- a/lib/generators/website.js +++ b/lib/generators/website.js @@ -6,6 +6,7 @@ var _ = require("lodash"); var nunjucks = require("nunjucks"); var AutoEscapeExtension = require("nunjucks-autoescape"); var FilterExtension = require("nunjucks-filter"); +var I18nExtension = require("nunjucks-i18n"); var fs = require("../utils/fs"); var BaseGenerator = require("../generator"); @@ -65,30 +66,49 @@ Generator.prototype.prepareTemplates = function() { // Prepare template engine Generator.prototype.prepareTemplateEngine = function() { - var folders = _.chain(this.templates) - .values() - .map(path.dirname) - .uniq() - .value(); + var that = this; + + return fs.readdir(path.resolve(__dirname, "../../theme/i18n")) + .then(function(locales) { + locales = _.chain(locales) + .map(function(local) { + local = path.basename(local, ".json"); + return [local, require("../../theme/i18n/"+local)]; + }) + .object() + .value(); - this.env = new nunjucks.Environment( - new nunjucks.FileSystemLoader(folders), - { - autoescape: true + if (!_.contains(_.keys(locales), that.options.language)) { + that.book.logWarn("Language '"+that.options.language+"' is not available as a layout locales ("+_.keys(locales).join(", ")+")"); } - ); - // Add filter - this.env.addFilter("contentLink", this.book.contentLink.bind(this.book)); - this.env.addFilter('lvl', function(lvl) { - return lvl.split(".").length; - }); + var folders = _.chain(that.templates) + .values() + .map(path.dirname) + .uniq() + .value(); - // Add extension - this.env.addExtension('AutoEscapeExtension', new AutoEscapeExtension(this.env)); - this.env.addExtension('FilterExtension', new FilterExtension(this.env)); + that.env = new nunjucks.Environment( + new nunjucks.FileSystemLoader(folders), + { + autoescape: true + } + ); - return Q(); + // Add filter + that.env.addFilter("contentLink", that.book.contentLink.bind(that.book)); + that.env.addFilter('lvl', function(lvl) { + return lvl.split(".").length; + }); + + // Add extension + that.env.addExtension('AutoEscapeExtension', new AutoEscapeExtension(that.env)); + that.env.addExtension('FilterExtension', new FilterExtension(that.env)); + that.env.addExtension('I18nExtension', new I18nExtension({ + env: that.env, + translations: locales + })); + }); }; // Finis generation |