Пример #1
0
        /// <summary>
        /// 日本語化されたデータをXMLファイルに保存する。
        /// </summary>
        /// <param name="transSheet">翻訳シート情報</param>
        /// <param name="episodeID">EpisodeID</param>
        /// <param name="fileType">FileType</param>
        /// <param name="langFilePathEN">原文のXMLファイルのパス</param>
        /// <param name="langFolderPathJP">翻訳されたXMLファイルを格納するフォルダーのパス</param>
        /// <param name="useMT">機械翻訳の使用有無</param>
        /// <param name="useReplace">上書きの有無</param>
        /// <returns>エラーの有無</returns>
        public static bool SaveToXml(
            SuTransSheetInfo transSheet,
            string episodeID,
            SuLanguageFile.NFileType fileType,
            string langFilePathEN,
            string langFolderPathJP,
            bool useMT,
            bool useReplace)
        {
            var langFile = new SuLanguageFile(episodeID, fileType);

            //// 保存フォルダーを作成する。
            var saveFolder = Path.Combine(langFolderPathJP, langFile.EpisodeID);

            SuFileUtils.SafeCreateDirectory(saveFolder);
            //// XMLファイルを保存する。
            var fileName = Path.GetFileName(langFilePathEN);
            var savePath = Path.Combine(saveFolder, fileName);

            //// 出力ファイルの存在確認。
            if (!useReplace && File.Exists(savePath))
            {
                return(false);
            }

            //// 原文を読み込む。
            var      xml   = XDocument.Load(langFilePathEN);
            XElement table = null;

            if (langFile.FileKey.Equals("E04:UI", StringComparison.OrdinalIgnoreCase))
            {
                //// E04のUI.xmlのみUIではなく DIALOGUE
                var fileTypeString =
                    langFile.GetFileTypeStrint(SuLanguageFile.NFileType.Dialog);
                table = xml.Element(fileTypeString);
            }
            else
            {
                table = xml.Element(langFile.FileTypeString);
            }

            //// 各エントリーのテキストを翻訳する。
            var rows = table.Elements("txt");

            foreach (var row in rows)
            {
                var attr = row.Attribute("id");
                var id   = attr.Value;
                //// このエントリーの翻訳シートエントリーを取得する。
                var sheetEntry = transSheet.GetEntry(langFile.EpisodeID, id);
                //// 翻訳する。
                string text =
                    transSheet.Translate(langFile.EpisodeID, id, row.Value, useMT);
                //// 翻訳済みのテキストをXMLに反映する。
                row.Value = text;
            }

            xml.Save(savePath);
            return(true);
        }
Пример #2
0
 /// <summary>
 /// 言語ファイルを追加する。
 /// </summary>
 /// <param name="langFile">言語ファイル</param>
 public void AddFile(SuLanguageFile langFile)
 {
     if (this.Items.ContainsKey(langFile.FileKey))
     {
         throw new Exception($"Duplicate EpisodeFolderName({langFile.EpisodeID})");
     }
     else
     {
         this.Items.Add(langFile.FileKey, langFile);
     }
 }
Пример #3
0
        /// <summary>
        /// 指定されたXMLファイルを読み込み、言語情報に格納する。
        /// </summary>
        /// <param name="langInfo">言語情報</param>
        /// <param name="episodeID">EpisodeID</param>
        /// <param name="fileType">FileType</param>
        /// <param name="path">XMLファイルのパス</param>
        public static void LoadFromXml(
            SuLanguageInfo langInfo,
            string episodeID,
            SuLanguageFile.NFileType fileType,
            string path)
        {
            var langFile = new SuLanguageFile(episodeID, fileType);

            langInfo.AddFile(langFile);

            var      xml   = XDocument.Load(path);
            XElement table = null;

            if (langFile.FileKey.Equals("E04:UI", StringComparison.OrdinalIgnoreCase))
            {
                //// E04のUI.xmlのみUIではなく DIALOGUE
                var fileTypeString =
                    langFile.GetFileTypeStrint(SuLanguageFile.NFileType.Dialog);
                table = xml.Element(fileTypeString);
            }
            else
            {
                table = xml.Element(langFile.FileTypeString);
            }

            var rows = table.Elements("txt");

            foreach (var row in rows)
            {
                var attr  = row.Attribute("id");
                var id    = attr.Value;
                var text  = row.Value;
                var entry = new SuLanguageEntry(id, text);
                langFile.AddEntry(entry);
            }
        }