Chaînes de langues SPIP #5490

Open
opened 2 months ago by marcimat · 11 comments
Owner

2 notes :

1. Simplifier les fichiers actuels

faire que les fichiers de langues actuels retournent directement un array (cle => valeur). C’est pris en compte par SPIP 4.1+ depuis 676d51d329. Adapter trad.spip.net (salvatore) pour le prendre en compte.

2. Envisager Mozilla Fluent

Fluent (fichiers .ftl) https://projectfluent.org/ est un mécanisme récent pour les traductions, avec une gestion facilité d’écriture, notamment pour gérer les pluriels, les nombres, les dates.

Un guide (en) pour les traducteurs et traductrices : https://mozilla-l10n.github.io/localizer-documentation/tools/fluent/basic_syntax.html

Exemple d’écriture

# Simple things are simple.
hello-user = Hello, {$userName}!

# Complex things are possible.
shared-photos =
    {$userName} {$photoCount ->
        [one] added a new photo
       *[other] added {$photoCount} new photos
    } to {$userGender ->
        [male] his stream
        [female] her stream
       *[other] their stream
    }.

Ça permettrait au moins de gérer correctement les pluriels pour chaque langue, tout en conservant une seule clé de langue : c’est dans le contenu de la chaine de langue que c’est géré.


On en discutait là il y a quelques années https://discuter.spip.net/t/spip-dev-outil-de-traduction-fluent-de-mozilla/17524

Le projet s’est tranquillement développé. Il y a un portage presque complet en PHP https://github.com/jrmajor/fluent-php

De même que dans d’autres outils, notamment JS

On trouve des colorieurs de syntaxe (mais pas encore partout)
Github et Gitlab colorient la syntaxe (pas Gitea :/)

Et a priori pas highlight.js encore non plus.

2 notes : ### 1. Simplifier les fichiers actuels faire que les fichiers de langues actuels retournent directement un array (cle => valeur). C’est pris en compte par SPIP 4.1+ depuis 676d51d3291205c825. Adapter trad.spip.net (salvatore) pour le prendre en compte. ### 2. Envisager Mozilla Fluent Fluent (fichiers .ftl) https://projectfluent.org/ est un mécanisme récent pour les traductions, avec une gestion facilité d’écriture, notamment pour gérer les pluriels, les nombres, les dates. Un guide (en) pour les traducteurs et traductrices : https://mozilla-l10n.github.io/localizer-documentation/tools/fluent/basic_syntax.html Exemple d’écriture ```ftl # Simple things are simple. hello-user = Hello, {$userName}! # Complex things are possible. shared-photos = {$userName} {$photoCount -> [one] added a new photo *[other] added {$photoCount} new photos } to {$userGender -> [male] his stream [female] her stream *[other] their stream }. ``` Ça permettrait au moins de gérer correctement les pluriels pour chaque langue, tout en conservant une seule clé de langue : c’est dans le contenu de la chaine de langue que c’est géré. ---- On en discutait là il y a quelques années https://discuter.spip.net/t/spip-dev-outil-de-traduction-fluent-de-mozilla/17524 Le projet s’est tranquillement développé. Il y a un portage presque complet en PHP https://github.com/jrmajor/fluent-php De même que dans d’autres outils, notamment JS - Vanilla (ou React) https://github.com/projectfluent/fluent.js/ - Vue.js https://fluent-vue.demivan.me/ On trouve des colorieurs de syntaxe (mais pas encore partout) Github et Gitlab colorient la syntaxe (pas Gitea :/) - Sublime Text : https://github.com/SirNickolas/SublimeFluent - VS Code : https://github.com/macabeus/vscode-fluent - PHP Storm (intellij) : https://github.com/oovm/fluent-intellij - Vim : https://github.com/projectfluent/fluent.vim - StructuredText : https://invent.kde.org/frameworks/syntax-highlighting/-/blob/master/data/syntax/fluent.xml - Rouge (sur Gitlab) https://github.com/rouge-ruby/rouge/blob/master/lib/rouge/lexers/fluent.rb - Linguist (sur Github) https://github.com/github/linguist/blob/master/vendor/README.md utilise sur celui pour VSCode - Cf https://github.com/projectfluent/fluent/issues/312 Et a priori pas `highlight.js` encore non plus.
marcimat added this to the 5.0 milestone 2 months ago
marcimat added the
amélioration
label 2 months ago
Poster
Owner

Notons que sur projectfluent.org ils utilisent l’éditeur ACE https://ace.c9.io/ qui colorie en éditant (commme Code Mirror quoi)

Il n’intègre pas directement la coloration ftl, mais c’est Fluent qui la définie : https://github.com/projectfluent/play/blob/master/client/editor-mode-fluent.js ou là https://github.com/projectfluent/projectfluent.github.io/blob/devel/src/editor-mode-fluent.js (a priori le même code pour Play et le site de présentation)

Notons que sur projectfluent.org ils utilisent l’éditeur ACE https://ace.c9.io/ qui colorie en éditant (commme Code Mirror quoi) Il n’intègre pas directement la coloration ftl, mais c’est Fluent qui la définie : https://github.com/projectfluent/play/blob/master/client/editor-mode-fluent.js ou là https://github.com/projectfluent/projectfluent.github.io/blob/devel/src/editor-mode-fluent.js (a priori le même code pour Play et le site de présentation)
b_b commented 1 month ago
Owner
  1. +1

  2. sacré chantier, notamment pour l'adaptation de trad.spip.net, mais ça serait bien cool d'utiliser un truc "normé" et utiliser par les autres pour une fois ^^

1) +1 2) sacré chantier, notamment pour l'adaptation de trad.spip.net, mais ça serait bien cool d'utiliser un truc "normé" et utiliser par les autres pour une fois ^^
Poster
Owner
  1. Noter que Mozilla utilise un outil dédié, Pontoon pour ça : https://github.com/mozilla/pontoon

