summaryrefslogtreecommitdiffstats
path: root/lib/generators/website.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-01-23 22:05:11 +0100
committerSamy Pessé <samypesse@gmail.com>2015-01-23 22:05:11 +0100
commitb66e9d2bed3f7a8b7bf841134a53548f9017c540 (patch)
tree6a6fe0ba2484ffead49cf00e535b3316d76ecb12 /lib/generators/website.js
parentd0f910d65fe4c0a1b611cf97deabe8797e239ef2 (diff)
downloadgitbook-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.js58
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