/// <summary>
        /// Creates a language event for this loader.
        /// </summary>
        internal LanguageEvent CreateEvent(string type)
        {
            LanguageEvent e = new LanguageEvent(type);

            e.loader = this;
            return(e);
        }
        /// <summary>Loads a standard group by name.</summary>
        /// <param name="groupName">The name of the group.</param>
        public void getGroup(string groupName, LanguageEventDelegate groupReady)
        {
            // Already available?
            LanguageGroup group;

            if (Groups.TryGetValue(groupName, out group))
            {
                // Create event:
                LanguageEvent e = Loader.CreateEvent("languagegroupready");
                e.language = this;
                e.group    = group;

                // Callback:
                groupReady(e);
            }
            else
            {
                // Must now load its contents.
                string path = Loader.Path;

                if (groupName != "")
                {
                    path += groupName.Replace('.', '/') + "/";
                }

                Loader.LoadFile(path + code + ".xml", delegate(string fileText){
                    // Create event:
                    LanguageEvent e = Loader.CreateEvent("languagegroupready");
                    e.language      = this;

                    if (fileText != null)
                    {
                        e.group = addGroup(groupName, fileText);
                    }

                    // Callback:
                    groupReady(e);
                });
            }
        }