Merge branch 'hotfix/21.56.9' into master
[gitter.git] / modules / i18n / lib / i18n-factory.js
blob62ed8e93036409525ccce47b9616696c44209024
1 'use strict';
3 var env = require('gitter-web-env');
4 var config = env.config;
5 var I18n = require('i18n-2');
6 var path = require('path');
7 var fs = require('fs');
8 var translations = require('gitter-web-translations');
10 var devMode = config.runtimeEnvironment === 'dev';
12 function getLocales(localeDir) {
13   var files = fs.readdirSync(localeDir);
14   /* EN must always appear first */
15   return ['en'].concat(
16     files
17       .filter(function(file) {
18         var fullName = path.join(localeDir, file);
19         return fs.statSync(fullName).isFile() && path.extname(file) === '.json';
20       })
21       .map(function(file) {
22         return path.basename(file, '.json');
23       })
24       .filter(function(lang) {
25         return lang !== 'en';
26       })
27   );
30 var messagesPath = translations.getMessagesPath();
31 var messageLocales = getLocales(messagesPath);
33 var homepagePath = translations.getHomePagePath();
34 var homepageLocales = getLocales(homepagePath);
36 module.exports = {
37   get: function(req) {
38     return new I18n({
39       locales: messageLocales,
40       defaultLocale: 'en',
41       devMode: devMode,
42       directory: messagesPath,
43       extension: '.json',
44       request: req
45     });
46   },
48   getLocales: function() {
49     return messageLocales;
50   },
52   getHomePage: function(req) {
53     return new I18n({
54       locales: homepageLocales,
55       defaultLocale: 'en',
56       devMode: devMode,
57       directory: homepagePath,
58       extension: '.json',
59       request: req
60     });
61   }