From aad46256f9d0c7d9294fc9dbcf0ea18a90a1437a Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 12 Sep 2019 16:03:25 -0700 Subject: [PATCH] Complete language variants filled in for LANG var Part of #80072 --- .../terminal/common/terminalEnvironment.ts | 46 +++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts b/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts index 6b9a3ec87b742..47515a593db2f 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalEnvironment.ts @@ -96,23 +96,63 @@ function _getLangEnvVariable(locale?: string) { return 'en_US.UTF-8'; } if (n === 1) { - // app.getLocale can return just a language without a variant, fill in the variant for - // supported languages as many shells expect a 2-part locale. + // The local may only contain the language, not the variant, if this is the case guess the + // variant such that it can be used as a valid $LANG variable. The language variant chosen + // is the original and/or most prominent with help from + // https://stackoverflow.com/a/2502675/1156119 + // The list of locales was generated by running `locale -a` on macOS const languageVariants: { [key: string]: string } = { + af: 'ZA', + am: 'ET', + be: 'BY', + bg: 'BG', + ca: 'ES', cs: 'CZ', + da: 'DK', + // de: 'AT', + // de: 'CH', de: 'DE', + el: 'GR', + // en: 'AU', + // en: 'CA', + // en: 'GB', + // en: 'IE', + // en: 'NZ', en: 'US', es: 'ES', + et: 'EE', + eu: 'ES', fi: 'FI', + // fr: 'BE', + // fr: 'CA', + // fr: 'CH', fr: 'FR', + he: 'IL', + hr: 'HR', hu: 'HU', + hy: 'AM', + is: 'IS', + // it: 'CH', it: 'IT', ja: 'JP', + kk: 'KZ', ko: 'KR', + lt: 'LT', + // nl: 'BE', + nl: 'NL', + no: 'NO', pl: 'PL', + pt: 'BR', + // pt: 'PT', + ro: 'RO', ru: 'RU', sk: 'SK', - zh: 'CN' + sl: 'SI', + sr: 'YU', + sv: 'SE', + tr: 'TR', + uk: 'UA', + zh: 'CN', }; if (parts[0] in languageVariants) { parts.push(languageVariants[parts[0]]);