Beispiel #1
0
        /// <summary>
        /// 言語情報をCSV形式で保存する。
        /// </summary>
        /// <param name="path">CSVファイルのパス</param>
        /// <param name="langInfo">言語情報</param>
        /// <param name="languageNo">言語番号</param>
        public static void SaveToCsv(
            string path, FssLanguageInfo langInfo, FssLanguageInfo.LanguageNo languageNo)
        {
            var enc = new UTF8Encoding(false);

            //// フォルダーが存在しない場合は作成する。
            var sheetFolder = Path.GetDirectoryName(path);

            FssFileUtils.SafeCreateDirectory(sheetFolder);

            using (var writer = new CsvWriter(new StreamWriter(path, false, enc)))
            {
                writer.Configuration.RegisterClassMap <CsvMapper>();
                writer.WriteHeader <FssTransSheetEntry>();
                writer.NextRecord();

                var data = new FssTransSheetEntry();
                int no   = 0;
                foreach (var entry in langInfo.LanguageFile.Items.Values)
                {
                    data.EntryID  = entry.EntryID;
                    data.Hint     = entry.Description;
                    data.LangEN   = entry.Texts[(int)languageNo];
                    data.Sequence = no;

                    writer.WriteRecord(data);
                    writer.NextRecord();

                    no++;
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// 翻訳シートエントリーの追加。
 /// </summary>
 /// <param name="entry">翻訳シートエントリー</param>
 public void AddEntry(FssTransSheetEntry entry)
 {
     if (this.Items.ContainsKey(entry.EntryID))
     {
         throw new Exception($"Duplicate EntryID({entry.EntryID}).");
     }
     else
     {
         this.Items.Add(entry.EntryID, entry);
     }
 }
Beispiel #3
0
        public static FssTransSheetFile LoadFromCsv(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ファイルに合ったマッピングルールを登録
                    csv.Configuration.RegisterClassMap <CsvMapper>();
                    //// データを読み出し
                    var records = csv.GetRecords <FssTransSheetEntry>();

                    var sheetFile = new FssTransSheetFile();
                    foreach (var record in records)
                    {
                        var entry = new FssTransSheetEntry()
                        {
                            EntryID  = record.EntryID,
                            Hint     = record.Hint,
                            LangEN   = record.LangEN,
                            LangJP   = record.LangJP,
                            LangMT   = record.LangMT,
                            Sequence = record.Sequence,
                        };

                        sheetFile.AddEntry(entry);
                    }

                    return(sheetFile);
                }
            }
        }