/// <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(); } } } }
private static void SheetDialog(TOptions.TArgs opt) { var dialogInfo = new UapDialogInfo(); UapDialogDao.LoadFromFolder( dialogInfo, opt.FolderNameLangInput, "*.DialogPackage"); UapTransSheetDialogDao.SaveToCsv( dialogInfo, opt.FileNameSheet, opt.LanguageNo); }
/// <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); }
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); }