Quel est le nombre maximal de langues supportées par Nuxeo Platform ?


Thu 03 November 2016 Par Michael Vachette

On m'a récemment demandé comment faire pour gérer la localisation des vocabulaires dans l'application au lieu d'utiliser les fichiers d'internationalisation déployés avec le reste de la configuration. À ma grande surprise, c'est possible depuis la version 6.0. Cette fonctionnalité est vraiment passée inaperçu et très peu de personnes la connaissent (au moins je n'étais pas le seul chez Nuxeo à l'ignorer !).

Les vocabulaires sont des tables de consultation que vous pouvez utiliser avec des widgets de suggestion dans Nuxeo Platform.


Widget de Suggestion
Widget de suggestion

Chaque entrée est généralement composée d'une clé et d'une étiquette, mais si vous avez des utilisateurs dans plusieurs langues, vous aurez certainement envie que les étiquettes soient localisées pour chacune de ces langues. Comme ce n'est vraiment pas marrant de mettre à jour la configuration pour seulement ajouter/changer une entrée et ses traductions, Nuxeo Platform vous permet de le faire directement dans l'application et vous propose également un endpoint d'API pour le faire. Mais vous devez commencer par configurer le vocabulaire.

En fait, le terme vocabulaire désigne un concept abstrait plus générique appelé répertoire. La première étape de configuration d'un nouveau répertoire est de créer un schéma contenant un paramètre pour chaque langue à supporter. Nous allons utiliser l'anglais, le français, l'espagnol et l'allemand dans notre exemple.

<?xml version="1.0"?>
<xs:schema
    targetNamespace="http://www.nuxeo.org/ecm/schemas/customl10nxvocabulary"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="id" type="xs:string"/>
    <xs:element name="parent" type="xs:string"/>
    <xs:element name="label_en" type="xs:string"/>
    <xs:element name="label_fr" type="xs:string"/>
    <xs:element name="label_es" type="xs:string"/>
    <xs:element name="label_de" type="xs:string"/>
    <xs:element name="obsolete" type="xs:integer" default="0"/>
</xs:schema>

Notez que le même schéma peut être réutilisé pour plusieurs vocabulaires. Il faut ensuite associer notre répertoire avec le point d'extension correspondant.

<component name="org.nuxeo.samples.vocabularies.l10n.directory">
    <extension point="directories" target="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory">
        <directory name="customl10ncoverage">
            <schema>customl10nxvocabulary</schema>
            <parentDirectory>customl10nxvocabulary</parentDirectory>
            <dataSource>java:/nxsqldirectory</dataSource>
            <cacheTimeout>3600</cacheTimeout>
            <cacheMaxSize>1000</cacheMaxSize>
            <table>customl10nxvocabulary</table>
            <idField>id</idField>
            <autoincrementIdField>false</autoincrementIdField>
            <createTablePolicy>on_missing_columns</createTablePolicy>
        </directory>
    </extension>
</component>

C'est suffisant pour nous permettre d'utiliser l'endpoint d'API Directory pour récupérer, ajouter, mettre à jour ou supprimer des entrées dans notre nouveau répertoire customl10ncoverage. Plutôt facile, non ?


Configuration de l
Configuration de l'API Nuxeo

Par ailleurs, le vocabulaire peut également être utilisé avec le widget de suggestion dans l'interface utilisateur. On peut voir ci-dessous que les étiquettes sont localisées lorsque l'on change les informations régionales de l'utilisateur.


Widget de suggestion avec étiquettes localisées
Widget de suggestion avec étiquettes localisées (anglais)


Widget de suggestion avec étiquettes localisées
Widget de suggestion avec étiquettes localisées (allemand)

La configuration du widget avec Nuxeo Studio est incroyablement facile. Il suffit d'utiliser le widget suggestOneDirectory avec un paramètre de type chaîne, de définir le nom du vocabulaire (avec un paramètre personnalisé) et de s'assurer que les paramètres localize et Activate database localization sont activés.


Éditeur de widget dans Nuxeo Studio
Éditeur de widget dans Nuxeo Studio

Allons encore un peu plus loin et faisons en sorte que le vocabulaire puisse être géré depuis le centre d'administration. Pour ce faire, il faut définir une organisation et l'enregistrer. Je ne vais pas rentrer dans les détails pour cette partie, mais si vous voulez en savoir plus, la configuration XML est disponible ici.


Éditeur de vocabulaire dans l
Éditeur de vocabulaire dans l'Admin Center

Enfin, rien n'est gravé dans le marbre et vous pouvez tout à fait ajouter d'autres langues ultérieurement en mettant à jour le schéma et l'organisation dans le centre d'administration. Cet exemple est disponible en intégralité dans notre référentiel GitHub.


Tagged: Nuxeo Platform, How to