tpt

Un outil pour aider à la traduction - retour accueil

git clone git://bebou.netlib.re/tpt
Log | Files | Refs |

commit ca125d59455ab9eb5191bcc021397e24a197c9e3
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Sat, 19 Oct 2024 22:46:58 +0200

Premier commit

Pour un excel test.xlsx contenant les données sur la deuxième feuille faire

	make

et ça devrait générer

	test.report au format tsv et
	test.html   en html

Limites :

	Gère mal si y'a plusieurs champs à mettre en forme en html (un
	max de trois pour le moment)
	Ne fonctionne que si c'est sur la seconde feuille de l'excel
	(codé en dur)
	Pas de tests (assez important ici)

Diffstat:
A.gitignore | 1+
AArthur.html | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AArthur.report | 9+++++++++
AArthur.xlsx | 0
AMakefile | 9+++++++++
Amakelayout | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amakereport | 47+++++++++++++++++++++++++++++++++++++++++++++++
Atablelayout | 5+++++
8 files changed, 220 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1 @@ +.*.sw? diff --git a/Arthur.html b/Arthur.html @@ -0,0 +1,81 @@ +<style> +/* Format tables */ +table { + border-collapse: collapse; + margin: 1.5rem 0; +} + +figure > table { + width: max-content; +} + +td, +th { + border: 1px solid; + text-align: start; + padding: 0.5rem; +} + +th { + font-weight: bold; +} + +tr:nth-child(even) { + /* Set every other cell slightly darker. Improves readability. */ + background-color: #EEEEEE; +} + +table caption { + font-weight: bold; + margin-bottom: 0.5rem; +} +</style> +<table> + <thhead> + <tr> + <th>Source</th> + <th>Target</th> + <th>Result</th> + </tr> + </thead> +<tr> + <td>Source</td> + <td>Target</td> + <td></td> +</tr> +<tr> + <td>Vestibulum <mark class="red"> vestibulum </mark> placerat metus et vehicula </td> + <td>Η εταιρεία επενδύει σε <mark class="red"> αυτοκίνητα </mark> και φορτηγά </td> + <td>not ok</td> +</tr> +<tr> + <td>Vestibulum ante <mark class="red"> ipsum primis </mark> in faucibus orci luctus et ultrices posuere <mark class="red"> cubilia curae </mark> ; Fusce vel finibus justo </td> + <td>Μπροστά του, πρώτα απ 'όλα <mark class="red"> ipsum primis </mark> , στο λαιμό του νοσοκομείου, να στρώσει τα κρεβάτια της φροντίδας <mark class="red"> cubilia curae </mark> και της φροντίδας. Κλινικά ή απλώς τα όρια </td> + <td>ok</td> +</tr> +<tr> + <td>Sed mattis felis id <mark class="red"> dignissim </mark> viverra </td> + <td>Αλλά η αγορά ακινήτων είναι πραγματικό πλεονέκτημα <mark class="red"> dignissim </td> + <td>ok</td> +</tr> +<tr> + <td>Nulla non egestas elit</td> + <td>Δεν υπάρχει ανάγκη για προγραμματιστή</td> + <td></td> +</tr> +<tr> + <td>Nam convallis mi dui, et feugiat nunc interdum sed</td> + <td>Γιατί η κοιλάδα είναι το ντουί μου, και φευγιάτ που και που αλλά</td> + <td></td> +</tr> +<tr> + <td>Vestibulum <mark class="red"> vestibulum </mark> felis eu metus aliquam suscipit </td> + <td>Το γήπεδο ποδοσφαίρου φοβάται vestibulum</td> + <td></td> +</tr> +<tr> + <td>Praesent nec <mark class="red"> finibus felis </td> + <td>Δεν είναι <mark class="red"> finibus felis </mark> καν ένα έναυσμα </td> + <td>ok</td> +</tr> +</table> diff --git a/Arthur.report b/Arthur.report @@ -0,0 +1,9 @@ +source target result +Source Target +Vestibulum  vestibulum  placerat metus et vehicula Η εταιρεία επενδύει σε  αυτοκίνητα  και φορτηγά not ok +Vestibulum ante  ipsum primis  in faucibus orci luctus et ultrices posuere  cubilia curae  ; Fusce vel finibus justo Μπροστά του, πρώτα απ 'όλα  ipsum primis  , στο λαιμό του νοσοκομείου, να στρώσει τα κρεβάτια της φροντίδας  cubilia curae  και της φροντίδας. Κλινικά ή απλώς τα όρια ok +Sed mattis felis id  dignissim  viverra Αλλά η αγορά ακινήτων είναι πραγματικό πλεονέκτημα  dignissim ok +Nulla non egestas elit Δεν υπάρχει ανάγκη για προγραμματιστή +Nam convallis mi dui, et feugiat nunc interdum sed Γιατί η κοιλάδα είναι το ντουί μου, και φευγιάτ που και που αλλά +Vestibulum  vestibulum  felis eu metus aliquam suscipit Το γήπεδο ποδοσφαίρου φοβάται vestibulum +Praesent nec  finibus felis Δεν είναι  finibus felis  καν ένα έναυσμα ok diff --git a/Arthur.xlsx b/Arthur.xlsx Binary files differ. diff --git a/Makefile b/Makefile @@ -0,0 +1,9 @@ +reports != find * -maxdepth 0 -type f -name '*.xlsx' | sed -E 's,\.[^.]+$$,.html,' + +all: ${reports} + +%.report : %.xlsx makereport + ./makereport $< > $@ + +%.html : %.report makelayout + ./makelayout $< > $@ diff --git a/makelayout b/makelayout @@ -0,0 +1,68 @@ +#! /bin/sh + +pl() { + tmpd=$(mktemp -d) + trap "rm -rf $tmpd" EXIT + + layout=$(< $1 sed -E 's/\$[a-zA-Z]+/%s/g') + nbargs=$(echo "$layout" | grep -o '%s' | wc -l) + maxargs=$(echo "4096/$nbargs*$nbargs" | bc) + + cat > $tmpd/in + + < $tmpd/in head -n1 | tr ' ' '\n' | nl -n ln -w1 > $tmpd/vars + + for var in $(< $1 grep -wEo '\$[a-zA-Z]+' | tr -d '$');do + grep "$var" $tmpd/vars + done | + cut -f1 | paste -s -d',' | + xargs -I{} awk -F'\t' -v col={} ' + BEGIN{getline;n=split(col,cols,",")} + { for (i=1;i<n+1;i++) { print $cols[i] } }' $tmpd/in | + xargs -d'\n' -n$maxargs printf "$layout\n" +} + +<<. cat +<style> +/* Format tables */ +table { + border-collapse: collapse; + margin: 1.5rem 0; +} + +figure > table { + width: max-content; +} + +td, +th { + border: 1px solid; + text-align: start; + padding: 0.5rem; +} + +th { + font-weight: bold; +} + +tr:nth-child(even) { + /* Set every other cell slightly darker. Improves readability. */ + background-color: #EEEEEE; +} + +table caption { + font-weight: bold; + margin-bottom: 0.5rem; +} +</style> +<table> + <thhead> + <tr> + <th>Source</th> + <th>Target</th> + <th>Result</th> + </tr> + </thead> +$(< $1 pl tablelayout | sed -E 's,,<mark class="red">,;s,,</mark>,' |sed -E 's,,<mark class="red">,;s,,</mark>,' | sed -E 's,,<mark class="red">,;s,,</mark>,' ) +</table> +. diff --git a/makereport b/makereport @@ -0,0 +1,47 @@ +#! /bin/sh + +tmpd=$(mktemp -d) +excelfile="$1" +foldername=$(basename $excelfile | sed -E 's,\.[^.]+$,,') +mkdir -p $tmpd/$foldername +cp "$excelfile" $tmpd/$foldername +cd $tmpd/$foldername +unzip -qq "$excelfile" 2> /dev/null + +xmllint --pretty 1 $tmpd/$foldername/xl/sharedStrings.xml | + awk ' + /<si>/ {getline;a=$0;next} + /<\/si>/ {print a;a="";next} + {a=a$0} + ' | + sed -E 's,<[^c][^>]*>,,g;s,^ +,,;s,<charset[^>]+>,,g' | + sed -E 's,<color[^>]+>,,g' | + sed -E 's,^ +,,g' | + tr -s ' ' | + nl -v0 -nln -w1 > strings + +echo "source target result" +cmp() { + xargs -n2 sh -c ' + #echo comparing line $1 with $2 + n1=$(grep "^$1 " strings | cut -f2) + n2=$(grep "^$2 " strings | cut -f2) + tocmp1=$(echo "$n1" | grep -Eo " [^]+ (|$)" | tr -d "") + tocmp2=$(echo "$n2" | grep -Eo " [^]+ (|$)" | tr -d "") + #echo "1 : $tocmp1" + #echo "2 : $tocmp2" + echo "$n2" | grep -q "$tocmp1" && res=ok || res="not ok" + [ "$tocmp1" = "$tocmp2" ] && res=ok || res="not ok" + echo "$n2" | grep -q "" || res="" + printf "%s %s %s\n" "$n1" "$n2" "$res" + ' -- +} + +xmllint --pretty 1 ./xl/worksheets/sheet2.xml | + grep '<v>' | paste - - | + sed -E 's,</?.?>,,g' | + tr -d ' ' | + cmp + +#rm -rf $tmpd +cd diff --git a/tablelayout b/tablelayout @@ -0,0 +1,5 @@ +<tr> + <td>$source</td> + <td>$target</td> + <td>$result</td> +</tr>