Exemplo 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);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 翻訳シート情報を作成する。
        /// </summary>
        /// <param name="sheetInfo">翻訳シート情報</param>
        /// <param name="sheetFolderPath">CSV形式の翻訳シートが格納されているフォルダーのパス</param>
        /// <param name="fileID">FileID</param>
        /// <param name="removeTag">タグ化の制御文字化の有無</param>
        /// <param name="enc">文字コード</param>
        public static void LoadFromFolder(
            PfkTransSheetInfo sheetInfo,
            string sheetFolderPath,
            string fileID,
            bool removeTag,
            Encoding enc = null)
        {
            IEnumerable <string> files =
                Directory.EnumerateFiles(sheetFolderPath, "*.csv", SearchOption.AllDirectories);

            foreach (string sheetFilePath in files)
            {
                if (Path.GetExtension(sheetFilePath).Equals(".csv", StringComparison.OrdinalIgnoreCase))
                {
                    LoadFromFile(sheetInfo, sheetFilePath, fileID, removeTag);
                }
            }
        }