17.2.4 Publier et mettre à jour les catalogues

Les catalogues doivent être déposés dans des sous-répertoires de

locale/<lang>/

Le répertoire <lang> est l'identifiant de la locale sur deux lettres :

  • fr : français
  • en : anglais

17.2.4.1 Catalogues php

Les catalogues sources (.po) doivent être publiés sur le serveur dans le répertoire :3.2.12

locale/<lang>/LC_MESSAGES/src/

Les catalogues binaires (.mo) doivent être publiés sur le serveur dans le répertoire :

locale/<lang>/LC_MESSAGES/

Les catalogues sources sont prioritaires aux catalogues binaires. Cela implique que s'il y a des clefs dupliquées, c'est la traduction des fichiers sources qui est utilisée.

17.2.4.2 Catalogues javascript

Les catalogues sources (.po) doivent être publiés sur le serveur dans le répertoire :

locale/<lang>/js/src/

Les catalogues binaires (.mo) doivent être publiés sur le serveur dans le répertoire :

locale/<lang>/js/

Les catalogues sources sont prioritaires aux catalogues binaires. Cela implique que s'il y a des clefs dupliquées c'est la traduction des fichiers sources qui sera utilisée.

17.2.4.2.1 Catalogues javascript au format JSON

Lors de la publication, ces fichiers .po servent d'entrées pour la production du catalogue JSON en utilisant le programme programs/po2js.

Le fichier JSON correspondant est un objet où les clefs de traduction sont les index.

Exemple :

{
    "Hello" : "Bonjour",
    "The world" : "Le monde"
}

3.2.19 Les traductions avec contexte sont présentes dans le fichiers catalogue sous l'index _msgctxt_. Cet index contient des sous-index par contexte.

Exemple : le catalogue correspondant au code javascript suivant :

var message=_("Hello")+_("World");
var other=___("Hello","myFirstContext")+___("Today","myFirstContext");
var alternative=___("Hello","mySecondContext")+___("Clear","mySecondContext");

est :

{
    "Hello" : "Bonjour",
    "The world" : "Le monde"
    "_msgctxt_" : {
        "myFirstContext" : {
            "Hello" : "Salut"
            "Today" : "Aujourd'hui"
        },
        "mySecondContext" : {
            "Hello" : "Bienvenue à tous"
            "Clear" : "Temps clair"
        }
    }
}

17.2.4.3 Prise en compte des nouveaux catalogues

Pour prendre en compte les nouvelles traductions, il faut lancer le programme :

$ ./whattext

sur le serveur depuis le répertoire d'installation.

Ce programme fusionne l'ensemble des catalogues dans un catalogue principal. C'est ce catalogue qui est chargé lors de l'exécution des actions et scripts Dynacase.

Ce programme va également générer les catalogues au format JSON en utilisant le programme programs/po2js. Ce sont ces catalogues qui sont utilisables dans le code javascript.

17.2.4.4 Header

Lors de la génération du catalogue principal, c'est l'entête utilisée dans le fichier header.po qui défini l'entête et donc la forme plurielle utilisée.

Ce fichier définit notamment les formes plurielles au moyen de l'entête Plural-Forms

msgid ""
msgstr ""
"Project-Id-Version: Test 1.0\n"
"POT-Creation-Date: 2013-10-24 17:28+0200\n"
"PO-Revision-Date: 2013-10-25 08:53+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"

Pour un même langage, la définition des formes plurielles de tous les catalogues doivent être identique. Un catalogue français ne peut donc avoir deux plurielles alors qu'un autre en défini trois.

Pour le français la définition de la forme plurielle doit être :

"Plural-Forms: nplurals=2; plural=n>1;\n"

Pour l'anglais la définition de la forme plurielle doit être :

"Plural-Forms: nplurals=2; plural=n != 1;\n"

17.2.4.5 Remarques

Note : les catalogues binaires peuvent être obtenus par le programme msgfmt et inversement les catalogues sources peuvent être obtenus par le programme msgunfmt.

×
mis à jour