• 0

wordpress: adding a content (language) switcher to the menu


Question

dear community hello dear experts,

 

 


I am developing a site in Wordpress. I am using the twentyseventeen-theme. i would like language-[content-] switcher in mega menu – without any ml-system - because i do not need ml-things. While customizing the the theme according to my website needs, i found that the theme only supports one menu. I want to add another menu.  

 

at the moment the site has  

 

– Max-Mega-Menü
– etc. etx

 

in the menu the estimated textamount has got max 2000 words – in five languages: german, english; french, spanish, italien
note:  the texts are allready translated – no need to do a runtime translation or something similar.  I have a defined text amount where which is allready translated.

what is aimed: i want to add all those texts in to the max-mega-menu:
idea: can i do this with a added (language-[content] )switcher in the mega menu

guess: i guess that this is possible – without using a multilang system eg. like:

 

-WPML
-Polylang
-Weglot
-TranslatePress

 

again; since i only have a little amount of text which is allready translated completely i guess that i do not need a multilang system.  I guess that a  (language- [content])-switcher will be sufficient to arrrange this.


see the example:

 -----------------------
 | switcher of  content |
 -----------------------
     |
     |
    /|\
 ---------         ---------          ----------       ---------           ---------
 |german  |-------< |  engl. |>-------|french.  |>------|span.  |>---------|italien.|
 ---------         ---------          ----------       ---------           ---------
    \|/
     |
     |
 ------------
 |Lorem ipsum|     etc. eng.         etc. french       etc.spanish          etc.italien
 ------------
    \|/
     |
     |
 ---------
 | blabla |
 ---------


 

 furthermore:  to show the needs in another picture i add a second - here we see more things ...
see the structure of the page...



    language-switcher: de :: fr :: it ::es :: pt :: eng :: ...--+
    |                                                           |
    +-----------------------------------------------------------+
    +--------------------------------------------------------------------------------------------------------------+
    |                                                                                                              |
    |   +-------------------+ +------------------+ +----------------------------------+ +-------------------+      |
    |   |                   | |                  | |                ||                | |                   |      |
    |   |        Item 1     | |        Item 2    | |      Item 3    ||     Item 4     | |        Item 5     |      |
    |   |                   | |                  | |                ||                | |                   |      |
    |   |                   | |                  | |                ||                | |                   |      |
    |   |                   | |                  | |                ||                | |                   |      |
    |   +-------------------+ +------------------+ +----------------------------------+ +-------------------+      |
    |                                                                                                              |
    |                                                                                                              |
    |                                                                                                              |
    |                                                                                                              |
    |                                                                                                              |
    |                                                                                                              |
    |                                                                                                              |
    +--------------------------------------------------------------------------------------------------------------+
    

so i think that ,,,,I want to add another menu.... for the different languages i have - 6 different languages: .... subsequently i should add six menus in the code below...

approach: could i do it like so:</strong> Add the following code to the functions.php file. The 2 menus are the “Primary”, and “Secondary” menus.

//Register Navigations
add_action( 'init', 'my_custom_menus' );
function my_custom_menus() {
   register_nav_menus(
        array(
            'primary-menu' => __( 'Primary Menu' ),
            'secondary-menu' => __( 'Secondary Menu' )
        )
    );
}

 

conclusio: so i think that ,,,,i have to add alot - for the different languages i have - 6 different languages: .... subsequently i should add six menus in the code above...

well i have mused alot bout the code: To add them to my site i should have to add the following to the WordPress template files (most likely my header.php and footer.php files).


<?php wp_nav_menu (array('theme_location' => 'primary-menu','menu_class' => 'nav'));?>
<?php wp_nav_menu (array('theme_location' => 'secondary-menu','menu_class' => 'nav'));?>
    

 
and so forth and so forth... untill i reach the six different languages..


Well - what do you think!? does this fit the needs!?

What do you think?  Love to hear from you.

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

hi there  - good day  dear friends,

 

i have tried to find out more information on this issue:  hile i have tried to find information about how to add a language-switcher to the menu of wordpress i thougth it could go like so:

In Appearance->Menues, we have the checkbox option for the following:

Quote

 

“Add one of this for each of your languages”.

 

 

the question is: what does it do actually?

furthermore:  Is it possible to get all languages via a global variable?

guess:  well i think it just creates and adds to menu a certain custom link with the  name “language” and a empty url.


This custom link will then be replaced by actual language link in runtime. So if the site has got 3 different languages, we need 3 custom links like this. e can use the for all languages via a global variable: the so called

 global $sublanguage:

 

this will finally lead us to the following:
 

global $sublanguage;
$languages = $sublanguage->get_languages(); // return an array of WP_Post objects
foreach ($languages as $language) {
  echo $language->post_title; // -> title of language (Ex: "English")
  echo $language->post_name; // -> slug of language (Ex: "en")
  echo $language->post_content; // -> locale code of language (Ex: "en_US")
  echo $sublanguage->get_translation_link($language); // -> language url for current page
}

 

this above mentioned ideas were inspired by this thread:  https://wordpress.org/support/topic/add-language-switcher-to-menu/

note: i will do some checks to see if this fits for me...

 

 

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.