Page 2 sur 2
Re: [..] AutoItFr_201510.chm
Posté : lun. 12 oct. 2015 15:05
par jchd
Si, si on recherche dans la rubrique StrinRegExp.
Re: [..] AutoItFr_201510.chm
Posté : lun. 12 oct. 2015 15:33
par orax
Je parlais bien de la recherche globale (via l'onglet Rechercher) et non de la recherche sur une seule page (raccourci CTRL+F). La recherche globale permet quand même de rechercher des caractères différents de [a-zA-Z0-9_]. Dans mon CHM que j'avais mis en pièce jointe, si je cherche (onglet Rechercher) le terme généralement celui-ci est bien trouvé même s'il contient des é. Ce mot (généralement) est dans la partie <body> donc la recherche globale est bien effectuée sur le contenu des pages et dans le titre.
Re: [..] AutoItFr_201510.chm
Posté : lun. 12 oct. 2015 15:49
par jchd
Certes mais ces caratères font partie du jeu Windows, pas mes chinoiseries.
Re: [..] AutoItFr_201510.chm
Posté : mar. 13 oct. 2015 00:36
par mdanielm
Bonsoir Orax,
Votre démonstration est convaincante.
Comment convertir les 4000 pages? je propose:
- je charge un fichier .htm
- je remplace charset="UTF-8" par charset="Windows-1252"
- je sauvegarde en ANSI
Je recommence pour toutes les pages puis je fais pareil pour .hhc et .hhk
Merci de me confirmer les opérations.
Bonsoir
Re: [..] AutoItFr_201510.chm
Posté : mar. 13 oct. 2015 02:20
par orax
Oui et non. J'ai peur qu'il en résulte une perte de données si on se contente de faire ça comme ça. J'ai fait un essai avec la page StrinRegExp, les chinoiseries sont remplacées par des "?". Ce qui est logique puisque ces caractères n'existent pas dans le Windows-1252.
J'ai déjà trouvé des choses pour faire cette conversion mais je préfère tester davantage.
Re: [..] AutoItFr_201510.chm
Posté : jeu. 15 oct. 2015 18:49
par orax
La conversion pourrait se faire avec Tidy HTML =>
http://www.htacg.org/binaries/
Il y a aussi d'autres outils en ligne de commande qui pourraient être équivalents =>
http://stackoverflow.com/questions/6486 ... acter-sets
Voilà le fichier de config que j'utilise avec Tidy :
► Afficher le textetidy.conf.txt
Code : Tout sélectionner
break-before-br: no
indent: auto
indent-spaces: 2
input-encoding: utf8
newline: CRLF
output-encoding: ascii // ou latin1 (iso-8859-1)
quiet: yes
sort-attributes: alpha
tab-size: 4
tidy-mark: yes
uppercase-attributes: no
uppercase-tags: no
wrap: 0
Dans cette configuration (avec output-encoding: ascii), tous les caractères non us-ascii sont convertis en entités HTML (ex : é devient é). On pourrait changer le charset en
charset="us-ascii" mais ça devrait être facultatif.
Une alternative est de mettre
output-encoding: latin1 et dans ce cas il faudra changer le charset des .htm en
charset="iso-8859-1".
J'ai essayé de mettre win1252 à la place de latin1 mais les chinoiseries été supprimées.
En dessous, une partie du script que j'utilise pour faire "tidyfier" les .htm mais il n'est pas exécutable tel quel (fonctions non déclarées, ...).
log4a c'est un UDF.
-config sert à indiquer l'emplacement du fichier de config de Tidy.
-modify modifie les fichiers directement (sans faire de sauvegarde)
-f c'est pour enregistrer un fichier de logs.
► Afficher le texte
Code : Tout sélectionner
Func _tidy($sDir, $iRecur = $FLTAR_RECUR)
Local $iRet, $sLogTidy
Local $aFichiersHtm = _FileListToArrayRec($sDir, "*.htm", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
_err()
If Not FileExists($CONFIG_TIDYHTML) Then _err("", "Le fichier de config de Tidy n'existe pas : '" & $CONFIG_TIDYHTML & "'", 1)
For $i = 1 To $aFichiersHtm[0]
$sLogTidy = $DIR_LOG_TIDY & StringReplace($aFichiersHtm[$i], $DIR_BASE, "") & ".log"
$sCmd = StringFormat('%s -config "%s" -modify -f "%s" "%s"', _
$EXE_TIDYHTML, $CONFIG_TIDYHTML, $sLogTidy, $aFichiersHtm[$i])
ToolTip($aFichiersHtm[$i], 0, 0, @ScriptName)
_log4a_Info($aFichiersHtm[$i])
_log4a_Debug($sCmd)
$iRet = RunWait($sCmd, @ScriptDir, @SW_HIDE)
If $iRet = 0 Then
ElseIf $iRet = 1 Then
; Tidy signale **beaucoup** d'avertissements. Il ne faut pas être étonné.
_log4a_Warn('Avertissements dans : "' & $aFichiersHtm[$i] & '" log : "' & $sLogTidy & '"')
ElseIf $iRet = 2 Then
_log4a_Error('Erreurs dans : "' & $aFichiersHtm[$i] & '" log : "' & $sLogTidy & '"')
Else
_log4a_Fatal('Tidy a quitté avec le code ' & $iRet & ' fichier : "' & $aFichiersHtm[$i] & '" log : "' & $sLogTidy & '"')
Exit 1
EndIf
Next
ToolTip("")
EndFunc ;==>_tidy
Il faut aussi convertir les .hhc et .hhk.
En résumé :
Code : Tout sélectionner
tidy sur tous les .htm + les .hhc et .hhk
si [i]output-encoding: ascii[/i] dans le fichier de config
(je pense facultatif) recherche de <meta charset="utf-8"> et remplacer par <meta charset="us-ascii">
sinon si [i]output-encoding: latin1[/i] dans le fichier de config
(obligatoire) recherche de <meta charset="utf-8"> et remplacer par <meta charset="iso-8859-1">
Personnellement je ferais la conversion en dernier (avant de compiler en .chm) et sur une copie.
Re: [..] AutoItFr_201510.chm
Posté : ven. 16 oct. 2015 22:15
par mdanielm
Bonsoir orax,
J'étudie vos indications.
Mais je me suis aperçu que les caractères spéciaux ont disparu depuis longtemps des pages UTF8 sans que je sache pourquoi.
J'ai vérifié que Notepad ne les efface pas, pas plus que le contrôle RichEdit que j'utilise pour traduire dans l'outil perso que je vous ai donné.
J'ai scanné le dossier "functions" à la recherche de "?" et j'ai trouvé beaucoup de faux positifs mais aussi les 5 fonctions suivantes qui justifient vos craintes:
AscW.htm 2 fois 2xbéta dans exemple-CORRIGé
BinaryToString.htm 4 fois 4x? + 2 chinois corrigé
StringCompare.htm 2 fois e et E tréma dans les exemples-CORRIGé
StringRegExp.htm 67 fois dont les carac chinois
StringToBinary.htm 6 fois 4x? + 2xchinois, comme dans BinaryToString corrigé
Je vais faire pareil pour tous les autres dossiers, puis je me pencherai sur la conversion que vous proposez.
Que voulez vous dire par "faire la conversion en dernier", je ne pense pas terminer la traduction de mon vivant!!!!!!!
Bonne soirée
Re: [..] AutoItFr_201510.chm
Posté : ven. 16 oct. 2015 23:53
par orax
mdanielm a écrit :Que voulez vous dire par "faire la conversion en dernier", je ne pense pas terminer la traduction de mon vivant!!!!!!!
Faites comme si je n'avais rien dit. ^^ Ce que je voulais dire par "en dernier", c'était de convertir les fichiers juste avant de créer le .chm, mais pas quand toute la traduction sera finie. Puisqu'une fois convertis, ils vont contenir des entités html à la place de certains caractères (surtout si la conversion est vers l'us-ascii) et ce n'est pas toujours très lisible.
Un exemple, la chaîne
deviendrait (après conversion vers l'us-ascii)
Code : Tout sélectionner
é è œ ê à ù â û ü ô ï ÿ î
ou (après conversion vers l'iso-8859-1)
Re: [..] AutoItFr_201510.chm
Posté : sam. 17 oct. 2015 21:27
par mdanielm
Je propose qu'on travaille sur cet exemple.
j'aimerais voir ce que donne tidy sur les pages htm de l'exemple.
Le chm n'est pas si mal, mais la recherche globale ne fonctionne que sur le titre, pas dans le texte.
Si vous avez le temps, mettez cet exemple au point et je saurais reproduire les réglages dans les pages AutoIt.
Il n'existe que 6 pages sur 4000 qui contiennent des caractères spéciaux: inutile d'automatiser une conversion.
Merci de votre aide.
Re: [..] AutoItFr_201510.chm
Posté : dim. 18 oct. 2015 00:24
par orax
En fait, il n'y a pas vraiment que 6 pages qui contiennent des caractères spéciaux. Tous les caractères dont le code ascii est supérieur à 127 peuvent être considérés comme des caractères spéciaux donc il faudra quand même convertir toutes les pages. J'avais proposé Tidy HTML pour faire la conversion mais c'était juste une suggestion.
Voilà ce qu'il y avait
réellement dans votre page2.htm (le contenu "réel" peut être vu par un éditeur hexadécimal par exemple) :
► Afficher le texte
Code : Tout sélectionner
<!DOCTYPE html>
<html>
<head>
<meta charset="iso-8859-1">
<title>titre2: è à ô </title>
<link href="css/default.css" rel="stylesheet">
</head>
<body>
<h1>à â ä</h1>
<p>au delà </p>
<p>lâche</p>
<p>*¤€*</p>
</body>
</html>
Le fichier page2.htm était encore en UTF-8 et, en UTF-8, le
à est encodé dans le fichier sur 2 octets mais ça sera aussi le cas pour é, è, ê, ç, ... À ce propos, la recherche globale ne trouve pas
lâche mais
lâche est bien trouvé.
Re: [..] AutoItFr_201510.chm
Posté : dim. 18 oct. 2015 07:57
par mdanielm
Vous avez enlevé les codes html des titres: ils ne sont donc pas utiles.
Je ne peux pas vérifier la recherche globale car vous ne donnez pas la TOC et l'index.
Re: [..] AutoItFr_201510.chm
Posté : dim. 18 oct. 2015 16:40
par franco
Bonjour.
Un petit bug vu par hasard.
Je suis en train de réaliser un script (qui n'a rien à voir avec autoit chm).
J'ai regardé l'aide de GuiCtrlGetstate
Et je tombe sur ça :
► Afficher le textecode
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
GUICreate("My GUI (GetControlState)")
Local $idCheckbox = GUICtrlCreatÉcheckbox("checkbox", 10, 10)
GUICtrlSetState(-1, 1) ;vérifié
GUISetState(@SW_SHOW) ; Affiche une boîte de dialogue vide
; Boucle jusqu'à ce que l'utilisateur quitte.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
MsgBox($MB_SYSTEMMODAL, "state", StringFormat("GUICtrlRead=%d\nGUICtrlGetState=%d", GUICtrlRead($idCheckbox), GUICtrlGetState($idCheckbox)))
EndFunc ;==> Example
Local $idCheckbox = GUICtrlCreatÉcheckbox("checkbox", 10, 10)
Bref, la traduction se fait aussi dans les codes exemple.
EDIT...
A moins qu'il dit que mon script est en échec...
je pense que le dernier "e" de create a été remplacé par É.
++
Re: [..] AutoItFr_201510.chm
Posté : dim. 18 oct. 2015 17:17
par orax
mdanielm a écrit :Vous avez enlevé les codes html des titres: ils ne sont donc pas utiles.
Oui ça ne devrait pas poser de problème.
mdanielm a écrit :Je ne peux pas vérifier la recherche globale car vous ne donnez pas la TOC et l'index.
Dans l'archive Essai.rar je n'ai modifié que les 3 pages .htm. C'est pourquoi je ne donne pas la TOC et l'index puisqu'ils sont identiques.
La recherche fonctionne sauf pour le caractère €.
Re: [..] AutoItFr_201510.chm
Posté : lun. 19 oct. 2015 09:33
par mdanielm
...donc, pas d'effet tidy sur la toc/index.