summaryrefslogtreecommitdiffstats
path: root/lib/output/website
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-07-11 16:27:22 +0200
committerSamy Pessé <samypesse@gmail.com>2016-07-11 16:27:22 +0200
commit6b103f4532c23b4855025029ff966abc65092ff3 (patch)
treea7374739337d90e22cbad9375d6ab50ec437d92d /lib/output/website
parentd4fa5c18a8049986e224d98738390aac90c411be (diff)
downloadgitbook-6b103f4532c23b4855025029ff966abc65092ff3.zip
gitbook-6b103f4532c23b4855025029ff966abc65092ff3.tar.gz
gitbook-6b103f4532c23b4855025029ff966abc65092ff3.tar.bz2
Fix #1408: fix i18n in website generator and add tests for it
Diffstat (limited to 'lib/output/website')
-rw-r--r--lib/output/website/__tests__/i18n.js38
-rw-r--r--lib/output/website/createTemplateEngine.js58
-rw-r--r--lib/output/website/prepareI18n.js10
3 files changed, 70 insertions, 36 deletions
diff --git a/lib/output/website/__tests__/i18n.js b/lib/output/website/__tests__/i18n.js
new file mode 100644
index 0000000..fd610fb
--- /dev/null
+++ b/lib/output/website/__tests__/i18n.js
@@ -0,0 +1,38 @@
+var createMockOutput = require('../../__tests__/createMock');
+var prepareI18n = require('../prepareI18n');
+var createTemplateEngine = require('../createTemplateEngine');
+
+var WebsiteGenerator = require('../');
+
+describe('i18n', function() {
+ it('should correctly use english as default language', function() {
+ return createMockOutput(WebsiteGenerator, {
+ 'README.md': 'Hello World'
+ })
+ .then(function(output) {
+ return prepareI18n(output);
+ })
+ .then(function(output) {
+ var engine = createTemplateEngine(output, 'README.md');
+ var t = engine.getFilters().get('t');
+
+ expect(t('SUMMARY_INTRODUCTION')).toEqual('Introduction');
+ });
+ });
+
+ it('should correctly use language from book.json', function() {
+ return createMockOutput(WebsiteGenerator, {
+ 'README.md': 'Hello World',
+ 'book.json': JSON.stringify({ language: 'fr' })
+ })
+ .then(function(output) {
+ return prepareI18n(output);
+ })
+ .then(function(output) {
+ var engine = createTemplateEngine(output, 'README.md');
+ var t = engine.getFilters().get('t');
+
+ expect(t('GITBOOK_LINK')).toEqual('Publié avec GitBook');
+ });
+ });
+});
diff --git a/lib/output/website/createTemplateEngine.js b/lib/output/website/createTemplateEngine.js
index c60b3a1..02ec796 100644
--- a/lib/output/website/createTemplateEngine.js
+++ b/lib/output/website/createTemplateEngine.js
@@ -18,19 +18,19 @@ var fileToURL = require('../helper/fileToURL');
var resolveFileToURL = require('../helper/resolveFileToURL');
/**
- Directory for a theme with the templates
-*/
+ * Directory for a theme with the templates
+ */
function templateFolder(dir) {
return path.join(dir, templatesFolder);
}
/**
- Create templating engine to render themes
-
- @param {Output} output
- @param {String} currentFile
- @return {TemplateEngine}
-*/
+ * Create templating engine to render themes
+ *
+ * @param {Output} output
+ * @param {String} currentFile
+ * @return {TemplateEngine}
+ */
function createTemplateEngine(output, currentFile) {
var book = output.getBook();
var state = output.getState();
@@ -47,18 +47,17 @@ function createTemplateEngine(output, currentFile) {
var loader = new Templating.ThemesLoader(tplSearchPaths);
// Get languages
- var language = config.get('language');
+ var language = config.getValue('language');
// Create API context
var context = Api.encodeGlobal(output);
/**
- Check if a file exists
-
- @param {String} fileName
- @return {Boolean}
- */
+ * Check if a file exists
+ * @param {String} fileName
+ * @return {Boolean}
+ */
function fileExists(fileName) {
if (!fileName) {
return false;
@@ -69,11 +68,10 @@ function createTemplateEngine(output, currentFile) {
}
/**
- Return an article by its path
-
- @param {String} filePath
- @return {Object|undefined}
- */
+ * Return an article by its path
+ * @param {String} filePath
+ * @return {Object|undefined}
+ */
function getArticleByPath(filePath) {
var article = summary.getByPath(filePath);
if (!article) return undefined;
@@ -82,11 +80,10 @@ function createTemplateEngine(output, currentFile) {
}
/**
- Return a page by its path
-
- @param {String} filePath
- @return {Object|undefined}
- */
+ * Return a page by its path
+ * @param {String} filePath
+ * @return {Object|undefined}
+ */
function getPageByPath(filePath) {
var page = output.getPage(filePath);
if (!page) return undefined;
@@ -94,7 +91,6 @@ function createTemplateEngine(output, currentFile) {
return JSONUtils.encodePage(page, summary);
}
-
return TemplateEngine.create({
loader: loader,
@@ -108,17 +104,17 @@ function createTemplateEngine(output, currentFile) {
filters: defaultFilters.merge({
/**
- Translate a sentence
- */
+ * Translate a sentence
+ */
t: function t(s) {
return i18n.t(language, s);
},
/**
- Resolve an absolute file path into a
- relative path.
- it also resolve pages
- */
+ * Resolve an absolute file path into a
+ * relative path.
+ * it also resolve pages
+ */
resolveFile: function(filePath) {
filePath = resolveFileToURL(output, filePath);
return LocationUtils.relativeForFile(currentFile, filePath);
diff --git a/lib/output/website/prepareI18n.js b/lib/output/website/prepareI18n.js
index b57d178..cedd3b9 100644
--- a/lib/output/website/prepareI18n.js
+++ b/lib/output/website/prepareI18n.js
@@ -5,11 +5,11 @@ var Promise = require('../../utils/promise');
var listSearchPaths = require('./listSearchPaths');
/**
- Prepare i18n, load translations from plugins and book
-
- @param {Output}
- @return {Promise<Output>}
-*/
+ * Prepare i18n, load translations from plugins and book
+ *
+ * @param {Output}
+ * @return {Promise<Output>}
+ */
function prepareI18n(output) {
var state = output.getState();
var i18n = state.getI18n();