[TYPO3-core] RFC #11698: t3lib_div::strtoupper does not convert all characters

Christopher Stelmaszyk christopher at yahoo.de
Tue Sep 8 20:02:10 CEST 2009


Hi Masi,

"Martin Kutschker" schrieb:
>>> I suggest to postpone this patch to 4.4 and come up with a refactored
>>> charcter set handling. I propose to drop $LANG and use a character set
>>> and a label singleton instead in the BE. The FE should use the same
>>> classes.
>>
>> OK, anyway a fix for at least those occurrences where 
>> t3lib_div::strtoupper
>> and t3lib_div::strtolower are used on localized strings would be nice to
>> have...
>
> Where in the Core is t3lib_div::strtolower/-upper() used on non-ASCII
> stings? This is of course bogus and should not happen.

in the template module.
A Core-Dev suggested using this function there, so I used it...
The attached patch fixes this problem.

All other occurrences of this function (in felogin and indexed_search) seem 
to be OK.

Regards

Christopher



Index: typo3/sysext/tstemplate_objbrowser/class.tx_tstemplateobjbrowser.php
===================================================================
--- typo3/sysext/tstemplate_objbrowser/class.tx_tstemplateobjbrowser.php(revision5911)
+++ typo3/sysext/tstemplate_objbrowser/class.tx_tstemplateobjbrowser.php(workingcopy)
@@ -55,10 +55,14 @@
 				'setup' => $GLOBALS['LANG']->getLL('setup')
 			),
 			'ts_browser_toplevel_setup' => array(
-				'0' => t3lib_div::strtoupper($GLOBALS['LANG']->getLL('all'))
+				'0' => $GLOBALS['LANG']->csConvObj->conv_case(
+					$GLOBALS['LANG']->charSet, $GLOBALS['LANG']->getLL('all'), 'toUpper'
+				)
 			),
 			'ts_browser_toplevel_const' => array(
-				'0' => t3lib_div::strtoupper($GLOBALS['LANG']->getLL('all'))
+				'0' => $GLOBALS['LANG']->csConvObj->conv_case(
+					$GLOBALS['LANG']->charSet, $GLOBALS['LANG']->getLL('all'), 'toUpper'
+				)
 			),
 			'ts_browser_const' => array(
 				'0' => $GLOBALS['LANG']->getLL('plainSubstitution'),
@@ -383,7 +387,10 @@

 					// clear
 				$out = '';
-				$out = $this->pObj->sObj." <b>" . 
t3lib_div::strtoupper($GLOBALS['LANG']->getLL('clear')) . "</b> 
&nbsp;&nbsp;";
+				$out = $this->pObj->sObj . " <b>" .
+					$GLOBALS['LANG']->csConvObj->conv_case(
+						$GLOBALS['LANG']->charSet, $GLOBALS['LANG']->getLL('clear'), 
'toUpper'
+					) . "</b> &nbsp;&nbsp;";
 				$out .= '<input type="Checkbox" name="data[' . $this->pObj->sObj . 
'][clearValue]" value="1" />';
 				$out .= '<input type="Submit" name="clear_object" value="' . 
$GLOBALS['LANG']->getLL('clearButton') . '" />';
 				$theOutput .= $this->pObj->doc->spacer(20);
@@ -470,7 +477,11 @@
 			} else {
 				$remove = '';
 			}
-			$label = $theKey ? $theKey : ($bType == 'setup' ? 
t3lib_div::strtoupper($GLOBALS['LANG']->getLL('setupRoot')) : 
t3lib_div::strtoupper($GLOBALS['LANG']->getLL('constantRoot')));
+			$label = $theKey ? $theKey :
+				($bType == 'setup' ?
+					$GLOBALS['LANG']->csConvObj->conv_case($GLOBALS['LANG']->charSet, 
$GLOBALS['LANG']->getLL('setupRoot'), 'toUpper') :
+					$GLOBALS['LANG']->csConvObj->conv_case($GLOBALS['LANG']->charSet, 
$GLOBALS['LANG']->getLL('constantRoot'), 'toUpper')
+				);
 			$theOutput .= $this->pObj->doc->spacer(15);
 			$theOutput .= $this->pObj->doc->sectionEnd();
 			$theOutput .= '<table border="0" cellpadding="1" cellspacing="0" 
