镖师 发表于 2024-12-20 16:12:45

WP独立站小语种 多语言插件transposh使用教程

wordpress是被用作制作海外独立站的重要cms,基于它的生态,各种各样的插件都有,还有成熟的可视化建站生态,本文主要将在自定义主题开发的过程中,不使用elementor、avada等情况下如何使用牛比的翻译插件transposh,在使用wordpress建站基本上都会考虑多语言的,语言多了面向的客户也就广了,一般情况下使用GTranslate这个免费版的足够用,它的工作原理就是自己本地浏览器上点了一下全网页的翻译,对服务器没有任何多余的请求;但是有个对于SEO来说比较重要的功能,将各类语言使用二级目录(二级域名)的形式访问,这在本质上是增多了网站的url数量,搜索引擎是可以索引这些url地址的,而这个功能在GTranslate上是需要充值的,便宜的29.9美元每月。
还没挣钱呢,肯定要控制成本的,所以急需要一个可以免费的替代方案,这不就有了transposh,这个完全免费,支持几乎所有的语言,它的原理是将翻译的文件保存在服务器的数据库里,当访问其他语言的页面,直接调取相应的翻译字段替换,所以对于使用者而言使用的代价就是数据库会被撑大,比如一个网站有100个页面,而选择了10种语言,那么数据库里就会有其他9中语言的翻译资料;不过好处是巨大的,可以保存翻译的页面为二级目录,如https://www.ydqic.com/en/,也就是你的网站内容被扩大了10倍,也就多了被索引,多了被客户发现的可能。transposh目前在wordpress的官方插件里是搜索不到的,需要到其官网 :https://transposh.org/,下载,然后放到插件目录,后台激活即可。如果不是熟悉的情况下,一下是不知道如何使用的,GTranslate在设置界面会提示用短代码在主题模板的里使用,而transposh这个默认是在外观-小工具里,很多情况,作为主题开发为了简洁可能会把小工具直接禁用掉,然后就不知道如何使用(我就是如此),国内网上这方便的资料还是少的,找起来比较费劲,这里给汇总踩坑过程:下载安装激活就不说了,直接从使用说起,在你的主题模板文件里,一般是你的header.php文件里,使用短代码的形式添加,transposh官方有集中类型的样式,可以通过参数不同自由选择,1、默认的2.样式二3.样式三,最喜欢这个,但是测试的时候没有呈现前面的国旗,不知是与我本身主题的样式文件冲突还是咋4.样式四国旗的多少和后台选定的翻译语言有关5.样式五 国旗的多少和后台选定的翻译语言有关    如果默认的样式还是不满意,可以使用一个小插件辅助一下,在wordpress官方的插件商店可找到,搜索transposh,找到下面的图标,安装激活即可
值得提一下的是,如果启用了该辅助插件那么短码就需要改变了,在设置里的右侧可以看到具体的,看个人喜好选择<?php   echo do_shortcode(''); ?>还需要结合自己的主题样式,修改完善,最后我的主题效果:到此,翻译插件就可以使用,transposh的触发模式是自动或者前台有进行了翻译操作就会保存,所以不要去点 设置里的生成全部,因为有可能你的服务器会卡死,也会有翻译不全的现象注意
如果你的插件未正常翻译,查看源码,看看transposh.js有没有正常加载,源码里有没有如下片段。如果没有的话,证明是没有正确被安装的,检查模版文件里wp_head() 和 wp_footer()是否齐全,插件通过这两个钩子加载文件的。还有就是注意有没有禁用掉wordpress自带的jquery(我的情况就是如此,一直找不到原因,最后发现是被禁掉了),我的主题文件的functions.php里有如下的代码,本意是禁用掉自带的jquery库和woo的样式精简代码,因为很多插件的js是基于自带的jquery库的,当禁用的时候,很多插件的文件也就无法正常加载了,当我取消禁用jquery的时候,翻译插件随机正常工作了,//禁止加载默认自带的jquery库 文件function my_enqueue_scripts() {      wp_deregister_script('jquery');   // 基于wordpress一些插件会加载不了 js 文件    wp_deregister_style('woocommerce');   }    add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts', 1 ); 搜索页面不兼容的情况
默认启用状态下,在搜索页面会有调取部分资源不成功的情况,比如在头部顶部,先显示不了调取的产品信息问题,如下面的网站情况,顶部导航处直接调取流量产品相关,正常在其他页面都可以显示,就是在搜索页面的非默认语言里,会调取不到。

这个需要在插件设置的界面里,关闭下面的项目
Enable search in translated languages 通过Ahrefs的评分检测
使用默认的配置,在ahrefs上的站点检测下会有一些评分的扣分项,就像下面这样,如果像了解更多语言本地化的情况,可以看看谷歌官方的解释和Ahresf的说明。

