Пример #1
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);
        }
Пример #2
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);
        }