Categories > TinyButStrong general (FR) >

gettext et TBS

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: gmcms
Date: 2006-05-23
Time: 16:55

gettext et TBS

Bonjour, je n'ai pas compris les réponses trouvées dans le forum à ce sujet.
Je souhaite utiliser gettext avec fichier po/mo externe et appeler les chaînes de caractères à l'aide de
<?=_('Ceci est ma chaine a traduire');?>
comment coupler ceci avec TBS sans alourdir le processus ?

Merci
By: gmcms
Date: 2006-05-24
Time: 05:28

Re: gettext et TBS

Je vais préciser ma question :

Il existe un fichier dans lequel les libellés sont :
msgid "Hello World!"
msgstr "Bonjour le monde !"

Pour traduire msgid avec gettext, il suffit d'appeler en php :
echo gettext("Hello World");
ou encore
_("Hello World");

Comment peut on bénéficier de cette souplesse tout en utilisant TBS ?

Merci
By: Skrol29
Date: 2006-05-24
Time: 10:02

Re: gettext et TBS

Bonjour,

Il existe plusieurs manières de faire du multilanguage. Cela dépend de la technique désirée (ici gettext), mais aussi de comment vous souhaitez implémenter le texte dans le modèle.

Si les textes à traduir sont à disposer directement dans le modèle, une solution simple consiste à utiliser des balises TBS perso fusionnées avec MergeField() + fonction :
HTML :
[traduc;msg='Salut, comment ça va ?']
PHP :
$TBS->MergeField(traduc,'f_traduc',true);
...
function f_traduc($Subname, $PrmLst) {
  return gettext($PrmLst['msg']);
}

Si le texte à traduir se trouve dans les données à fusionner (par exemple dans une base MySQL), il faut plutôt se pencher vers le paramètre "ondata" ou "onformat" pour automatiser les traductions.

Par contre, si vous shouaitez que les textes soient disposés autrement que dans des balises TBS, il faut étudier un autre principe qui pourrait être réalisé avec un plug-in TBS personalisé.
By: Olivier Loynet
Date: 2006-07-12
Time: 23:38

Re: gettext et TBS

Bonjour,

Je viens de faire quelques tests et cela fonctionne.
Par contre si l'on a une variable à faire passer comme ci-dessous :

[traduc;msg='[var.x]']

le contenu de la variable X n'est pas traduit par la commande
$TBS->MergeField(traduc,'f_traduc',true);

Sans doute la fonction est executée avant le remplacement des variables globales

Olivier