Bilibili-Evolved/min/comments-translate.min.js
2021-10-26 13:22:15 +08:00

1 line
1.6 KiB
JavaScript

(()=>(t,e)=>{const a=async()=>{const{getTranslator:a}=await e.importAsync("feeds-translate-providers");const n=Vue.extend({template:`\n<div class="translate-container">\n<div class="translate" v-if="!working && !translated" @click="translate()">\n<i class="mdi mdi-earth"></i>翻译\n</div>\n<i v-if="working" class="translating mdi mdi-18px mdi-loading mdi-spin"></i>\n<div class="translated" v-if="translated">翻译自<a :href="activeTranslator.link" target="_blank">{{ activeTranslator.name }}</a>:</div>\n<div v-if="translated" class="translate-result">{{ result }}</div>\n</div>\n`,props:{text:{type:String,required:true}},data(){return{result:"",working:false,activeTranslator:{}}},computed:{translated(){return this.result!==""}},methods:{async translate(){try{this.working=true;const e=this.text;const n=this.activeTranslator=a();this.result=await n.translate(e,{targetLanguage:(()=>{if(t.i18n){return languageNameToCode[t.i18nLanguage]}if(t.feedsTranslateLanguage!==""){return t.feedsTranslateLanguage}return})()});console.log(e,n,this.result)}catch(t){logError(t)}finally{this.working=false}}}});const r=t=>{const e=dqa(t,".text, .text-con");if(e.length===0){return}e.forEach((t=>{if(t.nextElementSibling&&t.nextElementSibling.classList.contains("translate-container")){return}const e=new n({propsData:{text:t.innerText}}).$mount();t.insertAdjacentElement("afterend",e.$el)}))};const{forEachCommentItem:s}=await e.importAsync("comment-apis");s({added:t=>{const{element:e}=t;t.onRepliesUpdate=t=>t.forEach((t=>r(t.element)));r(e)}})};if(t.feedsTranslate){e.applyStyle("feedsTranslateStyle");a()}return{export:{commentsTranslate:a}}})();