From: Tim Starling Date: Thu, 6 Oct 2011 02:31:38 +0000 (+0000) Subject: Fixes for r84057 LanguageTr uc/lc: X-Git-Tag: 1.31.0-rc.0~27246 X-Git-Url: http://git.cyclocoop.org/%24self?a=commitdiff_plain;h=4b524499703763110847ebf2881b7e5b4a052119;p=lhc%2Fweb%2Fwiklou.git Fixes for r84057 LanguageTr uc/lc: * Fixed inappropriate use of empty(), see style guide * Made uc() and lc() respect the $first parameter. Not doing this completely broke the Turkish wikipedia, sending links like [[İngilizce]] to [[İngİlİzce]]. * Use str_replace() instead of preg_replace(). It's not necessary to use a unicode-aware replacement algorithm to do UTF-8 string replacements, due to details of the UTF-8 encoding format. I'm not sure how Hashar concluded that strtr() will produce garbage. --- diff --git a/languages/classes/LanguageTr.php b/languages/classes/LanguageTr.php index 5692c02367..0a2673c5c5 100644 --- a/languages/classes/LanguageTr.php +++ b/languages/classes/LanguageTr.php @@ -17,7 +17,7 @@ class LanguageTr extends Language { * @return string */ function ucfirst ( $string ) { - if ( !empty( $string ) && $string[0] == 'i' ) { + if ( strlen( $string ) && $string[0] == 'i' ) { return 'Ä°' . substr( $string, 1 ); } else { return parent::ucfirst( $string ); @@ -29,7 +29,7 @@ class LanguageTr extends Language { * @return mixed|string */ function lcfirst ( $string ) { - if ( !empty( $string ) && $string[0] == 'I' ) { + if ( strlen( $string ) && $string[0] == 'I' ) { return 'ı' . substr( $string, 1 ); } else { return parent::lcfirst( $string ); @@ -45,7 +45,15 @@ class LanguageTr extends Language { * @return string */ function uc( $string, $first = false ) { - $string = preg_replace( '/i/', 'Ä°', $string ); + if ( strlen( $string ) ) { + if ( $first ) { + if ( $string[0] === 'i' ) { + $string = 'Ä°' . substr( $string, 1 ); + } + } else { + $string = str_replace( 'i', 'Ä°', $string ); + } + } return parent::uc( $string, $first ); } @@ -58,7 +66,15 @@ class LanguageTr extends Language { * @return string */ function lc( $string, $first = false ) { - $string = preg_replace( '/I/', 'ı', $string ); + if ( strlen( $string ) ) { + if ( $first ) { + if ( $string[0] == 'I' ) { + $string = 'ı' . substr( $string, 1 ); + } + } else { + $string = str_replace( 'I', 'ı', $string ); + } + } return parent::lc( $string, $first ); }