下面说说修改方式,这个评分扣分来源就是插件生成的HTML标签不太符合规范,可以找到路径 /wp-content/plugins/transposh-translation-filter-for-wordpress/transposh.php, 文件位置大概918行,源码形如:
    function add_rel_alternate() {      if (is_404()) {            return;      }      $widget_args = $this->widget->create_widget_args($this->get_clean_url());      tp_logger($widget_args, 4);      foreach ($widget_args as $lang) {            if (!$lang['active']) {                echo '<link rel="alternate" hreflang="' . $lang['isocode'] . '" href="';                  if ($this->options->full_rel_alternate) {                        $current_url = ( is_ssl() ? 'https://' : 'http://' ) . transposh_utils::get_clean_server_var('HTTP_HOST') . transposh_utils::get_clean_server_var('REQUEST_URI');                        $url = transposh_utils::rewrite_url_lang_param($current_url, $this->home_url, $this->enable_permalinks_rewrite, $lang['isocode'], $this->edit_mode);                        if ($this->options->is_default_language($lang['isocode'])) {                            $url = transposh_utils::cleanup_url($url, $this->home_url);                        }                        echo $url;                  } else {                        echo $lang['url'];                  }                echo '"/>';            }      }    }修改为两处,去掉判断当前激活的语言(这样就会一股脑的全部调取出来语种的标签),将默认的语种设置为x-default,具体可看修改为:

    function add_rel_alternate() {      if (is_404()) {            return;      }      $widget_args = $this->widget->create_widget_args($this->get_clean_url());      tp_logger($widget_args, 4);      foreach ($widget_args as $lang) {            // if (!$lang['active']) {                // defaul lang                  $isocode = $this->options->is_default_language($lang['isocode']) ? 'x-default' : $lang['isocode'];                  echo '<link rel="alternate" hreflang="' . $isocode . '" href="';                                    if ($this->options->full_rel_alternate) {                                                $current_url = ( is_ssl() ? 'https://' : 'http://' ) . transposh_utils::get_clean_server_var('HTTP_HOST') . transposh_utils::get_clean_server_var('REQUEST_URI');                        $url = transposh_utils::rewrite_url_lang_param($current_url, $this->home_url, $this->enable_permalinks_rewrite, $lang['isocode'], $this->edit_mode);                        if ($this->options->is_default_language($lang['isocode'])) {                            $url = transposh_utils::cleanup_url($url, $this->home_url);                        }                                                echo $url;                  } else {                        echo $lang['url'];                  }                                    echo '"/>';            // }      }    }

IT618发布 发表于 2024-12-20 16:13:39

翻译的水平怎么样?要想seo效果好,还是老老实实用polylang先ai翻译,再专业翻译人员校队

Discuz智能体 发表于 2025-3-12 02:38:12

针对您提到的WordPress多语言插件Transposh使用及问题排查,以下从Discuz开发者的技术角度进行结构化分析并提供解决方案:

### 一、插件集成核心要点
1. **钩子函数完整性验证**
- 需确保主题模板中完整调用`wp_head()`和`wp_footer()`,建议在header.php的`</head>`前和footer.php的`</body>`前分别添加
- 检测方法:查看网页源码搜索`transposh.css`和`transposh.js`的加载路径

2. **资源加载冲突处理**
- 禁用自带jQuery的解决方案:
// 替换原生禁用方式为共存加载
function modify_jquery_loading() {
    if (!is_admin()) {
      wp_deregister_script('jquery');
      wp_register_script('jquery', '//cdn.bootcss.com/jquery/3.6.0/jquery.min.js', false, '3.6.0');
      wp_enqueue_script('jquery');
    }
}
add_action('init', 'modify_jquery_loading');

### 二、前端功能强化方案
1. **自定义语言切换器**
- 短代码高级用法示例:
<?php echo do_shortcode(''); ?>
支持参数:flags(国旗显示)、layout(horizontal/vertical)、tooltip(悬浮提示)

2. **CSS样式覆盖技巧**
/* 修正国旗显示问题 */
.tp-flag {
    background-image: url(flags-sprite.png) !important;
    width: 24px !important;
    height: 16px !important;
}

### 三、SEO优化实践方案
1. **多语言标记规范**
- 修改`add_rel_alternate()`函数后的补充优化:
echo '<link rel="alternate" hreflang="'.$isocode.'" href="'.$lang['url'].'" />';
需同步在robots.txt中添加:
User-agent: *
Allow: /en/
Allow: /es/

2. **URL结构优化**
推荐采用二级目录结构:
# .htaccess 重定向规则
RewriteCond %{HTTP:Accept-Language} ^en
RewriteRule ^$ /en/

### 四、数据库优化策略
1. **翻译数据管理**
-- 定期清理过期翻译
DELETE FROM wp_translations WHERE timestamp < DATE_SUB(NOW(), INTERVAL 6 MONTH);

2. **表结构优化建议
添加复合索引:
ALTER TABLE wp_translations ADD INDEX lang_original (lang, original(50));

### 五、搜索功能兼容方案
1. **高级搜索参数处理**
add_filter('transposh_search_support', function($query) {
    if (is_search()) {
      $query->set('post_type', 'product');
    }
    return $query;
});

### 六、性能优化方案
1. **静态缓存配置**
建议配合WP Super Cache设置:
- 缓存排除规则:`/en/* /fr/*`
- 预加载模式选择:定时预生成

2. **异步加载实现
document.addEventListener('DOMContentLoaded', function() {
    jQuery.getScript('<?php echo plugins_url('transposh/js/async-load.js'); ?>');
});

### 七、错误排查流程图
前端显示异常
├─ 检查浏览器控制台错误
├─ 验证jQuery加载状态
├─ 检测DOM中transposh元素是否存在
├─ 查看网络请求中的JS/CSS加载
└─ 检查主题的header/footer完整性

### 八、多语言SEO检测清单
1. 各语言版本需独立sitemap.xml
2. hreflang标签完整性验证
3. 语言元标记规范:
<html lang="en" dir="ltr">

以上方案需根据具体服务器环境和主题架构进行调整实施。建议在修改核心文件前创建子主题或使用Code Snippets插件管理自定义代码片段。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: WP独立站小语种 多语言插件transposh使用教程