更新记录

1.0.0(2023-02-09)

新版首发


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


KJ-Translate

注意事项

需要下载翻译模型,才能实现离线翻译

使用

<template>
    <view class="content">
        <button type="primary" @click="init">初始化</button>
        <button type="primary" @click="downloadModelIfNeeded">自动翻译模型下载</button>
        <textarea auto-height auto-focus="true" placeholder="请输入需要翻译的文字" v-model="text" />
        <button type="primary" @click="translate">翻译文本</button>
        <view>翻译后结果为:{{translateResult}}</view>
        <button type="primary" @click="close">关闭</button>
        <view class="title">-------以下方法不需要init,就可以调用------</view>
        <button type="primary" @click="getDownloadedModels">获取已下载过的翻译模型</button>
        <button type="primary" @click="deleteDownloadedModel">删除已下载的翻译模型</button>
        <button type="primary" @click="download">下载翻译模型(提前下载模型)</button>
    </view>
</template>

<script>
    const KJTranslate = uni.requireNativePlugin('KJ-Translate');
    export default {
        data() {
            return {
                title: 'Hello',
                text: "欢迎使用我的插件,准备好了吗?\n 我是输入框 \n 点击\“翻译文本\"按钮,即可得到结果",
                translateResult: ""
            }
        },
        onLoad() {
            this.init();
            this.downloadModelIfNeeded();
        },
        methods: {
            init() {
                var dic = {
                    sourceLanguage: "zh",
                    targetLanguage: "en"
                }
                KJTranslate.init(dic, (res) => {
                    console.log("init:" + JSON.stringify(res));
                })
            },
            downloadModelIfNeeded() {
                plus.nativeUI.showWaiting("正在下载翻译模型...", {
                    back: 'none'
                });
                KJTranslate.downloadModelIfNeeded((res) => {
                    console.log("downloadModelIfNeeded:" + JSON.stringify(res));
                    plus.nativeUI.closeWaiting();
                    if (res.isSuccess == true) {
                        uni.showToast({
                            title: '下载成功',
                            duration: 2000
                        });
                    } else {
                        uni.showToast({
                            title: res.error,
                            duration: 2000
                        });
                    }
                })
            },
            translate() {
                var dic = {
                    text: this.text,
                }
                KJTranslate.translate(dic, (res) => {
                    console.log("translate:" + JSON.stringify(res));
                    if (res.isSuccess == true) {
                        this.translateResult = res.result
                    }
                })
            },
            close() {
                KJTranslate.close()
            },
            getDownloadedModels() {
                KJTranslate.getDownloadedModels((res) => {
                    console.log("getDownloadedModels:" + JSON.stringify(res));
                })
            },
            deleteDownloadedModel() {
                var dic = {
                    language: "zh",
                }
                KJTranslate.deleteDownloadedModel(dic, (res) => {
                    console.log("deleteDownloadedModel:" + JSON.stringify(res));
                })
            },
            download() {
                plus.nativeUI.showWaiting("正在下载翻译模型...", {
                    back: 'none'
                });
                var dic = {
                    language: "ja",
                }
                KJTranslate.download(dic, (res) => {
                    console.log("download:" + JSON.stringify(res));
                    plus.nativeUI.closeWaiting();
                    if (res.isSuccess == true) {
                        uni.showToast({
                            title: '下载成功',
                            duration: 2000
                        });
                    } else {
                        uni.showToast({
                            title: res.error,
                            duration: 2000
                        });
                    }
                })
            }
        }
    }
    /**
     * 支持以下语言之间互译
BCP-47代码    语言
af  南非荷兰语
ar  阿拉伯语
be  白俄罗斯语
bg  保加利亚语
bn  孟加拉语
ca  加泰罗尼亚语
cs  捷克语
cy  威尔士语
da  丹麦语
de  德语
el  希腊语
en  英语
eo  世界语
es  西班牙语
et  爱沙尼亚语
fa  波斯语
fi  芬兰语
fr  法语
ga  爱尔兰语
gl  加利西亚语
gu  古吉拉特语
他   希伯来语
hi  北印度语
小时  克罗地亚语
ht  海地语
hu  匈牙利语
id  印度尼西亚语
:   冰岛语
it  意大利语
ja  日语
ka  格鲁吉亚语
kn  卡纳达语
ko  韩语
lt  立陶宛语
lv  拉脱维亚语
mk  马其顿语
mr  马拉地语
毫秒  马来语
mt  马耳他语
nl  荷兰语
否   挪威语
pl  波兰语
pt  葡萄牙语
ro  罗马尼亚语
ru  俄语
sk  斯洛伐克语
sl  斯洛文尼亚语
sq  阿尔巴尼亚语
sv  瑞典语
sw  斯瓦希里语
ta  泰米尔语
te  泰卢固语
th  泰语
tl  塔加路语
tr  土耳其语
uk  乌克兰语
ur  乌尔都语
vi  越南语
zh  中文
     * */
</script>
<style>
    .title {
        text-align: center;
        margin-top: 8px;
        margin-bottom: 8px;
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的 MLKit SDK会采集数据,详情可参考:https://developers.google.cn/ml-kit/language/translation?hl=zh-cn

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问