Ok, how about this:
Table containing location ID's (en-GB, es, es-MX etc) as PK, columns Header1, Header2.. HeaderN.., Label1 etc (obviously with better names - more on design in a bit)
and the rows containing the translated versions.
Create a dataset Labels in the report, as select header1, header2... from Labels where LocationId = @LocID
Set the available & default values for report parameter @LocID as =User!Language, and set it as a hidden parameter.
Then for everywhere where required, use =First(Fields!HeaderName.Value, "Labels"), where HeaderName is the desired header/label.
Design of the underlying table could be improved by having 3 tables - Location, Header and a link table containing the translated value.
Location table could have another field MasterLocationId which self-references where you don't need extra translations for different languages.
Wrap it all in a view/proc for the dataset to read from.
Hope that makes sense - all completely untested of course!
Think it'll be ok in headers, gets a bit muddier when you start with chart labels etc.