(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=ScorEpioN, Dedej Title=Update Fields Description=Mise à jour massive de champs / Update fields Site=http://joel.desseaux.free.fr/ Language=EN,FR Version=33 du 28/02/2010 Requires=3.5 Comments=Ce script nécessite le fichier ScorEpioNCommonScript.pas|.==.| : ' ( ( ( ( /\ | "==()))))): © ScorEpioN ©| ( ( ( ( \_/ License= GetInfo=0 [Options] Mise à jour=1|1|0=Non / No|1=Oui / Yes Casse Choisie=3|3|0=Tout en minuscule / All in Lowercase|1=Tout en majuscule / All in Uppercase|2=Première lettre en majuscule / First letter in Uppercase|3=Première lettre de chaque mot en majuscule / First letter of each word in Uppercase ChampCasse=4|4|0=Titre original et Titre traduit/Original and Translate title|1=Réalisateur et Producteur/Director and Productor|2=Catégorie et Pays/Category and Country|3=Acteurs/Actors|4=L'ensemble de ces champs/all there's fields Garder ancien contenu champ=0|0|0=Non / Don't keep destination field value|1=Oui / Keep destination field value Vider champ origine=0|0|0=Non / Not Clean origin field|1=Oui / Clean origin field ***************************************************) program UpdateAllField; uses ScorEpioNCommonScript, StringUtils7552; const VersionScript = '33 du 28/02/2010'; ScriptName = 'Update Fields (FR-US).ifs'; SiteUrl = 'http://joel.desseaux.free.fr/Update fields/'; var Update, NewField, NewValue, Field, Abort, FirstExec, Value, Field1, LineField, Text : String; OrdField : TStringList; EndPos, i, Maj, PMaj : Integer; //------------------------------------------------------------------------------ // FONCTION DEMANDE CONFIRMATION //------------------------------------------------------------------------------ function confirm(leMessage : String): Boolean; begin if (FirstExec <> 'N') then begin if (ShowConfirmation(leMessage) = True) then begin result := True; end else result := False; end else result := True; end; //------------------------------------------------------------------------------ // MET UN CHAMPS A LA CASSE VOULUE //------------------------------------------------------------------------------ function casse(titre : String; option : Integer) : string; begin if (option = 0) then begin titre := AnsiLowerCase(titre); end else if (option = 1) then begin titre := AnsiUpperCase(titre); end else if (option = 2) then begin Text := ''; for i:= 0 to length(titre) do begin EndPos := Pos(#10 , titre); LineField := copy(titre, 1, EndPos); Text := Text + (AnsiUpFirstLetter(AnsiLowerCase(LineField))); Delete(titre, 1, EndPos); end; Text := StringReplace(Text, 'piii', 'PIII'); Text := StringReplace(Text, 'pii', 'PII'); Text := StringReplace(Text, 'piv ', 'PIV '); Text := StringReplace(Text, ' pi ', ' PI '); Text := StringReplace(Text, 'iii', 'III'); Text := StringReplace(Text, 'ii', 'II'); Text := StringReplace(Text, 'iv ', 'IV '); Text := StringReplace(Text, ' v ', ' V '); Text := StringReplace(Text, ' vi ', ' VI '); Text := StringReplace(Text, ' ix ', 'IX '); Text := StringReplace(Text, ' x ', ' X '); titre := Text; end else if (option = 3) then begin titre := AnsiMixedCase(AnsiLowerCase(titre), ' '); end; result := titre; end; //------------------------------------------------------------------------------ // FONCTION DE DUPLICATION DE FICHES //------------------------------------------------------------------------------ procedure duplicateFields(); begin if (confirm('Vous allez dupliquer la fiche : '+GetField(fieldTranslatedTitle)+' ('+GetField(fieldOriginalTitle)+'). Avez-vous bien penser à sélectionner les fiches cibles ? / You will made a copy of : '+GetField(fieldTranslatedTitle)+' ('+GetField(fieldOriginalTitle)+'). Have selected the destination form ?') = True) then begin if (FirstExec <> 'N') then begin SetStatic('Titretraduit',GetField(fieldTranslatedTitle)); // Titre traduit SetStatic('Titreoriginal', GetField(fieldOriginalTitle)); // Titre original SetStatic('Description', GetField(fieldDescription)); // Description SetStatic('Media', GetField(fieldMedia)); // Media SetStatic('Typedemedia', GetField(fieldMediaType)); // Type de media SetStatic('Source', GetField(fieldSource)); // Source SetStatic('Ladate', GetField(fieldDate)); // Date SetStatic('Lemprunteur', GetField(fieldBorrower)); // Emprunteur SetStatic('Note', GetField(fieldRating)); // Note SetStatic('Directeur', GetField(fieldDirector)); // Directeur SetStatic('Producteur', GetField(fieldProducer)); // Producteur SetStatic('Pays', GetField(fieldCountry)); // Pays SetStatic('Categorie', GetField(fieldCategory)); // Categorie SetStatic('Annee', GetField(fieldYear)); // Annee SetStatic('Duree', GetField(fieldLength)); // Duree SetStatic('Acteurs', GetField(fieldActors)); // Acteurs SetStatic('URL', GetField(fieldURL)); // URL SetStatic('Commentaires', GetField(fieldComments)); // Commentaires SetStatic('Formatvideo', GetField(fieldVideoFormat)); // Format video SetStatic('Formataudio', GetField(fieldAudioBitrate)); // Format audio SetStatic('Bitratevideo', GetField(fieldVideoBitrate)); // Bitrate video SetStatic('Bitrateaudio', GetField(fieldAudioBitrate)); // Bitrate audio SetStatic('Resolution', GetField(fieldResolution)); // Resolution SetStatic('Nbframe', GetField(fieldFrameRate)); // Nbframe SetStatic('Langue', GetField(fieldLanguages)); // Langue SetStatic('Soustitre', GetField(fieldSubtitles)); // Sous-titre SetStatic('Taille', GetField(fieldSize)); // Taille SetStatic('Nbdisque', GetField(fieldDisks)); // Nb de disque end else begin if CanSetField(fieldTranslatedTitle) then SetField(fieldTranslatedTitle, GetStatic('Titretraduit')); if CanSetField(fieldOriginalTitle) then SetField(fieldOriginalTitle, GetStatic('Titreoriginal')); if CanSetField(fieldDescription) then SetField(fieldDescription, GetStatic('Description')); if CanSetField(fieldMedia) then SetField(fieldMedia, GetStatic('Media')); if CanSetField(fieldMediaType) then SetField(fieldMediaType, GetStatic('Typedemedia')); if CanSetField(fieldSource) then SetField(fieldSource, GetStatic('Source')); if CanSetField(fieldDate) then SetField(fieldDate, GetStatic('Ladate')); if CanSetField(fieldBorrower) then SetField(fieldBorrower, GetStatic('Lemprunteur')); if CanSetField(fieldRating) then SetField(fieldRating, GetStatic('Note')); if CanSetField(fieldDirector) then SetField(fieldDirector, GetStatic('Directeur')); if CanSetField(fieldProducer) then SetField(fieldProducer, GetStatic('Producteur')); if CanSetField(fieldCountry) then SetField(fieldCountry, GetStatic('Pays')); if CanSetField(fieldCategory) then SetField(fieldCategory, GetStatic('Categorie')); if CanSetField(fieldYear) then SetField(fieldYear, GetStatic('Annee')); if CanSetField(fieldLength) then SetField(fieldLength, GetStatic('Duree')); if CanSetField(fieldActors) then SetField(fieldActors, GetStatic('Acteurs')); if CanSetField(fieldURL) then SetField(fieldURL, GetStatic('URL')); if CanSetField(fieldComments) then SetField(fieldComments, GetStatic('Commentaires')); if CanSetField(fieldVideoFormat) then SetField(fieldVideoFormat, GetStatic('Formatvideo')); if CanSetField(fieldAudioBitrate) then SetField(fieldAudioBitrate, GetStatic('Formataudio')); if CanSetField(fieldVideoBitrate) then SetField(fieldVideoBitrate, GetStatic('Bitratevideo')); if CanSetField(fieldAudioBitrate) then SetField(fieldAudioBitrate, GetStatic('Bitrateaudio')); if CanSetField(fieldResolution) then SetField(fieldResolution, GetStatic('Resolution')); if CanSetField(fieldFrameRate) then SetField(fieldFrameRate, GetStatic('Nbframe')); if CanSetField(fieldLanguages) then SetField(fieldLanguages, GetStatic('Langue')); if CanSetField(fieldSubtitles) then SetField(fieldSubtitles, GetStatic('Soustitre')); if CanSetField(fieldSize) then SetField(fieldSize, GetStatic('Taille')); if CanSetField(fieldDisks) then SetField(fieldDisks, GetStatic('Nbdisque')); end; end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION METS LE CHAMPS COMMENTAIRE A LA SUITE DU CHAMPS DESCRIPTION //------------------------------------------------------------------------------ procedure moveComment(); begin if (confirm('Vous allez déplacer le contenu du champs ''''Commentaire'''' vers le champs ''''Description'''' / You will move the field ''''Comments'''' to the field ''''Description''''.') = True) then begin if (CanSetField(fieldDescription) and CanSetField(fieldComments)) then begin moveComments(); end; end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION MISE A JOUR DE LA CASSE DES TITRES ET DES NOMS //------------------------------------------------------------------------------ procedure UpdateCasse(); begin if (confirm('Vous allez modifier la casse des champs des ''''Titres'''', du ''''Réalisateur'''', du ''''Producteur'''', des ''''Pays'''', des ''''Acteurs'''' et du ''''Genres'''', en fonction des champs modifiables et de l''option choisie / You will modify the format of fields ''''Title'''', ''''Director'''', ''''Producer'''', ''''Comments'''', ''''Category'''', ''''Country'''' and ''''Actors'''', if the option selected and the field can be modified.') = True) then begin // Titre Original if (GetOption('ChampCasse') = 0) or (GetOption('ChampCasse') = 4) then SetField(fieldOriginalTitle, casse(GetField(fieldOriginalTitle),GetOption('Casse Choisie'))); // Titre Traduit if (GetOption('ChampCasse') = 0) or (GetOption('ChampCasse') = 4) then SetField(fieldTranslatedTitle, casse(GetField(fieldTranslatedTitle),GetOption('Casse Choisie'))); // Nom du Réalisateur if (GetOption('ChampCasse') = 1) or (GetOption('ChampCasse') = 4) then SetField(fieldDirector, casse(GetField(fieldDirector),GetOption('Casse Choisie'))); //Nom du Producteur if (GetOption('ChampCasse') = 1) or (GetOption('ChampCasse') = 4) then SetField(fieldProducer, casse(GetField(fieldProducer),GetOption('Casse Choisie'))); // Nom des Acteurs if (GetOption('ChampCasse') = 3) or (GetOption('ChampCasse') = 4) then SetField(fieldActors, casse(GetField(fieldActors),GetOption('Casse Choisie'))); // Catégorie if (GetOption('ChampCasse') = 2) or (GetOption('ChampCasse') = 4) then SetField(fieldCategory, casse(GetField(fieldCategory),GetOption('Casse Choisie'))); // Pays if (GetOption('ChampCasse') = 2) or (GetOption('ChampCasse') = 4) then SetField(fieldCountry, casse(GetField(fieldCountry),GetOption('Casse Choisie'))); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION COPIE TITRE SI VIDE //------------------------------------------------------------------------------ procedure CopyTitle(); begin if (confirm('Vous allez dupliquer les titres (si vide), avec la casse choisie / You will copy title if a field is empty with the selected format.') = True) then begin if GetField(fieldTranslatedTitle) = '' then begin if (CanSetField(fieldTranslatedTitle)) then SetField(fieldTranslatedTitle, casse(GetField(fieldOriginalTitle),GetOption('Casse Choisie'))); end else if GetField(fieldOriginalTitle) = '' then begin if (CanSetField(fieldOriginalTitle)) then SetField(fieldOriginalTitle, casse(GetField(fieldTranslatedTitle),GetOption('Casse Choisie'))); end; end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION COPIE TITRE SI FORMAT AUDIO VIDE //------------------------------------------------------------------------------ procedure CopyLocal(); begin if (confirm('Vous allez copier le titre dans format audio(si vide), avec la casse choisie / You will copy title in the field audio format(if empty) with the selected format.') = True) then begin if GetField(fieldAudioFormat) = '' then begin if (CanSetField(fieldAudioFormat)) then SetField(fieldAudioFormat, casse(GetField(fieldTranslatedTitle),GetOption('Casse Choisie'))); end; end; begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION COPIE CHAMP1 DANS CHAMP2 //------------------------------------------------------------------------------ procedure CopyField(Champs : Integer); begin if (Field1 = '') then Field1 := Field; Value := GetField(StrToInt(Field1,0)); if GetOption('Vider champ origine') = 1 then SetField(StrToInt(Field1,0), ''); menuChamps('Champ2'); if (confirm('Vous allez copier le champ1 dans le champ2, avec la casse choisie/You will copy field1 in the field2 with selected format.') = True) then begin if (confirm('Voulez vous cocher les sélections modifiées / Would you check modified items') = True) then begin if (Value <> '') then SetField(fieldChecked, 'x') end; if GetOption('Garder ancien contenu champ') = 1 then Value := Value + #13#10 + GetField(StrToInt(Field,0)); SetField(StrToInt(Field,0), Value); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION SUPPRIME TITRE EN DOUBLE //------------------------------------------------------------------------------ procedure DeleteTitre(Title : Integer); begin if (confirm('Vous allez supprimer le titre en double / You will delete duplicate title.') = True) then begin DeleteTitle(Title); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION QUI AFFICHE LE CHOIX DU TITRE A SUPPRIMER //------------------------------------------------------------------------------ procedure menuTitre(); begin if (FirstExec <> 'N') then begin PickTreeClear; PickTreeAdd('Choisir le champs en double que vous souhaitez supprimer / Select the duplicate field to delete :', ''); PickTreeAdd('Titre Original (Original Title)', IntToStr(fieldOriginalTitle)); PickTreeAdd('Titre Traduit (Translated Title)', IntToStr(fieldTranslatedTitle)); PickTreeExec(Field); end; DeleteTitre(StrToInt(Field,0)); end; //------------------------------------------------------------------------------ // SUPPRIME UN MOT D'UNE CHAINE //------------------------------------------------------------------------------ procedure deleteWord(Champs : Integer); var i,j, fin, finTitle : Integer; title, temp, avant, apres : String; begin if (confirm('Vous allez supprimer un mot d''un champs / You will delete a word of the field.') = True) then begin title := ' '+GetField(Champs)+' '; if (NewField = '') then Input('Delete a Word by ScorEpioN', 'Entrez le mot à supprimer / Word to delete :', NewField); NewField := StringReplace(NewField, '#13#10', #13#10); i:=pos(NewField,title); if i <> 0 then begin fin := length(NewField); avant := copy(title,i-1,1); apres := copy(title,i+fin,1); if (avant = ' ') and (apres = ' ') then begin finTitle := length(title); title := copy(title,1,i-1)+copy(title,i+fin,finTitle-i-fin+1); title := StringReplace(title, ' ', ' '); end; end; SetField(Champs, Trim(title)); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // REMPLACE UN MOT DANS UN CHAMPS //------------------------------------------------------------------------------ procedure replaceWord(Champs : Integer); begin if (confirm('Vous allez remplacer un mot dans un champs / You will subtitute a word in the field.') = True) then begin if (NewField = '') then Input('Replace a Word by ScorEpioN', 'Entrez le mot à remplacer / Word you replace :', NewField); NewField := StringReplace(NewField, '#13#10', #13#10); if (NewValue = '') then Input('Replace a Word by ScorEpioN', 'Entrez le nouveau mot / New word :', NewValue); SetField(Champs, StringReplace(GetField(Champs), NewField, NewValue)); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // REMPLACE LE CONTENU D'UN CHAMPS //------------------------------------------------------------------------------ procedure replaceField(Champs : Integer); begin if (confirm('Vous allez remplacer le contenu d''un champs / You will replace the field contents.') = True) then begin if (NewField = '') then Input('Replace a Field by ScorEpioN', 'Entrez la nouvelle valeur du champs / Enter the new contents of field :', NewField); SetField(Champs, NewField); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // EFFACE LE CONTENU D'UN CHAMPS //------------------------------------------------------------------------------ procedure deleteField(Champs : Integer); begin if (confirm('Vous allez effacer le contenu d''un champs / You will delete field contents.') = True) then begin SetField(Champs, ''); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // COCHE LE FILM SI LE CONTENU DU CHAMPS EST VIDE //------------------------------------------------------------------------------ procedure checkEmptyField(Champs : Integer); begin if (confirm('Vous allez cocher les films ayant le champs choisi vide / You will check empty selected field.') = True) then begin if (GetField(Champs) = '') then SetField(fieldChecked, 'x') else SetField(fieldChecked, ''); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // IMPORTER UNE IMAGE A PARTIR DE SON URL //------------------------------------------------------------------------------ procedure NewImage(); begin if (confirm('Vous allez importer une nouvelle image / You will import picture.') = True) then begin if (NewField = '') then Input('Import Image by URL', 'Entrez l''URL de l''image / Enter URL of picture :', NewField); GetPicture(NewField); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // TRANSFORME LES NATIONALITES EN PAYS //------------------------------------------------------------------------------ procedure transformPays(); begin if (confirm('Vous allez transformer les nationalités du champs Pays, en nom de pays / You will change the nationality in field country to country.') = True) then begin if CanSetField(fieldCountry) then SetField(fieldCountry, transformCountry(GetField(fieldCountry))); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // CLASSE PAR ORDRE CROISSANT LES VALEURS D'UN CHAMP //------------------------------------------------------------------------------ procedure range(Champs : Integer); var i1, i2, imin: Integer; min, min2: String; begin i2 := 0; if (confirm('Vous allez ranger les valeurs du champ par ordre croissant. / You will order value of field by ascendant order.') = True) then begin NewField := GetField(Champs); if Pos(',', NewField) > 0 then begin repeat i2 := i2 + 1 ; NewField := copy(NewField, Pos(',', NewField) + 1, Length(NewField)); until (Pos(',', NewField) = 0); end NewField := GetField(Champs); OrdField := TStringList.Create; for i1 := 0 to i2 do begin min := TextBefore(NewField, ',' , ''); if min = '' then min := NewField; Delete(NewField, 1, Pos(',', NewField) + 1); OrdField.Add(min); end; SortList(OrdField); NewField := OrdField.Text; NewField := StringReplace(NewField, #13#10, ', '); NewField := copy(NewField, 1, Length(NewField)-2); SetField(Champs, NewField); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION QUI AFFICHE LA LISTE DES CHAMPS //------------------------------------------------------------------------------ procedure menuChamps(lAction : String); begin if (FirstExec <> 'N') then begin PickTreeClear; PickTreeAdd('Label du support (Update Media Type Field)', IntToStr(fieldMedia)); PickTreeAdd('Type de support (Update Media Type Field)', IntToStr(fieldMediaType)); PickTreeAdd('Origine (Source)', IntToStr(fieldSource)); PickTreeAdd('Emprunteur (Borrower)',IntToStr(fieldBorrower)); PickTreeAdd('Titre original (Original Title)', IntToStr(fieldOriginalTitle)); PickTreeAdd('Titre Traduit (Translated Title)', IntToStr(fieldTranslatedTitle)); PickTreeAdd('Réalisateur (Director)',IntToStr(fieldDirector)); PickTreeAdd('Producteur (Producer)',IntToStr(fieldProducer)); PickTreeAdd('Pays (Country)',IntToStr(fieldCountry)); PickTreeAdd('Genre (Category)',IntToStr(fieldCategory)); PickTreeAdd('Acteurs (Actors)',IntToStr(fieldActors)); PickTreeAdd('Adresse Web (URL)',IntToStr(fieldURL)); PickTreeAdd('Description (Description)',IntToStr(fieldDescription)); PickTreeAdd('Commentaire (Comments)',IntToStr(fieldComments)); PickTreeAdd('Langue (Languages)',IntToStr(fieldLanguages)); PickTreeAdd('Sous-Titres (Subtitles)',IntToStr(fieldSubtitles)); PickTreeAdd('Débit-Vidéo (Video bitrate)',IntToStr(fieldVideoBitrate)); PickTreeAdd('Débit-Audio (Audio bitrate)',IntToStr(fieldAudioBitrate)); PickTreeExec(Field); end; if (lAction = 'checkEmptyField') then begin checkEmptyField(StrToInt(Field,0)); end else if (lAction = 'Champ') then begin CopyField(StrToInt(Field,0)); end else if (lAction = 'Champ2') then begin end else if (lAction = 'deleteW') then begin deleteWord(StrToInt(Field,0)); end else if (lAction = 'deleteF') then begin deleteField(StrToInt(Field,0)); end else if (lAction = 'Order') then begin range(StrToInt(Field,0)); end else if (lAction = 'replaceW') then begin replaceWord(StrToInt(Field,0)); end else if (lAction = 'Translate') then begin translateSynopsis(StrToInt(Field,0)); end else if (lAction = 'replaceF') then begin replaceField(StrToInt(Field,0)); end; end; //------------------------------------------------------------------------------ // PROCEDURE POUR METTRE LA TAILLE TOTALE DES FICHIERS //------------------------------------------------------------------------------ procedure tailleFichier(); var i, Total: Integer; s: string; begin i := 1; Total := 0; s := GetField(fieldSize); while i <= Length(s) do begin if (StrGet(s, i) >= '0') and (StrGet(s, i) <= '9') then i := i + 1 else begin if i > 1 then Total := Total + StrToInt(Copy(s, 1, i - 1), 0); Delete(s, 1, i); i := 1; end; end; if i > 1 then begin Total := Total + StrToInt(Copy(s, 1, i - 1), 0); SetField(fieldSize, IntToStr(Total)); end; end; //------------------------------------------------------------------------------ // TRADUIT LE CHAMPS DESCRIPTION //------------------------------------------------------------------------------ procedure translateSynopsis(Champs : Integer); var Adresse, Parametre, Description, Resultat, Line : String; BeginPos, EndPos : Integer; begin if (confirm('Vous allez traduire le champs choisi. / You will translate the selected field.') = True) then begin if (NewField = '') then begin PickTreeClear; PickTreeAdd('Sélectionner les langues source et cible / Select the original language and the wanted :', ''); PickTreeAdd('Du chinois simpl. vers l''anglais / chinese to english', 'zh_en'); PickTreeAdd('Du chinois trad. vers l''anglais / traditional chinese to english', 'zt_en'); PickTreeAdd('De l''anglais vers le chinois simpl. / english to chinese', 'en_zh'); PickTreeAdd('De l''anglais vers le chinois trad. / english to traditional chinese', 'en_zt'); PickTreeAdd('De l''anglais vers le hollandais / english to danish', 'en_nl'); PickTreeAdd('De l''anglais vers le français / english to french', 'en_fr'); PickTreeAdd('De l''anglais vers l''allemand / english to dutch', 'en_de'); PickTreeAdd('De l''anglais vers le grec / english to greek', 'en_el'); PickTreeAdd('De l''anglais vers l''italien / english to italian', 'en_it'); PickTreeAdd('De l''anglais vers le japonais / english to japanese', 'en_ja'); PickTreeAdd('De l''anglais vers coréen / english to korean', 'en_ko'); PickTreeAdd('De l''anglais vers le portugais / english to portugese', 'en_pt'); PickTreeAdd('De l''anglais vers le russe / english to russian', 'en_ru'); PickTreeAdd('De l''anglais vers l''espagnol / english to spanish', 'en_es'); PickTreeAdd('Du hollandais vers l''anglais / danish to english', 'nl_en'); PickTreeAdd('Du hollandais vers le français / danish to french', 'nl_fr'); PickTreeAdd('Du français vers le hollandais / french to danish', 'fr_nl'); PickTreeAdd('Du français vers l''anglais / french to english', 'fr_en'); PickTreeAdd('Du français vers l''allemand / french to dutch', 'fr_de'); PickTreeAdd('Du français vers le grec / french to greek', 'fr_el'); PickTreeAdd('Du français vers l''italien / french to italian', 'fr_it'); PickTreeAdd('Du français vers le portugais / french to portugese', 'fr_pt'); PickTreeAdd('Du français vers l''espagnol / french to spanish', 'fr_es'); PickTreeAdd('De l''allemand vers l''anglais / dutch to english', 'de_en'); PickTreeAdd('De l''allemand vers le français / dutch to french', 'de_fr'); PickTreeAdd('Du grec vers l''anglais / greek to english', 'el_en'); PickTreeAdd('Du grec vers le français / greek to french', 'el_fr'); PickTreeAdd('De l''italien vers l''anglais / italian to english', 'it_en'); PickTreeAdd('De l''italien vers le français / italian to french', 'it_fr'); PickTreeAdd('Du japonais vers l''anglais / japanese to english', 'ja_en'); PickTreeAdd('Du coréen vers l''anglais / korean to english', 'ko_en'); PickTreeAdd('Du portugais vers l''anglais / portugese to english', 'pt_en'); PickTreeAdd('Du portugais vers le français / portugese to french', ' pt_fr'); PickTreeAdd('Du russe vers l''anglais / russian to english', 'ru_en'); PickTreeAdd('De l''espagnol vers l''anglais / spanish to english', 'es_en'); PickTreeAdd('De l''espagnol vers le français / spanish to french', 'es_fr'); PickTreeAdd('Du Chinois simp. vers chinois trad. / chinese to traditional chinese', 'zh_zt'); PickTreeAdd('Du Chinois trad. vers chinois simp. / traditional chinese to chinese', 'zt_zh'); PickTreeExec(NewField); end; Description := GetField(Champs); Description := StringReplace(Description , #13#10, ' '); Adresse := URLEncode('http://babelfish.altavista.com/tr'); Parametre := 'doit =done&intl=1&tt=urltext&trtext='+Description+'&lp='+NewField; Line := PostPage(Adresse,Parametre); BeginPos := Pos('