HTTP::redirect is a full 302 redirect, so you have to provide it the entire URL.
Try this:
when HTTP_REQUEST {
if { not ([HTTP::uri] equals "/french/") } {
HTTP::redirect "http://[getfield [HTTP::host] ":" 1]/french/"
}
}
The second example you gave doesn't actually change anything. It reads and compares the [HTTP::uri] and if it equals "/french" then your telling it to change the [HTTP::uri] to "/french/".
If you told hit to change it to "/english/" then it would change the request sent to the server, but not change what was displayed in the browser.
The browser would show:
http://www.website.com/french/
The server would see:
http://www.website.com/english/
You would use this if you wanted to simplify the vanity URL, but actually had your website code arranged differently.