8143 sujets

Développement web côté serveur, CMS

Bonjour à tous,
Je sais que le sujet à été abordé plein de fois et que j'ai lu des dizaines de post qui en parlaient mais je n'ai pas encore trouvé le saint graal de la traduction. Et mes lectures m'ont fait me poser plus de questions encore.
gettext : c'est lourd.
base de données : Ca fait énormément de requêtes à lui adresser risquant d'être lent et de pénaliser le référencement.
Et puis que mettre dans la BD ? le texte en FR ? en EN ? Un indice ?
Autorise-t-on des balises dans la traduction ? (genre "un <b>gros</b> ballon") ?
Comment savoir qu'un texte ne possède pas de traduction ?
Comment assurer automatiquement ce contrôle ?
Comment gérer un cache de ces trad pour éviter des A/R inutules avec le "stockage".
Quelqu'un a-t-il expérimenté du xml ou autre (json, yaml, ...) ?
Avez-vous essayé un truc en particulier qui a bien/pas bien fonctionné pour vous ?
A vot' bon coeur m'ssieurs dames Smiley cligne
Merci d'avance.
Je comprends que tu ne parles pas de "traduire du texte", mais d'avoir plusieurs versions du même texte dans différentes langues et de choisir la bonne.
Dans le temps j'avais fait ça dans un site qui a été transmis à quelqu'un d'autre, je ne peux donc plus te montrer ce que j'avais fait.
La technique que j'avais choisie était à base de xml
Voici l'adresse d'un exemple http://jpmoularde.free.fr/tests/articles.xml
Il y avait un programme php qui lisait le xml et mettait ça en forme selon la langue de l'utilisateur.
Je crois qu'aujourd'hui je mettrais tout bêtement cela en html dans des sections séparées avec du css pour n'afficher que les bonnes sections. Peut être lire le html en php pour supprimer les sections inutiles pour limiter la charge réseau.
Salut PapyJP,
"Je comprends que tu ne parles pas de "traduire du texte", mais d'avoir plusieurs versions du même texte dans différentes langues et de choisir la bonne."
C'est exactement ça.
J'aime bien l'idée du XML.
En revanche tout dans le html, je trouve ça pas top car je suis presque sûr que ça pénalisera le référencement.
Tu es sûr que c'est du css ?
Ce qui me faire dire ça c'est qu'en affichant le source du document FR, je ne localise pas le texte "Location of the necropolises".
Si c'était fait en CSS ne devrait-on pas voir ce texte dans le source ?
Il y a en partie du css, en partie du JavaScript je ne sais plus très bien quoi est fait comment, ça a plusieurs années...
Modifié par PapyJP (21 May 2020 - 14:36)
J'ai regardé en détail cette histoire de titre de la page.
Le mécanisme de ce site est que pour chaque répertoire il y a un fichier descriptif qui contient des informations en 2 langues, dont le titre de la page.
A la fin du chargement, il y a un script qui remplit les trous avec les infos de ce fichier, y compris des trous dans le <head> ce qui assure que la page est OK pour le référencement.

Ce que je voulais dire à partir du html, c'est que tu pourrais faire un fichier php qui contient le html + du code php qui fait que seule la partie dans la bonne langue est envoyée au client.
Cela te garantit que les versions sont cohérentes, la taille minimum et le référencement sans problème. Tout dépend de qui écrit des infos dans ce site. Si c'est toi, tu fais comme tu le sens. Si tu as une autre personne qui fait le texte, c’est une autre histoire.

Dans le site osirisnet.net, je suis contraint par les compétences techniques du propriétaire du site, qui connaît un minimum de technologie et un maximum de savoir en égyptologie. Il sait lire les hiéroglyphes mais seulement un peu de html, très peu de css et pas du tout de javascript ou de php.
J'ai dû faire des compromis pour trouver une façon acceptable pour lui de présenter les données.
Par exemple le fichier descriptif dont je parle ci-dessus devrait être en JSON, mais je n'ai pas voulu le forcer à comprendre la notation JSON. Finalement je lui ai fait une interface pour remplir ce fichier, mais je n'ai pas changé la notation pour du JSON, même si ça m'a longtemps démangé: changer du jour au lendemain plusieurs centaines de fichiers pour ma satisfaction personnelle, ce serait trop...
Modifié par PapyJP (21 May 2020 - 15:14)
"Le mécanisme de ce site est que pour chaque répertoire il y a un fichier descriptif qui contient des informations en 2 langues, dont le titre de la page.
A la fin du chargement, il y a un script qui remplit les trous avec les infos de ce fichier, y compris des trous dans le <head> ce qui assure que la page est OK pour le référencement."
Je dois t'avouer que j'ai du mal à saisir...

"Ce que je voulais dire à partir du html, c'est que tu pourrais faire un fichier php qui contient le html + du code php qui fait que seule la partie dans la bonne langue est envoyée au client."
Haaaa j'ai pigé.
Mais ça oblige à embarquer toutes les traductions dans un seul et même fichier...
Moi je préfère quand même ton idée d'une "BdD"

