ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cocos插件开发实战

2022-01-26 19:03:02  阅读:215  来源: 互联网

标签:实战 npm 翻译 插件 api 开发 cocos translate


编辑器里扩展—开发一个实时翻译插件

公众号原文原文

Cocos从零开发一个翻译插件

背景
在 Cocos Creator 开发过程中,对我这种英文水平一般的人来说,在对变量起名或者适配多语言的时候可能经常需要打开网页或者翻译软件进行翻译,所以萌生了开发一个翻译插件的想法。

这是我针对公司项目开发的翻译软件,但并不通用,所以重写了一个。

实现
翻译插件开发主要以下几步:

插件基础框架

导入npm

开发插件面板

实现翻译

插件基础框架
这个就不细说了,详细可查看官方文档或者我之前发布的文章

文档:https://docs.cocos.com/creator/2.4/manual/zh/extension/your-first-extension.html

文章:CocosCreator插件-初探编辑器扩展

CocosCreator插件-Vue和Node.js-npm的使用

导入npm
插件的翻译部分用的是npm的bing-translate-api包,npm中其他翻译包选择还有google-translate-api(谷歌翻译)、baidu-translate-api(百度翻译)、translate(混合包,可手动选择),但是在开发时候发现谷歌的api返回不到翻译结果,经查有可能是谷歌需要科学上网才可使用,这样不太方便,遂放弃;百度的api在频繁访问的时候会报错,可能百度侦测了到了咱们想白嫖的行为,所以做了应对~ 所以最后选择了bing(必应)的api。

导入方法:

 npm install bing-translate-api 
使用方法:

const { translate } = require('bing-translate-api');

translate('你好', null, 'en', true).then(res => {
  console.log(res.translation);
}).catch(err => {
  console.error(err);
});
translate方法需要传入四个参数:

需要翻译的文本

文本的语言

需要翻译到什么语言

是否纠正输入文本

这里我们只需要填入第一个和第三个参数即可,第二个null代表自动识别文本语言类型。“en”代表英文,其他的语言代号可在bing-tranlate-api的包中看到。

const LANGS = {
    'auto-detect': 'Auto-detect',
    af: 'Afrikaans',
    am: 'Amharic',
    ar: 'Arabic',
    as: 'Assamese',
    az: 'Azerbaijani',
    bg: 'Bulgarian',
    bn: 'Bangla',
    bs: 'Bosnian',
    ca: 'Catalan',
    cs: 'Czech',
    cy: 'Welsh',
    da: 'Danish',
    de: 'German',
    el: 'Greek',
    en: 'English',
    es: 'Spanish',
    et: 'Estonian',
    fa: 'Persian',
    fi: 'Finnish',
    fil: 'Filipino',
    fj: 'Fijian',
    fr: 'French',
    'fr-CA': 'French (Canada)',
    ga: 'Irish',
    gu: 'Gujarati',
    he: 'Hebrew',
    hi: 'Hindi',
    hr: 'Croatian',
    ht: 'Haitian Creole',
    hu: 'Hungarian',
    hy: 'Armenian',
    id: 'Indonesian',
    is: 'Icelandic',
    it: 'Italian',
    iu: 'Inuktitut',
    ja: 'Japanese',
    kk: 'Kazakh',
    km: 'Khmer',
    kmr: 'Kurdish (Northern)',
    kn: 'Kannada',
    ko: 'Korean',
    ku: 'Kurdish (Central)',
    lo: 'Lao',
    lt: 'Lithuanian',
    lv: 'Latvian',
    mg: 'Malagasy',
    mi: 'Maori',
    ml: 'Malayalam',
    mr: 'Marathi',
    ms: 'Malay',
    mt: 'Maltese',
    mww: 'Hmong Daw',
    my: 'Myanmar',
    nb: 'Norwegian',
    ne: 'Nepali',
    nl: 'Dutch',
    or: 'Odia',
    otq: 'Querétaro Otomi',
    pa: 'Punjabi',
    pl: 'Polish',
    prs: 'Dari',
    ps: 'Pashto',
    pt: 'Portuguese (Brazil)',
    'pt-PT': 'Portuguese (Portugal)',
    ro: 'Romanian',
    ru: 'Russian',
    sk: 'Slovak',
    sl: 'Slovenian',
    sm: 'Samoan',
    sq: 'Albanian',
    'sr-Cyrl': 'Serbian (Cyrillic)',
    'sr-Latn': 'Serbian (Latin)',
    sv: 'Swedish',
    sw: 'Swahili',
    ta: 'Tamil',
    te: 'Telugu',
    th: 'Thai',
    ti: 'Tigrinya',
    'tlh-Latn': 'Klingon (Latin)',
    'tlh-Piqd': 'Klingon (pIqaD)',
    to: 'Tongan',
    tr: 'Turkish',
    ty: 'Tahitian',
    uk: 'Ukrainian',
    ur: 'Urdu',
    vi: 'Vietnamese',
    yua: 'Yucatec Maya',
    yue: 'Cantonese (Traditional)',
    'zh-Hans': 'Chinese Simplified',
    'zh-Hant': 'Chinese Traditional'
}
开发插件面板
开发插件面板需要web的相关知识,我也处于初学阶段,对比一下效果和代码吧

