private void ExecuteManageLanguages()
        {
            var selected = Translations.Aggregate(0, (current, t) => current | t.Language);

            var vm = ServiceProvider.Inject(new LanguageChooserVM(null));

            vm.SelectedLanguages = selected;
            vm.Name = Resources.Lbl.ManageLanguages;

            if (WindowService.ShowDialog(vm, canResize: true, allowSettings: false, saveSizeAndPosition: true, showOkCancelButtons: true, extraSettingsKey: "ManageLanguages") == true)
            {
                for (var i = 0; i < Entity.Translations.Count; ++i)
                {
                    if ((Entity.Translations[i].Language & vm.SelectedLanguages) == 0)
                    {
                        Entity.Translations[i].Deleted = true;
                        Entity.Translations[i].MakeDirty();
                    }
                }

                foreach (var li in LanguagesProvider.Languages)
                {
                    if ((li.Id & vm.SelectedLanguages) != 0 && Entity.Translations.All(t => t.Language != li.Id))
                    {
                        Entity.Translations.Add(EntityCreator.CreateTranslation(li.Id));
                    }
                }

                try
                {
                    DataAccess.Save(Entity);
                }
                catch (Exception ex)
                {
                    WindowService.ShowError(ex);
                }

                var parent = (MainWindowVM)Parent;
                if (Entity.Translations.Count(t => (t.Language & parent.Languages.SelectedLanguages) != 0) == 0)
                {
                    parent.HideExpression(this);
                }
                else if (!parent.ShowEmptyTranslations &&
                         Entity.Translations.Where(t => (t.Language & parent.Languages.SelectedLanguages) != 0)
                         .All(t => String.IsNullOrEmpty(t.Translation)))
                {
                    parent.HideExpression(this);
                }
                else
                {
                    PopulateTranslations();
                }
            }
        }