[RESOLU] Regex de traduction imparfait

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Regex de traduction imparfait

Re: Regex de traduction imparfait

par kodjo » 10 oct. 2022, 14:00

aaaah c pas mal comme approche ça, merci je vais tester. Tant pis pour mon fantasme de regex qui sait faire la cuisine et le ménage :lol:

Re: Regex de traduction imparfait

par or 1 » 10 oct. 2022, 13:46

non, en retriant le contenu issu du json à chaque fois en php.

Re: Regex de traduction imparfait

par kodjo » 10 oct. 2022, 11:59

Oui effectivement on peut faire ça, mais ce n'est pas très fiable. Si un développeur tiers édite le fichier JSON et ajoute des chaines de caractères dans un autre ordre, c'est le bordel assuré. Une solution dans le regex serait preferable si c'est possible.

Re: Regex de traduction imparfait

par @rthur » 09 oct. 2022, 23:44

J'aurais simplement trié mon fichier json pour commencer par traduire les expressions les plus longues en nombre de caractères, comme ça "Voiture rouge" sera traduite avant "rouge"

Regex de traduction imparfait

par kodjo » 07 oct. 2022, 13:27

Bonjour à tous,

J'ai créé une petite appli javascript qui parse un document HTML et traduit les mots trouvés d'une langue à une autre.
Le script charge des fichiers JSON et fait la traduction avec une expression régulière.

Voici l'expression régulière que j'utilise:

Code : Tout sélectionner

let html = "...mon code HTML..."; let k = "motARemplacer"; let v = "motDeRemplacement"; let regex = new RegExp(`\\b${k}\\b`, 'g'); html = html.replace(regex, v);
Ca marche très bien pour les mots isolés et me transforme par exemple "Red" en "Rouge" pour une traduction anglais vers français. Le problème survient pour la traduction de phrases. Par exemple, "Red car" est transformé en "Rouge car".

Dans mon fichier JSON français, j'ai bien sûr "Voiture rouge". Mais ceci n'est pas utilisé car "Red car" a précédemment été transformé en "Rouge car".

Comment puis-je ajuster mon regex pour prendre en compte la différence entre "Red" et "Red car"? A savoir, traduire "Red" en "Rouge", mais ne pas traduire (ignorer) "Red car"?

En vous remerciant pour vos réponses.