diff options
Diffstat (limited to 'lib/output/website')
-rw-r--r-- | lib/output/website/__tests__/i18n.js | 38 | ||||
-rw-r--r-- | lib/output/website/createTemplateEngine.js | 58 | ||||
-rw-r--r-- | lib/output/website/prepareI18n.js | 10 |
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(); |