Скачиваем проект со страницы. От туда нам понадобиться библиотека Infralution.Localization.Wpf. Прописываем ее в uses и References, еще понадобиться System.Threading, System.Globalization; Пишем в XAML простейший код меню.
- <Grid>
- <Menu Height="30" VerticalAlignment="Top">
- <MenuItem Header="{Resx ResxName=WPFLoc.MainResources, Key=strLanguage}">
- <MenuItem Header="{Resx ResxName=WPFLoc.MainResources, Key=strEnglish}" Name="EnglishMenuItem" Click="_EnglishMenuItem_Click" IsCheckable="True"></MenuItem>
- <MenuItem Header="{Resx ResxName=WPFLoc.MainResources, Key=strRussia}" Name="RussiaMenuItem" Click="_RussiaMenuItem_Click" ></MenuItem>
- </MenuItem>
- </Menu>
- </Grid>
* This source code was highlighted with Source Code Highlighter.
Где WPFLoc пространство имен нашего приложения. MainResources - файл ресурсов, который нам надо создать и поместить в корневую папку. В файле ресурсов создаем переменные:
Для русской локализации создаем файл MainResources.ru-RU.resx и тоже размещаем в корне.
Код почти полностью позаимствуем от создателя библиотеки.
- namespace WPFLoc
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- // set the initial application UI Culture based on the users
- // current regional settings
- //
- CultureManager.UICulture = Thread.CurrentThread.CurrentCulture;
- CultureManager.UICultureChanged += new EventHandler(CultureManager_UICultureChanged);
- UpdateLanguageMenus();
- }
-
-
- /// <summary>
- /// Update the check state of the Language menu
- /// </summary>
- private void UpdateLanguageMenus()
- {
- string lang = CultureManager.UICulture.TwoLetterISOLanguageName.ToLower();
- RussiaMenuItem.IsChecked = (lang == "ru");
- EnglishMenuItem.IsChecked = (lang == "en");
- }
-
- /// <summary>
- /// Update the language menus when the UI culture changes
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void CultureManager_UICultureChanged(object sender, EventArgs e)
- {
- UpdateLanguageMenus();
- }
-
- /// <summary>
- /// Select English as the User Interface language
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void _EnglishMenuItem_Click(object sender, RoutedEventArgs e)
- {
- CultureManager.UICulture = new CultureInfo("en");
- }
-
- /// <summary>
- /// Select Russia as the User Interface language
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void _RussiaMenuItem_Click(object sender, RoutedEventArgs e)
- {
- CultureManager.UICulture = new CultureInfo("ru-RU");
- }
- }
- }
* This source code was highlighted with Source Code Highlighter.
Проект можно скачать в формате VS2010 Beta 2 с сервиса народ.