借助附加组件将 qTranslate 翻译迁移到 WPML,同时保留原有设置并清理残留的 qTranslate 元标记。
qTranslate 插件的工作方式与 WPML 完全不同。qTranslate 不是将不同的语言放在不同的文章中,而是将所有语言放在同一篇文章中。
具体做法是修改文章内容,例如将 Hello World 变成 [:en]Hello World[:de]Hallo Welt[:]。
卸载 qTranslate 后,所有这些元标记仍会残留在数据库中。
我们的迁移插件可以执行以下操作:
- 将不同语言的内容拆分到不同的文章中,让网站可以配合 WPML 运行。
- 从数据库中清理 qTranslate 遗留的所有元标记。
- 删除所有翻译,只保留您指定的语言,从而把基于 qTranslate 的网站转换为单语言网站。
限制:
- 我们的迁移插件仅适用于文章和页面(WordPress 内置的文章类型)。不适用于自定义文章类型。
- 迁移后,您需要手动修复网站上的所有菜单。
您可以从 WordPress 插件库下载我们的 qTranslate X Cleanup and WPML Import 插件。
单语言转换(无 WPML,剥离所有翻译)
如果您在没有 WPML 的情况下使用 qTranslate Importer 插件,最终得到的将是一个单语言网站。转换过程会询问您要保留哪种语言。所有其他语言都将从网站中删除。
如果您一直在尝试使用 qTranslate,而现在想要从数据库中清理所有这些语言元标记,这将非常有用。
处理完成后,所有文章将只保留您选择的那一种语言。
工作原理:
- 禁用 qTranslate 并启用 qTranslate X Cleanup and WPML Import 插件。
- 备份您的数据库。说真的,即使您只是在尝试,也务必备份数据库。
- 前往设置 → qTranslate Importer,选择您要保留的语言。
- 单击 Clean 按钮。这将遍历网站的所有内容,并从内容中删除语言元数据。
插件界面如下所示:

选择您要保留的语言并勾选这两个复选框。然后,您可以开始清理。
多语言转换(从 qTranslate 转换为 WPML)
如果您有 WPML,qTranslate 导入器会将网站从同一篇文章中包含所有语言的模式,转换为不同语言对应不同文章的模式。转换完成后,您将能够在网站上使用 WPML。
执行此转换的最佳方法是禁用 qTranslate,启用 WPML 和 qTranslate 导入器,然后让它自动完成所有操作。
导入过程将:
- 检查 qTranslate 使用了哪些语言,并在 WPML 中启用相同的语言。
- 检查您在 qTranslate 中使用了哪些语言固定链接,并在 WPML 中选择相同的设置。
- 处理所有文章、分类法和自定义字段,并按语言分别创建独立的条目。
- 生成 URL 重写规则,以便将传入链接重定向到新的 URL。
为确保操作安全,请按以下步骤进行:
- 禁用 qTranslate 并启用 WPML 以及 qTranslate X Cleanup and WPML Import 插件。
- 备份您的数据库。这至关重要。您必须在运行导入之前执行此操作。
- 前往设置 → qTranslate Importer,检查计划的数据转换。
- 单击 Start 按钮。这将遍历网站的所有内容并将其转换为使用 WPML。
导入到 WPML 的过程
导入界面如下所示:

在运行过程中,您将看到进度。在显示“complete”之前,请勿中断导入过程。页面应每隔几秒钟刷新一次,因为每次处理 10 篇文章。
添加 URL 重定向
导入完成后,您将看到以下内容:

如果您可以编辑 .htaccess 文件,请从 .htaccess 重写规则框中复制所有内容,并将其添加到您网站的 .htaccess 文件中。
有一个 validate 按钮,可读取该文件并检查规则是否添加到了正确的位置。
或者,您可以将重定向信息添加到主题中。单击该按钮下载包含重定向规则的 PHP 文件,并将其保存在主题文件夹中。
然后,将以下行添加到主题的 functions.php 文件中:
include(get_stylesheet_directory() . '/qt-importer-redirects.php');
这是一条 PHP 语句,因此应放在 <?php … ?> 块内。
您可能需要手动编辑的其他文本
许多使用 qTranslate 的网站在各个地方使用了语言元标记,这些标记硬编码在 PHP 或选项页面中。不再使用 qTranslate 后,就需要通过其他方式来翻译这些字符串。
首先,找到它们。逐一查看您所用主题和插件的各个管理后台页面,看看是否存在类似下面这样的标记:
<!–-:en–->English text<!–-:–-><!–-:fr–->French text<!–-:–->
将这些替换为仅包含默认语言的文本。
然后,您可以使用 WPML 的字符串翻译模块将它们翻译成任何语言。
获取帮助
如果您在从 qTranslate 迁移到 WPML 时需要帮助,请访问 WPML 支持。