* (bug 16877) Moving a page over a redirect no longer leaves an orphan entry in
the recentchanges table
* (bug 16009) Limit selection forms based on Pager now links to the correct page
- when using long urls
+ when using long urls
+* The display of the language list on the preferences is more comply with the
+ BCP 47 standards.
== API changes in 1.16 ==
if( preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $f, $m ) ) {
$code = str_replace( '_', '-', strtolower( $m[1] ) );
if( isset( $wgLanguageNames[$code] ) ) {
- $name = $code . ' - ' . $wgLanguageNames[$code];
+ $name = wfBCP47( $code ) . ' - ' . $wgLanguageNames[$code];
} else {
$name = $code;
}
return $array;
}
+
+/* get the noramised IETF language tag */
+function wfBCP47( $code ) {
+ $codeSegment = explode( '-', $code );
+ foreach ( $codeSegment as $segNo => $seg ) {
+ // ISO 3166 country code
+ if ( ( strlen( $seg ) == 2 ) && ( $segNo > 0 ) )
+ $codeBCP[$segNo] = strtoupper ( $seg );
+ // ISO 15924 script code
+ else if ( ( strlen( $seg ) == 4 ) && ( $segNo > 0 ) )
+ $codeBCP[$segNo] = ucfirst( $seg );
+ // Keep casing for other cases
+ else
+ $codeBCP[$segNo] = $seg;
+ }
+ $langCode = implode ( '-' , $codeBCP );
+ return $langCode;
+}
+
$options = array();
foreach( $languages as $code => $name ) {
- $display = "$code - $name";
+ $display = wfBCP47( $code ) . ' - ' . $name;
$options[$display] = $code;
}
$defaultPreferences['language'] =
$options = array();
foreach( $variantArray as $code => $name ) {
- $display = "$code - $name";
+ $display = wfBCP47( $code ) . ' - ' . $name;
$options[$display] = $code;
}