[spip-dev] Salvatore 2, le retour

Hello,

A la suite de la migration d’une partie de la zone vers git ce week-end,
un petit point d’étape concernant Salvatore et Trad-lang

# Salvatore

Salvatore a subi un GROS refactoring avec notamment les points notables suivants :

- intégration au plugin trad-lang, dont il était interdépendant, ensapsulé maintenant dans un spip-cli https://git.spip.net/spip-contrib-extensions/trad-lang/src/branch/master/spip-cli
- séparation de la notion de répertoire module et répertoire dépot :
- chaque dépot est checkout une et une seule fois par url+branche dans un sous-dossier unique salvatore/depots/nom-de-dossier-unique
- on sait checkout en svn ou en git
- chaque module est relié à son dépot via un lien symbolique (plusieurs modules peuvent être linkés vers un même dépot) salvatode/modules/id_de_module_unique
- le lien symbolique est un nom unique qui prend en compte l’url du depot, le nom du module, la branche et le sous-dossier, ce qui permet de traduire potentiellement le même module qui serait éclaté en plusieurs plugins (ex newsletters pour ne pas le nommé, mais potentiellement d’autres)
- l’id unique d’un module est désormais ajouté au fichier xml généré par salvatore comme ici https://git.spip.net/spip-contrib-extensions/scssphp/src/branch/master/lang/paquet-scssphp.xml (ceci est un test de validation, le nouveau salvatore n’est pas encore en prod)
- si on change l’url d’un repo dans le fichiers de traduction (passage de svn à git), salvatore s’y retrouve grace l’id présent dans le fichier et garde l’historique
- salvatore sait aussi commit et pousser en git et en svn (en gérant la problématique des auteurs en git)
- le format du fichier de traductions évolue (l’ancien format reste supporté pour la migration) https://git.spip.net/spip-contrib-extensions/trad-lang/src/branch/master/inc/salvatore.php#L151 pour pouvoir spécifier la méthode (git ou svn), la branche et le sous-dossier dans lequel est le module de langue

La structure de la base de donnée au aussi évolué, pour intégrer un dir_module unique sur chaque module de langue, et l’unicité du champ module n’étant plus assurée les index ont évolués et les fonctions qui traitent les modules de langue doivent être appelées un utilisant la clé primaire et non plus le champ module pour désigner le module concerné.

Une procédure de migration est intégrée, utilisable en spip-cli, pour migrer toute la base avec les modules existants et le fichier de traductions de la zone et permettre de tout recheckout suivant le nouveau format sans perdre d’historique

Chez-moi-ça-marche (tm) : En l’état le nouveau salvatore marche en test et est donc prêt pour une mise en fonction sous surveillance (et debug finaux)

MAIS

# Trad-lang

Comme expliqué plus haut, le fait qu’un module ne soit plus unique impacte la structure de la base et les signatures de fonction.
Il faut donc maintenant revoir aussi trad-lang pour qu’il s’adapte à cette nouvelle logique et gérer la possibilité de plusieurs modules.

Du coup cela veut dire refonte technique, mais aussi passage en 3.2 a minima, et donc un peu de boulot sur la partie squelette, sans laquelle on ne peut pas encore mettre le nouveau salvatore en route.

C’est donc un travail pour les prochaines semaines, stay tuned

# le fichier traductions.txt

Actuellement le fichier est hébergé à la racine de la zone, comme les fichiers de l’empaqueteur.
Dans le cadre de la migration vers git, il me semble qu’il faudrait faire un nouveau projet « archivelist » (ou autre, nomenklatura à l’aide!) dans https://git.spip.net/spip-contrib-outils qui regroupera ce fichier traductions.txt mais aussi les fichiers archivelist.

On peut amha se dispenser d’une synchro avec la zone sur ces fichiers et décider que le projet git fait référence.

Yop,

Salvatore

Salvatore a subi un GROS refactoring avec notamment les points notables suivants :

