I am far from being a C++ guru, but a quick look at both kiosktool and tdebase seems to indicate that scripts are supported only in $TDEHOME/env and not in any global location.
That would explain why your locale.sh script is not executing for you except from $TDEHOME/env.
To clarify, the starttde script supports two env locations: 1) $TDEHOME/env and 2) $TDEDIR/env. The kiosktool and tdebase code only looks in $TDEHOME/env. My guess is the tdebase and kiosktool code should be updated to be consistent with starttde, but somebody more intimate with the code should respond.
Darrell