175 public static function bcp47( $code ) {
176 $code = self::replaceDeprecatedCodes( strtolower( $code ) );
177 if ( isset( self::NON_STANDARD_LANGUAGE_CODE_MAPPING[$code] ) ) {
178 $code = self::NON_STANDARD_LANGUAGE_CODE_MAPPING[$code];
180 $codeSegment = explode(
'-', $code );
182 foreach ( $codeSegment as $segNo => $seg ) {
184 if ( $segNo > 0 && strtolower( $codeSegment[( $segNo - 1 )] ) ==
'x' ) {
185 $codeBCP[$segNo] = strtolower( $seg );
187 } elseif ( ( strlen( $seg ) == 2 ) && ( $segNo > 0 ) ) {
188 $codeBCP[$segNo] = strtoupper( $seg );
190 } elseif ( ( strlen( $seg ) == 4 ) && ( $segNo > 0 ) ) {
191 $codeBCP[$segNo] = ucfirst( strtolower( $seg ) );
194 $codeBCP[$segNo] = strtolower( $seg );
197 $langCode = implode(
'-', $codeBCP );