nav-menu translation

Any suggestions on how to improve qTranslate? Post here!

Re: nav-menu translation

Postby adremasu » Mon Apr 04, 2011 7:38 am

ok, don't worry. it just started working, i don't know how :o
adremasu
 
Posts: 3
Joined: Tue Mar 29, 2011 1:14 pm

Re: nav-menu translation

Postby ovi_mihai » Tue Apr 26, 2011 1:12 pm

the solution damian.ignacio propesed works only once :)

When you create the menu and save it it works fine.. but after that when you save again you loose the other languages because the fields don't contain the other languages.
ovi_mihai
 
Posts: 3
Joined: Wed Jan 26, 2011 3:27 pm

Re: nav-menu translation

Postby ilker » Sun Jul 24, 2011 8:51 am

in order to get the the Appearance > Menu work correctly with qTranslate you have patch qtranslate_hooks.php as well as nav-menu.php (which is a hack due to a missing filter-hook similar to 'wp_edit_nav_menu_walker')

in nav-menu.php (line 258)

Code: Select all
      $output .= empty( $item->label ) ? qtrans_esc_html( $item->title ) : qtrans_esc_html( $item->label );


in qtranslate_hooks (add it to the end of file)

Code: Select all
if (defined('WP_ADMIN')) {

    require_once ABSPATH . '/wp-admin/includes/nav-menu.php';

    add_filter('wp_edit_nav_menu_walker', 'qtrans_custom_walker');

    function qtrans_custom_walker() {
        return 'qTrans_Walker_Nav_Menu_Edit';
    }

    class qTrans_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit
    {

        /**
         * @see Walker::start_el()
         * @since 3.0.0
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param object $item Menu item data object.
         * @param int $depth Depth of menu item. Used for padding.
         * @param object $args
         */
        function start_el(&$output, $item, $depth, $args)
        {
            global $_wp_nav_menu_max_depth;
            $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;

            $indent = ($depth) ? str_repeat("\t", $depth) : '';

            ob_start();
            $item_id = esc_html($item->ID);
            $removed_args = array(
                'action',
                'customlink-tab',
                'edit-menu-item',
                'menu-item',
                'page-tab',
                '_wpnonce',
            );

            $original_title = '';
            if ('taxonomy' == $item->type) {
                $original_title = get_term_field('name', $item->object_id, $item->object, 'raw');
                if (is_wp_error($original_title))
                    $original_title = false;
            } elseif ('post_type' == $item->type) {
                $original_object = get_post($item->object_id);
                $original_title = $original_object->post_title;
            }

            $classes = array(
                'menu-item menu-item-depth-' . $depth,
                'menu-item-' . esc_html($item->object),
                'menu-item-edit-' . ((isset($_GET['edit-menu-item']) && $item_id == $_GET['edit-menu-item']) ? 'active' : 'inactive'),
            );

            $title = $item->title;

            if (!empty($item->_invalid)) {
                $classes[] = 'menu-item-invalid';
                /* translators: %s: title of menu item which is invalid */
                $title = sprintf(__('%s (Invalid)'), $item->title);
            } elseif (isset($item->post_status) && 'draft' == $item->post_status) {
                $classes[] = 'pending';
                /* translators: %s: title of menu item in draft status */
                $title = sprintf(__('%s (Pending)'), $item->title);
            }

            $title = empty($item->label) ? $title : $item->label;

            ?>
        <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes); ?>">
            <dl class="menu-item-bar">
                <dt class="menu-item-handle">
                    <span class="item-title"><?php echo qtrans_esc_html($title); ?></span>
                    <span class="item-controls">
                        <span class="item-type"><?php echo esc_html($item->type_label); ?></span>
                        <span class="item-order">
                            <a href="<?php
                                echo wp_nonce_url(
                                add_query_arg(
                                    array(
                                         'action' => 'move-up-menu-item',
                                         'menu-item' => $item_id,
                                    ),
                                    remove_query_arg($removed_args, admin_url('nav-menus.php'))
                                ),
                                'move-menu_item'
                            );
                                ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">
                                &#8593;</abbr></a>
                            |
                            <a href="<?php
                                echo wp_nonce_url(
                                add_query_arg(
                                    array(
                                         'action' => 'move-down-menu-item',
                                         'menu-item' => $item_id,
                                    ),
                                    remove_query_arg($removed_args, admin_url('nav-menus.php'))
                                ),
                                'move-menu_item'
                            );
                                ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">
                                &#8595;</abbr></a>
                        </span>
                        <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php _e('Edit Menu Item'); ?>"
                           href="<?php
                            echo (isset($_GET['edit-menu-item']) && $item_id == $_GET['edit-menu-item']) ? admin_url('nav-menus.php') : add_query_arg('edit-menu-item', $item_id, remove_query_arg($removed_args, admin_url('nav-menus.php#menu-item-settings-' . $item_id)));
                               ?>"><?php _e('Edit Menu Item'); ?></a>
                    </span>
                </dt>
            </dl>

            <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
                <?php if ('custom' == $item->type) : ?>
                <p class="field-url description description-wide">
                    <label for="edit-menu-item-url-<?php echo $item_id; ?>">
                        <?php _e('URL'); ?><br/>
                        <input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>"
                               class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]"
                               value="<?php echo esc_html($item->url); ?>"/>
                    </label>
                </p>
                <?php endif; ?>
                <p class="description description-thin">
                    <label for="edit-menu-item-title-<?php echo $item_id; ?>">
                        <?php _e('Navigation Label'); ?><br/>
                        <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>"
                               class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]"
                               value="<?php echo esc_html($item->title); ?>"/>
                    </label>
                </p>

                <p class="description description-thin">
                    <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
                        <?php _e('Title Attribute'); ?><br/>
                        <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>"
                               class="widefat edit-menu-item-attr-title"
                               name="menu-item-attr-title[<?php echo $item_id; ?>]"
                               value="<?php echo esc_html($item->post_excerpt); ?>"/>
                    </label>
                </p>

                <p class="field-link-target description description-thin">
                    <label for="edit-menu-item-target-<?php echo $item_id; ?>">
                        <?php _e('Link Target'); ?><br/>
                        <select id="edit-menu-item-target-<?php echo $item_id; ?>" class="widefat edit-menu-item-target"
                                name="menu-item-target[<?php echo $item_id; ?>]">
                            <option value="" <?php selected($item->target, ''); ?>><?php _e('Same window or tab'); ?></option>
                            <option value="_blank" <?php selected($item->target, '_blank'); ?>><?php _e('New window or tab'); ?></option>
                        </select>
                    </label>
                </p>
                <p class="field-css-classes description description-thin">
                    <label for="edit-menu-item-classes-<?php echo $item_id; ?>">
                        <?php _e('CSS Classes (optional)'); ?><br/>
                        <input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>"
                               class="widefat code edit-menu-item-classes"
                               name="menu-item-classes[<?php echo $item_id; ?>]"
                               value="<?php echo esc_html(implode(' ', $item->classes)); ?>"/>
                    </label>
                </p>

                <p class="field-xfn description description-thin">
                    <label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
                        <?php _e('Link Relationship (XFN)'); ?><br/>
                        <input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>"
                               class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]"
                               value="<?php echo esc_html($item->xfn); ?>"/>
                    </label>
                </p>

                <p class="field-description description description-wide">
                    <label for="edit-menu-item-description-<?php echo $item_id; ?>">
                        <?php _e('Description'); ?><br/>
                        <textarea id="edit-menu-item-description-<?php echo $item_id; ?>"
                                  class="widefat edit-menu-item-description" rows="3" cols="20"
                                  name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html($item->description); // textarea_escaped ?></textarea>
                        <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
                    </label>
                </p>

                <div class="menu-item-actions description-wide submitbox">
                    <?php if ('custom' != $item->type && $original_title !== false) : ?>
                    <p class="link-to-original">
                        <?php printf(__('Original: %s'), '<a href="' . esc_html($item->url) . '">' . esc_html($original_title) . '</a>'); ?>
                    </p>
                    <?php endif; ?>
                    <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
                    echo wp_nonce_url(
                        add_query_arg(
                            array(
                                 'action' => 'delete-menu-item',
                                 'menu-item' => $item_id,
                            ),
                            remove_query_arg($removed_args, admin_url('nav-menus.php'))
                        ),
                        'delete-menu_item_' . $item_id
                    ); ?>"><?php _e('Remove'); ?></a> <span class="meta-sep"> | </span> <a
                        class="item-cancel submitcancel" id="cancel-<?php echo $item_id; ?>"
                        href="<?php   echo esc_url(add_query_arg(array('edit-menu-item' => $item_id, 'cancel' => time()), remove_query_arg($removed_args, admin_url('nav-menus.php'))));
                            ?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
                </div>

                <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]"
                       value="<?php echo $item_id; ?>"/>
                <input class="menu-item-data-object-id" type="hidden"
                       name="menu-item-object-id[<?php echo $item_id; ?>]"
                       value="<?php echo esc_html($item->object_id); ?>"/>
                <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]"
                       value="<?php echo esc_html($item->object); ?>"/>
                <input class="menu-item-data-parent-id" type="hidden"
                       name="menu-item-parent-id[<?php echo $item_id; ?>]"
                       value="<?php echo esc_html($item->menu_item_parent); ?>"/>
                <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]"
                       value="<?php echo esc_html($item->menu_order); ?>"/>
                <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]"
                       value="<?php echo esc_html($item->type); ?>"/>
            </div>
            <!-- .menu-item-settings-->
            <ul class="menu-item-transport"></ul>
                                     <?php
                                             $output .= ob_get_clean();
        }

    }

}
ilker
 
