wechat-translator-app / pages /index /index_v11_old.js
AKIRA
Finalize all local changes
b3b0b53
raw
history blame
2.94 kB
const plugin = requirePlugin('WechatSI');
Page({
data: {
languages: {
'zh': { name: '中文', flag: 'cn', code: 'zh_CN' },
'en': { name: 'English', flag: 'us', code: 'en_US' }
},
langCodes: ['zh', 'en'], // Only CN and EN for this test version
sourceLang: 'zh',
targetLang: 'en',
transcript: '',
outputText: '',
isRecording: false,
sourceLanguages: [],
targetLanguages: []
},
onLoad: function () {
this.initializeLanguages();
this.initRecorderManager();
},
// --- Language Selection Logic (Simplified for CN/EN only) ---
initializeLanguages: function () {
const { langCodes, languages, sourceLang, targetLang } = this.data;
this.setData({
sourceLanguages: langCodes.map(c => ({ ...languages[c], langCode: c, selected: c === sourceLang })),
targetLanguages: langCodes.map(c => ({ ...languages[c], langCode: c, selected: c === targetLang }))
});
},
selectSourceLanguage: function(e) { this.setData({ sourceLang: e.currentTarget.dataset.langCode }, this.initializeLanguages); },
selectTargetLanguage: function(e) { this.setData({ targetLang: e.currentTarget.dataset.langCode }, this.initializeLanguages); },
swapLanguages: function() {
this.setData({
sourceLang: this.data.targetLang,
targetLang: this.data.sourceLang,
transcript: this.data.outputText,
outputText: this.data.transcript
}, this.initializeLanguages);
},
// --- Recorder Manager Initialization (Pure Plugin Mode) ---
initRecorderManager: function() {
const manager = plugin.getRecordRecognitionManager();
manager.onStart = () => {
this.setData({ transcript: '正在聆听...', outputText: '' });
};
// Only onStop is used for final results
manager.onStop = (res) => {
this.setData({ isRecording: false });
if (res.result) {
this.setData({ transcript: res.result, outputText: res.translateResult || '' });
} else {
this.setData({ transcript: '识别结果为空', outputText: '' });
}
};
manager.onError = (res) => {
this.setData({ isRecording: false, transcript: '识别失败', outputText: res.msg });
};
// CRITICAL: Save the manager instance to the page context
this.manager = manager;
},
// --- Recording Start/Stop (Pure Plugin Mode) ---
startRecording: function () {
const { sourceLang, targetLang } = this.data;
this.setData({ isRecording: true });
this.manager.start({ lang: this.data.languages[sourceLang].code, translate: true, lto: this.data.languages[targetLang].code });
},
stopRecording: function () {
this.manager.stop();
}
});