The approach could be to use a MarkupExtension that would be able to get localized strings from resource dictionaries. It will allow you to specify the source dictionary globally for a whole view, or locally for part of the UI using an inheritable attached property (and more things like fallback texts for design time), something like this:
<Grid
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:Localization"
l:Loc.Source="Languages/lang-en.xaml">
<TextBlock Text="{l:Loc PageTitle, Id=Title}"/>
...
<StackPanel l:Loc.Source="Languages/lang-fr.xaml">
<TextBlock Text="{l:Loc Id=Name}"/>...
<TextBlock Text="{l:Loc Id=Address}"/>...
</StackPanel>
</Grid> |