mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-23 07:33:53 +08:00
- Adiciona arquivo de tradução pt_BR.js para manager-web (~1332 chaves) - Adiciona arquivo de tradução pt_BR.ts para manager-mobile (~440 chaves) - Cria README_pt_BR.md com documentação traduzida completa - Registra pt_BR no sistema i18n de ambos os frontends (web e mobile) - Adiciona pt_BR nos seletores de idioma (HeaderBar, login, retrievePassword) - Adiciona badge "Português (Brasil)" em todos os READMEs existentes - Adiciona detecção automática de idioma pt/pt-BR no navegador - Adiciona chave language.ptBR em todos os arquivos de tradução existentes https://claude.ai/code/session_01XJMVWKBjy7UwqskN9BbsYM
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
import Vue from 'vue';
|
|
import VueI18n from 'vue-i18n';
|
|
import zhCN from './zh_CN';
|
|
import zhTW from './zh_TW';
|
|
import en from './en';
|
|
import de from './de';
|
|
import vi from './vi';
|
|
import ptBR from './pt_BR';
|
|
|
|
Vue.use(VueI18n);
|
|
|
|
// 从本地存储获取语言设置,如果没有则使用浏览器语言或默认语言
|
|
const getDefaultLanguage = () => {
|
|
const savedLang = localStorage.getItem('userLanguage');
|
|
if (savedLang) {
|
|
return savedLang;
|
|
}
|
|
const browserLang = navigator.language || navigator.userLanguage;
|
|
if (browserLang.indexOf('zh') === 0) {
|
|
if (browserLang === 'zh-TW' || browserLang === 'zh-HK' || browserLang === 'zh-MO') {
|
|
return 'zh_TW';
|
|
}
|
|
return 'zh_CN';
|
|
}
|
|
if (browserLang.indexOf('de') === 0) {
|
|
return 'de';
|
|
}
|
|
if (browserLang.indexOf('vi') === 0) {
|
|
return 'vi';
|
|
}
|
|
if (browserLang === 'pt-BR' || browserLang === 'pt') {
|
|
return 'pt_BR';
|
|
}
|
|
return 'en';
|
|
};
|
|
|
|
const i18n = new VueI18n({
|
|
locale: getDefaultLanguage(),
|
|
fallbackLocale: 'zh_CN',
|
|
messages: {
|
|
'zh_CN': zhCN,
|
|
'zh_TW': zhTW,
|
|
'en': en,
|
|
'de': de,
|
|
'vi': vi,
|
|
'pt_BR': ptBR
|
|
}
|
|
});
|
|
|
|
export default i18n;
|
|
|
|
// 提供一个方法来切换语言
|
|
export const changeLanguage = (lang) => {
|
|
i18n.locale = lang;
|
|
localStorage.setItem('userLanguage', lang);
|
|
// 通知组件语言已更改
|
|
Vue.prototype.$eventBus.$emit('languageChanged', lang);
|
|
}; |