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>
129 lines
4.1 KiB
React
129 lines
4.1 KiB
React
import { paginaMeta, jsonLd } from "@/lib/seo";
|
|
|
|
export async function generateMetadata({ params }) {
|
|
const { locale } = await params;
|
|
const isEn = locale === "en";
|
|
const isEs = locale === "es";
|
|
const isFr = locale === "fr";
|
|
const isDe = locale === "de";
|
|
const isZh = locale === "zh-CN";
|
|
return {
|
|
...paginaMeta({
|
|
titulo: isEs
|
|
? "Frameworks y SDKs para ESP32: Guía completa y comparativa"
|
|
: isEn
|
|
? "ESP32 Frameworks & SDKs: Complete Guide and Comparison"
|
|
: isFr
|
|
? "Frameworks et SDKs pour ESP32 : guide complet et comparatif"
|
|
: isZh ? "ESP32 框架与 SDK:完整指南与对比" : isDe
|
|
? "ESP32-Frameworks & SDKs: Vollständiger Leitfaden und Vergleich"
|
|
: "Frameworks & SDKs para ESP32: Guia Completo e Comparativo",
|
|
descricao: isEs
|
|
? "Guía completa de desarrollo: ESP-IDF, ESP-RainMaker, ESP-Matter, Rust, ESP-ADF, ESP-SR, ESP-WHO, Arduino y MicroPython con ejemplos de código."
|
|
: isEn
|
|
? "Complete development guide: ESP-IDF, ESP-RainMaker, ESP-Matter, Rust, ESP-ADF, ESP-SR, ESP-WHO, Arduino, and MicroPython with code examples."
|
|
: isFr
|
|
? "Guide complet de développement : ESP-IDF, ESP-RainMaker, ESP-Matter, Rust, ESP-ADF, ESP-SR, ESP-WHO, Arduino et MicroPython avec exemples de code."
|
|
: isZh ? "完整开发指南:ESP-IDF、ESP-RainMaker、ESP-Matter、Rust、ESP-ADF、ESP-SR、ESP-WHO、Arduino 和 MicroPython,附代码示例。" : isDe
|
|
? "Vollständiger Entwicklungsleitfaden: ESP-IDF, ESP-RainMaker, ESP-Matter, Rust, ESP-ADF, ESP-SR, ESP-WHO, Arduino und MicroPython mit Codebeispielen."
|
|
: "Guia completo de desenvolvimento: ESP-IDF, ESP-RainMaker, ESP-Matter, Rust, ESP-ADF, ESP-SR, ESP-WHO, Arduino e MicroPython com exemplos de código.",
|
|
caminho: "/frameworks",
|
|
locale,
|
|
keywords: isEs
|
|
? [
|
|
"ESP-IDF",
|
|
"ESP-RainMaker",
|
|
"ESP-Matter",
|
|
"Rust ESP32",
|
|
"ESP-SR",
|
|
"ESP-ADF",
|
|
"ESP-IoT-Solution",
|
|
"Arduino ESP32",
|
|
"MicroPython ESP32",
|
|
"frameworks ESP32",
|
|
"programar ESP32",
|
|
]
|
|
: isEn
|
|
? [
|
|
"ESP-IDF",
|
|
"ESP-RainMaker",
|
|
"ESP-Matter",
|
|
"Rust ESP32",
|
|
"ESP-SR",
|
|
"ESP-ADF",
|
|
"ESP-IoT-Solution",
|
|
"Arduino ESP32",
|
|
"MicroPython ESP32",
|
|
"frameworks ESP32",
|
|
"program ESP32",
|
|
]
|
|
: isFr
|
|
? [
|
|
"ESP-IDF",
|
|
"ESP-RainMaker",
|
|
"ESP-Matter",
|
|
"Rust ESP32",
|
|
"ESP-SR",
|
|
"ESP-ADF",
|
|
"ESP-IoT-Solution",
|
|
"Arduino ESP32",
|
|
"MicroPython ESP32",
|
|
"frameworks ESP32",
|
|
"programmer ESP32",
|
|
]
|
|
: isZh ? ["ESP-IDF", "ESP-RainMaker", "ESP-Matter", "Rust ESP32", "ESP-SR", "ESP-ADF", "ESP-IoT-Solution", "Arduino ESP32", "MicroPython ESP32", "ESP32 框架", "ESP32 编程"] : isDe
|
|
? [
|
|
"ESP-IDF",
|
|
"ESP-RainMaker",
|
|
"ESP-Matter",
|
|
"Rust ESP32",
|
|
"ESP-SR",
|
|
"ESP-ADF",
|
|
"ESP-IoT-Solution",
|
|
"Arduino ESP32",
|
|
"MicroPython ESP32",
|
|
"ESP32 Frameworks",
|
|
"ESP32 programmieren",
|
|
]
|
|
: [
|
|
"ESP-IDF",
|
|
"ESP-RainMaker",
|
|
"ESP-Matter",
|
|
"Rust ESP32",
|
|
"ESP-SR",
|
|
"ESP-ADF",
|
|
"ESP-IoT-Solution",
|
|
"Arduino ESP32",
|
|
"MicroPython ESP32",
|
|
"frameworks ESP32",
|
|
"programar ESP32",
|
|
],
|
|
}),
|
|
};
|
|
}
|
|
|
|
export default async function FrameworksLayout({ children, params }) {
|
|
const { locale } = await params;
|
|
const isEn = locale === "en";
|
|
const isEs = locale === "es";
|
|
const isFr = locale === "fr";
|
|
const isDe = locale === "de";
|
|
const isZh = locale === "zh-CN";
|
|
return (
|
|
<>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(
|
|
jsonLd.trilha([
|
|
{ nome: isEs ? "Inicio" : isEn ? "Home" : isFr ? "Accueil" : isZh ? "首页" : isDe ? "Startseite" : "Início", caminho: isEs ? "/es" : isEn ? "/en" : isFr ? "/fr" : isZh ? "/zh-CN" : isDe ? "/de" : "/" },
|
|
{ nome: "Frameworks", caminho: isEs ? "/es/frameworks" : isEn ? "/en/frameworks" : isFr ? "/fr/frameworks" : isZh ? "/zh-CN/frameworks" : isDe ? "/de/frameworks" : "/frameworks" },
|
|
])
|
|
),
|
|
}}
|
|
/>
|
|
{children}
|
|
</>
|
|
);
|
|
}
|