Wie kann ich die LINKS meines Navigationsmenüs mit qtranslate auf WordPress übersetzen?

Lesezeit: 6 Minuten

Ich habe eine zweisprachige (englisch/arabisch) WordPress-Seite. Ich konnte die Navigationsmenüpunkte erfolgreich übersetzen. Die Menülinks auf der arabischen Seite verweisen jedoch auf die Standardsprache Englisch.

Wie kann ich WordPress mitteilen, dass ich die Menülinks auf der arabischen Website ändern muss (ich brauche die Links auf der arabischen Website, um /ar einzuschließen, zum Beispiel: www.talalonline.com/ar anstelle von www.talalonline.com)

Danke

@maha, ich habe viel darüber gesucht und die Lösung gefunden Hieraber die Antwort ist ein wenig verschwommen …

Da Sie nicht mit Ihren WP-Kerndateien herumspielen möchten, befinden sich alle Änderungen im Thema. Ihr Thema befindet sich in wp-content/themes/Ihr-Design-Name/

Finden Sie Ihr Thema Funktion.php und fügen Sie den obigen Code am Ende der Datei vor dem PHP-End-Tag (?>):

class CustomLinkModifierWalker extends Walker_Nav_Menu {
    function __( $text ) {
        if ( preg_match_all('~(.*?)\|(\w{2,})\|~', $text, $matches) ) {
            $text="";
            foreach ($matches[1] as $i => $match) {
                $text .= "[:{$matches[2][$i]}]$match";
            }
            $text = __( $text );
        }
        return $text;
    }
    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
        global $wp_query;
        $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

        $class_names = $value="";

        $classes = empty( $item->classes ) ? array() : (array) $item->classes;
        $classes[] = 'menu-item-' . $item->ID;

        $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
        $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';

        $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
        $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';

        $output .= $indent . '<li' . $id . $value . $class_names .'>';

        $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
        $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
        $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
        $attributes .= ! empty( $item->url )    ? ' href="'%20.%20esc_attr(%20$this->__(%20$item->url%20)%20%20)%20.'"' : '';

        $item_output = $args->before;
        $item_output .= '<a'. $attributes .'>';
        $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
        $item_output .= '</a>';
        $item_output .= $args->after;

        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }
}

Dann müssen Sie herausfinden, wo sich Ihre Menüansicht in Ihrem Design befindet. Das Thema, das ich verwende, ist es in der header.php. Vielleicht verwendet Ihre einen anderen Dateinamen, wie z header-fancy-theme.php.

Mein Header-View-Code war wie folgt:

<?php
$nav_sec_menu_params = array(
    'depth' => 0,
    'theme_location' => 'sec-menu',
    'container_class' => 'menu-topmenu-container',
    'menu_class' => 'menus menu-topmenu',
    'fallback_cb' => 'block_sec_menu'
);
wp_nav_menu($nav_sec_menu_params);
?>

Alles, was Sie tun müssen, ist die Walker-Implementierung im param-Array hinzuzufügen:

<?php
$nav_sec_menu_params = array(
    'walker' => new CustomLinkModifierWalker(),
    'depth' => 0,
    'theme_location' => 'sec-menu',
    'container_class' => 'menu-topmenu-container',
    'menu_class' => 'menus menu-topmenu',
    'fallback_cb' => 'block_sec_menu'
);
wp_nav_menu($nav_sec_menu_params);
?>

Dann verwenden Sie in Ihrem Menü |lang| nach der Sprach-URL wie folgt:

Geben Sie hier die Bildbeschreibung ein

Ich weiß, dass es nicht genau die Verwendung ist, die Sie von automatischen Sprachlinks verwendet haben, aber dies könnte Ihr Problem lösen.

  • @Eduardo Der URL-Teil funktioniert bei mir nicht, wenn ich auf den Link klicke, zu dem er führt example.com|en|http://www.example.com/ar/|ar| anstelle der Sprachseite der Website.

    – Kamel-Labiade

    28. Oktober 2014 um 3:54 Uhr

  • @KamelLabiad, hast du die Änderungen im Code vorgenommen? Es sollte die “Pipes” analysieren, anstatt sie an den HTML-Code zu senden.

    – Eduardo Russo

    29. Oktober 2014 um 7:48 Uhr

  • @EduardoRusso Ich habe gerade die Idee, das Menü auf meiner Website zu übersetzen, aufgegriffen, es hat der URI mehr Komplizenschaft hinzugefügt, der Inhalt auf meiner Website ist hauptsächlich arabisch, aber die Menüs sind auf Englisch und ich denke, Benutzer können es immer noch so verwenden So könnte man es hier sehen kamellabiad.comDanke.

    – Kamel-Labiade

    8. November 2014 um 19:07 Uhr


