Chaînes de langues SPIP
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 676d51d3. 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
- 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.