https://pontoon.mozilla.org/fr/

2. Noter que Mozilla utilise un outil dédié, Pontoon pour ça : https://github.com/mozilla/pontoon https://pontoon.mozilla.org/fr/

Oui c'est très intéressant. Dans Fluent la possibilité de "Asymmetric Localization", en fonction de la langue on ne traduit pas les mêmes choses
English:

tabs-close-tooltip = {$tabCount ->
    [one] Close {$tabCount} tab
   *[other] Close {$tabCount} tabs
}

Polish:

tabs-close-tooltip = {$tabCount ->
    [one] Zamknij kartę
    [few] Zamknij {$tabCount} karty
   *[many] Zamknij { $tabCount } kart
}

C'est un chantier vraiment énorme !

A signaler (ça m'a fait penser à spip.net aussi) que pour traduire les articles de MDN ils ont d'autres outils ( Yari https://developer.mozilla.org/en-US/docs/MDN/Community/Contributing/Translated_content) et qu'ils ont gelé des langues. Celles qu'on peut mettre à jour sont seulement celles qui ont une équipe de mainteneurs.

Oui c'est très intéressant. Dans Fluent la possibilité de "Asymmetric Localization", en fonction de la langue on ne traduit pas les mêmes choses English: ``` tabs-close-tooltip = {$tabCount -> [one] Close {$tabCount} tab *[other] Close {$tabCount} tabs } ``` Polish: ``` tabs-close-tooltip = {$tabCount -> [one] Zamknij kartę [few] Zamknij {$tabCount} karty *[many] Zamknij { $tabCount } kart } ``` C'est un chantier vraiment énorme ! A signaler (ça m'a fait penser à spip.net aussi) que pour traduire les articles de MDN ils ont d'autres outils ( Yari https://developer.mozilla.org/en-US/docs/MDN/Community/Contributing/Translated_content) et qu'ils ont gelé des langues. Celles qu'on peut mettre à jour sont seulement celles qui ont une équipe de mainteneurs.
Owner

Oui ça parait bien tout ça.
Concernant les pluriels c'est un sujet qu'on avait abordé il y a pas mal d'années et j'avais fait un petit plugin nommé pluriel pour essayer de gérer cela plus correctement dans spip.

C'est sur qu'aujourd'hui un outil comme Fluent pourrait être très utile et devrait simplifier la maintenance.
Beau chantier auquel j'adhère.

Sinon, puisqu'on parle de langue, j'avais proposé il y a 4 ans une refonte des étiquettes de langue qui sont parfois très exotiques dans spip et une liste d'actions pour remettre cela en ordre.

Tous les articles sont dans la rubrique https://blog.smellup.net/spip.php?rubrique41 et les actions définies dans l'article https://blog.smellup.net/spip.php?article108. Ca pourrait être un complément sympa au chantier des items.

Oui ça parait bien tout ça. Concernant les pluriels c'est un sujet qu'on avait abordé il y a pas mal d'années et j'avais fait un petit plugin nommé pluriel pour essayer de gérer cela plus correctement dans spip. C'est sur qu'aujourd'hui un outil comme Fluent pourrait être très utile et devrait simplifier la maintenance. Beau chantier auquel j'adhère. Sinon, puisqu'on parle de langue, j'avais proposé il y a 4 ans une refonte des étiquettes de langue qui sont parfois très exotiques dans spip et une liste d'actions pour remettre cela en ordre. Tous les articles sont dans la rubrique https://blog.smellup.net/spip.php?rubrique41 et les actions définies dans l'article https://blog.smellup.net/spip.php?article108. Ca pourrait être un complément sympa au chantier des items.
Poster
Owner

Notons https://github.com/mbiesiad/awesome-translations aussi pour une liste de liens / d’outils de traductions
Et https://wiki.nikiv.dev/languages/internationalization

Notons https://github.com/mbiesiad/awesome-translations aussi pour une liste de liens / d’outils de traductions Et https://wiki.nikiv.dev/languages/internationalization
Owner

@marcimat as-tu noté un plugin PHPstorm pour la coloration du code Fluent ?
Moi je ne trouve pas.

@marcimat as-tu noté un plugin PHPstorm pour la coloration du code Fluent ? Moi je ne trouve pas.
Poster
Owner

Je n’utilise plus du tout PHP-Storm… VSCode me convient farpaitement. Du coup je n’ai pas cherché…
https://plugins.jetbrains.com/plugin/18416-fluent-language ?

Je n’utilise plus du tout PHP-Storm… VSCode me convient farpaitement. Du coup je n’ai pas cherché… https://plugins.jetbrains.com/plugin/18416-fluent-language ?
Owner

Non ça c'est un truc différent.
Bon c'est chiant ça car je ne vais pas changer d'éditeur et c'est vrai que c'est aussi un truc à considérer.

Non ça c'est un truc différent. Bon c'est chiant ça car je ne vais pas changer d'éditeur et c'est vrai que c'est aussi un truc à considérer.
Poster
Owner

bah si @Eric c’est bien pour PHP-Storm aussi Intellij !

bah si @Eric c’est bien pour PHP-Storm aussi Intellij !
Poster
Owner

Notons cet outil PHP https://github.com/boxblinkracer/phpunuhi qui gère la synchro de traductions (notament en array PHP (point 1) — mais pas fluent), et peut aussi générer des traductions (interface html, ou via api google ou deepl).

Notons cet outil PHP https://github.com/boxblinkracer/phpunuhi qui gère la synchro de traductions (notament en array PHP (point 1) — mais pas fluent), et peut aussi générer des traductions (interface html, ou via api google ou deepl).
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.