WordPress主题自带Widget翻译无效解决方法

GD Star Rating
loading...

问题描述

最近在将前些天做的zAlive主题优化,准备向WordPress官方目录提交,优化过程中不可避免的要将主题国际化(翻译,多语言)。问题出来了:语言包制作好之后,前台页面的翻译没问题,但是后台Widget中主题添加的Widget没有翻译过来。

解决过程

起初我只注意到Widget没有翻译过来,于是就向谷歌求救,结果一无所获,然后又翻看WordPress国际化方案,当看到I18n for widgets developed on 2.8+ 时以为Widget的翻译需要用load_plugin_textdomain这个函数,而非load_theme_textdomain。但是事实也并非如此,在我尝试了好多次之后翻译依然无效。

毫无头绪的我着实懵了,后来在无意中点击到了菜单设置页面,发现菜单也没翻译过来,我就在想是不是所有的主题都这样,WordPress本身就这样?于是将主题切换为WordPress自带的Twenty Twelve,而Twenty Twelve中无论Widget还是菜单翻译都没问题,英文环境下Widget和菜单都是英文,中文环境下Widget和菜单都是中文。看来是我的主题哪里不对劲!

打开Twenty Twelve的functions.php 发现load_theme_textdomain的调用在add_action( ‘after_setup_theme’, ‘twentytwelve_setup’ );中的twentytwelve_setup函数最上方。对比我的zAlive主题中的functions.php发现我用的是add_action( ‘init’, ‘zAlive_theme_setup’ ),看来问题就在这里,我又打开WordPress Action_Reference发现init在after_setup_theme之后。

WordPress Action

WordPress Action

总结

Widget以及菜单翻译问题在我将init修改为after_setup_theme后解决了,看来问题就是action的执行顺序造成的,大家以后在做主题的时候还是用after_setup_theme好了

WordPress主题自带Widget翻译无效解决方法, 5.0 out of 5 based on 2 ratings

已有4条评论 发表评论

  1. pretty双 /

    没看懂。。。。。

    GD Star Rating
    loading...
    1. 自由人 / 本文作者

      好吧,你搞搞WordPress就知道了

      GD Star Rating
      loading...
  2. ynwi /

    你用你的新主题后,在页面下面没有WordPress了,我以为你已经不用WordPress的模板了呢。

    GD Star Rating
    loading...
    1. 自由人 / 本文作者

      在右边栏上还有的,footer那里我没放了

      GD Star Rating
      loading...

回复给ynwi 取消回复