diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb index 9ec588f6..42363ef5 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb @@ -1,4 +1,6 @@ -Public Module ModComp +Imports System.Threading.Tasks + +Public Module ModComp Public Enum CompType ''' @@ -211,6 +213,34 @@ Return If(DatabaseEntry Is Nothing OrElse DatabaseEntry.ChineseName = "", RawName, DatabaseEntry.ChineseName) End Get End Property + ''' + ''' 中文描述。若为 Nothing 则没有。 + ''' + Public ReadOnly Property ChineseDescription As Task(Of String) + Get + Return GetChineseDescriptionAsync() + End Get + End Property + + Private Async Function GetChineseDescriptionAsync() As Task(Of String) + Dim from = If(FromCurseForge, "curseforge", "modrinth") + Dim para = If(FromCurseForge, "modId", "project_id") + Dim result As String = Nothing + + Try + Dim jsonObject = Await Task.Run(Function() NetGetCodeByRequestOnce($"https://mod.mcimirror.top/translate/{from}?{para}={Id}", Encode:=Encoding.UTF8, IsJson:=True)) + If jsonObject.ContainsKey("translated") Then + result = jsonObject("translated").ToString() + Else + Hint($"{TranslatedName} 的简介暂无译文!", HintType.Critical) + End If + Catch ex As Exception + Log(ex, "获取中文描述时出现错误!") + Hint($"获取译文时出现错误,信息:{ex.Message}", HintType.Critical) + End Try + + Return result + End Function '实例化 diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml index a8b0571b..4f3540c1 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml @@ -17,6 +17,7 @@ + diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb index 81b69729..4ff25e66 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadCompDetail.xaml.vb @@ -224,7 +224,6 @@ End Function #End Region - Private IsFirstInit As Boolean = True Public Sub Init() Handles Me.PageEnter AniControlEnabled += 1 @@ -238,7 +237,6 @@ Else PageLoaderRestart(IsForceRestart:=True) End If - '放置当前工程 If CompItem IsNot Nothing Then PanIntro.Children.Remove(CompItem) CompItem = Project.ToCompItem(True, True) @@ -466,5 +464,11 @@ CompClipboard.CurrentText = Project.Website ClipboardSet(Project.Website) End Sub - + '翻译简介 + Private Async Sub BtnTranslate_Click(sender As Object, e As RoutedEventArgs) Handles BtnTranslate.Click + Hint($"正在获取 {Project.TranslatedName} 的简介译文……") + Dim ChineseDescription = Await Project.ChineseDescription + If ChineseDescription Is Nothing Then Return + MyMsgBox($"原文:{Project.Description}{Environment.NewLine}译文:{ChineseDescription}") + End Sub End Class