Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }