[spip-dev] Images pour documents multilingues. Mais les titres ?

J'étais très content aujourd'hui de découvrir que les images d'un article
sont conservées lorsqu'on fait une traduction de l'article en utilisant le
nouveau bouton "écrire une nouvelle traduction de cet article".

Ma joie a été tempérée un peu depuis, car je me suis rendu compte que si
l'image n'avait pas besoin d'une traduction quand je la recopie dans une
autre langue, ce n'est pas le cas de la légende. Et le titre, et la
description sont évidemment conservée avec l'image dans la même ligne de la
base de données.

L'image donc est "multilingue" ; les textes associés ne le sont pas.

Est-ce que pour une version future de Spip il serait peut-être possible de
séparer "spip_documents" en 2 tables : une qui donne les aspects physiques
d'une image (URL, taille), l'autre qui donne le lien de l'image vers un
document, son titre et description ?

L'intérêt serait non seulement d'avoir seulement un fichier de chaque image
sur la disque, mais aussi de pouvoir "rafraîchir" un site très vite : en
changeant une image, la même page serait changée dans toutes les langues.
(Par exemple, sur une page qui décrit les rencontres de jeunes ici, je
pourrais mettre, une après l'autre, plusieurs photos avec le même titre
"Rencontres de jeunes à Taizé" en les changeant chaque mois.)

