eas-cli
Version:
EAS command line tool
246 lines (245 loc) • 5.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.sanitizeLanguage = void 0;
const tslib_1 = require("tslib");
const log_1 = tslib_1.__importDefault(require("../../../log"));
/**
* Sanitizes language for App Store Connect.
* @param lang Language to sanitize
* @returns Provided language if valid
* @throws Error if language is invalid.s
*/
function sanitizeLanguage(lang, { defaultLang = 'en-US' } = {}) {
if (!lang) {
const found = findLanguage(defaultLang);
if (!found) {
throw new Error('Invalid default language provided: ' + defaultLang);
}
return found.itcLocale ?? found.locale;
}
const foundLang = findLanguage(lang);
if (!foundLang) {
log_1.default.addNewLineIfNone();
throw new Error(`You must specify a supported language. Supported language codes are:\n${languageListToString()}`);
}
return foundLang.itcLocale ?? foundLang.locale;
}
exports.sanitizeLanguage = sanitizeLanguage;
/**
* Displays language list. When using apple utils, the format is:
* - en-US (English)
*
* otherwise it's just:
* - English
*/
function languageListToString() {
return LANGUAGES.map(lang => {
const code = lang.itcLocale || lang.locale;
const name = lang.displayName || lang.name;
return `- ${code}\t(${name})`;
}).join('\n');
}
/**
* Finds language by any param.
*/
function findLanguage(query) {
const foundLang = LANGUAGES.find(lang => lang.displayName === query ||
lang.name === query ||
lang.locale === query ||
lang.itcLocale === query);
return foundLang ?? null;
}
/**
* This is slightly modified list taken from fastlane: https://github.com/fastlane/fastlane/blob/master/spaceship/lib/assets/languageMapping.json
* Currently supported languages can be found here: https://www.ibabbleon.com/iOS-Language-Codes-ISO-639.html
*/
const LANGUAGES = [
{
locale: 'ar-SA',
name: 'Arabic',
itcLocale: 'ar-SA',
},
{
locale: 'ca-ES',
name: 'Catalan',
itcLocale: 'ca',
},
{
locale: 'cmn-Hans',
name: 'Simplified Chinese',
itcLocale: 'zh-Hans',
},
{
locale: 'cmn-Hant',
name: 'Traditional Chinese',
itcLocale: 'zh-Hant',
},
{
locale: 'cs-CZ',
name: 'Czech',
itcLocale: 'cs',
},
{
locale: 'da-DK',
name: 'Danish',
itcLocale: 'da',
},
{
locale: 'nl-NL',
name: 'Dutch',
},
{
locale: 'en-AU',
name: 'English_Australian',
displayName: 'Australian English',
},
{
locale: 'en-CA',
name: 'English_CA',
displayName: 'Canadian English',
},
{
locale: 'en-GB',
name: 'English_UK',
displayName: 'UK English',
},
{
locale: 'en-US',
name: 'English',
},
{
locale: 'fi-FI',
name: 'Finnish',
itcLocale: 'fin',
},
{
locale: 'fr-CA',
name: 'French_CA',
displayName: 'Canadian French',
},
{
locale: 'fr-FR',
name: 'French',
},
{
locale: 'de-DE',
name: 'German',
},
{
locale: 'el-GR',
name: 'Greek',
itcLocale: 'el',
},
{
locale: 'he',
name: 'Hebrew',
itcLocale: 'he',
},
{
locale: 'hi-IN',
name: 'Hindi',
itcLocale: 'hi',
},
{
locale: 'hr-HR',
name: 'Croatian',
itcLocale: 'hr',
},
{
locale: 'hu-HU',
name: 'Hungarian',
itcLocale: 'hu',
},
{
locale: 'id-ID',
name: 'Indonesian',
itcLocale: 'id',
},
{
locale: 'it-IT',
name: 'Italian',
itcLocale: 'it',
},
{
locale: 'ja-JP',
name: 'Japanese',
itcLocale: 'ja',
},
{
locale: 'ko-KR',
name: 'Korean',
itcLocale: 'ko',
},
{
locale: 'ms-MY',
name: 'Malay',
itcLocale: 'ms',
},
{
locale: 'no-NO',
name: 'Norwegian',
itcLocale: 'no',
},
{
locale: 'pl-PL',
name: 'Polish',
itcLocale: 'pl',
},
{
locale: 'pt-BR',
name: 'Brazilian Portuguese',
},
{
locale: 'pt-PT',
name: 'Portuguese',
},
{
locale: 'ro-RO',
name: 'Romanian',
itcLocale: 'ro',
},
{
locale: 'ru-RU',
name: 'Russian',
itcLocale: 'ru',
},
{
locale: 'es-MX',
name: 'Spanish_MX',
displayName: 'Mexican Spanish',
},
{
locale: 'es-ES',
name: 'Spanish',
},
{
locale: 'sk-SK',
name: 'Slovak',
itcLocale: 'sk',
},
{
locale: 'sv-SE',
name: 'Swedish',
itcLocale: 'sv',
},
{
locale: 'th-TH',
name: 'Thai',
itcLocale: 'th',
},
{
locale: 'tr-TR',
name: 'Turkish',
itcLocale: 'tr',
},
{
locale: 'uk-UA',
name: 'Ukrainian',
itcLocale: 'uk',
},
{
locale: 'vi-VI',
name: 'Vietnamese',
itcLocale: 'vi',
},
];
;