Annotation de propriété @translate
-
/** * @translate * @translate common * @translate data */ public $property_name;
Permet de stocker une version d’origine de la valeur de la propriété, et ses traductions.
Visibilité de la valeur traduite
- Dans tous les composants d’affichage standard, la valeur traduite sera affichée à la place de la valeur d’origine, en fonction de la langue de la session courante (initialement langue de l’utilisateur connecté)
- En modification de donnée, c’est la valeur d’origine qui s’affiche et qui est modifiée dans le formulaire de base. La traduction n’est appliquée qu’à l’affichage
Variante @translate common
Si le mot clé
common
est précisé, il s’agit d’une traduction commune à tout le logiciel : la traduction n’est pas liée à la donnée mais à la valeur saisie, et est stockée dans la table de traductions du logiciel, comme la traduction de n’importe quel composant logiciel.Par exemple le titre des fonctionnalités du logiciel est sous traduction commune :
- Classe RAD\Feature : la propriété
$title
est traduite par le fichier de traduction commun :
/** * @mandatory * @translate common * @var string */ public $title;
- Soit la fonctionnalité Trigger\Change dont le titre est “Trigger actions on data changes” : la donnée stockée dans la table rad_features reste la version d’origine “Trigger actions on data changes”
- Pour afficher la fonctionnalité dans la liste, et généralement dans les vues (sauf modification), it.rocks va chercher la traduction de “Trigger actions on data change” dans la table translations alimentée par la classe Translation : la traduction est liée à la valeur, pas du tout au fait que ce soit une fonctionnalité et encore moins à ce que ce soit cette fonctionnalité précisément. Ainsi s’affichera dans le logiciel “Déclenche des actions lors des modifications aux données”, texte traduit officiel pour ce titre de fonctionnalité.
- Partout dans les combo, les listes, les vues, l’utilisateur verra et pourra rechercher sur le texte traduit dans sa langue (ici en français), y compris en utilisant des wildcards.
- Les fonctionnalités sont générées par analyse du code, le texte d’origine ne peut donc pas être modifié. Si c’était le cas, les champs de saisie ne permettraient de saisir que le texte d’origine en anglais. La correspondance de ce texte avec ses traductions est à gérer dans le module de traductions générales Translation
Variante @translate data
Le mot clé
data
est optionnel, car il correspond au comportement par défaut. Il peut être précisé pour lever toute ambiguïté pour le relecteur.Les traductions sont spécifiques à cette donnée précise, dans le contexte de cet objet précis : elle est donc associée à l’objet et au nom de la propriété, et ne sera employée que dans ce contexte, indépendamment du texte d’origine choisi.
Par exemple si dans un logiciel de gestion on veut permettre de saisir un nom d’article dans plusieurs langues, en fonction de la langue de l’utilisateur ou du destinataire d’un document :
/** * @override name @translate */ class Item { use Has_Name; }
- Pour afficher le nom de l’article dans la liste, et généralement dans les vues (sauf modification), it.rocks va chercher la traduction du nom de l’article dans la table data_translations alimentée par la classe Translation\Data : les traduction (une par langue) sont liées précisément à la propriété
$name
de l’objet articleItem
correspondant et ne sera employée que dans ce contexte.
- Les seules langues disponibles pour la traduction sont celles gérées dans le module de gestion des langues Language : il convient donc de renseigner au préalable les codes ISO (sur 2 caractères) des langues dans lesquelles on autorisera les traductions dans ce module.
- Dans le formulaire de modification, l’utilisateur va saisir un libellé dans sa langue d’origine ou en anglais. L’administrateur du logiciel devra définir la politique de nommage par défaut des valeurs à suivre par les utilisateurs.
- Un Ctrl+click sur le champ de saisie du texte ouvre une fenêtre de saisie : une ligne par langue est alors disponible. Si la traduction n’est pas saisie pour une langue, la valeur affichée sera celle par défaut saisie dans le formulaire principal de l’article, il est donc inutile de recopier un nom d’article principal dans la traduction en français si l’utilisateur a choisi le Français comme langue principale.
Ce qu’il faut retenir
Les pré-requis pour utiliser ce module sont :
- Que le module Locale, qui gère globalement ce qui est spécifique aux pays / langues, soit activé (fait par défaut)
- Que des codes langues valides soient renseignées dans /ITRocks/Framework/Locale/Languages
- Que les codes langues de vos utilisateurs soient bien renseignés
- il suffit alors d’ajouter l’annotation
@translate
aux propriétés dont vous souhaitez voir traduire les valeurs