百度翻译api 实现简易微信翻译小程序
介绍
口袋翻译
口袋翻译 微信小程序
- 翻译功能
- 含7类语言的相互翻译
- 包含最近10条的翻译历史回溯功能
微信搜索:简e翻译
功能展示
- 使用百度翻译api
需要申请 appid 与 key 并在api.js设置
项目相关
index 页
navigator
navigator 等同于 a链接,通过navigator跳转到小程序的其他页面
详见 navigator
iconfont
通过引入 iconfont.wxss ,使用外链的 icon-font 图标,引入与使用方法和 HTML 几乎无分别
- 在
app.wxss公共样式当中@import "./assets/iconfont/iconfont.wxss";引入iconfont.wxss - 将
iconfont.wxss内容修改为如下代码(iconfont中css链接使用浏览器打开后得到下列代码),将url地址改为https后缀为ttf:
@font-face {font-family: "iconfont";
src: url('https://at.alicdn.com/t/font_811118_f7oh8iao9yd.ttf') format('truetype')
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-down:before { content: "\e600"; }
.icon-close:before { content: "\e78f"; }
.icon-arrow-right:before { content: "\e682"; }
.icon-duihao:before { content: "\e601"; }
.icon-right:before { content: "\e790"; }
input
input 栏通过 hidden="{{hideClearIcon}}" 控制 iconfont 的 X 是否隐藏
hideClearIcon: true隐藏hideClearIcon: false展示
事件绑定为 bindtap='onTapClose': 当用户点击的时候,执行 onTapClose
textarea 中 bindinput='onInput' bindconfirm='onConfirm' bindblur='onConfirm'为用户做了什么操作之后,进行翻译操作
<textarea placeholder='请输入要翻译的文本' placeholder-style='color: #8995a1' bindinput='onInput' bindconfirm='onConfirm' bindblur='onConfirm' value="{{query}}"></textarea>
使用 <text selectable="true">{{item.dst}}</text> 使翻译结果可选择,可复制
翻译api
请求使用
wx.request()
wx.request翻译api 使用百度的接口
wx.request({
url: 'https://fanyi-api.baidu.com/api/trans/vip/translate',
data: {
q, //输入文本
from, //需要翻译的
to, //翻译为
appid,
salt,
sign //拼接 MD5进行加密
},
success(res) {
if (res.data && res.data.trans_result) {
resolve(res.data)
} else {
reject({ status: 'error', msg: '翻译失败' })
wx.showToast({
title: '翻译失败',
icon: 'none',
duration: 3000
})
}
},
fail() {
reject({ status: 'error', msg: '翻译失败' })
wx.showToast({
title: '网络异常',
icon: 'none',
duration: 3000
})
}
})
- 设置百度翻译api之前需要先到微信小程序设置
request合法域名
text-area 翻译结果
<view class="text-result" wx:for="{{result}}" wx:key="index">
类似于 Vuejs 的语法格式,进行数组循环展示。
<text selectable="true">{{item.dst}}</text>
设置用户可选择
tabBar
必须放置在底部"position": "bottom",,才能使用 icon 图标。
用"iconPath"和"selectedIconPath"设置 tabBar 图标和被选中的图标。
"tabBar": {
"borderStyle": "white",
"position": "bottom",
"color": "#bfbfbf",
"selectedColor": "#1c1b21",
"list": [
{
"pagePath": "pages/index/index",
"text": "翻译",
"iconPath": "imgs/icon-1.png",
"selectedIconPath": "imgs/sel-icon-1.png"
},
{
"pagePath": "pages/history/history",
"text": "历史",
"iconPath": "imgs/icon-2.png",
"selectedIconPath": "imgs/sel-icon-2.png"
}
]
}
change 页
globalData
设置默认语言curlang,和历史选择过的缓存语言wx.getStorageSync('curLang')
item 列表
change页的item语言列表当中,绑定bindtap='onTapItem'事件
onTapItem: function (e) {
let langObj = e.currentTarget.dataset
wx.setStorageSync('language', langObj)
this.setData({ 'curLang': langObj })
app.globalData.curLang = langObj
wx.switchTab({ url: '/pages/index/index' }) //使用 switchTab 回到 tabBar
}
使用 hover-class="view-hover" 设置选择之后的样式效果
使用 <text class="iconfont icon-duihao" wx:if="{{index===curLang.index}}"></text> 添加选择语言后 ✅ 字体图标并通过 wx:if 选择渲染条件
onShow
进行 change 页面渲染的时候,获取当前的语言
onShow: function () {
this.setData({ curLang: app.globalData.curLang })
}
history 页
index.js 中有关history存储的
let history = wx.getStorageSync('history') || []
history.unshift({ query: this.data.query, result: res.trans_result[0].dst })
history.length = history.length > 10 ? 10 : history.length
wx.setStorageSync('history', history)
onTapItem
点击跳转 index页,并附带 query
onTapItem: function (e) {
wx.reLaunch({
url: `/pages/index/index?query=${e.currentTarget.dataset.query}`
})
}
因为使用了reLaunch,所以index页会重新加载,使用 index.js 的 onLoad
onLoad: function (options) { //翻译历史页通过 reLaunch 跳转,重新加载
console.log('onload..')
console.log(options)
if (options.query) {
this.setData({ query: options.query })
this.setData({ 'hideClearIcon': false }) //让icon-close显现
}
}
项目代码
该项目已开源到 Github。欢迎 star 与 fork 。
百度翻译api 实现简易微信翻译小程序的更多相关文章
- HotApp小程序统计,第一个专业的微信第三方小程序统计工具
1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道友盟统计一样,小程序也需要有个统计工具. 通过这个工具,可以知道小 ...
- WeTest+微信:小程序云端测试系统上线
日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测 ...
- 小程序开发-7-访问api数据与ES6在小程序中的应用
访问API数据与ES6在小程序中的应用 看待组件的两种观点 组件复用 代码分离-(特别重要) 不能在一个页面写所有的代码,代码分离具有很强的可读性.可维护性 Blink Api 介绍与测试API ur ...
- 用聚合数据API(苏州实时公交API)快速写出小程序
利用聚合数据API快速写出小程序,过程简单. 1.申请小程序账号 2.进入开发 3.调用API.比如“苏州实时公交”小程序,选择的是苏州实时公交API. 苏州实时公交API文档:https://www ...
- 小程序内嵌H5页面判断微信及小程序环境
判断微信及小程序环境 1.H5页面引入jweixin-1.3.2.js 2. var ua = window.navigator.userAgent.toLowerCase(); if(ua.matc ...
- 类似微信聊天小程序-网易云信,IM DEMO小程序版本
类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...
- 调用腾讯、百度翻译API,实现游戏机翻通用程序
最近玩了款steam独立游戏,没中文,只能自己汉化了,用腾讯跟百度的API实现了一个通用的机翻程序(只需要导入JSON文本), 同样,比较懒,还没写,先占坑
- Android使用有道翻译API实如今线翻译功能
在Android应用中,加入在线翻译的功能,这里调用的是有道翻译的API. 使用有道翻译API.首先要申请一个key,申请地址为:path=data-mode">有道翻译API申请地址 ...
- 微信小程序红包开发思路 微信红包小程序开发思路讲解
之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...
随机推荐
- Swift_闭包
Swift_闭包 点击查看源码 闭包优化 //闭包优化 func testClosures() { //函数做参数 排序 let names = ["XuBaoAiChiYu", ...
- mysql 一看就会 基本语法
创建表 create table <表名>( <字段名> 类型(长度) not null primary key auto_increment, **主键 name char ...
- CF1066D Boxes Packing(二分答案)
题意描述: 你有$n$个物品,每个物品大小为$a_i$,$m$个盒子,每个盒子的容积为$k$.$Maksim$先生想把物品装入盒子中.对于每个物品,如果能被放入当前的盒子中,则放入当前盒子,否则换一个 ...
- Struts2+Spring+Hibernate整合开发(Maven多模块搭建)
Struts2+Spring+Hibernate整合开发(Maven多模块搭建) 0.项目结构 Struts2:web层 Spring:对象的容器 Hibernate:数据库持久化操作 1.父模块导入 ...
- Comparable和Compartor的区别
1.List对象实现Comparable接口,使对象具备可比性 package tao; import java.util.ArrayList; import java.util.Collection ...
- 2. HTML常用标签
相信大家常常会打开浏览器搜索一些内容或者浏览一些网站,在浏览器的页面上会呈现很多内容,但是具体的形式无非就是图片.文字以及链接(可以点击进入另一个页面的特殊文字),其中文字承载着巨大的作用,传递着各种 ...
- .Net Core如何在任意位置获取配置文件的内容
前几天群里有人问,我想在程序里的任意位置读取appsetting.json里的配置,该怎么搞. 话不多说上源码 首先,要想读取配置文件我们要用到IConfiguration 接口,这个接口在Start ...
- MVC action过滤器验证登录
方法一 : 1.创建一个全局action过滤器 (在appstart 的filterconfig中注册 filters.Add(new LoginAttribute());) 2.不需要登 ...
- 自添加LUCI菜单及编译为ipk
目录 添加汉化编译为ipk配置文件入口函数界面文件Makefile 添加 添加自己的luci界面,有3个必要的要素: a配置文件.新建一个在/etc/config/abcdefg b入口函数.新建一个 ...
- 基于OMAPL138的字符驱动_GPIO驱动AD9833(三)之中断申请IRQ
基于OMAPL138的字符驱动_GPIO驱动AD9833(三)之中断申请IRQ 0. 导语 学习进入到了下一个阶段,还是以AD9833为例,这次学习是向设备申请中断,实现触发,在未来很多场景,比如做用 ...