/**
* Create a language object for a given language code
* @param string $code
+ * @param $fallback boolean Whether we're going through language fallback chain
* @throws MWException
* @return Language
*/
- protected static function newFromCode( $code ) {
+ protected static function newFromCode( $code, $fallback = false ) {
if ( !Language::isValidCode( $code ) ) {
throw new MWException( "Invalid language code \"$code\"" );
}
}
// Check if there is a language class for the code
- $class = self::classFromCode( $code );
+ $class = self::classFromCode( $code, $fallback );
if ( class_exists( $class ) ) {
$lang = new $class;
return $lang;
* @return array Language code => language name
*/
private static function fetchLanguageNamesUncached( $inLanguage = null, $include = 'mw' ) {
- global $wgExtraLanguageNames;
+ global $wgExtraLanguageNames, $wgUsePigLatinVariant;
// If passed an invalid language code to use, fallback to en
if ( $inLanguage !== null && !Language::isValidCode( $inLanguage ) ) {
}
$mwNames = $wgExtraLanguageNames + MediaWiki\Languages\Data\Names::$names;
+ if ( $wgUsePigLatinVariant ) {
+ // Pig Latin (for variant development)
+ $mwNames['en-x-piglatin'] = 'Igpay Atinlay';
+ }
+
foreach ( $mwNames as $mwCode => $mwName ) {
# - Prefer own MediaWiki native name when not using the hook
# - For other names just add if not added through the hook
/**
* @param string $code
+ * @param boolean $fallback Whether we're going through language fallback chain
* @return string Name of the language class
*/
- public static function classFromCode( $code ) {
- if ( $code == 'en' ) {
+ public static function classFromCode( $code, $fallback = true ) {
+ if ( $fallback && $code == 'en' ) {
return 'Language';
} else {
return 'Language' . str_replace( '-', '_', ucfirst( $code ) );