feat(i18n): Simplified Chinese (zh-CN), search answers per locale, fr/de/es data fixes
CI / Lint e auditorias (push) Successful in 1m10s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m39s
Release / Plano (reaproveitar a imagem?) (push) Successful in 6s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 18s
Release / Cria a release no Gitea (push) Successful in 5s

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Sonnet 5.5 committed 2026-11-01 23:28:39 -03:00
1 parent ae61416468
commit 5a9fe676fc
61 files changed
+2517 -920

No files matched your search

+31 -11
View File
@@ -6,8 +6,9 @@ export async function generateMetadata({ params }) {
const isEs = locale === "es";
const isFr = locale === "fr";
const isDe = locale === "de";
const isZh = locale === "zh-CN";
return paginaMeta({
titulo: isDe
titulo: isZh ? "该选哪款 ESP32" : isDe
? "Welchen ESP32 wählen"
: isFr
? "Quel ESP32 choisir"
@@ -16,7 +17,7 @@ export async function generateMetadata({ params }) {
: isEn
? "Which ESP32 to Choose"
: "Qual ESP32 escolher",
descricao: isDe
descricao: isZh ? "回答几个关于连接(Wi-Fi 6、5GHz、Matter)、功耗、外设和安全的简单问题,或使用参数筛选器,找到最合适的 ESP32。" : isDe
? "Beantworten Sie einfache Fragen zu Konnektivität (Wi-Fi 6, 5 GHz, Matter), Energie, Peripherie und Sicherheit oder nutzen Sie den parametrischen Filter, um den perfekten ESP32 zu finden."
: isFr
? "Répondez à des questions simples sur la connectivité (Wi-Fi 6, 5 GHz, Matter), l'énergie, les périphériques et la sécurité ou utilisez le filtre paramétrique pour trouver l'ESP32 parfait."
@@ -27,7 +28,7 @@ export async function generateMetadata({ params }) {
: "Responda a perguntas simples sobre conectividade (Wi-Fi 6, 5GHz, Matter), energia, periféricos e segurança ou use o filtro paramétrico para encontrar o ESP32 perfeito.",
caminho: "/seletor",
locale,
keywords: isDe
keywords: isZh ? ["该选哪款 ESP32", "该用哪款 ESP32", "微控制器选型", "适合我项目的 ESP32", "ESP32 对比"] : isDe
? ["welchen ESP32 wählen", "welchen ESP32 verwenden", "Mikrocontroller auswählen", "ESP32 für mein Projekt", "ESP32 vergleichen"]
: isFr
? ["quel ESP32 choisir", "quel ESP32 utiliser", "choisir microcontrôleur", "ESP32 pour mon projet", "comparer ESP32"]
@@ -133,6 +134,24 @@ const faqsDe = [
resposta: "Kompakte RISC-V-Mikrocontroller mit ULP-Coprozessor wie der ESP32-C2, ESP32-C3 und ESP32-H2 (dediziert für 802.15.4 ohne Wi-Fi-Funk) bieten extrem niedrige Deep-Sleep-Ströme im Bereich von 5 µA bis 10 µA.",
},
];
const faqsZh = [
{
pergunta: "新手该选哪款 ESP32?",
resposta: "对刚入门物联网的创客和开发者来说,经典 ESP32(NodeMCU/DevKitC)或 ESP32-C3 是首选:库支持丰富,Arduino IDE 示例现成,文档也很完整。",
},
{
pergunta: "哪款 ESP32 支持 Wi-Fi 6、蓝牙 6 以及 Thread/Zigbee/Matter?",
resposta: "ESP32-C6 和 ESP32-C5 是面向现代网络的主力系列。ESP32-C6 提供 2.4 GHz Wi-Fi 6 和 802.15.4 射频(Zigbee 3.0 / Thread / Matter)。ESP32-C5 则首次在 2.4 GHz 和 5 GHz 两个频段同时支持双频 Wi-Fi 6。",
},
{
pergunta: "做 AI(TinyML)和显示屏,哪款 ESP32 性能最强?",
resposta: "ESP32-P4(400 MHz 双核 RISC-V,带 AI 向量扩展、MIPI-CSI/DSI 接口,最高 64 MB PSRAM)和 ESP32-S3(240 MHz 双核 Xtensa,带神经网络向量加速并支持 RGB LCD)为边缘 AI 和丰富的图形界面提供最高速度。",
},
{
pergunta: "电池供电的项目,哪款 ESP32 最省电?",
resposta: "带有 ULP 协处理器的紧凑型 RISC-V 微控制器,如 ESP32-C2、ESP32-C3 和 ESP32-H2(专用 802.15.4,无 Wi-Fi),深度睡眠电流可低至 5 µA 到 10 µA。",
},
];
export default async function Layout({ children, params }) {
const { locale } = await params;
@@ -140,7 +159,8 @@ export default async function Layout({ children, params }) {
const isEs = locale === "es";
const isFr = locale === "fr";
const isDe = locale === "de";
const faqs = isDe ? faqsDe : isFr ? faqsFr : isEs ? faqsEs : isEn ? faqsEn : faqsPt;
const isZh = locale === "zh-CN";
const faqs = isZh ? faqsZh : isDe ? faqsDe : isFr ? faqsFr : isEs ? faqsEs : isEn ? faqsEn : faqsPt;
return (
<>
@@ -149,7 +169,7 @@ export default async function Layout({ children, params }) {
dangerouslySetInnerHTML={{
__html: JSON.stringify(
jsonLd.aplicacaoWeb({
nome: isDe
nome: isZh ? "智能 ESP32 选型器" : isDe
? "Intelligente ESP32-Auswahl"
: isFr
? "Sélecteur intelligent d'ESP32"
@@ -158,7 +178,7 @@ export default async function Layout({ children, params }) {
: isEn
? "Intelligent ESP32 Selector"
: "Seletor Inteligente de ESP32",
descricao: isDe
descricao: isZh ? "交互式工具,分析连接、功耗、外设和安全需求,推荐最合适的 ESP32 系列。" : isDe
? "Interaktives Werkzeug zur Analyse von Konnektivität, Stromverbrauch, Peripherie und Sicherheit zur Ermittlung der idealen ESP32-Serie."
: isFr
? "Outil interactif analysant la connectivité, la consommation, les périphériques et la sécurité pour recommander la série idéale d'ESP32."
@@ -167,7 +187,7 @@ export default async function Layout({ children, params }) {
: isEn
? "Interactive tool analyzing connectivity, power consumption, peripherals, and security to recommend the ideal ESP32 series."
: "Ferramenta interativa que analisa conectividade, consumo, periféricos e segurança para indicar a série ideal de ESP32.",
caminho: isDe
caminho: isZh ? "/zh-CN/selector" : isDe
? "/de/auswahl"
: isFr
? "/fr/selecteur"
@@ -187,11 +207,11 @@ export default async function Layout({ children, params }) {
__html: JSON.stringify(
jsonLd.trilha([
{
nome: isDe ? "Startseite" : isFr ? "Accueil" : isEs ? "Inicio" : isEn ? "Home" : "Início",
caminho: isDe ? "/de" : isFr ? "/fr" : isEs ? "/es" : isEn ? "/en" : "/",
nome: isZh ? "首页" : isDe ? "Startseite" : isFr ? "Accueil" : isEs ? "Inicio" : isEn ? "Home" : "Início",
caminho: isZh ? "/zh-CN" : isDe ? "/de" : isFr ? "/fr" : isEs ? "/es" : isEn ? "/en" : "/",
},
{
nome: isDe
nome: isZh ? "ESP32 选型器" : isDe
? "ESP32-Auswahl"
: isFr
? "Sélecteur d'ESP32"
@@ -200,7 +220,7 @@ export default async function Layout({ children, params }) {
: isEn
? "ESP32 Selector"
: "Seletor de ESP32",
caminho: isDe
caminho: isZh ? "/zh-CN/selector" : isDe
? "/de/auswahl"
: isFr
? "/fr/selecteur"