public static DictionaryItem Import(XmlNode xmlData, DictionaryItem parent)
            {
                string key = xmlData.Attributes["Key"].Value;

                XmlNodeList    values     = xmlData.SelectNodes("./Value");
                XmlNodeList    childItems = xmlData.SelectNodes("./DictionaryItem");
                DictionaryItem newItem;
                bool           retVal = false;

                if (!hasKey(key))
                {
                    if (parent != null)
                    {
                        addKey(key, " ", parent.key);
                    }
                    else
                    {
                        addKey(key, " ");
                    }

                    if (values.Count > 0)
                    {
                        //Set language values on the dictionary item
                        newItem = new DictionaryItem(key);
                        foreach (XmlNode xn in values)
                        {
                            string cA       = xn.Attributes["LanguageCultureAlias"].Value;
                            string keyValue = xmlHelper.GetNodeValue(xn);

                            Language valueLang = Language.GetByCultureCode(cA);

                            if (valueLang != null)
                            {
                                newItem.setValue(valueLang.id, keyValue);
                            }
                        }
                    }

                    if (parent == null)
                    {
                        retVal = true;
                    }
                }

                newItem = new DictionaryItem(key);

                foreach (XmlNode childItem in childItems)
                {
                    Import(childItem, newItem);
                }

                if (retVal)
                {
                    return(newItem);
                }
                else
                {
                    return(null);
                }
            }
        // zb023 - utility method
        public static string ReplaceKey(string text)
        {
            if (text.StartsWith("#") == false)
            {
                return(text);
            }

            var lang = Language.GetByCultureCode(Thread.CurrentThread.CurrentCulture.Name);

            if (lang == null)
            {
                return("[" + text + "]");
            }

            if (DictionaryItem.hasKey(text.Substring(1, text.Length - 1)) == false)
            {
                return("[" + text + "]");
            }

            var di = new DictionaryItem(text.Substring(1, text.Length - 1));

            return(di.Value(lang.id));
        }