Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 日本語化とXMLファイルの保存。
        /// </summary>
        /// <param name="fileID">FileID</param>
        /// <param name="enFolderPath">原文のXMLファイルのパス</param>
        /// <param name="jpFolderPath">日本語版のXMLファイルのパス</param>
        /// <param name="transSheetFile">翻訳シートファイル</param>
        /// <param name="useReferenceID">ReferenceIDの有無</param>
        public static void SaveToXml(
            string fileID,
            string enFolderPath,
            string jpFolderPath,
            MieTransSheetFile transSheetFile,
            bool useReferenceID = false)
        {
            //// StringTableの読み込み
            var enPath = Path.Combine(enFolderPath, fileID + ".stringtable");
            {
                //// Bugfix: stringtable内のNameパラメーターに誤りがあるため、修正する。
                enPath = enPath.Replace("bounty encounters", "bounty_encounters");
            }

            var stringTableFile = StringTableFile.Load(enPath);
            //// ファイル履歴の作成
            MieLanguageHistoryFile mieLanguageHistoryFile = new MieLanguageHistoryFile(stringTableFile.Name);

            //// FileIDを統一形式に変換する。
            var commonFileID = MieStringUtils.NormalizedFileID(fileID);
            var fileCode     = MieHashTools.ComputeFileID(commonFileID);

            if (transSheetFile == null)
            {
                //// 翻訳シートがない場合は転記しない。
            }
            else
            {
                foreach (var entry in stringTableFile.Entries)
                {
                    MieTransSheetEntry sheetEntry = transSheetFile.GetEntry(entry.ID);

                    if (sheetEntry == null || string.IsNullOrWhiteSpace(entry.DefaultText))
                    {
                        //// 原文の翻訳テキストが存在しない場合は転記しない。
                    }
                    else
                    {
                        if (string.IsNullOrWhiteSpace(sheetEntry.DefaultTranslationText))
                        {
                            //// 翻訳テキストが存在しない場合は転記しない。
                        }
                        else
                        {
                            entry.DefaultText = sheetEntry.DefaultTranslationText;
                            if (!string.IsNullOrWhiteSpace(entry.FemaleText))
                            {
                                //// 女性版テキストが存在する場合は標準テキストを転記する。
                                entry.FemaleText = sheetEntry.DefaultTranslationText;
                            }
                        }
                    }

                    if (sheetEntry != null)
                    {
                        if (sheetEntry.FileID.StartsWith(@"game"))
                        {
                            if (useReferenceID)
                            {
                                entry.DefaultText = $"{sheetEntry.ReferenceID}:{entry.DefaultText}";
                            }
                        }
                    }
                }
            }

            var jpPath   = Path.Combine(jpFolderPath, fileID + ".stringtable");
            var jpFolder = Path.GetDirectoryName(jpPath);

            MieCommonUtils.SafeCreateDirectory(jpFolder);
            StringTableFile.Save(stringTableFile, jpPath, StringTableFile.ExportType.Xml);
        }