# General Translation React SDKs (gt-react, gt-next, gt-react-native): 管理区域设置别名的 SEO URL: https://generaltranslation.com/zh/docs/react/nextjs/locale-alias-seo.mdx --- title: 管理区域设置别名的 SEO description: 如何在 Next.js URL 中使用自定义区域设置别名,同时为搜索引擎发布规范语言元数据。 related: links: - /docs/react/nextjs/app-router-middleware - /docs/react/nextjs/app-router-static-site-generation - /docs/react/nextjs/registering-request-locales - /docs/react/nextjs/cache-components --- 区域设置别名允许路由使用 `/cn` 之类的自定义路径片段,而翻译则使用规范的 BCP 47 代码 `zh`。`gt-next` 会为翻译和路由解析映射关系,但你的应用仍需负责 ``、规范 URL、语言替代项和站点地图条目。 ## 配置别名 [#configure] 使用 [`customMapping`](/docs/react/reference/config#custom-mapping) 将 URL 中的区域设置映射为其规范代码: ```json title="gt.config.json" { "defaultLocale": "en-US", "locales": ["en-US", "cn", "ja"], "customMapping": { "cn": { "code": "zh", "name": "Mandarin" } } } ``` middleware 会将 `/cn` 识别为本地化路由。当需要使用规范区域设置时,General Translation 会将 `cn` 解析为 `zh`。 请在 SEO 代码中区分使用这两个值: * 在路由 URL 中使用**别名**,例如 `/cn/about`。 * 在 `lang` 和 `hreflang` 中使用**规范 BCP 47 代码**,例如 `zh`。 ## 设置文档语言 [#document-language] 设置 `` 属性前,先解析路由的区域设置: ```tsx title="app/[locale]/layout.tsx" import { resolveCanonicalLocale } from 'gt-next/server'; export default async function LocaleLayout({ children, params, }: { children: React.ReactNode; params: Promise<{ locale: string }>; }) { const { locale } = await params; const canonicalLocale = resolveCanonicalLocale(locale); return (
{children} ); } ``` 如果不进行此转换,`/cn` 路由会渲染为 `lang="cn"`,而这不是有效的中文语言标签。 ## 发布页面替代项 [#page-alternates] Next.js 会根据 `metadata.alternates.languages` 生成 `hreflang` 链接。使用规范代码作为对象键,以基于别名的路由作为值: 此首页示例应添加到本地化页面中。请在每个嵌套页面的元数据中构建特定路由的 URL。 ```tsx title="app/[locale]/page.tsx" import type { Metadata } from 'next'; import { resolveCanonicalLocale } from 'gt-next/server'; const locales = ['en-US', 'cn', 'ja']; const baseUrl = 'https://example.com'; export async function generateMetadata({ params, }: { params: Promise<{ locale: string }>; }): Promise