public static IDictionary <string, string> GetLanguages()
        {
            var ret = new Dictionary <string, string>();

            var isAdministratior = PermissionsFacade.IsAdministrator(UserSettings.Username);
            var userLocales      = UserSettings.GetActiveLocaleCultureInfos(UserSettings.Username).ToList();

            foreach (var culture in DataLocalizationFacade.ActiveLocalizationCultures)
            {
                if (isAdministratior || userLocales.Contains(culture))
                {
                    ret.Add(culture.Name, culture.DisplayName);
                }
            }

            return(ret);
        }
        private void SetupFormXml()
        {
            var markupProvider = new FormDefinitionFileMarkupProvider(XmlFilePath);

            var formDocument = XDocument.Load(markupProvider.GetReader());

            var layoutXElement = formDocument.Root?.Element(Namespaces.BindingForms10 + FormKeyTagNames.Layout);

            var placeHolderXElement = layoutXElement?.Element(Namespaces.BindingFormsStdUiControls10 + "PlaceHolder");

            if (placeHolderXElement == null)
            {
                return;
            }

            var bindingsXElement = formDocument.Root.Element(Namespaces.BindingForms10 + FormKeyTagNames.Bindings);

            if (bindingsXElement == null)
            {
                return;
            }

            var resourceType = (ResourceType)Enum.Parse(typeof(ResourceType), ResourceKey.Type);

            if (resourceType == ResourceType.Xhtml)
            {
                placeHolderXElement.Name = Namespaces.BindingFormsStdUiControls10 + "TabPanels";
            }

            using (var data = new DataConnection())
            {
                var resourceValues = data.Get <IResourceValue>().Where(v => v.KeyId == ResourceKey.Id).ToDictionary(v => v.Culture);
                var userLocales    = UserSettings.GetActiveLocaleCultureInfos(UserSettings.Username).ToList();

                var isAdministratior = PermissionsFacade.IsAdministrator(UserSettings.Username);

                foreach (var culture in DataLocalizationFacade.ActiveLocalizationCultures)
                {
                    var bindingKey   = GetBindingKey(culture);
                    var bindingValue = String.Empty;

                    if (resourceValues.TryGetValue(culture.Name, out IResourceValue resourceValue))
                    {
                        bindingValue = resourceValue.Value;
                    }

                    Bindings.Add(bindingKey, bindingValue);

                    bindingsXElement.Add(CreateBindingElement(bindingKey));

                    if (isAdministratior || userLocales.Contains(culture))
                    {
                        placeHolderXElement.Add(CreateEditResourceValueElement(culture, bindingKey, resourceType));
                    }
                    else
                    {
                        placeHolderXElement.Add(CreateReadOnlyResourceValueElement(culture, bindingKey));
                    }
                }
            }

            DeliverFormData(ResourceKey.Key, StandardUiContainerTypes.Document, formDocument.ToString(), Bindings, BindingsValidationRules);
        }