J'ai toujours utilisé t () pour le titre et la description de hook_menus comme ceci:
$items['some-path'] = array(
'title' => t('My Page Title'),
'description' => t('This is a description about what my page is for'),
'page callback' => 'profile_user_page',
);
Cela me semble logique pour que les utilisateurs puissent traduire le titre et la description dans différentes langues si nécessaire.
Cependant ce commentaire sur une revue de module sur DO dit:
Non, c'est faux, ne faites pas ça - les descriptions dans hook_menu () ne devraient jamais utiliser t ().
Quel est le raisonnement pour cela et est-ce réellement la meilleure pratique?
De plus, si cela est vrai, ne devrions-nous pas également utiliser t() pour le titre?
Voir Chaînes à des endroits bien connus: menus intégrés, autorisations, messages de journal et fichiers .info documentation de la communauté:
Le système de menu Drupal 6 et 7 stocke les titres et les descriptions des éléments de menu en anglais. Cela permet au système de mettre en cache les données, mais de les afficher aux utilisateurs dans différentes langues à la demande. Pour que cela fonctionne, vous ne devez pas utiliser t() sur le titre ou la description des éléments de menu dans votre implémentation hook_menu (). vous devez essayer d'utiliser une chaîne littérale (plutôt qu'une chaîne dynamique) pour ces deux clés, afin que l'extracteur de modèle de traduction puisse trouver la chaîne que vous avez utilisée.
Je souligne.
Si vous voyez la documentation des arguments hook_men ..
Par défaut, le rappel du titre est une fonction t. Il est donc toujours traduit ..
Depuis Drupal 6 n'est plus nécessaire.
Veuillez lire https://drupal.org/node/140311 . Citant que:
Depuis 6.x, Drupal gère en interne la traduction des titres de menu et des descriptions dans la langue locale de l'utilisateur. Les descriptions, si elles sont fournies, sont toujours traduites avec t (); il n'y a aucun moyen de passer dans les données supplémentaires pour la substitution d'espace réservé (en D5 et avant, la transmission des substitutions était une pratique découragée - avec ce changement, le système de menus applique cette règle directement). Les titres sont traduits avec t() par par défaut, mais le remplacement de la chaîne de style t () est possible grâce à l'utilisation de la nouvelle propriété 'title arguments'. Vous pouvez également choisir de remplacer t() par votre propre rappel personnalisé.
Vous ne devez pas utiliser t()
dans les implémentations hook_menu()
car t()
est automatiquement appelé plus tard et cela entraînerait une double traduction.
Il est clairement indiqué sur la page de documentation de hook_menu () i.e
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7.x
"title": Obligatoire. Le titre non traduit de l'élément de menu.
"description": la description non traduite de l'élément de menu.
Donc pas besoin d'utiliser la fonction t() pour les deux ci-dessus.