瀏覽代碼

chatGTP-部分语言优化,添加预览

liyijie 1 年之前
父節點
當前提交
32109b7518

+ 140 - 9
PDF Office/Helper/ChatGTPAIHelper.cs

@@ -1,4 +1,6 @@
-using Newtonsoft.Json;
+using ComPDFKit_Conversion.Options;
+using DryIoc;
+using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using PDF_Master.Properties;
 using System;
@@ -12,6 +14,7 @@ using System.Text;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using static Dropbox.Api.Files.SearchMatchType;
+using static Dropbox.Api.TeamLog.EventCategory;
 
 namespace PDF_Master.Helper
 {
@@ -67,9 +70,9 @@ namespace PDF_Master.Helper
         /// <param name="content"></param>
         /// <param name="language">1=中文 2=英文 3=法语 4=汉语</param>
         /// <returns></returns>
-        public async static Task<string> fileKeyTranslate(string content,string filename)
+        public async static Task<string> fileKeyTranslate(string content, string filename)
         {
-            
+
             HttpWebResponse response = null;
             ServicePointManager.DefaultConnectionLimit = 200;
             HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Uri_fileKeytranslate);
@@ -97,11 +100,11 @@ namespace PDF_Master.Helper
             // 将FormData写入请求体
             using (var requestStream = request.GetRequestStream())
             {
-              await formData.CopyToAsync(requestStream);
+                await formData.CopyToAsync(requestStream);
             }
             try
             {
-                
+
                 // 获取HTTP响应
                 HttpWebResponse response2 = (HttpWebResponse)request.GetResponse();
                 using (StreamReader reader = new StreamReader(response2.GetResponseStream()))
@@ -244,9 +247,9 @@ namespace PDF_Master.Helper
                         }
                         client.DownloadProgressChanged += (sender, e) =>
                         {
-                            
+
                         };
-                        client.DownloadFile(translate, folderPath+"\\" +file.Name);
+                        client.DownloadFile(translate, folderPath + "\\" + file.Name);
                     }
                     return "200";
                 }
@@ -266,7 +269,7 @@ namespace PDF_Master.Helper
         /// <param name="fromlanguage">文本语言</param>
         /// <param name="tolanguage">需要翻译的语言</param>
         /// <returns></returns>
-        public static String textTranslate(string content, string fromlanguage, string tolanguage,ref string translate)
+        public static String textTranslate(string content, string fromlanguage, string tolanguage, ref string translate)
         {
 
             HttpWebResponse response = null;
@@ -352,7 +355,8 @@ namespace PDF_Master.Helper
             {
                 namevalue["user_id"] = Settings.Default.UserDate.id;
             }
-            else {
+            else
+            {
                 namevalue["user_id"] = "3";
             }
             namevalue["content"] = content;
@@ -456,6 +460,133 @@ namespace PDF_Master.Helper
             }
             return repsonseData;
         }
