/// <summary> /// ローカライズファイルをStreamに書き出す。 /// </summary> /// <param name="localizeFile">ローカライズファイル</param> /// <param name="bw">Stream</param> private static void WriteEntries(UapLocalizationFile localizeFile, BinaryWriter bw) { bw.Write(localizeFile.Items.Count); foreach (var entry in localizeFile.Items.Values) { WriteEntry(entry, bw); } }
/// <summary> /// 自分自身のクローンを返す。 /// </summary> /// <returns>ローカライズファイル</returns> public UapLocalizationFile Clone() { UapLocalizationFile uapLocalizationFile = new UapLocalizationFile(this.FileID); foreach (var entry in this.Items.Values) { uapLocalizationFile.AddEntry(entry.Clone()); } return(uapLocalizationFile); }
/// <summary> /// ローカライズファイルを追加する。 /// </summary> /// <param name="localizationFile">ローカライズファイル</param> public void AddFile(UapLocalizationFile localizationFile) { if (this.Items.ContainsKey(localizationFile.FileID)) { throw new Exception($"Duplicate file id({localizationFile.FileID})."); } else { this.Items.Add(localizationFile.FileID, localizationFile); } }
/// <summary> /// Streamからローカライズエントリー読み込み、ローカライズファイルに追加する。 /// </summary> /// <param name="localizationFile">ローカライズファイル</param> /// <param name="sr">Stream</param> private static void ReadEntries( UapLocalizationFile localizationFile, BinaryReader sr) { var entries = sr.ReadInt32(); for (int i = 0; i < entries; i++) { var entry = ReadEntry(sr, localizationFile.FileID); localizationFile.AddEntry(entry); } }
/// <summary> /// 指定したパスのMB(Localization)を読み込み、ローカライズ情報に追加する。 /// </summary> /// <param name="localizationInfo">ローカライズ情報</param> /// <param name="path">ファイルのパス</param> private static void LoadFromFile( UapLocalizationInfo localizationInfo, string path) { using (var sr = new StreamReader(path)) { using (var br = new BinaryReader( sr.BaseStream, Encoding.UTF8)) { var fileID = Path.GetFileNameWithoutExtension(path); var localizationFile = new UapLocalizationFile(fileID); ReadEntries(localizationFile, br); localizationInfo.AddFile(localizationFile); } } }