Pour notre application WPF, toutes nos chaînes sont localisées en tant que ressources dans un ResourceDictionary
que nous mettons dans un fichier .xaml nommé d'après le langage (comme en-US.xaml, ja-JP.xaml, etc.).
Par exemple, quelque part dans l'application un bouton pourrait ressembler à ceci:
<Button Content="{StaticResource Strings.FooDialog.BarButtonText}"/>
Chaque ResourceDictionary
pour les différentes langues contiendrait une version de celui-ci:
<sys:String x:Key="Strings.FooDialog.BarButtonText">Bar!</sys:String>
Le ResourceDictionary
est dynamiquement connecté au Application.Resources
à l'exécution comme ceci:
private static void LoadLocalizedStrings(CultureInfo uiCulture)
{
ResourceDictionary stringsResourceDictionary = new ResourceDictionary();
stringsResourceDictionary.Source = new Uri(@"pack://application:,,,/Resources/Strings/" + uiCulture.Name + ".xaml");
Application.Current.Resources.MergedDictionaries.Add(stringsResourceDictionary);
}
Pas tout à fait clair. Êtes-vous à la recherche d'une réponse technique ou d'histoires subjectives? (Editez votre question pour clarifier ce que vous voulez.) –