Esempio n. 1
0
        /// <summary>
        /// 翻訳シート情報を作成する。
        /// </summary>
        /// <param name="sheetInfo">翻訳シート情報</param>
        /// <param name="path">CSV形式の翻訳シートファイルのパス</param>
        /// <param name="fileID">FileID</param>
        /// <param name="removeTag">タグ化の制御文字化の有無</param>
        /// <param name="enc">文字コード</param>
        public static void LoadFromFile(
            PfkTransSheetInfo sheetInfo,
            string path,
            string fileID,
            bool removeTag,
            Encoding enc = null)
        {
            if (enc == null)
            {
                enc = Encoding.UTF8;
            }

            using (var reader = new StreamReader(path, enc))
            {
                using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                {
                    //// 区切り文字
                    csv.Configuration.Delimiter = ",";
                    //// ヘッダーの有無
                    csv.Configuration.HasHeaderRecord = true;
                    //// CSVファイルに合ったマッピングルールを登録
                    csv.Configuration.RegisterClassMap <CsvMapperTransSheetForMod>();
                    //// データを読み出し
                    var records = csv.GetRecords <PfkTransSheetEntry>();

                    var sheetFile = new PfkTransSheetFile(fileID);
                    foreach (var record in records)
                    {
                        record.FileID = fileID;
                        if (removeTag)
                        {
                            //// タグを制御文字に置換する。
                            record.Japanese           = PfkTransSheetEntry.GetUnEscapedText(record.Japanese);
                            record.MachineTranslation = PfkTransSheetEntry.GetUnEscapedText(record.MachineTranslation);
                        }

                        //// 翻訳シートのTABはタグ化されているので、無条件に制御文字化する。
                        record.Japanese           = PfkTransSheetEntry.GetUnEscapedTab(record.Japanese);
                        record.MachineTranslation = PfkTransSheetEntry.GetUnEscapedTab(record.MachineTranslation);

                        sheetFile.AddEntry(record);
                    }

                    sheetInfo.AddFile(sheetFile);
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 /// 翻訳シートファイルを追加する。
 /// </summary>
 /// <param name="newSheetFile">翻訳シートファイル</param>
 public void AddFile(PfkTransSheetFile newSheetFile)
 {
     if (this.Items.ContainsKey(newSheetFile.FileID))
     {
         var currentSheetFile = this.Items[newSheetFile.FileID];
         foreach (var newSheetEntry in newSheetFile.Items.Values)
         {
             if (currentSheetFile.Items.ContainsKey(newSheetEntry.Key))
             {
                 throw new Exception($"Duplicate key({newSheetEntry.Key}). FileID({newSheetFile.FileID})");
             }
             else
             {
                 currentSheetFile.AddEntry(newSheetEntry);
             }
         }
     }
     else
     {
         this.Items.Add(newSheetFile.FileID, newSheetFile);
     }
 }