private void Add_Executed(object sender, ExecutedRoutedEventArgs e)
{
var ofd = new OpenFileDialog
{
AddExtension = true,
CheckFileExists = true,
Title = "Open a Resource Dictionay",
Filter = "Resource Dictionay (*.xaml)|*.xaml;"
};
var result = ofd.ShowDialog();
if (result.HasValue && result.Value)
{
#region Validation
var subs = ofd.FileName.Substring(ofd.FileName.IndexOf("StringResources"));
if (Application.Current.Resources.MergedDictionaries.Any(x => x.Source.OriginalString.Contains(subs)))
{
Dialog.Ok("Action Denied", "You can't add a resource with the same name.",
"Try renaming like: StringResources.[Language Code].xaml");
return;
}
var pieces = subs.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
if (pieces.Length != 3)
{
Dialog.Ok("Action Denied", "Filename wrong format.",
"Try renaming like: StringResources.[Language Code].xaml");
return;
}
var culture = new CultureInfo(pieces[1]);
if (culture.EnglishName.Contains("Unknown"))
{
Dialog.Ok("Action Denied", "Unknown Language.", $"The \"{pieces[1]}\" was not recognized as a valid language code.");
return;
}
#endregion
if (LocalizationHelper.ImportStringResource(ofd.FileName))
{
var resourceDictionary = Application.Current.Resources.MergedDictionaries.LastOrDefault();
var imageItem = new ImageListBoxItem();
imageItem.Tag = resourceDictionary.Source.OriginalString;
imageItem.Content = resourceDictionary.Source.OriginalString;
imageItem.Image = FindResource("Vector.Translate") as Canvas;
imageItem.Author = "Recognized as " + pieces[1];
ResourceListBox.Items.Add(imageItem);
}
}
}