/// <summary>
        /// 解析字典。
        /// </summary>
        /// <param name="dataProviderOwner">本地化管理器。</param>
        /// <param name="dictionaryBytes">要解析的字典二进制流。</param>
        /// <param name="startIndex">字典二进制流的起始位置。</param>
        /// <param name="length">字典二进制流的长度。</param>
        /// <param name="userData">用户自定义数据。</param>
        /// <returns>是否解析字典成功。</returns>
        public override bool ParseData(LocalizationProvider dataProviderOwner, byte[] dictionaryBytes, int startIndex, int length, object userData)
        {
            try
            {
                using (MemoryStream memoryStream = new MemoryStream(dictionaryBytes, startIndex, length, false))
                {
                    using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8))
                    {
                        while (binaryReader.BaseStream.Position < binaryReader.BaseStream.Length)
                        {
                            int dataRowBytesLength = binaryReader.ReadInt32();

                            int      m_Id       = binaryReader.ReadInt32();
                            Language m_Language = (Language)Enum.Parse(typeof(Language), binaryReader.ReadString());
                            string   m_Owner    = binaryReader.ReadString();
                            string   m_Block    = binaryReader.ReadString();
                            string   m_Key      = binaryReader.ReadString();
                            string   m_Value    = binaryReader.ReadString();
                            int      m_Size     = binaryReader.ReadInt32();
                            bool     m_NewLine  = binaryReader.ReadBoolean();
                            string   m_Color    = binaryReader.ReadString();
                            string   m_Index    = binaryReader.ReadString();

                            FBlockInfo fBlockInfo = dataProviderOwner.GetBlockInfoDic(m_Owner, m_Block);

                            DictionaryInfo dictionary = new DictionaryInfo();

                            dictionary.Id       = m_Id;
                            dictionary.Language = m_Language;
                            dictionary.Size     = m_Size;
                            dictionary.NewLine  = m_NewLine;
                            dictionary.Color    = m_Color;
                            dictionary.Owner    = m_Owner;
                            dictionary.Block    = m_Block;
                            dictionary.Key      = m_Key;
                            dictionary.Value    = m_Value;
                            fBlockInfo.UpdateDicInfo(dictionary);

                            //Log.Info("m_Owner" + m_Owner + "m_Block" + m_Block + "m_Key" + m_Key + "m_Value" + m_Value);
                        }
                    }
                }

                return(true);
            }
            catch (Exception exception)
            {
                Log.Warning("Can not parse dictionary bytes with exception '{0}'.", exception.ToString());
                return(false);
            }
        }