草庐IT

微信小程序 通过百度API接口实现汉译英翻译

han_han__ 2023-10-06 原文

目录

先看一下做出来的效果:

一、微信开发平台的网址(微信开发者工具的官方使用说明)

二、百度API(文本翻译的API)

三、进入正文,微信小程序的代码部分


先看一下做出来的效果:

一、微信开发平台的网址(微信开发者工具的官方使用说明)

基础 | 微信开放文档 (qq.com)https://developers.weixin.qq.com/miniprogram/dev/api/

 

二、百度API(文本翻译的API)

文本翻译_机器翻译-百度AI开放平台 (baidu.com)https://ai.baidu.com/tech/mt/text_trans

 

1、点击立即使用,然后登录账号(需要实名认证),然后看到下图的界面。

 

2、先点击“去领取”,进入如下页面。

 

3、 点击“去创建”进入下图界面

 

 4、跳转如下界面:

 

 5、点击“查看应用详情”,获取“API Key”和“Secret Key”。这两条key下面步骤需要用。

 

 6、然后点击左侧栏的“技术文档”-->“API文档”-->“文本翻译-通用版”

机器翻译 - 文档 (baidu.com)https://cloud.baidu.com/doc/MT/s/4kqryjku9

 

7、点击蓝色字体跳转页面

 

 8、找到并复制下图网址,进行替换后,在新的页面打卡替换后的网址

 

 !!!注意“&”符号要保留

 

9、在新的网页输入网址出现下图界面,获取access_token

 

10、进入使用说明,按照文档要求来写。

机器翻译 - 文档 (baidu.com)https://cloud.baidu.com/doc/MT/s/4kqryjku9

 

三、进入正文,微信小程序的代码部分

1、wxml代码

<view></view>
<view class="head">
  <rich-text>翻译</rich-text>
</view>

<view class="t_c">
  <view class="text">
    <text class="info">请输入翻译内容:</text>
    <!-- 输入的时候就会触发inputInfo函数,{{text}}里的text对应js的data中的text -->
    <textarea class="my_input" rows="8" value="{{text}}" bindinput="inputInfo"></textarea>


    <view class="action">
      <!-- bindtap里的函数在点击对应图片时被调用 点“译”调用search函数,del函数同理(调用时清空翻译内容和翻译结构) -->
      <image class="search" src="../../icon/翻译.png" bindtap="search"></image>
      <image class="del" bindtap="del" src="../../icon/删除.png"></image>
    </view>


  </view>
  <view class="tran_text">
    <text class="info">翻译结果:</text>
    <!-- {{translation}}对应data中的translation即翻译结果 -->
    <textarea class="tran_content" rows="8" value="{{translation}}"></textarea>
  </view>
</view>

 2、wxss代码(样式)


Page{
  background-color: #5f8ae7;
}

.head{
  font-size: 42rpx;
  text-align: center;
  background-color: #3d59ab;
  padding: 10rpx;
  color: #fff;
}

.info{
  margin-top: 10rpx;
  margin-left: 10rpx;
  margin-bottom: 10rpx;
  color: white;
}


.text{
  width: auto;
  height: 530rpx;
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  border-bottom: 20rpx white solid;
}

.my_input{
  width: 100%;
  height: 350rpx;
  margin-left: 1rpx;
  margin-right: 1rpx;
  margin-bottom: 15rpx;
  background-color: white;
  border: 2rpx solid #292421;
  color: #292421;
}

.action{
  width: 100%;
  height: 28rpx;
  display: flex;
  margin: 15px;
  justify-content:space-between;
  align-items: center;
}
.search{
  width: 64rpx;
  height: 64rpx;
}

.del{
  width: 64rpx;
  height: 64rpx;
}

.tran_text{
  width: auto;
  height: 480rpx;
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
}

.tran_content{
  width: 100%;
  height: 390rpx;
  margin-left: 1rpx;
  margin-right: 1rpx;
  background-color: white;
  border: 2rpx solid #292421;
} 

3、js代码及解释(json文件没改动)

(1)wx.request使用说明如下文档。

RequestTask | 微信开放文档 (qq.com)https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html

 

(2)获取下面url的前缀

 

 (3)打印res,找翻译结果,如下图所示

 

js代码

Page({
  data: {
    token:'24.14dcdb7e07a794f2ffd736641847f7bf.2592000.1666952487.282335-27674044',//刚刚在百度API网页上获取的access_tokne
    text: "请输入需要翻译的中文内容",//初始页面展示的文本内容,对应“请输入翻译内容”下面输入框的文本
    translation: "",//用于接收翻译的结果,然后显示在页面上
  },
  // 点击删除图片时,调用del函数
  del(){
    // this.setData可以修改data中的数据,并且刷新页面,显示修改好的新数据
    this.setData({
      text:'',
      translation:''
    })
  },
  // 点击“译”时,调用search函数。这里需用调用wx.request来发起 HTTPS 网络请求。
  // 后附wx.request的说明文档。
  search(){
    console.log(this.data.text);
    wx.request({
      // https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token= 获取方式见 文章的3.(2)
      url: 'https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token='+this.data.token,
      data:{
        'from':'zh',//源语种方向
        'to':'en',//目标语种方向
        'q':this.data.text//输入的要翻译的内容,我这里用this.data.text来取上面输入的文本内容,即需要翻译的文本内容
      },
      header:{//请求头
        'Content-Type':	'application/json;charset=utf-8'
      },
      method:'POST',//HTTP 方法
      success: (res)=>{//函数调用成功的回调函数
        // 可以打印一下res,然后发现结果存在res.data.result.trans_result[0].dst
        // console.log(res);
        let result = res.data.result.trans_result[0].dst//新建一个变量result来存翻译的结果
        // console.log(res.data.result.trans_result[0].dst)
        this.setData({
          translation:result//把结果展示在页面上
        })
      },
      fail:(err)=>{
        console.log(err);
      }
    })
  },
  // 输入时触发该函数,用于获取要翻译的内容
  inputInfo(e){
    // console.log(e.detail.value)
    // this.data.text = e.detail.value
    this.setData({
      text:e.detail.value,
    })
  },
})

有关微信小程序 通过百度API接口实现汉译英翻译的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  4. ruby - 通过 ruby​​ 进程共享变量 - 2

    我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是

  5. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  6. ruby-on-rails - Enumerator.new 如何处理已通过的 block ? - 2

    我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m

  7. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  8. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

  9. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  10. 通过 MacPorts 的 RubyGems 是个好主意吗? - 2

    从MB升级到新的MBP后,Apple的迁移助手没有移动我的gem。我这次是通过macports安装ruby​​gems,希望在下次升级时避免这种情况。有什么我应该注意的陷阱吗? 最佳答案 如果你想把你的gems安装在你的主目录中(在传输过程中应该复制过来,作为一个附带的好处,会让你以你自己的身份运行geminstall,而不是root),将gemhome:键设置为您在~/.gemrc中的主目录中的路径. 关于通过MacPorts的RubyGems是个好主意吗?,我们在StackOverf

随机推荐