private void AddResource(Resource resource)
 {
     try {
         if (resource.Text != null) {
             strings.Add(resource.Name, resource.Text.Trim(TRIMCHARS));
         } else {
             LOG.Warn("Resource is null: " + resource.Name);
             strings.Add(resource.Name, "");
         }
     } catch (ArgumentException ae) {
         LOG.Error("Problem adding " + resource.Name, ae);
         throw ae;
     }
 }
        /// <summary>
        /// loads a language configuration from a file path
        /// </summary>
        public static LanguageConfiguration Load(string path)
        {
            LanguageConfiguration ret = null;
            try {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNodeList nodes = doc.GetElementsByTagName("language");
                if(nodes.Count > 0) {
                    ret = new LanguageConfiguration();
                    ret.File = path;
                    XmlNode node = nodes.Item(0);
                    ret.Description = node.Attributes["description"].Value;
                    ret.Ietf = node.Attributes["ietf"].Value;
                    ret.Version = node.Attributes["version"].Value;
                    if (node.Attributes["languagegroup"] != null) {
                        string languageGroup = node.Attributes["languagegroup"].Value;
                        ret.LanguageGroup = languageGroup.ToLower();
                    }

                    XmlNodeList resourceNodes = doc.GetElementsByTagName("resource");
                    ret.Resources = new List<Resource>(resourceNodes.Count);
                    foreach(XmlNode resourceNode in resourceNodes) {
                        Resource res = new Resource();
                        res.Name = resourceNode.Attributes["name"].Value;
                        res.Text = resourceNode.InnerText;
                        ret.Resources.Add(res);
                    }
                } else {
                    throw new XmlException("Root element <language> is missing");
                }
            } catch(Exception e) {
                LOG.Error("Could not load language file "+path, e);
            }
            return ret;
        }