1647318547 826 Wie kann ich die LINKS meines Navigationsmenus mit qtranslate auf
Ashraf Mohammed

 //tested and worked for me.
//use native wordpress filter wp_setup_nav_menu_item

 function qtrans_menuitem( $menu_item ) {

// convert local URLs in custom menu items
   if ($menu_item->type == 'custom' && stripos($menu_item->url, get_site_url()) !== false){
    $menu_item->url = qtrans_convertURL($menu_item->url);
}     
return $menu_item;
 }

 add_filter('wp_setup_nav_menu_item', 'qtrans_menuitem', 0);

  • Hat bei mir funktioniert! Vielen Dank

    – a.boussema

    14. Juli 2014 um 15:03 Uhr

  • Hallo Leute, Entschuldigung für die Anfängerfrage, wo soll ich diesen Code einfügen?

    – Kamel-Labiade

    20. Oktober 2014 um 22:03 Uhr


  • @Kamel Labiad füge es in dein Plugin ein

    – Ashraf Mohammed

    26. Oktober 2014 um 12:20 Uhr

  • @ashrafmohammed ja welche Datei?

    – Kamel-Labiade

    28. Oktober 2014 um 3:32 Uhr

  • @Kamel Sie können es überall in Ihrem Plugin nach “Plugin Header” einfügen. Um ein WordPress-Plugin zu erstellen, folgen Sie bitte diesem Link codex.wordpress.org/Writing_a_Plugin

    – Ashraf Mohammed

    28. Oktober 2014 um 20:31 Uhr


Fork von qtranslate tut dies out of the box:

https://wordpress.org/plugins/qtranslate-x/

Geben Sie im Menüpunkt im Feld “Navigationsbeschriftung” einfach Zeichenfolgen für beide Sprachen ein:

[:en]English Text[:de]Deutsch Text

getestet mit qTranslate-X 2.7.8, WordPress 4.1 und Twenty Fifteen 1.0 Theme

Es gibt vier Funktionen in WP, um Ihren Menütext mit der Standard- oder Plugin-Option zu übersetzen.

Jede der vier Funktionen erfordert mindestens ein Argument, nämlich den zu übersetzenden Text. Die Funktionen sind:

  1. __() – (zwei Unterstriche) Die grundlegende Funktion, die Sie die meiste Zeit verwenden werden. Es gibt den Text in der richtigen Sprache zurück.

  2. e() – Dasselbe wie _(), außer dass der Text wiederholt wird, anstatt ihn zurückzugeben.

  3. _n() – Wird verwendet, wenn der Text Plural sein kann. Wenn Sie also beispielsweise anzeigen möchten, wie viele Kommentare abgegeben wurden, möchten Sie möglicherweise entweder „X Kommentare“ oder „X Kommentar“ ausgeben, je nachdem, wie viele Kommentare vorhanden sind Sie haben.

  4. _x() – Nützlich, wenn die Übersetzung des Wortes vom Kontext abhängt. „Post“ könnte je nach Kontext „ein Post (Substantiv)“ oder „posten (Verb)“ bedeuten. Es ist wichtig, dass der Übersetzer weiß, was Sie meinen, wenn er korrekt übersetzt. _x() wird hauptsächlich dort verwendet, wo einzelne Wörter verwendet werden.

Ex

echo __( 'Menu Text' );

Ich arbeite auch mit qTranslate und einer zweisprachigen arabisch/englischen Website.

Sie können Ihre haben .htaccess wie die folgenden:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteRule ^ar[\/]?$ index.php?lang=ar
#RewriteRule ^en[\/]?$ index.php?lang=en 
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

Und wählen Sie die Optionen “Pre-Path-Modus verwenden (Standard, setzt /en/ vor URL)” aus Erweiterte Einstellungen Abschnitt Ihrer qTranslate-Plugin-Einstellungsseite.

1647318547 811 Wie kann ich die LINKS meines Navigationsmenus mit qtranslate auf
Jordi Corominas

Ich habe es gelöst, indem ich 2 Menüpunkte für Spanisch und für Englisch und Französisch hinzugefügt habe. Dann lasse ich das “Navigationslabel” in jeweils einer Sprache leer. Wenn es kein Navigationslabel gibt, “malt” WordPress den Menüpunkt nicht und wenn meine Website auf Spanisch präsentiert wird, erscheint das “englische Linkelement” nicht, und wenn ich die Website auf Englisch habe, passiert das gleiche mit dem spanischen Menü Artikel.

Geben Sie hier die Bildbeschreibung ein

1003930cookie-checkWie kann ich die LINKS meines Navigationsmenüs mit qtranslate auf WordPress übersetzen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy