Esempio n. 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();
                    }
                }
            }
        }
Esempio n. 2
0
        private static void SheetDialog(TOptions.TArgs opt)
        {
            var dialogInfo = new UapDialogInfo();

            UapDialogDao.LoadFromFolder(
                dialogInfo,
                opt.FolderNameLangInput,
                "*.DialogPackage");
            UapTransSheetDialogDao.SaveToCsv(
                dialogInfo, opt.FileNameSheet, opt.LanguageNo);
        }
Esempio n. 3
0
        /// <summary>
        /// Dialog情報(英語版)と翻訳シート情報(Dialog)を使用し、翻訳を行い、
        /// 翻訳済みDialog情報を返す。
        /// </summary>
        /// <param name="transSheetDialogInfo">翻訳シート情報(Dialog)</param>
        /// <param name="langDialogInfoEN">Dialog情報(英語版)</param>
        /// <param name="langNo">言語番号</param>
        /// <param name="useMT">機械翻訳の使用有無</param>
        /// <returns>翻訳済みDialog情報</returns>
        public static UapDialogInfo TranslateDialog(
            UapTransSheetDialogInfo transSheetDialogInfo,
            UapDialogInfo langDialogInfoEN,
            int langNo,
            bool useMT)
        {
            var langDialogInfoJP = new UapDialogInfo();

            //// Dialogファイル(英語版)を元に翻訳を行い、Dialogファイル(日本語版)を作成する。
            foreach (var langDialogFileEN in langDialogInfoEN.Items.Values)
            {
                //// Dialogファイル(英語版)のクローンを作成し、Dialogファイル(日本語版)の雛形とする。
                var langDialogFileJP = langDialogFileEN.Clone();
                langDialogInfoJP.AddFile(langDialogFileJP);

                foreach (var langEntryJP in langDialogFileJP.Items.Values)
                {
                    //// 該当エントリの翻訳シートエントリーを取得。
                    UapTransSheetDialogEntry sheetEntry =
                        transSheetDialogInfo.GetEntry(
                            langDialogFileEN.FileID, langEntryJP.LineID);
                    //// Dialogエントリーを翻訳する。
                    if (langEntryJP.LanguageEntries.ContainsKey(langNo))
                    {
                        langEntryJP.LanguageEntries[langNo].Text = GetTranslatedText(
                            langEntryJP.LanguageEntries[langNo].Text,
                            sheetEntry.Japanese,
                            sheetEntry.MTrans,
                            useMT);
                    }
                    else
                    {
                        Console.WriteLine($"Warning: LangNo not found. LangNo({langNo}) LineID({langEntryJP.LineID}) FileID({langDialogFileJP.FileID})");
                    }
                }
            }

            return(langDialogInfoJP);
        }
Esempio n. 4
0
        private static void SaveDialog(TOptions.TArgs opt)
        {
            //// 翻訳シートの読み込み
            var    sheetDialogInfo = new UapTransSheetDialogInfo();
            string dialogPath      = opt.FileNameSheet;

            UapTransSheetDialogDao.LoadFromCsv(sheetDialogInfo, dialogPath);

            //// 言語情報(原文)の読み込み
            var langDialogInfoEN = new UapDialogInfo();

            UapDialogDao.LoadFromFolder(
                langDialogInfoEN,
                opt.FolderNameInput,
                "*.DialogPackage");

            //// 翻訳済み言語情報の作成
            var langDialogInfoJP =
                UapTranslation.TranslateDialog(sheetDialogInfo, langDialogInfoEN, opt.LanguageNo, opt.UseMachineTrans);

            UapDialogDao.SaveToFolder(opt.FolderNameOutput, langDialogInfoJP, opt.UseReplace);
        }