1 | var _ = require('lodash');
|
2 | var async = require('async');
|
3 | var i18n = require('i18next');
|
4 | var Uri = require('jsUri');
|
5 | var log = require('./lib/log');
|
6 | var app = require('./app');
|
7 | var settings = require('./config/settings');
|
8 | var sha1 = require('sha1');
|
9 |
|
10 | var query_params = (function(qs) {
|
11 | qs = String(qs || '');
|
12 | if (qs[0] !== '?') {
|
13 | qs = '?' + qs;
|
14 | }
|
15 | var uri = new Uri(qs);
|
16 | var obj = _.reduce(uri.queryPairs, function(obj, item) {
|
17 | var key = item[0], value = item[1];
|
18 | obj[key] = decodeURIComponent(value);
|
19 | return obj;
|
20 | }, {});
|
21 |
|
22 | return obj;
|
23 | }(window.root.location.search)) || {};
|
24 |
|
25 |
|
26 | function cookie_get(key) {
|
27 | if ( ! key) {
|
28 | return null;
|
29 | }
|
30 | return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(key).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
|
31 | }
|
32 |
|
33 | function registerI18nHelpers(i18n) {
|
34 | i18n = i18n || {};
|
35 | i18n._ = function() {
|
36 | var args = Array.prototype.slice.call(arguments);
|
37 | if (_.size(args) === 0 || _.isEmpty(args[0])) {
|
38 | i18n.t.apply(i18n, args);
|
39 | return;
|
40 | }
|
41 |
|
42 | var value = args[0];
|
43 | var options = args[1] || {};
|
44 | var key = sha1(value);
|
45 | args[0] = value;
|
46 |
|
47 | options.defaultValue = value;
|
48 |
|
49 | return i18n.t(key, options);
|
50 | };
|
51 | }
|
52 |
|
53 | async.series([
|
54 |
|
55 | function i18next_init(next) {
|
56 | var lng;
|
57 |
|
58 | registerI18nHelpers(i18n);
|
59 |
|
60 |
|
61 | lng = query_params[settings.i18next.detectLngQS] || '';
|
62 |
|
63 |
|
64 | lng = lng || (function(lng) {
|
65 | if (settings.i18next.useCookie) {
|
66 | return cookie_get(settings.i18next.cookieName);
|
67 | }
|
68 | return lng;
|
69 | }(lng));
|
70 |
|
71 |
|
72 | lng = lng || $('html').attr('lang');
|
73 |
|
74 |
|
75 | lng = (lng || '').toLowerCase();
|
76 |
|
77 | if (settings.supportedLngs.indexOf(lng) >= 0) {
|
78 | settings.i18next.lng = lng;
|
79 | } else {
|
80 | settings.i18next.lng = settings.i18next.fallbackLng || settings.supportedLngs[0];
|
81 | }
|
82 |
|
83 | i18n.init(settings.i18next, function(t) {
|
84 | next();
|
85 | });
|
86 | },
|
87 |
|
88 | function log_init(next) {
|
89 | var log_level = query_params['log_level'] || settings.log.level;
|
90 | var log_logger = query_params['log_logger'] || settings.log.logger;
|
91 | var log_prefix = query_params['log_prefix'] || settings.log.prefix;
|
92 |
|
93 | log.setLevel(log_level);
|
94 | log.setLogger(log_logger);
|
95 | log.setPrefix(log_prefix);
|
96 |
|
97 | var msg = [
|
98 | 'version=' + settings.version,
|
99 | 'webroot=' + settings.webroot,
|
100 | 'cdn=' + settings.cdn
|
101 | ];
|
102 | log.debug(msg.join(','));
|
103 |
|
104 | next();
|
105 | }
|
106 | ], function(err, results) {
|
107 |
|
108 | var loading = document.getElementById('loading');
|
109 | if (loading) {
|
110 | loading.style.display = 'none';
|
111 | }
|
112 |
|
113 | app.run();
|
114 | });
|