(et même sans titre, c'est déjà très bien !)

merci, Paolo

C'est exactement la remarque que j'avais fait par rapport aux pièces jointes.

Une pièce jointes peut-être
soit "indépendante de la langue (image)",
soit monolingue (un texte),
soit multi-lingue (un texte bi-lingue).

Dans tous les cas, il peut être intéressant d'avoir une autre entrée avec le titre et la description...

Ceci pourrait permettre également de récupérer une image déjà utilisé dans un autre article et lui donné un autre commentaire.

David GLAUDE

Paolo wrote:

Bonjour à tous,

En ce moment une discution à lieu sur la liste spip-user (spip@rezo.net)
et un solution à été proposé.

http://news.gmane.org/find-root.php?message_id=<btrrnh%24jtl%241%40sea.gmane.org>

Il ne reste donc plus qu'à la developper... :wink:

ça a donné ça :

Il faut remplir le champ avec les bonnes traductions selon le formalisme suivant :
   #en#anarchy# #fr#anarchie# #eo#anàrky?#
ou
   #en#anarchy#
   #fr#anarchie#
   #eo#anàrky?#

Des phrases ou suites de paragraphes complets sont possibles :
ex : #en#anarchy in the uk#

Le filtre suivant est défini dans mes_fonctions.php3 :

function traduc($texte, $lang)
{
       if (ereg ("#$lang#([^#]*)", $texte, $regs))
          return $regs[1];
       else return $texte;
}

A utiliser ainsi dans un squelette :
[(#TEXTE|traduc{#LANG})]

Pour les motclés, les descriptifs ou titres des documents, pour tous les champs ...

Je pense qu'on peut améliorer :
- je me demande si il vaut mieux pas retourner rien du tout ou le texte
d'une langue par défaut en cas d'échec.
- on pourrait blinder un peu le formalisme ou complexifier cette fonction afin de permettre quand même l'emploi des # dans le texte (car là c'est plus possible)

JLuc

function traduc($texte, $lang)
{
       if (ereg ("#$lang#([^#]*)", $texte, $regs))
          return $regs[1];
       else return $texte;
}

A utiliser ainsi :
#TEXTE|traduc(#LANG)
ça récupère direct la bonne traduction si on a mis dans le champ les
bonnes traductions selon le formalisme suivant :
   #en#anarchy# #fr#anarchie# #eo#anarky#
ou
   #en#anarchy#
   #fr#anarchie#
   #eo#anarky#

Des phrases ou suites de paragraphes complets sont possibles :
ex : #en#anarchy in the uk#

C'est utilisable pour les motclés, les descriptifs ou titres des
documents, pour tous les champs en fait...

Toutefois
- je me demande si il vaut mieux pas retourner rien du tout ou le texte
d'une langue par défaut en cas d'échec.
- on pourrait blinder le formalisme ou complexifier cette fonction afin
de permettre quand même l'emploi des # dans le texte (car là c'est plus
possible). Ici c'est donc surtout adapté aux petits textes.

Très risqué non l'utilisation de # car c'est aussi utilisé en CSS pour
définir un identifiant de bloc ?

"JLuc" <jluc@no-log.org> a écrit dans le message de news:
btsirc$h5k$1@sea.gmane.org...
ça a donné ça :

Il faut remplir le champ avec les bonnes traductions selon le formalisme
suivant :
   #en#anarchy# #fr#anarchie# #eo#anàrky?#
ou
   #en#anarchy#
   #fr#anarchie#
   #eo#anàrky?#

Des phrases ou suites de paragraphes complets sont possibles :
ex : #en#anarchy in the uk#

Le filtre suivant est défini dans mes_fonctions.php3 :

function traduc($texte, $lang)
{
       if (ereg ("#$lang#([^#]*)", $texte, $regs))
          return $regs[1];
       else return $texte;
}

A utiliser ainsi dans un squelette :
[(#TEXTE|traduc{#LANG})]

Pour les motclés, les descriptifs ou titres des documents, pour tous les
champs ...

Je pense qu'on peut améliorer :
- je me demande si il vaut mieux pas retourner rien du tout ou le texte
d'une langue par défaut en cas d'échec.
- on pourrait blinder un peu le formalisme ou complexifier cette
fonction afin de permettre quand même l'emploi des # dans le texte (car
là c'est plus possible)

JLuc

J'avais proposé un formalisme de création des champs multilingues avec le filtre idoine.

function traduire($texte, $lang)
{
      if (ereg ("#$lang#([^#]*)", $texte, $regs))
         return $regs[1];
      else return $texte;
}

A l'époque, j'avais testé le filtre mais pas l'usage "in situ".
ni in bouclu.
eh ben logique ça marche bien pour [(#TEXTE|traduire{"fr"}]
mais on me fait remarquer que ça marche pas pour [(#TEXTE|traduire{#LANG})]
:frowning:
C'est dommage car ce serait bien pratique.
Des idées ?
JLuc

Plusieurs remarques :
- la syntaxe avec des #, bof bof
- rends le paramètres $lang optionnel
- si $lang n'est pas passé en paramètre, utilise $GLOBALS['spip_lang'] à
la place

Du coup tu pourras utiliser :
- [(#TEXTE|traduire{"fr"})] pour traduire dans une langue fixée
- [(#TEXTE|traduire)] pour traduire dans la langue courante ("#LANG")

A tester...

Antoine.

Antoine a écrit :

- la syntaxe avec des #, bof bof
- rends le paramètres $lang optionnel
- si $lang n'est pas passé en paramètre, utilise $GLOBALS['spip_lang'] à
la place
Du coup tu pourras utiliser :
- [(#TEXTE|traduire{"fr"})] pour traduire dans une langue fixée
- [(#TEXTE|traduire)] pour traduire dans la langue courante ("#LANG")

> à tester
Merci, c'est joliement prometteur.
#fr#T'as une suggestion à la place de cte syntaxe ?#
JLuc

Une idée sympa : utiliser les intertitres.

        {{{:fr:}}}
        
        blabla
        
        {{{un intertitre normal}}}
        
        une théorie intéressante
        
        {{{:en:}}}
        
        blahblah
        
        {{{a normal heading}}}
        
        an interesting theory

a+

Antoine.

Mmmm...
pas commode la syntaxe des {{{: J'ai l'impression que SPIP m'insère
automatiquement un espace après les ":"
Je pourrais sûrement l'inhiber dans le squelette...

Sinon la proposition de ne pas passer de paramètre fonctionne bien.

Non, dans ce cas choisir plutôt :

{{{-fr-}}}

...

{{{-en-}}}

Le principal est d'avoir quelque chose de lisible, même avec le filtre
par défaut.

Amicalement

Antoine.