基于不加载翻译的后处理设置前端区域设置

时间:2015-10-12 作者:Bobz

我正在尝试根据页面帖子元设置在前端显示不同的语言。我的问题是,我可以看到语言环境发生了变化,但文本仍然是英文的。只有当我通过“设置>常规”更改语言环境并将其设置为所需的语言环境时,我的翻译才会加载并正确显示。

add_filter( \'locale\', \'set_my_locale\' );
function set_my_locale( $lang ) {

  if ( get_field(\'page_language\', get_the_ID() ) ) {

    $lang = get_field(\'page_language\', get_the_ID() );
  }

  return $lang;
}

function load_textdomain(){
  $domain = \'textdomain\';

  load_theme_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain );
  load_theme_textdomain( $domain, get_stylesheet_directory() . \'/lang\' );
  load_theme_textdomain( $domain, get_template_directory() . \'/lang\' );
}
add_action( \'after_setup_theme\', \'load_textdomain\' );
如果我试着print_r( get_locale() ); 我可以看到设置了正确的语言环境,但不会显示翻译,而是看到了原始文本。

如果有人能指给我看?

我应该使用不同的钩子,还是我做错了什么?

1 个回复
SO网友:Bobz

好的,I\'v找到了一种使用query\\u var的方法。看起来问题是语言环境在加载过程中设置为延迟。

如果存在元字段/值,是否重定向到具有的页面?lang=lang属性,然后基于该属性设置语言环境。

function si_update_locale( $lang ) {

  if ( isset( $_GET[\'lang\'] ) && ! empty( $_GET[\'lang\'] ) ) {

    if( $_GET[\'lang\'] == \'it\' ) {
        $lang = \'it_IT\';    
    }

  }
  return $lang;
}
add_filter( \'locale\', \'si_update_locale\' );


function si_load_textdomain(){

  $domain = \'textdomain\';

  load_theme_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain );
  load_theme_textdomain( $domain, get_stylesheet_directory() . \'/lang\' );
  load_theme_textdomain( $domain, get_template_directory() . \'/lang\' );
}
add_action( \'after_setup_theme\', \'si_load_textdomain\' );


function si_set_locale() {
    $post_id = get_the_ID();
    $lang    = get_field(\'page_language\', $post_id );

    if ( $lang && ! isset( $_GET[\'lang\'] ) ) {

        switch ( $lang ) {

            case \'it_IT\':

                wp_redirect( add_query_arg( array( \'lang\' => \'it\'), get_permalink(  $post_id ) ) );
                exit;

            break;
        }

  }
}
add_filter( \'template_redirect\', \'si_set_locale\' );

相关推荐

Plugin Localization

我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette