
Next.js WordPress Starter国际化支持多语言网站构建完整指南【免费下载链接】nextjs-wordpress-starterA headless starter for WordPress powered by Next.js.项目地址: https://gitcode.com/gh_mirrors/ne/nextjs-wordpress-starterNext.js WordPress Starter是一个功能强大的无头CMS解决方案它将WordPress的内容管理能力与Next.js的现代前端框架完美结合。本教程将带你了解如何为这个强大的 starter 项目添加全面的国际化支持轻松构建面向全球用户的多语言网站。国际化架构概览前后端协同方案Next.js WordPress Starter的国际化实现需要前端和后端的协同工作。WordPress作为内容管理后端负责多语言内容的创建和管理Next.js作为前端框架则处理语言切换、路由国际化和内容展示。图Next.js WordPress Starter前后端架构展示国际化支持需要两边协同配置核心实现组件后端WordPress多语言插件 WP GraphQL国际化扩展前端Next.js国际化路由 翻译管理库数据传输GraphQL查询多语言内容后端配置WordPress多语言内容管理推荐插件组合要在WordPress中实现多语言内容管理推荐使用以下插件组合Polylang轻量级多语言内容管理插件支持自定义文章类型和分类法的翻译WP GraphQL Polylang为GraphQL API添加多语言支持Advanced Custom Fields (ACF)管理多语言自定义字段这些插件可以通过WordPress后台的插件安装界面搜索并安装安装完成后需要激活并进行基础配置。内容翻译工作流在Polylang设置中配置网站支持的语言如中文、英文、日文等为每种语言创建对应的菜单确保导航也支持多语言切换图在WordPress后台设置多语言菜单确保不同语言版本有独立导航结构创建或编辑内容时使用Polylang提供的翻译功能为每种语言创建对应内容前端实现Next.js国际化配置安装国际化依赖首先需要安装Next.js国际化相关的依赖包。在项目根目录执行以下命令npm install next-translate react-i18next i18next配置国际化文件在项目根目录创建i18n.json配置文件{ locales: [zh-CN, en, ja], defaultLocale: zh-CN, pages: { *: [common], /: [home], /about: [about] } }创建翻译文件目录结构/public/locales/ /zh-CN/ common.json home.json /en/ common.json home.json /ja/ common.json home.json配置环境变量在Vercel或本地开发环境中添加国际化相关的环境变量图在Vercel后台配置国际化相关环境变量添加以下环境变量NEXT_PUBLIC_SUPPORTED_LANGUAGESzh-CN,en,ja NEXT_PUBLIC_DEFAULT_LANGUAGEzh-CN实现国际化路由修改next.config.js文件添加国际化配置const nextConfig { i18n: { locales: [zh-CN, en, ja], defaultLocale: zh-CN, }, // 其他配置... }数据获取多语言内容查询GraphQL查询多语言内容在lib/wordpress/connector.js中配置GraphQL客户端添加语言参数支持const query gql query GetPageBySlug($slug: ID!, $language: String!) { page(id: $slug, idType: URI, language: $language) { title content slug language { code } } } ;页面组件中使用多语言数据在页面组件中通过语言参数获取对应语言的内容export async function getStaticProps({ locale }) { const { data } await client.query({ query: GET_PAGE, variables: { slug: home, language: locale }, }); return { props: { page: data.page, locale, }, }; }语言切换组件实现创建一个语言切换组件放在导航栏中// components/molecules/Navigation/LanguageSwitcher.js import { useRouter } from next/router; const LanguageSwitcher () { const router useRouter(); const { locales, locale: currentLocale } router; return ( div classNamelanguage-switcher {locales.map((locale) ( button key{locale} onClick{() router.push(router.asPath, router.asPath, { locale })} disabled{locale currentLocale} {locale} /button ))} /div ); }; export default LanguageSwitcher;将此组件添加到导航组件中位置在components/molecules/Navigation/Navigation.js。测试与部署本地测试启动开发服务器进行测试npm run dev访问不同语言版本的网站验证内容是否正确切换中文http://localhost:3000英文http://localhost:3000/en日文http://localhost:3000/ja部署注意事项确保所有翻译文件都已提交到代码仓库在部署平台如Vercel中正确配置环境变量测试生产环境中的语言切换功能和内容加载高级优化提升国际化用户体验自动检测用户语言在_app.js中添加语言自动检测逻辑import { useEffect } from react; import { useRouter } from next/router; function MyApp({ Component, pageProps }) { const router useRouter(); useEffect(() { // 仅在首次加载且未指定语言时运行 if (!router.query.lang) { const userLang navigator.language || navigator.userLanguage; const supportedLangs process.env.NEXT_PUBLIC_SUPPORTED_LANGUAGES.split(,); // 检查用户语言是否受支持 const defaultLang process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE; const lang supportedLangs.includes(userLang) ? userLang : defaultLang; if (lang ! defaultLang) { router.push(/${lang}); } } }, []); return Component {...pageProps} /; }SEO优化为多语言页面添加hreflang标签在components/common/Meta.js中实现import Head from next/head; const Meta ({ page, locale }) { const supportedLangs process.env.NEXT_PUBLIC_SUPPORTED_LANGUAGES.split(,); return ( Head {/* 其他meta标签 */} {supportedLangs.map(lang ( link key{lang} relalternate hreflang{lang} href{https://yourdomain.com/${lang process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE ? : lang}/${page.slug}} / ))} /Head ); };总结通过本教程你已经了解了如何为Next.js WordPress Starter添加全面的国际化支持。从后端WordPress的多语言内容管理到前端Next.js的国际化路由和翻译实现再到用户体验的优化这些步骤将帮助你构建一个真正面向全球用户的多语言网站。国际化是现代网站开发的重要组成部分特别是对于希望扩大全球影响力的企业和内容创作者。Next.js WordPress Starter的灵活架构使其能够轻松支持多语言功能为你的项目提供强大的国际化基础。【免费下载链接】nextjs-wordpress-starterA headless starter for WordPress powered by Next.js.项目地址: https://gitcode.com/gh_mirrors/ne/nextjs-wordpress-starter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考