+
+        public static List<string> FromlanguageFamily { set; get; } = new List<string>();
+        public static List<string> SetFromlanguageOrigin()
+        {
+            FromlanguageFamily.Clear();
+            FromlanguageFamily.Add("Automatic Identification");
+            FromlanguageFamily.Add("English");
+            FromlanguageFamily.Add("Simplified Chinese");
+            FromlanguageFamily.Add("Traditional Chinese");
+            FromlanguageFamily.Add("Japanese");
+            FromlanguageFamily.Add("Korean");
+            FromlanguageFamily.Add("French");
+            FromlanguageFamily.Add("Spanish");
+            FromlanguageFamily.Add("Italian");
+            FromlanguageFamily.Add("German");
+            FromlanguageFamily.Add("Portuguese");
+            FromlanguageFamily.Add("Russian");
+            FromlanguageFamily.Add("Vietnamese");
+            FromlanguageFamily.Add("Thai");
+            FromlanguageFamily.Add("Arabic");
+            FromlanguageFamily.Add("Greek");
+            FromlanguageFamily.Add("Bulgarian");
+            FromlanguageFamily.Add("Finnish");
+            FromlanguageFamily.Add("Slovene");
+            FromlanguageFamily.Add("Dutch");
+            FromlanguageFamily.Add("Czech");
+            FromlanguageFamily.Add("Swedish");
+            FromlanguageFamily.Add("Polish");
+            FromlanguageFamily.Add("Danish");
+            FromlanguageFamily.Add("Romanian");
+            FromlanguageFamily.Add("Hungarian");
+
+            return FromlanguageFamily;
+        }
+
+        public static List<string> TolanguageFamily { set; get; } = new List<string>();
+        public static List<string> SetTolanguageOrigin()
+        {
+            TolanguageFamily.Clear();
+            TolanguageFamily.Add("English");
+            TolanguageFamily.Add("Simplified Chinese");
+            TolanguageFamily.Add("Traditional Chinese");
+            TolanguageFamily.Add("Japanese");
+            TolanguageFamily.Add("Korean");
+            TolanguageFamily.Add("French");
+            TolanguageFamily.Add("Spanish");
+            TolanguageFamily.Add("Italian");
+            TolanguageFamily.Add("German");
+            TolanguageFamily.Add("Portuguese");
+            TolanguageFamily.Add("Russian");
+            TolanguageFamily.Add("Vietnamese");
+            TolanguageFamily.Add("Thai");
+            TolanguageFamily.Add("Arabic");
+            TolanguageFamily.Add("Greek");
+            TolanguageFamily.Add("Bulgarian");
+            TolanguageFamily.Add("Finnish");
+            TolanguageFamily.Add("Slovene");
+            TolanguageFamily.Add("Dutch");
+            TolanguageFamily.Add("Czech");
+            TolanguageFamily.Add("Swedish");
+            TolanguageFamily.Add("Polish");
+            TolanguageFamily.Add("Danish");
+            TolanguageFamily.Add("Romanian");
+            TolanguageFamily.Add("Hungarian");
+            return TolanguageFamily;
+        }
+
+        public static string UpdateLanguagebType(int index)
+        {
+            switch (index)
+            {
+                case 0:
+                    return "auto";
+                case 1:
+                    return "en";
+                case 2:
+                    return "zh";
+                case 3:
+                    return "cht";
+                case 4:
+                    return "jp";
+                case 5:
+                    return "kor";
+                case 6:
+                    return "fra";
+                case 7:
+                    return "spa";
+                case 8:
+                    return "it";
+                case 9:
+                    return "de";
+                case 10:
+                    return "pt";
+                case 11:
+                    return "ru";
+                case 12:
+                    return "vie";
+                case 13:
+                    return "th";
+                case 14:
+                    return "ara";
+                case 15:
+                    return "el";
+                case 16:
+                    return "bul";
+                case 17:
+                    return "fin";
+                case 18:
+                    return "slo";
+                case 19:
+                    return "nl";
+                case 20:
+                    return "cs";
+                case 21:
+                    return "swe";
+                case 22:
+                    return "pl";
+                case 23:
+                    return "dan";
+                case 24:
+                    return "rom";
+                case 25:
+                    return "hu";
+                default:
+                    return"";
+            }
+        }
     }
 }
 

+ 88 - 26
PDF Office/ViewModels/Dialog/ChatGPTAIDialogs/DocumentaryTranslationDialogViewModel.cs

@@ -1,7 +1,11 @@
-using Microsoft.Win32;
+using ComPDFKitViewer;
+using ComPDFKitViewer.PdfViewer;
+using Microsoft.Win32;
 using PDF_Master.Helper;
+using PDF_Master.Model;
 using Prism.Commands;
 using Prism.Mvvm;
+using Prism.Regions;
 using Prism.Services.Dialogs;
 using System;
 using System.Collections.Generic;
