Ok we found an interresting work-around
So as said before if you have an English site, and on a page you override InitializeCulture() to modify the current thread culture, you'll end up having a mix of english and another language.
We managed to fix it so that the whole User interface uses the current thread language.
What we did is chance the SPWeb.Locale property of the website to French for exemple and SPWeb.Update() after.
Now we have a website that was supposed to be English with a Locale property set to something else.
It doesn't change anything to do that is what we thought, but then we tried our InitializeCulture() page again and ... it worked so now by changing the current thread culture we change the whole interface instead of only half of it.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.ApplicationRuntime;
namespace FirstProject.CustomASPPage
{
public class LocalizableWebPartPage : WebPartPage
{
protected override void InitializeCulture()
{
try
{
//base.InitializeCulture();
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(int.Parse(Request["lcid"]));
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(int.Parse(Request["lcid"]));
}
catch (Exception e)
{ }
}
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
InitializeCulture();
}
}
}
Ok so now we changed every aspx pages to inherit from the one above, and it works great :)
(InitializeCulture() is never called by Moss for the WebPartPage, so we had to call it from PreInit)