将上面的设计转成代码如下:

这里我只选了21种初始翻译语言

<h2 align="center">多语言翻译</h2>

<hr />

<div class="group">

    <h3>目标语言</h3>

    <ui-select class="huge" v-value="targetLanguage" @confirm="translateFun" tabindex="-1">

        <option value="da">丹麦语</option>

        <option value="en">英语</option>

        <option value="nl">荷兰语</option>

        <option value="fi">芬兰语</option>

        <option value="fr">法语</option>

        <option value="fr-CA">法语(加拿大)</option>

        <option value="it">意大利语</option>

        <option value="ja">日语</option>

        <option value="ko">韩语</option>

        <option value="th">泰语</option>

        <option value="nb">挪威语</option>

        <option value="pl">波兰语</option>

        <option value="pt">葡萄牙语(巴西)</option>

        <option value="pt-PT">葡萄牙语(葡萄牙)</option>

        <option value="ru">俄语</option>

        <option value="es">西班牙语</option>

        <option value="sv">瑞典语</option>

        <option value="tr">土耳其语</option>

        <option value="yue">粤语</option>

        <option value="zh-Hant">繁体中文</option>

        <option value="zh-Hans">简体中文</option>

    </ui-select>

</div>

<hr />

<div class="group">

    <h3>输入文本</h3>

    <ui-text-area style="width: 400px;" class="massive" placeholder="需要翻译的文本..." v-value="text" @change="translateFun" tabindex="-1"></ui-text-area>

    <hr />

    <h3>翻译结果</h3>

    <ui-text-area style="width: 400px;" class="massive" placeholder="翻译的结果..." v-value="translateResult" tabindex="-1"></ui-text-area>

    <!-- </center> -->

</div>
关于插件面板设计可以参考编辑器中的UI-Kit Preview,里面有大量示例,打开面板按Ctrl+Alt+I打开开发者面板,选中想用的部分即可查看源码;

或者查看官方文档:https://docs.cocos.com/creator/2.4/manual/zh/extension/using-ui-kit.html

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/class

实现翻译
利用confirm和change绑定到translateFun,执行翻译方法

    ready() {
        this.plugin = new window.Vue({
            el: this.shadowRoot,
            created() {},
            data: {
                text: "",
                translateResult: "",
                targetLanguage: "en"
            },
            methods: {
                translateFun() {
                    // Editor.log("开始翻译")
                    //翻译
                    translate(this.text, null, this.targetLanguage, true).then(res => {
                        this.translateResult = res.translation;
                    }).catch(err => {
                        console.error(err);
                    });
                },
            }
        })
    },
最后结果


插件已上架cocosstore并且免费-。-

最后
下载地址: 

http://store.cocos.com/app/detail/3479

相关文章

CocosCreator插件-初探编辑器扩展

CocosCreator插件-Vue和Node.js-npm的使用

更多精彩欢迎关注微信公众号

 

标签:实战,npm,翻译,插件,api,开发,cocos,translate
来源: https://blog.csdn.net/qq_39014369/article/details/122707195

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有