@@ -11,44 +15,79 @@ namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
 {
     public class DocumentaryTranslationDialogViewModel : BindableBase, IDialogAware
     {
+
+        public IRegionManager regionManager;
+
+        public CPDFViewer PDFViewer;
+
+        private CPDFViewer pdfViewer = null;
+
+        private string fromlanguage = "";
+
+        private string tolanguage = "";
+
+        private int fromlanguageIndex = 0;
+        public int FromlanguageIndex
+        {
+            get { return fromlanguageIndex; }
+            set
+            {
+                SetProperty(ref fromlanguageIndex, value);
+                fromlanguage=ChatGTPAIHelper.UpdateLanguagebType(value);
+            }
+        }
+
+        private int tolanguageIndex = 0;
+        public int TolanguageIndex
+        {
+            get { return tolanguageIndex; }
+            set
+            {
+                SetProperty(ref tolanguageIndex, value);
+                tolanguage = ChatGTPAIHelper.UpdateLanguagebType(value+1);
+            }
+        }
+
+        public static List<string> FromlanguageFamily { set; get; } = new List<string>();
+
+        public string ViewerRegionName { get; set; }
+
+        private void GetFromlanguageOrigin()
+        {
+            FromlanguageFamily.Clear();
+            FromlanguageFamily = ChatGTPAIHelper.SetFromlanguageOrigin();
+        }
+        public List<string> TolanguageFamily { set; get; } = new List<string>();
+
+        private void GetTolanguageOrigin()
+        {
+            TolanguageFamily.Clear();
+            TolanguageFamily = ChatGTPAIHelper.SetTolanguageOrigin();
+        }
+
         public DelegateCommand TranslateCommand { get; set; }
         public DelegateCommand CancelCommand { get; set; }
-        public DocumentaryTranslationDialogViewModel()
+        public DocumentaryTranslationDialogViewModel(IRegionManager regionManager)
         {
+            this.regionManager = regionManager;
             CancelCommand = new DelegateCommand(cancel);
             TranslateCommand = new DelegateCommand(translate);
+            ViewerRegionName = Guid.NewGuid().ToString();
+            init();
         }
 
+        private void init()
+        {
+            GetFromlanguageOrigin();
+            GetTolanguageOrigin();
+        }
         private void cancel()
         {
             RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
         }
         public async void translate()
         {
-            string txt = Properties.Resources.txtex;
-            string word = Properties.Resources.wordex;
-            string ppt = Properties.Resources.pptex;
-            string excel = Properties.Resources.excelex;
-            string html = Properties.Resources.htmlex;
-            string image = Properties.Resources.imageex;
-            string pdf = Properties.Resources.pdf;
-            string allfiles = pdf + txt + word + excel + ppt + image + html;
-            OpenFileDialog dialog = new OpenFileDialog();
-            //dialog.Multiselect = true;
-            dialog.Filter = string.Format($"Files({allfiles.Replace(";", ",")}|{allfiles})|" +
-           $"Pdf({pdf})|{pdf}|" +
-           $"Microsoft Office Word({word})|{word}|" +
-           $"Microsoft Office Excel({excel})|{excel}|" +
-           $"Microsoft Office PowerPoint({ppt})|{ppt}|" +
-           $"Txt({txt})|{txt}|" +
-           $"Picture({image})|{image}|" +
-           $"Html({html})|{html}");
-
-            if ((bool)dialog.ShowDialog())
-            {
-                await ChatGTPAIHelper.fileTranslate(dialog.FileName, "en", "zh");
-            }
-
+            await ChatGTPAIHelper.fileTranslate(pdfViewer.Document.FilePath, fromlanguage, tolanguage);
         }
 
         public string Title => "";
@@ -66,6 +105,29 @@ namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
 
         public void OnDialogOpened(IDialogParameters parameters)
         {
+
+            parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
+            if (pdfViewer != null)
+            {
+                if (!regionManager.Regions[ViewerRegionName].Views.Contains(pdfViewer))
+                {
+                    PDFViewer = new CPDFViewer();
+                    PDFViewer.InitDocument(pdfViewer.Document);
+                    //Document = PDFViewer.Document;
+                    //pdfViewer.CustomDrawHandler += CurrentViewer_CustomDrawHandler;
+                    //pdfViewer.UndoManager.PropertyChanged += UndoManager_PropertyChanged;
+                    regionManager.AddToRegion(ViewerRegionName, PDFViewer);
+                    PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction());
+                    PDFViewer.Load();
+                    PDFViewer.ChangeFitMode(FitMode.FitHeight);
+                    PDFViewer.ChangeViewMode(ViewMode.Single);
+                    PDFViewer.SetMouseMode(MouseModes.PanTool);
+                    fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0);
+                    tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1);
+                    //PageRangeNumber = PDFViewer.Document.PageCount;
+                    //PDFViewer.Zoom(0.1);
+                }
+            }
         }
     }
 }

+ 50 - 1
PDF Office/ViewModels/Dialog/ChatGPTAIDialogs/SelectedTranslationDialogViewModel.cs

@@ -40,18 +40,65 @@ namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
             }
         }
 
+        private string fromlanguage = "";
+
+        private string tolanguage = "";
+
+        private int fromlanguageIndex = 0;
+        public int FromlanguageIndex
+        {
+            get { return fromlanguageIndex; }
+            set
+            {
+                SetProperty(ref fromlanguageIndex, value);
+                fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(value);
+            }
+        }
+
+        private int tolanguageIndex = 0;
+        public int TolanguageIndex
+        {
+            get { return tolanguageIndex; }
+            set
+            {
+                SetProperty(ref tolanguageIndex, value);
+                tolanguage = ChatGTPAIHelper.UpdateLanguagebType(value + 1);
+            }
+        }
+
+        public static List<string> FromlanguageFamily { set; get; } = new List<string>();
+        private void GetFromlanguageOrigin()
+        {
+            FromlanguageFamily.Clear();
+            FromlanguageFamily = ChatGTPAIHelper.SetFromlanguageOrigin();
+        }
+        public List<string> TolanguageFamily { set; get; } = new List<string>();
+
+        private void GetTolanguageOrigin()
+        {
+            TolanguageFamily.Clear();
+            TolanguageFamily = ChatGTPAIHelper.SetTolanguageOrigin();
+        }
+
         public DelegateCommand TranslateCommand { get; set; }
         public DelegateCommand CopyCommand { get; set; }
         public SelectedTranslationDialogViewModel()
         {
             TranslateCommand = new DelegateCommand(translate);
             CopyCommand = new DelegateCommand(copy);
+            init();
+        }
+
+        private void init()
+        {
+            GetFromlanguageOrigin();
+            GetTolanguageOrigin();
         }
 
         public void translate()
         {
             string translatetext = "";
-            ChatGTPAIHelper.textTranslate(SelectedText, "en", "zh", ref translatetext);
+            ChatGTPAIHelper.textTranslate(SelectedText, fromlanguage, tolanguage, ref translatetext);
             TranslateText = translatetext;
         }
         public void copy()
