/// <summary> /// 言語データ情報からCSVファイルを作成する。 /// </summary> /// <param name="dataInfo">言語データ情報</param> /// <param name="path">CSV形式の翻訳シート</param> /// <param name="enc">文字コード</param> public static void SaveToFile( CrsTransDataInfo dataInfo, string path, Encoding enc = null) { using (var writer = new CsvWriter( new StreamWriter(path, false, Encoding.UTF8))) { writer.Configuration.RegisterClassMap <CsvMapper>(); writer.WriteHeader <CrsTransSheetEntry>(); writer.NextRecord(); foreach (var dataFile in dataInfo.Items.Values) { int no = 0; foreach (var dataEntry in dataFile.Items.Values) { var sheetEntry = new CrsTransSheetEntry( dataFile.AssetName, no, dataEntry.TranslationId, dataEntry.TranslationText, string.Empty, string.Empty, dataEntry.HumanlyReadableDate); writer.WriteRecord(sheetEntry); writer.NextRecord(); no++; } } } }
/// <summary> /// 翻訳シートエントリーを追加する。 /// </summary> /// <param name="sheetEntry">翻訳シートエントリー</param> public void AddEntry(CrsTransSheetEntry sheetEntry) { if (this.Items.ContainsKey(sheetEntry.EntryID)) { //// キーが重複している場合は例外を発生させる。 throw new Exception($"Duplucate ID({sheetEntry.EntryID})"); } else { this.Items.Add(sheetEntry.EntryID, sheetEntry); } }
/// <summary> /// 翻訳シートエントリーを追加する。 /// </summary> /// <param name="assetName">アセット名</param> /// <param name="sheetEntry">翻訳シートエントリー</param> public void AddEntry(string assetName, CrsTransSheetEntry sheetEntry) { if (this.Items.ContainsKey(assetName)) { //// 既に登録済みに場合は翻訳シートファイルに追加する。 var sheetFile = this.Items[assetName]; sheetFile.AddEntry(sheetEntry); } else { //// 翻訳シートファイルが未登録の場合は新規に作成し、 //// 翻訳シートエントリーを追加する。 var sheetFile = new CrsTransSheetFile(assetName); sheetFile.AddEntry(sheetEntry); this.Items.Add(sheetFile.AssetName, sheetFile); } }