国际化/翻译自定义帖子类型和分类

时间:2012-09-19 作者:denoizzed

我已经通过generator创建了自定义帖子类型和分类法,但不太确定如何使其可翻译。谷歌在这方面没有帮助。我不知道把文本域放在哪里,我所尝试的分类法根本不起作用。

提前谢谢。

代码:

    add_action( \'init\', \'register_cpt_portfolio\' );
    function register_cpt_portfolio() {

        $labels = array( 
            \'name\' => _x( \'Portfolios\',  \'portfolio\'),
            \'singular_name\' => _x( \'single-portfolio\',  \'portfolio\' ),
            \'add_new\' => _x( \'Add New\', \'portfolio\' ),
            \'add_new_item\' => _x( \'Add New Portfolio\', \'portfolio\' ),
            \'edit_item\' => _x( \'Edit Portfolio\',  \'portfolio\' ),
            \'new_item\' => _x( \'New Portfolio\', \'portfolio\' ),
            \'view_item\' => _x( \'View Portfolio\',  \'portfolio\' ),
            \'search_items\' => _x( \'Search Portfolios\',  \'portfolio\' ),
            \'not_found\' => __( \'No portfolios found\',  \'portfolio\' ),
            \'not_found_in_trash\' => _x( \'No portfolios found in Trash\',  \'portfolio\' ),
            \'parent_item_colon\' => _x( \'Parent Portfolio:\', \'portfolio\' ),
            \'menu_name\' => _x( \'Portfolio\',  \'portfolio\' ),
        );

        $args = array( 
            \'labels\' => $labels,
            \'hierarchical\' => false,
            \'supports\' => array( \'title\', \'editor\', \'thumbnail\' ),
            \'taxonomies\' => array( \'portfolio_taxonomy\' ),
            \'public\' => true,
            \'show_ui\' => true,
            \'show_in_menu\' => true,
            \'show_in_nav_menus\' => true,
            \'publicly_queryable\' => true,
            \'exclude_from_search\' => false,
            \'has_archive\' => true,
            \'query_var\' => true,
            \'can_export\' => true,
            \'rewrite\' => true,
            \'capability_type\' => \'post\'
        );

        register_post_type( \'portfolio\', $args );
    }    


    add_action( \'init\', \'register_taxonomy_portfolio_taxonomy\' );

    function register_taxonomy_portfolio_taxonomy() {

        $labels = array( 
            \'name\' => _x( \'Portfolio Categories\',  \'portfolio_taxonomy\' ),
            \'singular_name\' => _x( \'Portfolio Category\', \'portfolio_taxonomy\' ),
            \'search_items\' => _x(\'Search Portfolio Categories\',  \'portfolio_taxonomy\'),
            \'popular_items\' => _x( \'Popular Portfolio Categories\',  \'portfolio_taxonomy\' ),
            \'all_items\' => _x(\'All Portfolio Categories\', \'portfolio_taxonomy\' ),
            \'parent_item\' => _x(\'Parent Portfolio Category\',  \'portfolio_taxonomy\' ),
            \'parent_item_colon\' => _x( \'Parent Portfolio Category:\',  \'portfolio_taxonomy\' ),
            \'edit_item\' => _x( \'Edit Portfolio Category\', \'portfolio_taxonomy\' ),
            \'update_item\' => _x( \'Update Portfolio Category\', \'portfolio_taxonomy\' ),
            \'add_new_item\' => _x( \'Add New Portfolio Category\', \'portfolio_taxonomy\'),
            \'new_item_name\' => _x( \'New Portfolio Category\',  \'portfolio_taxonomy\' ),
            \'separate_items_with_commas\' => _x( \'Separate portfolio categories with commas\', \'portfolio_taxonomy\'),
            \'add_or_remove_items\' => _x( \'Add or remove portfolio categories\',  \'portfolio_taxonomy\' ),
            \'choose_from_most_used\' => _x( \'Choose from the most used portfolio categories\', \'portfolio_taxonomy\' ),
            \'menu_name\' => _x( \'Portfolio Categories\',\'portfolio_taxonomy\'),
        );

        $args = array( 
            \'labels\' => $labels,
            \'public\' => true,
            \'show_in_nav_menus\' => true,
            \'show_ui\' => true,
            \'show_tagcloud\' => true,
            \'hierarchical\' => true,
            \'rewrite\' => true,
            \'query_var\' => true
        );

        register_taxonomy( \'portfolio_taxonomy\', array(\'portfolio\'), $args );
    }

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

因为您已经了解了文本域是什么-的最后一个参数__() - 我想添加一些在自定义帖子类型或分类法可翻译时大多数人都会忘记的东西:slug。

你的帖子类型或分类名称在另一种语言中可能意味着非常不同甚至尴尬的事情。或者它可以包含不可用的字母(如famous i in Turkish) 因此很难打字。

在代码中将不可翻译的段塞视为bug。

这个rewrite 的参数register_taxonomy()register_post_type() 接受数组。数组键之一是slug. 使用它,使其也可翻译:

register_post_type( 
    \'post_type_name\', 
    array (
        \'rewrite\' => array (
            \'slug\' => _x( \'post_type_name\', \'URL slug\', \'your_text_domain\' )
        )
    )
);
register_taxonomy( 
    \'taxonomy_name\',
    array ( \'post\', \'post_type_name\' ), 
    array (
        \'rewrite\' => array (
            \'slug\' => _x( \'taxonomy_name\', \'URL slug\', \'your_text_domain\' )
        )
    )
);
功能_x() 使用上下文参数。这将有助于翻译人员了解字符串的使用位置。

结束

相关推荐

Chaining Taxonomy Queries

我有一个简短的问题。有人能告诉我如何做一个循环来完成以下操作吗。查询一个税的所有帖子(用餐时间:如午餐、晚餐、甜点…)然后循环每个分类法(课程:例如应用程序、主菜、甜点…)并显示与该税相关的所有帖子。然后继续循环,直到不再有相关的分类法,即父“用餐时间”税。