NuxareLang
零内容副本的双引擎多语言插件 —— 结构化字段翻译 + 全站字符串字典,单内容 ID、无语言标记、无 post_meta 膨胀。
插件元数据
NuxareLang 以「单一原始内容 + 翻译表」替代内容复制,支持文章、产品、媒体、分类多语言管理,hreflang SEO、浏览器语言识别、CSV 批量、AI 翻译。
Nuxare_Lang_Bootstrapnuxare_lang_translations、nuxare_lang_stringsassets/lib/simplehtmldom/simple_html_dom.php(DOM 解析,本地)三位一体 · 零膨胀
零内容副本
不为每门语言复制文章/页面,单一原始内容 ID,翻译存于独立表,避免内容爆炸与同步地狱。
零语言标记
不在正文里插入 [lang] 等短码标记,原文保持纯净,翻译通过 WP 钩子过滤输出。
零 post_meta 膨胀
翻译不走 post_meta,避免 meta 表无限膨胀;统一收口到翻译表。
双引擎翻译流水线
结构化字段引擎 + 全站字符串字典引擎,分工互补。
引擎 A · 结构化字段翻译
Nuxare_Lang_Front_Hooks 通过 WP 钩子过滤 the_title / the_content / the_excerpt / get_post_meta 及 WooCommerce 产品字段,按语言返回对应翻译。面向「有结构」的内容字段。
引擎 B · 全站字符串字典
Nuxare_Lang_String_Translation 用输出缓冲(OB)+ simple_html_dom 解析整页,对主题/插件硬编码字符串扫描入字典表 nuxare_lang_strings,批量保存后按语言替换。面向「无结构」的界面字符串。
URL → Nuxare_Lang_Router 识别语言前缀 → 设置当前语言 → 结构化钩子过滤内容字段 → OB 缓冲 → 字符串字典替换硬编码字符串 → hreflang/canonical 输出(Nuxare_Lang_SEO / Nuxare_Lang_Sitemap)。
缓存层
Nuxare_Lang_Cache 基于 transient / object cache 缓存翻译查询,降低重复请求开销。
兼容桥接
Nuxare_Lang_Integrations 处理 WooCommerce / Elementor / ACF / WP Rocket / W3TC;legacy-compat.php 兼容旧标识符。
模块清单(20 模块)
核心与数据
| 类 / 文件 | 职责 |
|---|---|
Nuxare_Lang_Bootstrap (bootstrap.php) | 模块加载顺序、激活/停用、默认设置、升级、后台菜单 |
Nuxare_Lang_Database (database.php) | 两张表 CRUD:install() 建翻译表 + 字符串表 |
Nuxare_Lang_Cache (cache.php) | 翻译缓存层(transient / object cache) |
Nuxare_Lang_Activity_Log | 活动日志 |
翻译双引擎
| 类 | 职责 |
|---|---|
Nuxare_Lang_Front_Hooks | 结构化字段钩子:the_title/the_content/the_excerpt/get_post_meta、WooCommerce 产品字段 |
Nuxare_Lang_String_Translation | OB + simple_html_dom 解析,全局字符串字典,页面扫描与批量保存 |
Nuxare_Lang_Front_Editor | 管理栏「翻译此页」按钮、内联翻译编辑器(带预览) |
Nuxare_Lang_AI_Translator | 机器/AI 翻译:DeepL、百度、腾讯、火山、OpenAI、DeepSeek 等 |
Nuxare_Lang_CSV | CSV 导入/导出解析与生成 |
语言 / 路由 / SEO
| 类 | 职责 |
|---|---|
Nuxare_Lang_Language | 主/次语言码、检测、语言码列表 |
Nuxare_Lang_Router | URL 路由:语言前缀、hreflang 输出、canonical |
Nuxare_Lang_Switcher | 语言切换器、浏览器语言检测 |
Nuxare_Lang_SEO | 多语言标题/描述、OG/Twitter |
Nuxare_Lang_Sitemap | 多语言 sitemap |
Nuxare_Lang_Media_Sync | 媒体多语言标题/alt 同步 |
后台 / 集成 / 权限
| 类 | 职责 |
|---|---|
Nuxare_Lang_Settings | 后台设置面板 + 维护工具 |
Nuxare_Lang_Admin_Meta_Box | 后台多语言标签编辑面板 |
Nuxare_Lang_Integrations | WooCommerce / Elementor / ACF / WP Rocket / W3TC 兼容 |
Nuxare_Lang_Capabilities | 基于角色的权限(4 项 capability) |
| legacy-compat.php | 旧 meta/标识符兼容桥 |
文件组织
全方位翻译能力
结构化字段翻译
文章/产品/页面的标题、正文、摘要、自定义字段、WooCommerce 产品字段按语言切换。
整页字符串翻译
主题/插件硬编码界面字符串扫描入字典,批量翻译,无需改源码。
支持翻译对象
文章、页面、产品、媒体、分类法、自定义字段全覆盖。
语言切换器
国旗 + 语言码切换器,支持浏览器语言自动检测与跳转。
自动翻译
多 AI 引擎一键批量翻译,支持 DeepL/OpenAI/百度/腾讯/火山/DeepSeek。
生态兼容
WooCommerce、Elementor、ACF、WP Rocket、W3TC 兼容。
后台管理面板
统一设置 + 维护工具 + 后台多语言标签编辑器 + 内联翻译编辑器。
hreflang SEO
多语言 hreflang、canonical、OG/Twitter、多语言 sitemap 自动输出。
CSV 批量
翻译数据 CSV 导入导出,便于离线协作与多站点迁移。
两张自定义表
| 表 | 用途 |
|---|---|
nuxare_lang_translations | 结构化字段翻译:对象类型 + 对象 ID + 字段 + 语言 → 译文 |
nuxare_lang_strings | 全站字符串字典:字符串原文 + 来源 + 语言 → 译文,OB 扫描批量写入 |
原文始终单一存储,翻译以「对象 + 字段 + 语言」或「字符串 + 语言」为键查表;查询结果经 Nuxare_Lang_Cache 缓存。
关键钩子
| 钩子 | 类型 | 说明 |
|---|---|---|
the_title / the_content / the_excerpt | filter | 结构化引擎按语言替换字段输出 |
get_post_meta | filter | 自定义字段翻译替换 |
template_redirect / init | action | 路由识别语言前缀、浏览器语言检测跳转 |
wp_head | action | hreflang / canonical / OG 多语言标签输出 |
| WooCommerce 产品字段钩子 | filter | 产品名称/描述/属性多语言 |
Nuxare_Lang_Capabilities 定义 4 项 capability 控制翻译/导入导出/设置权限。
命名规范
| 对象 | 规范 | 示例 |
|---|---|---|
| PHP 类 | 大驼峰 + 下划线 | Nuxare_Lang_String_Translation |
| 文件名 | 小写连字符 | class-nuxare-lang-string-translation.php |
| 选项 | 小写下划线 | nuxare_lang_* |
| 数据表 | 小写下划线 | nuxare_lang_translations |
| JS / CSS | 小写连字符 | nuxare-lang-switcher.js |
| 文本域 | 小写下划线 | nuxare-lang(.pot 在 languages/) |
新增翻译字段 / AI 引擎
Front_Hooks 为目标字段挂 add_filter,按 Nuxare_Lang_Language::current() 返回译文,缺省回原文。AI_Translator 增引擎分支,实现「请求 → 取译文 → 落表」并接入设置面板与 ai-translator.js。String_Translation 的 scan/save 接口。