Chez-moi-ça-marche ™ : En l’état le nouveau salvatore marche en test et est donc prêt pour une mise en fonction sous surveillance (et debug finaux)

Trop cool.
J’ai toujours des vieux besoins sur les items de langue, je ne sais pas si ton refactoring permettrait de mieux les adresser:

  • renommer des items sans perdre les traductions (faut bien sur une table de correspondance quelque part)
  • couper un module de langue en deux en répartissant les items sans perdre aussi les traductions.

MAIS

Trad-lang

Comme expliqué plus haut, le fait qu’un module ne soit plus unique impacte la structure de la base et les signatures de fonction.
Il faut donc maintenant revoir aussi trad-lang pour qu’il s’adapte à cette nouvelle logique et gérer la possibilité de plusieurs modules.

Du coup cela veut dire refonte technique, mais aussi passage en 3.2 a minima, et donc un peu de boulot sur la partie squelette, sans laquelle on ne peut pas encore mettre le nouveau salvatore en route.

C’est donc un travail pour les prochaines semaines, stay tuned

Donc tout basculera d’un coup ?
Comment tu fais pour tester Salvatore sans Trad-Lang alors ?
Ou j’ai rien compris ?

le fichier traductions.txt

Actuellement le fichier est hébergé à la racine de la zone, comme les fichiers de l’empaqueteur.
Dans le cadre de la migration vers git, il me semble qu’il faudrait faire un nouveau projet « archivelist » (ou autre, nomenklatura à l’aide!) dans https://git.spip.net/spip-contrib-outils qui regroupera ce fichier traductions.txt mais aussi les fichiers archivelist.

La nomenklatura dit oui à archivelist qui est suffisamment connu et compréhensible.
Et oui pour tout dedans et oui pour l’organisation spip-contrib-outils.

On peut amha se dispenser d’une synchro avec la zone sur ces fichiers et décider que le projet git fait référence.

Clairement oui.

Yop,

> Le lun. 20 janv. 2020 à 15:42, Cerdic <cedric@yterium.com> a écrit :
> > # Salvatore
> >
> > Salvatore a subi un GROS refactoring avec notamment les points notables suivants :
> >
> > Chez-moi-ça-marche (tm) : En l’état le nouveau salvatore marche en test et est donc prêt pour une mise en fonction sous surveillance (et debug finaux)
> >
>
> Trop cool.
> J'ai toujours des vieux besoins sur les items de langue, je ne sais pas si ton refactoring permettrait de mieux les adresser:
> - renommer des items sans perdre les traductions (faut bien sur une table de correspondance quelque part)

A la lecture du code, je pense que c’est une feature qui existe déjà en pratique :
Quand une nouvelle chaine apparait, salvatore regarde si il a pas déjà une autre en base avec le même contenu, et si c’est le cas il duplique les traductions pour que la nouvelle chaine récupère toutes les trads de celle existante.
Donc si tu renommes une chaine il va créer la nouvelle, dupliquer les trads, et mettre l’ancienne au grenier, ce qui in fine n’est pas si mal.

Mais je note qu’il faut tester ce cas pour être certain que ça marche bien, et si besoin corriger le peu qu’il manque

> - couper un module de langue en deux en répartissant les items sans perdre aussi les traductions.

hmm je pense qu’on pourrait aussi le gérer : si une chaine n’est pas en base (nouveau module par exemple), on cherche si on trouve la même chaine avec le même contenu dans un autre module, et dans ce cas on duplique, et zou (et l’ancienne sera mise au grenier).

Donc je le note pour le tester aussi, mais a priori jouable

