Tell me more ×
Drupal Answers is a question and answer site for Drupal developers and administrators. It's 100% free, no registration required.

I created a custom menu that uses menu_load_links() and menu_link_load() to get permission, path, and title info to output a menu. It currently outputs a very simple HTML list of links without any theme or translation function wrappers, and I'm trying to apply the correct wrappers to make it theme- and module-compatible.

This site is currently single-language but in the future it will be in multiple languages. Which translation functions wrappers do I need for my links? There's t(), st(), and get_t() (that I am aware of).

Are there other translate functions that I should be using that I am not aware of?

And is it sufficient to apply t() to the displayed link title only, or does it need to be applied to, say, the path or alias or anything?

Here's the code:

$foreshadow_menu_items = menu_load_links('menu-program-menu');
print('<ul class="menu">');
foreach ($foreshadow_menu_items as $foreshadow_menu_item) {
    $foreshadow_menu_item_info = menu_link_load($foreshadow_menu_item['mlid']);
    $foreshadow_menu_item_access = $foreshadow_menu_item_info['access'];
    $foreshadow_menu_path = $foreshadow_menu_item['link_path'];
    print ('<li class="leaf">');
    if ($foreshadow_menu_item_access == 1){ 
        print("<a href=\"/$foreshadow_menu_path\" class=\"access-granted\">");
    }
    else{ 
        print("<div class=\"access-denied\">");
    }
    echo "$foreshadow_menu_item[link_title]\n";
    if ($foreshadow_menu_item_access == 1){ 
        print('</a>');
    }
    else{
        print("</div>");
    }
    print ('</li>');
}
print("</ul>");

I especially don't understand the instruction on t(),

You should never use t() to translate variables, such as calling t($text); unless the text that the variable holds has been passed through t() elsewhere (e.g., $text is one of several translated literal strings in an array).

How is this not a catch-22?

share|improve this question

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.