internal void LoadFullData()
        {
            if (m_IsLoaded)
            {
                return;
            }

            XmlLanguageData languageData = null;
            XmlSerializer   serializer   = new XmlSerializer(typeof(XmlLanguageData));

            using (FileStream fs = File.OpenRead(m_SourceFilePath))
            {
                languageData = (XmlLanguageData)serializer.Deserialize(fs);
            }

            prepareFastAccessCaches(languageData);

            m_IsLoaded = true;
        }
        private void prepareFastAccessCaches(XmlLanguageData languageData)
        {
            var _translationGroups = languageData.Groups;

            m_HasSingleGroup = _translationGroups.Count == 1;

            if (m_HasSingleGroup)
            {
                m_SingleGroupCache = createCacheFromGroup(languageData.Groups[0]);
            }
            else
            {
                m_MultiGroupCache = new Dictionary <string, Dictionary <string, string> >(languageData.Groups.Count);

                for (int i = 0; i < languageData.Groups.Count; i++)
                {
                    m_MultiGroupCache.Add(languageData.Groups[i].Name, createCacheFromGroup(languageData.Groups[i]));
                }
            }
        }