From 4dfa19b3275cbd74ed686c437d392c4612e237a4 Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Sun, 9 Jun 2019 21:21:15 -0400 Subject: [PATCH] feat(i18n): swap out os-locale dependency for simple inline implementation (#1356) --- package.json | 1 - test/validation.js | 1 - test/yargs.js | 12 ------------ yargs.js | 5 +++-- 4 files changed, 3 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 5cc7ba281..49f6b52b2 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", diff --git a/test/validation.js b/test/validation.js index 60d23441d..f704816ce 100644 --- a/test/validation.js +++ b/test/validation.js @@ -291,7 +291,6 @@ describe('validation tests', () => { function loadLocale (locale) { delete require.cache[require.resolve('../')] - delete require.cache[require.resolve('os-locale')] yargs = require('../') process.env.LC_ALL = locale } diff --git a/test/yargs.js b/test/yargs.js index fa232e200..20f105850 100644 --- a/test/yargs.js +++ b/test/yargs.js @@ -638,7 +638,6 @@ describe('yargs dsl tests', () => { function loadLocale (locale) { delete require.cache[require.resolve('../')] - delete require.cache[require.resolve('os-locale')] yargs = require('../') process.env.LC_ALL = locale } @@ -687,17 +686,6 @@ describe('yargs dsl tests', () => { r.logs.join(' ').should.match(/Exibe ajuda/) }) - it('handles os-locale throwing an exception', () => { - // make os-locale throw. - require('os-locale') - require.cache[require.resolve('os-locale')].exports.sync = () => { throw Error('an error!') } - - delete require.cache[require.resolve('../')] - yargs = require('../') - - yargs.locale().should.equal('en') - }) - it('uses locale string for help option default desc on .locale().help()', () => { const r = checkOutput(() => { yargs(['-h']) diff --git a/yargs.js b/yargs.js index 9a2e63358..f1bf8c639 100644 --- a/yargs.js +++ b/yargs.js @@ -1181,8 +1181,9 @@ function Yargs (processArgs, cwd, parentRequire) { if (!detectLocale) return try { - const osLocale = require('os-locale') - self.locale(osLocale.sync({ spawn: false })) + const { env } = process + const locale = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE || 'en_US' + self.locale(locale.replace(/[.:].*/, '')) } catch (err) { // if we explode looking up locale just noop // we'll keep using the default language 'en'.