diff --git a/bin/browserid b/bin/browserid index 225526ab27a818edbc3f7545e0f216b088c5573f..f3399bb57408478b01731f1f6993375150f544b3 100755 --- a/bin/browserid +++ b/bin/browserid @@ -61,7 +61,7 @@ app.use(i18n.abide({ supported_languages: config.get('supported_languages'), default_lang: config.get('default_lang'), debug_lang: config.get('debug_lang'), - locale_directory: config.get('locale_directory'), + translation_directory: config.get('translation_directory'), disable_locale_check: config.get('disable_locale_check') })); diff --git a/bin/static b/bin/static index 47af95441d6858387a0bfa09918fef5c124bdc52..d9f3894084f03958960848d9ffcc60ec085f09ef 100755 --- a/bin/static +++ b/bin/static @@ -53,7 +53,7 @@ app.use(i18n.abide({ supported_languages: config.get('supported_languages'), default_lang: config.get('default_lang'), debug_lang: config.get('debug_lang'), - locale_directory: config.get('locale_directory'), + translation_directory: config.get('translation_directory'), disable_locale_check: config.get('disable_locale_check') })); diff --git a/lib/configuration.js b/lib/configuration.js index ef4d97f42e2609563a792783337bbc04f2697663..79d7aa72f8d398dd806e1154377eac953ba2a427 100644 --- a/lib/configuration.js +++ b/lib/configuration.js @@ -185,14 +185,18 @@ var conf = module.exports = convict({ debug_lang: 'string = "it-CH"', supported_languages: { doc: "List of languages this deployment should detect and display localized strings.", - format: 'array { string }* = [ "en-US" ]', + format: 'array { string }* = [ "en-US", "it-CH" ]', env: 'SUPPORTED_LANGUAGES' }, disable_locale_check: { doc: "Skip checking for gettext .mo files for supported locales", format: 'boolean = false' }, - locale_directory: 'string = "locale"', + translation_directory: { + doc: "The directory where per-locale .json files containing translations reside", + format: 'string = "resources/static/i18n/"', + env: "TRANSLATION_DIR" + }, express_log_format: 'string [ "default_bid", "dev_bid", "default", "dev", "short", "tiny" ] = "default"', keysigner_url: { format: 'string?', @@ -256,6 +260,11 @@ if (process.env['CONFIG_FILES']) { }); } +// allow supported langauges to be specified in the env as a CSV string +if (process.env['SUPPORTED_LANGUAGES']) { + conf.set('supported_languages', process.env['SUPPORTED_LANGUAGES'].split(',')); +} + // special handling of HTTP_PROXY env var if (process.env['HTTP_PROXY']) { var p = process.env['HTTP_PROXY'].split(':'); diff --git a/lib/i18n.js b/lib/i18n.js index 145365aea0bdfae53db1bc839e17fb568e39bf97..70aed66f4064f4a5723a555a9edd3ada5f30dbce 100644 --- a/lib/i18n.js +++ b/lib/i18n.js @@ -27,7 +27,7 @@ if (typeof fs.existsSync === 'function') { var existsSync = path.existsSync; } -const BIDI_RTL_LANGS = ['ar', 'db-LB', 'fa', 'he']; +const BIDI_RTL_LANGS = ['ar', 'fa', 'he']; var translations = {}; @@ -38,33 +38,29 @@ var translations = {}; app.use(i18n.abide({ supported_languages: ['en-US', 'fr', 'pl'], default_lang: 'en-US', - locale_directory: 'locale' })); * * Other valid options: gettext_alias, ngettext_alias */ exports.abide = function (options) { - - if (! options.gettext_alias) options.gettext_alias = 'gettext'; - if (! options.ngettext_alias) options.ngettext_alias = 'ngettext'; - if (! options.supported_languages) options.supported_languages = ['en-US']; - if (! options.default_lang) options.default_lang = 'en-US'; - if (! options.debug_lang) options.debug_lang = 'it-CH'; - if (! options.disable_locale_check) options.disable_locale_check = false; - if (! options.locale_directory) options.locale_directory = 'locale'; - if (! options.i18n_json_dir) options.i18n_json_dir = 'resources/static/i18n/'; + if (! options.gettext_alias) options.gettext_alias = 'gettext'; + if (! options.supported_languages) options.supported_languages = ['en-US']; + if (! options.default_lang) options.default_lang = 'en-US'; + if (! options.debug_lang) options.debug_lang = 'it-CH'; + if (! options.disable_locale_check) options.disable_locale_check = false; + if (! options.translation_directory) options.i18n_json_dir = 'l10n/'; var json_dir = path.resolve( path.join(__dirname, '..'), - path.join(options.i18n_json_dir)); + path.join(options.translation_directory)); var debug_locale = localeFrom(options.debug_lang); options.supported_languages.forEach(function (lang, i) { - var l = (lang === options.debug_lang ? 'db_LB' : localeFrom(lang)); + // ignore .json files for default and debug languages + if (options.default_lang == lang || options.debug_lang == lang) return; - // ignore .json files for en-US - if (lang == 'en-US') return; + var l = localeFrom(lang); try { // populate the in-memory translation cache with client.json, which contains @@ -101,14 +97,10 @@ exports.abide = function (options) { debug_lang = options.debug_lang.toLowerCase(), locale; - if (lang && lang.toLowerCase && lang.toLowerCase() == debug_lang) { - lang = 'db-LB'; // What? http://www.youtube.com/watch?v=rJLnGjhPT1Q - } - resp.local('lang', lang); // BIDI support, which direction does text flow? - lang_dir = BIDI_RTL_LANGS.indexOf(lang) >= 0 ? 'rtl' : 'ltr'; + lang_dir = ((BIDI_RTL_LANGS.indexOf(lang) >= 0) || debug_lang == lang) ? 'rtl' : 'ltr'; resp.local('lang_dir', lang_dir); req.lang = lang; diff --git a/lib/wsapi.js b/lib/wsapi.js index cabedf038c27df25dc4dcb4f6b0eb765b8f8e8a7..7cee435e2afba35e628923bb3a1c2583447eca40 100644 --- a/lib/wsapi.js +++ b/lib/wsapi.js @@ -34,7 +34,7 @@ i18n = require('./i18n'); var abide = i18n.abide({ supported_languages: config.get('supported_languages'), default_lang: config.get('default_lang'), - locale_directory: config.get('locale_directory'), + translation_directory: config.get('translation_directory'), disable_locale_check: config.get('disable_locale_check') });