>
>
> > MAIS
> >
> > # Trad-lang
> >
> > Comme expliqué plus haut, le fait qu’un module ne soit plus unique impacte la structure de la base et les signatures de fonction.
> > Il faut donc maintenant revoir aussi trad-lang pour qu’il s’adapte à cette nouvelle logique et gérer la possibilité de plusieurs modules.
> >
> > Du coup cela veut dire refonte technique, mais aussi passage en 3.2 a minima, et donc un peu de boulot sur la partie squelette, sans laquelle on ne peut pas encore mettre le nouveau salvatore en route.
> >
> > C’est donc un travail pour les prochaines semaines, stay tuned
> >
>
> Donc tout basculera d'un coup ?

Oui

> Comment tu fais pour tester Salvatore sans Trad-Lang alors ?
> Ou j'ai rien compris ?

Je teste sur une copie locale avec la base, mais sans interface d’édition fonctionnelle, ce qui pour les tests de salvatore ne gêne pas
(enfin j’ai peut-être pas tout testé du coup, mais en principe suffisament pour debug le refactoring de salvatore, sachant que les logiques et traitement sont restés identiques en principe)

>
> >
> > # le fichier traductions.txt
> >
> > Actuellement le fichier est hébergé à la racine de la zone, comme les fichiers de l’empaqueteur.
> > Dans le cadre de la migration vers git, il me semble qu’il faudrait faire un nouveau projet « archivelist » (ou autre, nomenklatura à l’aide!) dans spip-contrib-outils · GitLab qui regroupera ce fichier traductions.txt mais aussi les fichiers archivelist.
>
> La nomenklatura dit oui à archivelist qui est suffisamment connu et compréhensible.
> Et oui pour tout dedans et oui pour l'organisation spip-contrib-outils.
>
>
> >
> > On peut amha se dispenser d’une synchro avec la zone sur ces fichiers et décider que le projet git fait référence.
>
> Clairement oui.

Perfect

Cédric

(Clap) (clap) (clap)

> Yop,
>
>
> > Le lun. 20 janv. 2020 à 15:42, Cerdic <cedric@yterium.com> a écrit :
> > > # Salvatore
> > >
> > > Salvatore a subi un GROS refactoring avec notamment les points notables suivants :
> > >
> > > Chez-moi-ça-marche (tm) : En l’état le nouveau salvatore marche en test et est donc prêt pour une mise en fonction sous surveillance (et debug finaux)
> > >
> >
> > Trop cool.
> > J'ai toujours des vieux besoins sur les items de langue, je ne sais pas si ton refactoring permettrait de mieux les adresser:
> > - renommer des items sans perdre les traductions (faut bien sur une table de correspondance quelque part)

A la lecture du code, je pense que c’est une feature qui existe déjà en pratique :
Quand une nouvelle chaine apparait, salvatore regarde si il a pas déjà une autre en base avec le même contenu, et si c’est le cas il duplique les traductions pour que la nouvelle chaine récupère toutes les trads de celle existante.
Donc si tu renommes une chaine il va créer la nouvelle, dupliquer les trads, et mettre l’ancienne au grenier, ce qui in fine n’est pas si mal.

Cela a été trop peu utilisé mais ça avait effectivement été développé

Mais je note qu’il faut tester ce cas pour être certain que ça marche bien, et si besoin corriger le peu qu’il manque

> > - couper un module de langue en deux en répartissant les items sans perdre aussi les traductions.

hmm je pense qu’on pourrait aussi le gérer : si une chaine n’est pas en base (nouveau module par exemple), on cherche si on trouve la même chaine avec le même contenu dans un autre module, et dans ce cas on duplique, et zou (et l’ancienne sera mise au grenier).

Donc je le note pour le tester aussi, mais a priori jouable

Ce serait vraiment top, du coup cela pourrait également être valable pour de la proposition de traduction depuis des chaines d’autres modules. On pourrait stocker cela dans un statut à valider (qui doit déjà exister) mais serait quand même exporté.

Q.

Génial tout ce boulot !
Est-ce qu’il sera maintenant possible de supprimer des fichiers de langue mal créés ? On avait eu le souci et il n’y avait eu que Kent1 capable de nettoyer ça… Ceci-dit c’est très rare…
Merci,
Jacques