I looked into this one, and found there are 2 problems.
1) The "localizer" library used by Hudson had a bug where "Localizable" objects
were translated by default using the system's default locale, instead of the
locale for this request. I've informed kohsuke of this, and he will fix it.
This will get the heading part ("Build stability:") translated correctly.
2) Job.getBuildStabilityHealthReport() actually translates part of the message
(that goes after the "Build stability:" heading), but the result from this
method is cached and used for all users.. result: everyone sees the language
that the first person to view it was using (cached after that). This part of
the report also needs to use Localizable object, so it will translate later
based on the locale of the current viewer. I'll make this fix in Job.java, and
once the fix for #1 is in place it will start working too.