@@ -81,6 +128,8 @@ namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs
             if (pdfViewer != null)
             {
                 SelectedText = pdfViewer.GetSelectedText();
+                fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0);
+                tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1);
             }
         }
     }

+ 47 - 1
PDF Office/ViewModels/HomePanel/ChatGPTAI/ChatGPTAITranslationContentViewModel.cs

@@ -12,10 +12,56 @@ namespace PDF_Master.ViewModels.HomePanel.ChatGPTAI
     public class ChatGPTAITranslationContentViewModel : BindableBase
     {
 
+        private string fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0);
+
+        private string tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1);
+
+        private int fromlanguageIndex = 0;
+        public int FromlanguageIndex
+        {
+            get { return fromlanguageIndex; }
+            set
+            {
+                SetProperty(ref fromlanguageIndex, value);
+                fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(value);
+            }
+        }
+
+        private int tolanguageIndex = 0;
+        public int TolanguageIndex
+        {
+            get { return tolanguageIndex; }
+            set
+            {
+                SetProperty(ref tolanguageIndex, value);
+                tolanguage = ChatGTPAIHelper.UpdateLanguagebType(value + 1);
+            }
+        }
+
+        public static List<string> FromlanguageFamily { set; get; } = new List<string>();
+        private void GetFromlanguageOrigin()
+        {
+            FromlanguageFamily.Clear();
+            FromlanguageFamily = ChatGTPAIHelper.SetFromlanguageOrigin();
+        }
+        public List<string> TolanguageFamily { set; get; } = new List<string>();
+
+        private void GetTolanguageOrigin()
+        {
+            TolanguageFamily.Clear();
+            TolanguageFamily = ChatGTPAIHelper.SetTolanguageOrigin();
+        }
         public DelegateCommand SelectFilesCommand { get; set; }
         public ChatGPTAITranslationContentViewModel()
         {
             SelectFilesCommand = new DelegateCommand(selectFiles);
+            init();
+        }
+
+        private void init()
+        {
+            GetFromlanguageOrigin();
+            GetTolanguageOrigin();
         }
 
         public async void selectFiles() {
@@ -40,7 +86,7 @@ namespace PDF_Master.ViewModels.HomePanel.ChatGPTAI
 
             if ((bool)dialog.ShowDialog())
             {
-                await ChatGTPAIHelper.fileTranslate( dialog.FileName , "en", "zh");
+                await ChatGTPAIHelper.fileTranslate( dialog.FileName , fromlanguage, tolanguage);
             }
                 
         }

File diff suppressed because it is too large
+ 7 - 7
PDF Office/Views/Dialog/ChatGPTAIDialogs/DocumentaryTranslationDialog.xaml


+ 10 - 2
PDF Office/Views/Dialog/ChatGPTAIDialogs/DocumentaryTranslationDialog.xaml.cs

@@ -1,4 +1,6 @@
-using System.Windows.Controls;
+using Prism.Ioc;
+using Prism.Regions;
+using System.Windows.Controls;
 
 namespace PDF_Master.Views.Dialog.ChatGPTAIDialogs
 {
@@ -7,9 +9,15 @@ namespace PDF_Master.Views.Dialog.ChatGPTAIDialogs
     /// </summary>
     public partial class DocumentaryTranslationDialog : UserControl
     {
-        public DocumentaryTranslationDialog()
+        private IContainerProvider containerProvider;
+       
+        public DocumentaryTranslationDialog(IContainerProvider containerProvider)
         {
             InitializeComponent();
+            this.containerProvider = containerProvider;
+            var regionManager = containerProvider.Resolve<IRegionManager>();
+            RegionManager.SetRegionManager(this, regionManager);
+            RegionManager.UpdateRegions();
         }
     }
 }

File diff suppressed because it is too large
+ 2 - 2
PDF Office/Views/Dialog/ChatGPTAIDialogs/SelectedTranslationDialog.xaml


File diff suppressed because it is too large
+ 2 - 2
PDF Office/Views/HomePanel/ChatGPTAI/ChatGPTAITranslationContent.xaml