Posts: 1
Joined: Sun Jul 24, 2011 8:44 am

Re: nav-menu translation

Postby matic » Mon Mar 26, 2012 12:41 pm

I don't have anything in line 258 in nav-menu.php file, neither I don't have anywhere used $output var in this file. :roll:
Looks like this is outdated!?
matic
 
Posts: 2
Joined: Mon Mar 26, 2012 12:38 pm

Re: nav-menu translation

Postby matic » Mon Mar 26, 2012 1:27 pm

Found this solution, which I've added in functions.php in my template:
Code: Select all
function qtrans_menuitem2( $item ) {
   foreach ($item as $key=>$values){
   $item[$key]->title = qtrans_useTermLib($values->title);
}
qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $item->title );
   return $item;
}
add_filter('wp_nav_menu_objects',      'qtrans_menuitem2', 0);

function qtrans_menuitem( $menu_item ) {
   $menu_item->title = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $menu_item->title );
   $menu_item->title = qtrans_useTermLib( $menu_item->title );
   return $menu_item;
}
add_filter('wp_setup_nav_menu_item',      'qtrans_menuitem', 0);


Soruce: http://wordpress.org/support/topic/plug ... g-nav-menu
matic
 
Posts: 2
Joined: Mon Mar 26, 2012 12:38 pm

Re: nav-menu translation

Postby johnjoshyy » Wed Feb 13, 2013 7:34 am

we will release a translation package that fix these issues next week.
johnjoshyy
 
Posts: 1
Joined: Wed Feb 13, 2013 7:25 am

Re: nav-menu translation

Postby marcom » Tue Feb 26, 2013 3:46 pm

Hi,
is this issue fixed yet? It is so confusing that I have to prepare element names with multilang format in notepad before I put them in menus :(
marcom
 
Posts: 1
Joined: Tue Feb 26, 2013 3:37 pm

Previous

Return to qTranslate Suggestions Forum

Who is online

Users browsing this forum: No registered users and 1 guest