/// <summary> /// ローカライズ情報をCSV形式で保存する。 /// </summary> /// <param name="uapLocalizationInfo">ローカライズ情報</param> /// <param name="path">CSV形式のファイルのパス</param> /// <param name="langCode">言語番号</param> public static void SaveToCsv( UapLocalizationInfo uapLocalizationInfo, string path, int langCode) { using (var writer = new CsvWriter( new StreamWriter(path, false, Encoding.UTF8))) { writer.Configuration.RegisterClassMap <CsvMapperLocalization>(); writer.WriteHeader <UapTransSheetLocalizationEntry>(); writer.NextRecord(); foreach (var localizationFile in uapLocalizationInfo.Items.Values) { var seq = 1; foreach (var entry in localizationFile.Items.Values) { var data = new UapTransSheetLocalizationEntry(); //// FileIDを簡略形式に変換する。 data.FileID = ConvertFileIDToSheetFileID(localizationFile.FileID); data.Name = entry.Name; data.ID = $"#{entry.ID}"; //// 英語のエントリを出力する。 data.English = entry.GetEntry(langCode); data.Japanese = string.Empty; data.MTrans = string.Empty; data.Sequence = seq; seq++; writer.WriteRecord(data); writer.NextRecord(); } } } }
private static void SheetLocalization(TOptions.TArgs opt) { //// 【注意事項】 //// GOG版(v2.7.1)のデータ "resources_00006.-9" にはバグが有る。 //// FileID(LocalizationReference_Map_SELFNAME) //// ID(1190585287)のLangID(10)が重複し項目数も一つ多い。 //// LoadFromFolder()時にエラーメッセージが表示されるが無視して良い。 var localizeInfo = new UapLocalizationInfo(); UapLocalizationDao.LoadFromFolder( localizeInfo, opt.FolderNameLangInput, "*.LocalizationReference"); UapTransSheetLocalizationDao.SaveToCsv( localizeInfo, opt.FileNameSheet, opt.LanguageNo); }
/// <summary> /// ローカライズ情報(英語版)と翻訳シート情報(Localization)を使用し、翻訳を行い、 /// 翻訳済みDialog情報を返す。 /// </summary> /// <param name="transSheetLocalizationInfo">翻訳シート情報(Localization)</param> /// <param name="localizationInfoEN">ローカライズ情報(英語版)</param> /// <param name="langNo">言語番号</param> /// <param name="useMT">機械翻訳の使用有無</param> /// <returns>翻訳済みローカライズ情報</returns> public static UapLocalizationInfo TranslateLocalization( UapTransSheetLocalizationInfo transSheetLocalizationInfo, UapLocalizationInfo localizationInfoEN, int langNo, bool useMT) { var localizationInfoJP = new UapLocalizationInfo(); //// ローカライズファイル(英語版)を元に翻訳を行い、ローカライズファイル(日本語版)を作成する。 foreach (var localizationFileEN in localizationInfoEN.Items.Values) { //// ローカライズファイル(英語版)のクローンを作成し、ローカライズファイル(日本語版)の雛形とする。 var localizationFileJP = localizationFileEN.Clone(); localizationInfoJP.AddFile(localizationFileJP); foreach (var localizationEntryJP in localizationFileJP.Items.Values) { //// 該当エントリの翻訳シートエントリーを取得。 UapTransSheetLocalizationEntry sheetEntry = transSheetLocalizationInfo.GetEntry( localizationFileEN.FileID, localizationEntryJP.ID); //// 言語エントリーを翻訳 if (localizationEntryJP.LanguageEntries.ContainsKey(langNo)) { localizationEntryJP.LanguageEntries[langNo] = GetTranslatedText( localizationEntryJP.LanguageEntries[langNo], sheetEntry.Japanese, sheetEntry.MTrans, useMT); } else { Console.WriteLine($"Warning: LangNo not found. LangNo({langNo}) ID({localizationEntryJP.ID}) FileID({localizationFileJP.FileID})"); } } } return(localizationInfoJP); }
private static void SaveLocalize(TOptions.TArgs opt) { //// 翻訳シートの読み込み var sheetLocalizationInfo = new UapTransSheetLocalizationInfo(); string locPath = opt.FileNameSheet; UapTransSheetLocalizationDao.LoadFromCsv(sheetLocalizationInfo, locPath); //// 言語情報(原文)の読み込み var localizationInfoEN = new UapLocalizationInfo(); UapLocalizationDao.LoadFromFolder( localizationInfoEN, opt.FolderNameInput, "*.LocalizationReference"); //// 翻訳済み言語情報の作成 var localizationInfoJP = UapTranslation.TranslateLocalization(sheetLocalizationInfo, localizationInfoEN, opt.LanguageNo, opt.UseMachineTrans); UapLocalizationDao.SaveToFolder(opt.FolderNameOutput, localizationInfoJP, opt.UseReplace); }