/// <summary> /// StringTableを読み込み、言語ファイルを返す。 /// 言語ファイルにファイル履歴の枠組みを作成し設定する。 /// </summary> /// <param name="path">StringTableファイルのパス</param> /// <param name="productLine">製品区分</param> /// <param name="fileID">FileID</param> /// <returns>言語ファイル</returns> public static MieLanguageFile LoadFromXml(string path, MieProduct.NProductLine productLine, out string fileID) { //// StringTableの読み込み var stringTableFile = StringTableFile.Load(path); //// ファイル履歴の作成 MieLanguageHistoryFile mieLanguageHistoryFile = new MieLanguageHistoryFile(stringTableFile.Name); //// FileIDを統一形式に変換する。 fileID = MieFileUtils.ConvertFileIDToCommon(stringTableFile.Name); var commonFileID = MieStringUtils.NormalizedFileID(fileID); var fileCode = MieHashTools.ComputeFileID(commonFileID); var mieLanguageFile = new MieLanguageFile(fileCode); stringTableFile .Entries .ForEach(entry => { var referenceID = MieTranslationLib.MieUtils.MieHashTools.ComputeReferenceID(stringTableFile.Name, entry.ID); var mieLanguageEntry = new MieLanguageEntry(entry.ID, entry.DefaultText, entry.FemaleText, productLine, referenceID); mieLanguageFile.AddEntry(mieLanguageEntry); }); return(mieLanguageFile); }
public static void CreateXml( string fileID, MieLanguageFile langFile, string jpPath, MieTransSheetFile transSheetFile, bool useMT, bool useReferenceID) { var stringTableFile = new StringTableFile(fileID); foreach (var tableEntry in langFile.Items) { MieTransSheetEntry transSheetEntry = null; if (transSheetFile != null) { transSheetEntry = transSheetFile.GetEntry(tableEntry.ID); } var translatedText = string.Empty; if (transSheetEntry == null) { //// 翻訳シートエントリーがないので、ReferenceIDを個別に算出。 //// no | useRef | en | result //// 0 | o | o | ref付きen //// 1 | o | x | en //// 2 | x | o | en //// 3 | x | x | en if (useReferenceID && !string.IsNullOrEmpty(tableEntry.DefaultText)) //// 0 { //// 翻訳シートにエントリーが存在しない。 logger.Error($"TransSheetEntry not found. Product({tableEntry.ProductLine.ToString()}) FileID({fileID}), ID({tableEntry.ID})"); //// ReferenceIDを算出。 long referenceID = MieHashTools.ComputeReferenceID(stringTableFile.Name, tableEntry.ID); //// ReferenceIDからhash文字列を生成 var strReferenceID = $"{MieHashTools.ComputeHashIds(referenceID)}:"; translatedText = $"{strReferenceID}{tableEntry.DefaultText}"; } else { translatedText = tableEntry.DefaultText; } } else { //// 翻訳 translatedText = transSheetEntry.Translate(tableEntry.DefaultText, useMT, useReferenceID); } if (string.IsNullOrWhiteSpace(tableEntry.FemaleText)) { //// 女性の台詞なしの場合。 var entry = new StringTableFile.Entry(tableEntry.ID, translatedText); stringTableFile.Entries.Add(entry); } else { //// 女性の台詞ありの場合。 //// 男性と同じ台詞を割り当てる。 var entry = new StringTableFile.Entry(tableEntry.ID, translatedText, translatedText); stringTableFile.Entries.Add(entry); } } Console.WriteLine(fileID); SaveToXml(fileID, stringTableFile, jpPath); }