id="typo3-objectBrowser" width="100%"> 


begin 666 11698_v2.patch
M26YD97 at Z('1Y<&\S+W-Y<V5X="]T<W1E;7!L871E7V]B:F)R;W=S97(O8VQA
M<W,N='A?='-T96UP;&%T96]B:F)R;W=S97(N<&AP#0H]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]#0HM+2T@='EP;S,O<WES97AT+W1S=&5M<&QA=&5?;V)J8G)O
M=W-E<B]C;&%S<RYT>%]T<W1E;7!L871E;V)J8G)O=W-E<BYP:' )*')E=FES
M:6]N(#4Y,3$I#0HK*RL@='EP;S,O<WES97AT+W1S=&5M<&QA=&5?;V)J8G)O
M=W-E<B]C;&%S<RYT>%]T<W1E;7!L871E;V)J8G)O=W-E<BYP:' )*'=O<FMI
M;F<@8V]P>2D-"D! ("TU-2PQ," K-34L,30 at 0$ -"B )"0D))W-E='5P)R ]
M/B D1TQ/0D%,4ULG3$%.1R==+3YG971,3"@G<V5T=7 G*0H@"0D)*2P*( D)
M"2=T<U]B<F]W<V5R7W1O<&QE=F5L7W-E='5P)R ]/B!A<G)A>2@*+0D)"0DG
M,"<@/3X@=#-L:6)?9&EV.CIS=')T;W5P<&5R*"1'3$]"04Q36R=,04Y')UTM
M/F=E=$Q,*"=A;&PG*2D**PD)"0DG,"<@/3X@)$=,3T)!3%-;)TQ!3D<G72T^
M8W-#;VYV3V)J+3YC;VYV7V-A<V4H"BL)"0D)"21'3$]"04Q36R=,04Y')UTM
M/F-H87)3970L("1'3$]"04Q36R=,04Y')UTM/F=E=$Q,*"=A;&PG*2P@)W1O
M57!P97(G"BL)"0D)*0H@"0D)*2P*( D)"2=T<U]B<F]W<V5R7W1O<&QE=F5L
M7V-O;G-T)R ]/B!A<G)A>2@*+0D)"0DG,"<@/3X@=#-L:6)?9&EV.CIS=')T
M;W5P<&5R*"1'3$]"04Q36R=,04Y')UTM/F=E=$Q,*"=A;&PG*2D**PD)"0DG
M,"<@/3X@)$=,3T)!3%-;)TQ!3D<G72T^8W-#;VYV3V)J+3YC;VYV7V-A<V4H
M"BL)"0D)"21'3$]"04Q36R=,04Y')UTM/F-H87)3970L("1'3$]"04Q36R=,
M04Y')UTM/F=E=$Q,*"=A;&PG*2P@)W1O57!P97(G"BL)"0D)*0H@"0D)*2P*
M( D)"2=T<U]B<F]W<V5R7V-O;G-T)R ]/B!A<G)A>2@*( D)"0DG,"<@/3X@
M)$=,3T)!3%-;)TQ!3D<G72T^9V5T3$PH)W!L86EN4W5B<W1I='5T:6]N)RDL
M"D! ("TS.#,L-R K,S at W+#$P($! #0H@"B )"0D)"2\O(&-L96%R"B )"0D)
M)&]U=" ]("<G.PHM"0D)"21O=70@/2 D=&AI<RT^<$]B:BT^<T]B:BXB(#QB
M/B(@+B!T,VQI8E]D:78Z.G-T<G1O=7!P97(H)$=,3T)!3%-;)TQ!3D<G72T^
M9V5T3$PH)V-L96%R)RDI("X@(CPO8CX@)FYB<W [)FYB<W [(CL**PD)"0DD
M;W5T(#T@)'1H:7,M/G!/8FHM/G-/8FH at +B B(#QB/B(@+ at HK"0D)"0DD1TQ/
M0D%,4ULG3$%.1R==+3YC<T-O;G9/8FHM/F-O;G9?8V%S92@**PD)"0D)"21'
M3$]"04Q36R=,04Y')UTM/F-H87)3970L("1'3$]"04Q36R=,04Y')UTM/F=E
M=$Q,*"=C;&5A<B<I+" G=&]5<'!E<B<**PD)"0D)*2 N("(\+V(^("9N8G-P
M.R9N8G-P.R(["B )"0D))&]U=" N/2 G/&EN<'5T('1Y<&4](D-H96-K8F]X
M(B!N86UE/2)D871A6R<@+B D=&AI<RT^<$]B:BT^<T]B:B N("==6V-L96%R
M5F%L=65=(B!V86QU93TB,2(@+SXG.PH@"0D)"21O=70 at +CT@)SQI;G!U="!T
M>7!E/2)3=6)M:70B(&YA;64](F-L96%R7V]B:F5C="(@=F%L=64](B<@+B D
M1TQ/0D%,4ULG3$%.1R==+3YG971,3"@G8VQE87)"=71T;VXG*2 N("<B("\^
M)SL*( D)"0DD=&AE3W5T<'5T("X]("1T:&ES+3YP3V)J+3YD;V,M/G-P86-E
M<B at R,"D["D! ("TT-S L-R K-#<W+#$Q($! #0H@"0D)?2!E;'-E('L*( D)
M"0DD<F5M;W9E(#T@)R<["B )"0E]"BT)"0DD;&%B96P@/2 D=&AE2V5Y(#\@
M)'1H94ME>2 Z("@D8E1Y<&4@/3T@)W-E='5P)R _('0S;&EB7V1I=CHZ<W1R
M=&]U<'!E<B at D1TQ/0D%,4ULG3$%.1R==+3YG971,3"@G<V5T=7!2;V]T)RDI
M(#H@=#-L:6)?9&EV.CIS=')T;W5P<&5R*"1'3$]"04Q36R=,04Y')UTM/F=E
M=$Q,*"=C;VYS=&%N=%)O;W0G*2DI.PHK"0D))&QA8F5L(#T@)'1H94ME>2 _
M("1T:&5+97D at .@HK"0D)"2 at D8E1Y<&4@/3T@)W-E='5P)R _"BL)"0D)"21'
M3$]"04Q36R=,04Y')UTM/F-S0V]N=D]B:BT^8V]N=E]C87-E*"1'3$]"04Q3
M6R=,04Y')UTM/F-H87)3970L("1'3$]"04Q36R=,04Y')UTM/F=E=$Q,*"=S
M971U<%)O;W0G*2P@)W1O57!P97(G*2 Z"BL)"0D)"21'3$]"04Q36R=,04Y'
M)UTM/F-S0V]N=D]B:BT^8V]N=E]C87-E*"1'3$]"04Q36R=,04Y')UTM/F-H
M87)3970L("1'3$]"04Q36R=,04Y')UTM/F=E=$Q,*"=C;VYS=&%N=%)O;W0G
M*2P@)W1O57!P97(G*0HK"0D)"2D["B )"0DD=&AE3W5T<'5T("X]("1T:&ES
M+3YP3V)J+3YD;V,M/G-P86-E<B at Q-2D["B )"0DD=&AE3W5T<'5T("X]("1T
M:&ES+3YP3V)J+3YD;V,M/G-E8W1I;VY%;F0H*3L*( D)"21T:&5/=71P=70@
M+CT@)SQT86)L92!B;W)D97(](C B(&-E;&QP861D:6YG/2(Q(B!C96QL<W!A
M8VEN9STB,"(@:60](G1Y<&\S+6]B:F5C=$)R;W=S97(B('=I9'1H/2(Q,# E
#(CX*
`
end



More information about the TYPO3-team-core mailing list