コード例 #1
0
ファイル: SuLanguageDao.cs プロジェクト: synctam/SuJpModAid
        /// <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
ファイル: SuLanguageDao.cs プロジェクト: synctam/SuJpModAid
        /// <summary>
        /// 翻訳された言語ファイルを指定フォルダーに保存する。
        /// </summary>
        /// <param name="transSheet">翻訳シート情報</param>
        /// <param name="langFolderEN">原文のフォルダーのパス</param>
        /// <param name="langFolderJP">翻訳されたデータを格納するフォルダーのパス</param>
        /// <param name="useMT">機械翻訳の使用有無</param>
        /// <param name="useReplace">上書きの有無</param>
        public static void SaveToFolder(
            SuTransSheetInfo transSheet,
            string langFolderEN,
            string langFolderJP,
            bool useMT,
            bool useReplace)
        {
            var fullPath = Path.GetFullPath(langFolderEN);
            var di       = new DirectoryInfo(fullPath);
            var files    = di.GetFiles("*.xml", SearchOption.AllDirectories);

            foreach (var f in files)
            {
                if (!Path.GetExtension(f.FullName)
                    .Equals(".xml", StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                var episodeID = GetEpisodeID(f.FullName);
                var fileType  = GetFileType(f.FullName);
                var rc        = SaveToXml(
                    transSheet,
                    episodeID,
                    fileType,
                    f.FullName,
                    langFolderJP,
                    useMT,
                    useReplace);
                if (!rc)
                {
                    Console.WriteLine(
                        $"{f.FullName}が既に存在します。" +
                        $"{Environment.NewLine}このファイルの処理をスキップしました。");
                }
            }
        }