web-dev-qa-db-fra.com

JText - ordre de chaîne multilingue

J'ai une extension qui affiche l'heure à laquelle un cri a été posté, par exemple:

il y a 1 jour

Cette chaîne est générée dans mon aide comme suit:

$num . ' ' . JText::_('SHOUT_TIME') . ' ' . JText::_('SHOUT_AGO')

Les constantes de langage sont les suivantes:

SHOUT_TIME="day"
SHOUT_AGO="ago"

Maintenant, en anglais cela convient parfaitement, cependant en allemand, ago se traduit par vor.

Le résultat de ceci serait 1 tag vor, cependant il devrait être vor 1 tag.

Gardez à l'esprit que SHOUT_TIME, pourrait être l’un des suivants:

  • seconde
  • minute
  • heure
  • journée
  • mois
  • an

donc cela doit être une chaîne de langue séparée.


Alors, comment puis-je changer la chaîne pour prendre en charge une autre langue sans utiliser d'instructions conditionnelles dans l'aide?

2
Lodder

Ajouter plus d'abstraction.

JText::sprintf('COM_MYCOMPONENT_DATETIME_AGO', $num, JText::_('SHOUT_TIME'), JText::_('SHOUT_AGO'));

Langue Anglaise

COM_MYCOMPONENT_DATETIME_AGO="%1$s %2$s %3$s"

Langue allemande

COM_MYCOMPONENT_DATETIME_AGO="%3$s %1$s %2$s"
6
Nagarjun