addDescription( 'Outputs a list of language variants' ); $this->addOption( 'flat', 'Output variants in a flat list' ); $this->addOption( 'json', 'Output variants as JSON' ); } public function execute() { $variantLangs = []; $variants = []; foreach ( LanguageConverter::$languagesWithVariants as $langCode ) { $lang = Language::factory( $langCode ); if ( count( $lang->getVariants() ) > 1 ) { $variants += array_flip( $lang->getVariants() ); $variantLangs[$langCode] = $lang->getVariants(); } } $variants = array_keys( $variants ); sort( $variants ); $result = $this->hasOption( 'flat' ) ? $variants : $variantLangs; // Not using $this->output() because muting makes no sense here if ( $this->hasOption( 'json' ) ) { echo FormatJson::encode( $result, true ) . "\n"; } else { foreach ( $result as $key => $value ) { if ( is_array( $value ) ) { echo "$key\n"; foreach ( $value as $variant ) { echo " $variant\n"; } } else { echo "$value\n"; } } } } } $maintClass = ListVariants::class; require_once RUN_MAINTENANCE_IF_MAIN;