Et si tu devais le refaire aujourd'hui, tu ferais comment ?
JSON pour la "BdD" si j'ai bien suivi.
Et injection des textes à la volée dans le php ?
La "clé" pour la traduction, c'est le texte en FR.
Et elle renvoie le texte traduit si on est dans une autre langue.
Pas de balise dans les traductions.
Et peut-être un moyen de surcharge pour traduire le même mot FR en 2 mots distincts EN (en fonction du contexte mais c'est encore assez flou dans mon esprit).
Je t'en ai trop dis d'un coup, tu oublies tout ce que j'ai dit sauf LA question essentielle:
qui va écrire les textes en français, anglaise, chinois et autres langues?
Une personne? plusieurs personnes?

Si ce n'est pas toi, sous quelle forme les textes te seront-ils remis: .txt ? .doc. ? autre chose?

Qui décide de la mise en forme: toi? quelqu'un d'autre?

Une fois que l'on aura répondu à ces questions, on pourra commencer à envisager une solution.

Je t'ai dit comment j'ai fait pour orisinet.net : c'est une histoire de compromis.
Pour l'autre site (celui où j'ai utilisé du XML) je recevais les textes et je les mettais en forme. moyennant quoi c'est une contrainte pour le propriétaire de devoir passer par une tierce personne, le site est resté figé plusieurs années et je l'ai transmis à une personne qui va utiliser un CMS, chose que je ne sais pas faire.
Modifié par PapyJP (21 May 2020 - 16:33)
On peut considérer que c'est moi qui vais traduire les textes.
Mais je suis intéressé de savoir pourquoi tu y attaches tant d'importance ?

Quand tu dis mise en forme, tu parles du css ?
Si oui, là aussi c'est moi.
(Et même question !)

Mais on pourrait imaginer un intermédiaire : Une interface dans laquelle on pourrait saisir les textes et les stocker dans une DB. A chq ouverture de session php, on vérifie si ça a bougé et on produit un JSON/XML/TXT ou autre en vue de l'utiliser via PHP.

Les CMS, leurs bugs, leurs lourdeurs, leurs terminologies = beurk + beurk + beurk.
Après l'essai de 3 d'entre eux j'en suis revenu aux fondamentaux HTML + CSS+ PHP + JS tout ça sur notepad++ comme les vrais, les purs, les durs, les barbus Smiley smile
Mais les vrais développeurs se font rares de nos jours...
Bonjour,

Moi je suis sous node.js mais pour un truc de cette envergure je compte intégrer i18next, disponible sur la plupart des environnements. Là c'est du sérieux et vous ne réinventez pas la roue (ça utilise du json, comme tout le reste aujourd'hui).
OK j'y vois plus clair
L'importance de la question c'est que si c'est quelqu'un d'autre tu dois tenir compte de ce que cette personne sait faire, veut faire elle-même (en général plus qu'elle ne sait faire) et accepte de te déléguer.

C'est quoi un texte et ses traductions dans ton site: des mots? des phrases? des pages entières ?
Selon la nature du texte, on peut choisir des solutions différentes.
Par exemple dans le site osirisnet.net, il y a deux sortes de texte principales:

1) dans la Newsletter mensuelle, https://tests.osirisnet.net/news/n_04_20.htm?fr l'auteur a décidé de n'avoir qu'une seule page comprenant les nouvelles du mois, en général 4 à 10 "news".
En tant que technicien, j'ai attribué à chaque "news" une balise <article>, laquelle contient deux sections, une en français, l'autre en anglais.Les deux sections sont affichées, la "principale" (celle de la langue de l'utilisateur) est en noir, l'autre en marron. Si tu regardes la version anglaise https://tests.osirisnet.net/news/n_04_20.htm?en les couleurs changent.
Par contre les légendes des illustrations sont en noir, et il ne s'affiche que celle de la langue principale, même si les deux sont présentes. C'est la valeur qui suit le ? qui détermine la langue.

2) dans les pages qui contiennent un texte descriptif, par exemple https://tests.osirisnet.net/tombes/pharaons/horemheb/horemheb_pharaon_01.htm les pages sont en double, une par langue, avec une convention de nommage, la page en anglais étant https://tests.osirisnet.net/tombes/pharaons/horemheb/e_horemheb_pharaon_01.htm C'est la présence ou l'absence du "e_" qui permet aux scripts JavaScript de déterminer dans quelle langue il faut travailler

Par contre si on n'a que des mots (ou des expressions courtes), c'est différent.
Effectivement JSON est un outil approprié
Je recommande de ne jamais utiliser les mots en français comme clés, ça conduit toujours à des embrouilles à cause des accents.
Personnellement j'ai fait quelques trucs de ce genre en xml http://jpmoularde.free.fr/tests/lexicon.xml
Oui c'est un genre de lexicon.xml vers lequel je me dirige.
En version JSON par contre.
Les accents je connais le problème mais comme je n'utilise (presque) rien de tout fait, ça fonctionne très bien pour peu que les planètes (le texte et l'encodage) soient alignées.
Modifié par nenex73 (21 May 2020 - 19:06)