Search code examples
menudrupal-7

How to create multilingual menu link programmatically in Drupal 7


I'm trying to create the menu link programmatically. But its not working where source language is other than english. Here is my code.

 $language_list = language_list();
 foreach ($language_list as $language_code => $language_object) {
   $menu_item = array(
      'link_title' => t('Fruit'),
      'menu_name' => 'menu-main-footer',
      'customized' => 1,
      'link_path' => $custom_path,
      'language' => $language_code,
      'weight' => 30,
    );
    menu_link_save($menu_item);
  }

Any one have some idea on this?


Solution

  • I changed my code. And it work for me.

     // Create menu translation set.
     $menu_translation_set = i18n_translation_set_create('menu_link');
    
      // Create translated menu link for all site enable language.
      $language_list = language_list();
      foreach ($language_list as $language_code => $language_object) {
    
         // Add Fruit link in menu-main-footer.
         // 'change-fruit' is node title.
         $fruit_path = drupal_get_normal_path('change-fruit', $language_code);
         if (!menu_link_get_preferred($fruit_path, 'menu-main-footer')) {
           $menu_item = array(
             'link_title' => t('fruit'),
             'menu_name' => 'menu-main-footer',
             'customized' => 1,
             'link_path' => $fruit_path,
             'language' => $language_code,
             'weight' => 30,
             'i18n_tsid' => $menu_translation_set->tsid,
           );
           menu_link_save($menu_item);
           $menu_translation_set->add_item($menu_item, $language_code);
           $menu_translation_set->save();
         } 
      }
    

    May be helpful to other.