Gambaran umum
Atur title dan description per halaman dengan generateMetadata dan i18n.
Meta tags menggambarkan konten halaman. Atur untuk setiap rute marketing agar mesin pencari memahami halaman dan SEO tetap kuat.
Title dasar
Layout root marketing (apps/marketing/src/app/layout.tsx) hanya meneruskan children. Title default dan template ada di layout locale:
export async function generateMetadata({
params,
}: LocaleLayoutProps): Promise<Metadata> {
const { locale } = await params;
setRequestLocale(locale);
const t = await getTranslations("meta");
return {
title: {
template: t("titleTemplate"),
default: t("defaultTitle"),
},
};
}String brand berasal dari katalog marketing — bukan config.appName bersama:
{
"meta": {
"titleTemplate": "%s | TurboJet",
"defaultTitle": "TurboJet"
}
}- Halaman tanpa title memakai
defaultTitle(misalnyaTurboJet). - Halaman yang menyetel title memakai template. Jika title halaman
Privacy Policy, title dokumen menjadiPrivacy Policy | TurboJet.
Jaga agar en.json dan id.json tetap selaras saat mengubah key ini. Lihat i18n.
Metadata per halaman
Export generateMetadata dari page dan kembalikan title / description. Lebih baik pakai terjemahan agar setiap locale mendapat salinan yang tepat:
export async function generateMetadata(): Promise<Metadata> {
const t = await getTranslations("meta");
return {
title: t("homeTitle"),
description: t("homeDescription"),
};
}Halaman marketing lain mengikuti bentuk yang sama:
| Halaman | Namespace / key terjemahan |
|---|---|
| Beranda | meta.homeTitle / homeDescription |
| Privacy Policy | meta.privacyTitle / privacyDescription |
| Terms of Service | meta.termsTitle / termsDescription |
| License | meta.licenseTitle / licenseDescription |
| Checkout sukses | checkoutSuccess.metaTitle / metaDescription |
Tambahkan string baru di packages/i18n/src/marketing/en.json dan id.json, lalu hubungkan di generateMetadata halaman tersebut.
Pelajari lebih lanjut di dokumentasi Next.js generateMetadata.