feat: adicionar suporte a Português Brasileiro (pt_BR) no projeto

- 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
This commit is contained in:
Claude
2026-02-19 17:44:25 +00:00
parent 8897b4f3c6
commit 63dfcf6659
18 changed files with 2185 additions and 2 deletions
@@ -254,6 +254,8 @@ export default {
return this.$t("language.de");
case "vi":
return this.$t("language.vi");
case "pt_BR":
return this.$t("language.ptBR");
default:
return this.$t("language.zhCN");
}
@@ -272,6 +274,8 @@ export default {
return require("@/assets/xiaozhi-ai_de.png");
case "vi":
return require("@/assets/xiaozhi-ai_vi.png");
case "pt_BR":
return require("@/assets/xiaozhi-ai_en.png");
default:
return require("@/assets/xiaozhi-ai.png");
}
@@ -303,6 +307,10 @@ export default {
label: this.$t("language.vi"),
value: "vi",
},
{
label: this.$t("language.ptBR"),
value: "pt_BR",
},
],
},
{
+1
View File
@@ -663,6 +663,7 @@ export default {
'language.en': 'English',
'language.de': 'Deutsch',
'language.vi': 'Tiếng Việt',
'language.ptBR': 'Português (Brasil)',
// Home page text
'home.addAgent': 'Agent hinzufügen',
+1
View File
@@ -663,6 +663,7 @@ export default {
'language.en': 'English',
'language.de': 'Deutsch',
'language.vi': 'Tiếng Việt',
'language.ptBR': 'Português (Brasil)',
// Home page text
'home.addAgent': 'Add Agent',
+6 -1
View File
@@ -5,6 +5,7 @@ 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);
@@ -27,6 +28,9 @@ const getDefaultLanguage = () => {
if (browserLang.indexOf('vi') === 0) {
return 'vi';
}
if (browserLang === 'pt-BR' || browserLang === 'pt') {
return 'pt_BR';
}
return 'en';
};
@@ -38,7 +42,8 @@ const i18n = new VueI18n({
'zh_TW': zhTW,
'en': en,
'de': de,
'vi': vi
'vi': vi,
'pt_BR': ptBR
}
});
File diff suppressed because it is too large Load Diff
+1
View File
@@ -663,6 +663,7 @@ export default {
'language.en': 'English',
'language.de': 'Deutsch',
'language.vi': 'Tiếng Việt',
'language.ptBR': 'Português (Brasil)',
// Home page text
'home.addAgent': 'Thêm tác nhân',
+1
View File
@@ -663,6 +663,7 @@ export default {
'language.en': 'English',
'language.de': 'Deutsch',
'language.vi': 'Tiếng Việt',
'language.ptBR': 'Português (Brasil)',
// 首页文本
'home.addAgent': '添加智能体',
+1
View File
@@ -663,6 +663,7 @@ export default {
'language.en': 'English',
'language.de': 'Deutsch',
'language.vi': 'Tiếng Việt',
'language.ptBR': 'Português (Brasil)',
// 首頁文本
'home.addAgent': '添加智能體',
+5
View File
@@ -55,6 +55,9 @@
<el-dropdown-item @click.native="changeLanguage('vi')">
{{ $t("language.vi") }}
</el-dropdown-item>
<el-dropdown-item @click.native="changeLanguage('pt_BR')">
{{ $t("language.ptBR") }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
@@ -188,6 +191,8 @@ export default {
return this.$t("language.de");
case "vi":
return this.$t("language.vi");
case "pt_BR":
return this.$t("language.ptBR");
default:
return this.$t("language.zhCN");
}
@@ -137,6 +137,8 @@ export default {
return require("@/assets/xiaozhi-ai_de.png");
case "vi":
return require("@/assets/xiaozhi-ai_vi.png");
case "pt_BR":
return require("@/assets/xiaozhi-ai_en.png");
default:
return require("@/assets/xiaozhi-ai.png");
}