Example #1
0
        /// <summary>
        /// 言語情報から翻訳シートをCSV形式で保存する。
        /// </summary>
        /// <param name="uapDialogInfo">言語情報</param>
        /// <param name="path">CSVファイルのパス</param>
        /// <param name="langCode">言語コード</param>
        public static void SaveToCsv(
            UapDialogInfo uapDialogInfo, string path, int langCode)
        {
            //// ToDo: 言語コードを enum 化する。
            using (var writer = new CsvWriter(
                       new StreamWriter(path, false, Encoding.UTF8)))
            {
                writer.Configuration.RegisterClassMap <CsvMapperDialog>();
                writer.WriteHeader <UapTransSheetDialogEntry>();
                writer.NextRecord();

                foreach (var dialogFile in uapDialogInfo.Items.Values)
                {
                    var seq = 1;
                    foreach (var entry in dialogFile.Items.Values)
                    {
                        var data = new UapTransSheetDialogEntry();
                        //// FileIDを簡略形式に変換する。
                        data.FileID    = ConvertFileIDToSheetFileID(dialogFile.FileID);
                        data.LineID    = entry.LineID;
                        data.Character = entry.Character;
                        data.English   = entry.GetEntry(langCode).Text;
                        data.Japanese  = string.Empty;
                        data.MTrans    = string.Empty;
                        data.Sequence  = seq;
                        seq++;
                        writer.WriteRecord(data);

                        writer.NextRecord();
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// CSVファイルから翻訳シート情報を作成する。
        /// </summary>
        /// <param name="sheetInfo">翻訳シート情報</param>
        /// <param name="path">CSVファイルのパス</param>
        /// <param name="enc">CSVファイルの文字コード</param>
        public static void LoadFromCsv(
            UapTransSheetDialogInfo sheetInfo, string path, Encoding enc = null)
        {
            if (enc == null)
            {
                enc = Encoding.UTF8;
            }

            using (var reader = new StreamReader(path, enc))
                using (var csv = new CsvReader(reader))
                {
                    //// 区切り文字
                    csv.Configuration.Delimiter       = ",";
                    csv.Configuration.HasHeaderRecord = true;
                    csv.Configuration.RegisterClassMap <CsvMapperDialog>();

                    //// データを読み出し
                    var records = csv.GetRecords <UapTransSheetDialogEntry>();
                    foreach (var record in records)
                    {
                        var sheetEntry = new UapTransSheetDialogEntry();
                        sheetEntry.Character = record.Character;
                        sheetEntry.English   = record.English;
                        //// 簡略形式のFileIDを正規のFileIDに変換する。
                        sheetEntry.FileID   = ConverSheetFileIdToFileID(record.FileID);
                        sheetEntry.Japanese = record.Japanese;
                        sheetEntry.LineID   = record.LineID;
                        sheetEntry.MTrans   = record.MTrans;
                        sheetEntry.Sequence = record.Sequence;

                        sheetInfo.AddEntry(sheetEntry);
                    }
                }
        }
 /// <summary>
 /// 翻訳シートエントリー(Dialog)を追加する。
 /// </summary>
 /// <param name="dialogEntry">翻訳シートエントリー(Dialog)</param>
 public void AddEntry(UapTransSheetDialogEntry dialogEntry)
 {
     if (this.Items.ContainsKey(dialogEntry.LineID))
     {
         throw new Exception($"Duplicate LineID({dialogEntry.LineID}). FileID({dialogEntry.FileID})");
     }
     else
     {
         this.Items.Add(dialogEntry.LineID, dialogEntry);
     }
 }
        /// <summary>
        /// 翻訳シートエントリー(Dialog)を追加する。
        /// </summary>
        /// <param name="sheetEntry">翻訳シートエントリー(Dialog)</param>
        public void AddEntry(UapTransSheetDialogEntry sheetEntry)
        {
            if (this.Items.ContainsKey(sheetEntry.FileID))
            {
                var sheetFile = this.Items[sheetEntry.FileID];
                sheetFile.AddEntry(sheetEntry);
            }
            else
            {
                //// 翻訳シートファイルが存在しない時は新たに作成する。
                var sheetFile = new UapTransSheetDialogFile(sheetEntry.FileID);
                sheetFile.AddEntry(sheetEntry);

                this.Items.Add(sheetFile.FileID, sheetFile);
            }
        }
        /// <summary>
        /// 指定した FileID, LineID の翻訳シートエントリー(Dialog)を返す。
        /// </summary>
        /// <param name="fileID">FileID</param>
        /// <param name="lineID">LineID</param>
        /// <returns>翻訳シートエントリー(Dialog)</returns>
        public UapTransSheetDialogEntry GetEntry(string fileID, string lineID)
        {
            if (this.Items.ContainsKey(fileID))
            {
                var sheetFile = this.Items[fileID];
                if (sheetFile.Items.ContainsKey(lineID))
                {
                    return(sheetFile.Items[lineID]);
                }
            }

            //// 存在しない場合はnullオブジェクトを返す。
            var nullEntry = new UapTransSheetDialogEntry();

            return(nullEntry);
        }