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.)
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)
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.
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)
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})]
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")
- 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
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.