I18n for custom taxonomies. Fixes #13357

git-svn-id: https://develop.svn.wordpress.org/trunk@14614 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Nikolay Bachiyski
2010-05-14 00:34:04 +00:00
parent 057f54ffb7
commit 599c19481e
15 changed files with 151 additions and 69 deletions
+3 -3
View File
@@ -1003,7 +1003,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
$title = __('Tags');
} else {
$tax = get_taxonomy($current_taxonomy);
$title = $tax->label;
$title = $tax->labels->name;
}
}
$title = apply_filters('widget_title', $title, $instance, $this->id_base);
@@ -1032,10 +1032,10 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
<select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
<?php foreach ( get_object_taxonomies('post') as $taxonomy ) :
$tax = get_taxonomy($taxonomy);
if ( !$tax->show_tagcloud || empty($tax->label) )
if ( !$tax->show_tagcloud || empty($tax->labels->name) )
continue;
?>
<option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->label ?></option>
<option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->labels->name; ?></option>
<?php endforeach; ?>
</select></p><?php
}
+1 -2
View File
@@ -588,10 +588,9 @@ function wp_title($sep = '&raquo;', $display = true, $seplocation = '') {
if ( is_tax() ) {
$taxonomy = get_query_var( 'taxonomy' );
$tax = get_taxonomy( $taxonomy );
$tax = $tax->label;
$term = $wp_query->get_queried_object();
$term = $term->name;
$title = $tax . $t_sep . $term;
$title = $tax->labels->name . $t_sep . $term;
}
//If it's a search
+2 -2
View File
@@ -538,7 +538,7 @@ function wp_setup_nav_menu_item( $menu_item ) {
} elseif ( 'taxonomy' == $menu_item->type ) {
$object = get_taxonomy( $menu_item->object );
$menu_item->type_label = $object->singular_label;
$menu_item->type_label = $object->labels->singular_name;
$term_url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
$menu_item->url = !is_wp_error( $term_url ) ? $term_url : '';
@@ -587,7 +587,7 @@ function wp_setup_nav_menu_item( $menu_item ) {
$object = get_taxonomy( $menu_item->taxonomy );
$menu_item->object = $object->name;
$menu_item->type_label = $object->singular_label;
$menu_item->type_label = $object->labels->singular_name;
$menu_item->title = $menu_item->name;
$menu_item->url = get_term_link( $menu_item, $menu_item->taxonomy );
+33 -14
View File
@@ -40,7 +40,9 @@ function create_initial_post_types() {
) );
register_post_type( 'attachment', array(
'label' => __( 'Media' ),
'labels' => array(
'name' => __( 'Media' ),
),
'public' => true,
'show_ui' => false,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
@@ -53,8 +55,10 @@ function create_initial_post_types() {
) );
register_post_type( 'revision', array(
'label' => __( 'Revisions' ),
'singular_label' => __( 'Revision' ),
'labels' => array(
'name' => __( 'Revisions' ),
'singular_name' => __( 'Revision' ),
),
'public' => false,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
'_edit_link' => 'revision.php?revision=%d', /* internal use only. don't use this when registering your own post type. */
@@ -65,8 +69,10 @@ function create_initial_post_types() {
) );
register_post_type( 'nav_menu_item', array(
'label' => __( 'Navigation Menu Items' ),
'singular_label' => __( 'Navigation Menu Item' ),
'labels' => array(
'name' => __( 'Navigation Menu Items' ),
'singular_name' => __( 'Navigation Menu Item' ),
),
'public' => false,
'show_ui' => false,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
@@ -925,7 +931,7 @@ function get_post_type_capabilities( $args ) {
* - search_items - Default is Search Posts/Search Pages
* - not_found - Default is No posts found/No pages found
* - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash
* - parent - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
* - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
*
* Above, the first default value is for non-hierarchical post types (like posts) and the second one is for hierarchical post types (like pages.)
*
@@ -947,22 +953,35 @@ function get_post_type_labels( $post_type_object ) {
'not_found' => array( __('No posts found'), __('No pages found') ),
'not_found_in_trash' => array( __('No posts found in Trash'), __('No pages found in Trash') ),
'view' => array( __('View Post'), __('View Page') ),
'parent' => array( null, __('Parent Page:') )
'parent_item_colon' => array( null, __('Parent Page:') )
);
return _get_custom_object_labels( $post_type_object, $nohier_vs_hier_defaults );
}
/**
* Builds an object with custom-something object (post type, taxonomy) labels out of a custom-something object
*
* @access private
*/
function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) {
// try to get missing (singular_)?name from older style (singular_)?label member variables
// we keep that for backwards compatibility
// TODO: remove in 3.1
if ( !isset( $post_type_object->labels['name'] ) && isset( $post_type_object->label ) ) {
$post_type_object->labels['name'] = $post_type_object->label;
if ( !isset( $object->labels['name'] ) && isset( $object->label ) ) {
$object->labels['name'] = $object->label;
}
if ( !isset( $post_type_object->labels['singular_name'] ) && isset( $post_type_object->singular_label ) ) {
$post_type_object->labels['singular_name'] = $post_type_object->singular_label;
if ( !isset( $object->labels['singular_name'] ) && isset( $object->singular_label ) ) {
$object->labels['singular_name'] = $object->singular_label;
}
$defaults = array_map( create_function( '$x', $post_type_object->hierarchical? 'return $x[1];' : 'return $x[0];' ), $nohier_vs_hier_defaults );
$labels = array_merge( $defaults, $post_type_object->labels );
return (object)$labels;
if ( !isset( $object->labels['singular_name'] ) && isset( $object->labels['name'] ) ) {
$object->labels['singular_name'] = $object->labels['name'];
}
$defaults = array_map( create_function( '$x', $object->hierarchical? 'return $x[1];' : 'return $x[0];' ), $nohier_vs_hier_defaults );
$labels = array_merge( $defaults, $object->labels );
return (object)$labels;
}
/**
+60 -18
View File
@@ -18,8 +18,6 @@ function create_initial_taxonomies() {
register_taxonomy( 'category', 'post', array(
'hierarchical' => true,
'update_count_callback' => '_update_post_term_count',
'label' => __( 'Categories' ),
'singular_label' => __( 'Category' ),
'query_var' => false,
'rewrite' => false,
'public' => true,
@@ -30,8 +28,6 @@ function create_initial_taxonomies() {
register_taxonomy( 'post_tag', 'post', array(
'hierarchical' => false,
'update_count_callback' => '_update_post_term_count',
'label' => __( 'Post Tags' ),
'singular_label' => __( 'Post Tag' ),
'query_var' => false,
'rewrite' => false,
'public' => true,
@@ -41,8 +37,10 @@ function create_initial_taxonomies() {
register_taxonomy( 'nav_menu', 'nav_menu_item', array(
'hierarchical' => false,
'label' => __( 'Navigation Menus' ),
'singular_label' => __( 'Navigation Menu' ),
'labels' => array(
'name' => __( 'Navigation Menus' ),
'singular_name' => __( 'Navigation Menu' ),
),
'query_var' => false,
'rewrite' => false,
'show_ui' => false,
@@ -51,7 +49,10 @@ function create_initial_taxonomies() {
register_taxonomy( 'link_category', 'link', array(
'hierarchical' => false,
'label' => __( 'Categories' ),
'labels' => array(
'name' => __( 'Categories' ),
'singular_name' => __( 'Category' ),
),
'query_var' => false,
'rewrite' => false,
'public' => false,
@@ -230,6 +231,8 @@ function is_taxonomy_hierarchical($taxonomy) {
*
* show_tagcloud - false to prevent the taxonomy being listed in the Tag Cloud Widget;
* defaults to show_ui which defalts to public.
*
* labels - An array of labels for this taxonomy. You can see accepted values in {@link get_taxonomy_labels()}. By default tag labels are used for non-hierarchical types and category labels for hierarchical ones.
*
* @package WordPress
* @subpackage Taxonomy
@@ -254,11 +257,11 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
'query_var' => $taxonomy,
'public' => true,
'show_ui' => null,
'label' => null,
'show_tagcloud' => null,
'_builtin' => false,
'labels' => array(),
'capabilities' => array(),
);
);
$args = wp_parse_args($args, $defaults);
if ( false !== $args['query_var'] && !empty($wp) ) {
@@ -283,9 +286,6 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
if ( is_null($args['show_tagcloud']) )
$args['show_tagcloud'] = $args['show_ui'];
if ( is_null($args['label'] ) )
$args['label'] = $taxonomy;
$default_caps = array(
'manage_terms' => 'manage_categories',
'edit_terms' => 'manage_categories',
@@ -295,17 +295,62 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
$args['cap'] = (object) array_merge( $default_caps, $args['capabilities'] );
unset( $args['capabilities'] );
if ( empty($args['singular_label']) )
$args['singular_label'] = $args['label'];
$args['name'] = $taxonomy;
$args['object_type'] = (array) $object_type;
$args['labels'] = get_taxonomy_labels( (object) $args );
// we keep these two only for backwards compatibility
// TODO: remove in 3.1
$args['label'] = $args['labels']->name;
$args['singular_label'] = $args['labels']->singular_name;
$wp_taxonomies[$taxonomy] = (object) $args;
// register callback handling for metabox
add_filter('wp_ajax_add-'.$taxonomy, '_wp_ajax_add_hierarchical_term');
}
/**
* Builds an object with all taxonomy labels out of a taxonomy object
*
* Accepted keys of the label array in the taxonomy object:
* - name - general name for the taxonomy, usually plural. Default is Post Tags/Categories
* - singular_name - name for one object of this taxonomy. Default is Post Tag/Category
* - search_items - Default is Search Tags/Search Categories
* - popular_items - Default is Popular Tags/Popular Categories
* - all_items - Default is All Tags/All Categories
* - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
* - parent_item_colon - The same as <code>parent_item</code>, but with colon <code>:</code> in the end
* - edit_item - Default is Edit Tag/Edit Category
* - update_item - Default is Update Tag/Update Category
* - add_new_item - Default is Add New Tag/Add New Category
* - new_item_name - Default is New Tag Name/New Category Name
*
* Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories.)
*
* @since 3.0.0
* @param object $tax Taxonomy object
* @return object object with all the labels as member variables
*/
function get_taxonomy_labels( $tax ) {
$nohier_vs_hier_defaults = array(
'name' => array( _x( 'Post Tags', 'taxonomy general name' ), _x( 'Categories', 'taxonomy general name' ) ),
'singular_name' => array( _x( 'Post Tag', 'taxonomy singular name' ), _x( 'Category', 'taxonomy singular name' ) ),
'search_items' => array( __( 'Search Tags' ), __( 'Search Categories' ) ),
'popular_items' => array( __( 'Popular Tags' ), __( 'Popular Category' ) ),
'all_items' => array( __( 'All Tags' ), __( 'All Categories' ) ),
'parent_item' => array( null, __( 'Parent Category' ) ),
'parent_item_colon' => array( null, __( 'Parent Category:' ) ),
'edit_item' => array( __( 'Edit Tag' ), __( 'Edit Category' ) ),
'update_item' => array( __( 'Update Tag' ), __( 'Update Category' ) ),
'add_new_item' => array( __( 'Add New Tag' ), __( 'Add New Category' ) ),
'new_item_name' => array( __( 'New Tag Name' ), __( 'New Category Name' ) ),
);
return _get_custom_object_labels( $tax, $nohier_vs_hier_defaults );
}
/**
* Add an already registered taxonomy to an object type.
*
@@ -2612,6 +2657,3 @@ function is_object_in_taxonomy($object_type, $taxonomy) {
return false;
}
?>