There are two methods to set the UICulture of an asp.net web page.
Option #1 is that the web browser can adjust the UI Culture (auto), by setting the current Language in the web browser. In FireFox you go the Content tab in Options, and click Languages, then add the French language and move it to the top of the list. IE is similar, it has a Languages button in the Options pages, and you add French and move it to the top of the order. For your web page to support this style of automatic adjustment, you have to set 'UICulture=auto' in web page pragma like so:
<%@ Page Language="C#" AutoEventWireup="true" UICulture="auto" ... ... ... %>
If you use this method, it will display your Default language for any web browser languages that it does not understand. You only have to define a culture-neutral resource to cover all versions of a language, or you can define the specific languages (fr-CA, es-mx, etc) and it will fallback to the neutral language file (fr-fr) if the specific language is not defined. MSDN has more info on the auto culture and how to add more web browser languages to IE:
http://msdn.microsoft.com/en-us/library/fw69ke6f.aspx
Option #2 is to set it in the web page pragma to a specific language, like UICulture="fr-FR", or in the web.config for the whole site.
MSDN explains these settings in the link below, and how you can set it via web.config for all pages on your site.
http://msdn.microsoft.com/en-us/library/bz9tc508.aspx
The programmatic method that you are using works, but as you noticed it only works temporarily. I've used the programmatic method for reading the language specified via the querystring and changing cultures that way. You can implement an HttpModule to check the querystring and set the culture for the current page request this way.