In FuelPHP, Views by default are lazy rendered. This means a View object is only converted to HTML when it's being send to the browser. This happens long after the Request has finished, in your index.php.
Now, language settings are set per Request, to make sure that changes in HMVC calls don't alter the language on the parent request. This means that if you change the language in your controller, by the time the View renders the language has been reverted to the value from before the request started.
Bottom line, make sure your config file contains the correct default language. Since you're using 'fr' hardcoded, better do that in your config file.
If you want to set a custom language, for example based on a session value, a cookie value, or a URI segment, you will have to do that before the Request starts. You can do that in your app bootstrap, after the Fuel init call, or in a _init() method of a class that you define as always_load in your config.