/// <summary>
        /// ローカライズ情報をCSV形式で保存する。
        /// </summary>
        /// <param name="uapLocalizationInfo">ローカライズ情報</param>
        /// <param name="path">CSV形式のファイルのパス</param>
        /// <param name="langCode">言語番号</param>
        public static void SaveToCsv(
            UapLocalizationInfo uapLocalizationInfo, string path, int langCode)
        {
            using (var writer = new CsvWriter(
                       new StreamWriter(path, false, Encoding.UTF8)))
            {
                writer.Configuration.RegisterClassMap <CsvMapperLocalization>();
                writer.WriteHeader <UapTransSheetLocalizationEntry>();
                writer.NextRecord();

                foreach (var localizationFile in uapLocalizationInfo.Items.Values)
                {
                    var seq = 1;
                    foreach (var entry in localizationFile.Items.Values)
                    {
                        var data = new UapTransSheetLocalizationEntry();
                        //// FileIDを簡略形式に変換する。
                        data.FileID = ConvertFileIDToSheetFileID(localizationFile.FileID);
                        data.Name   = entry.Name;
                        data.ID     = $"#{entry.ID}";
                        //// 英語のエントリを出力する。
                        data.English  = entry.GetEntry(langCode);
                        data.Japanese = string.Empty;
                        data.MTrans   = string.Empty;
                        data.Sequence = seq;
                        seq++;
                        writer.WriteRecord(data);

                        writer.NextRecord();
                    }
                }
            }
        }
Example #2
0
        private static void SheetLocalization(TOptions.TArgs opt)
        {
            //// 【注意事項】
            //// GOG版(v2.7.1)のデータ "resources_00006.-9" にはバグが有る。
            //// FileID(LocalizationReference_Map_SELFNAME)
            //// ID(1190585287)のLangID(10)が重複し項目数も一つ多い。
            //// LoadFromFolder()時にエラーメッセージが表示されるが無視して良い。
            var localizeInfo = new UapLocalizationInfo();

            UapLocalizationDao.LoadFromFolder(
                localizeInfo,
                opt.FolderNameLangInput,
                "*.LocalizationReference");
            UapTransSheetLocalizationDao.SaveToCsv(
                localizeInfo, opt.FileNameSheet, opt.LanguageNo);
        }
Example #3
0
        /// <summary>
        /// ローカライズ情報(英語版)と翻訳シート情報(Localization)を使用し、翻訳を行い、
        /// 翻訳済みDialog情報を返す。
        /// </summary>
        /// <param name="transSheetLocalizationInfo">翻訳シート情報(Localization)</param>
        /// <param name="localizationInfoEN">ローカライズ情報(英語版)</param>
        /// <param name="langNo">言語番号</param>
        /// <param name="useMT">機械翻訳の使用有無</param>
        /// <returns>翻訳済みローカライズ情報</returns>
        public static UapLocalizationInfo TranslateLocalization(
            UapTransSheetLocalizationInfo transSheetLocalizationInfo,
            UapLocalizationInfo localizationInfoEN,
            int langNo,
            bool useMT)
        {
            var localizationInfoJP = new UapLocalizationInfo();

            //// ローカライズファイル(英語版)を元に翻訳を行い、ローカライズファイル(日本語版)を作成する。
            foreach (var localizationFileEN in localizationInfoEN.Items.Values)
            {
                //// ローカライズファイル(英語版)のクローンを作成し、ローカライズファイル(日本語版)の雛形とする。
                var localizationFileJP = localizationFileEN.Clone();
                localizationInfoJP.AddFile(localizationFileJP);

                foreach (var localizationEntryJP in localizationFileJP.Items.Values)
                {
                    //// 該当エントリの翻訳シートエントリーを取得。
                    UapTransSheetLocalizationEntry sheetEntry =
                        transSheetLocalizationInfo.GetEntry(
                            localizationFileEN.FileID, localizationEntryJP.ID);
                    //// 言語エントリーを翻訳
                    if (localizationEntryJP.LanguageEntries.ContainsKey(langNo))
                    {
                        localizationEntryJP.LanguageEntries[langNo] = GetTranslatedText(
                            localizationEntryJP.LanguageEntries[langNo],
                            sheetEntry.Japanese,
                            sheetEntry.MTrans,
                            useMT);
                    }
                    else
                    {
                        Console.WriteLine($"Warning: LangNo not found. LangNo({langNo}) ID({localizationEntryJP.ID}) FileID({localizationFileJP.FileID})");
                    }
                }
            }

            return(localizationInfoJP);
        }
Example #4
0
        private static void SaveLocalize(TOptions.TArgs opt)
        {
            //// 翻訳シートの読み込み
            var    sheetLocalizationInfo = new UapTransSheetLocalizationInfo();
            string locPath = opt.FileNameSheet;

            UapTransSheetLocalizationDao.LoadFromCsv(sheetLocalizationInfo, locPath);

            //// 言語情報(原文)の読み込み
            var localizationInfoEN = new UapLocalizationInfo();

            UapLocalizationDao.LoadFromFolder(
                localizationInfoEN,
                opt.FolderNameInput,
                "*.LocalizationReference");

            //// 翻訳済み言語情報の作成
            var localizationInfoJP =
                UapTranslation.TranslateLocalization(sheetLocalizationInfo, localizationInfoEN, opt.LanguageNo, opt.UseMachineTrans);

            UapLocalizationDao.SaveToFolder(opt.FolderNameOutput, localizationInfoJP, opt.UseReplace);
        }