OnePress: traductions

27Février2019

Traduction des valeurs de propriétés d'objets stockées

Toutes les propriétés d'objet de type texte seront supposées traduisibles par défaut. Il sera possible d'indiqué qu'une propriété est intraduisible.

La traduction sera effectuée à l'aide de la méthode magique __toString de l'objet champ. Une table associera langue, guid de l'objet, nom de la propriété et valeur traduite. La méthode __toString interrogera cette table pour renvoyer la valeur traduite.

Traduction des textes depuis le code PHP

Les textes à afficher depuis PHP ne le seront pas à l'aide d'instruction comme echo, mais à l'aide d'une fonction dédié (y a-t-il une raison de s'opposer au classique _() ?). Cette fonction recevra la chaîne à traduire en paramètre, et déduira à l'aide de debug_backtrace() la classe appelante, ainsi que sa méthode. Du contexte général d'exécution, elle déduira la langue à utiliser. Elle cherchera alors dans une table associant ces éléments la traduction à utiliser ; si elle ne la trouve pas, elle créera l'enregistrement correspondant dans la table, avec le texte reçu et un champ booléen à true indiquant que la traduction est encore à faire, et ce pour toutes les langues actives sur le site.

Cette méthode devrait être utilisée en front comme en back.

Traduction des textes depuis les templates

La même méthode pourrait peut-être être utilisée depuis les templates : il faudrait écrire une méthode de traduction dédiée pour être utilisée dans un template, et il faudrait qu'elle puisse indiquer le template d'origine.