Aller au contenu

Messages recommandés

Posté (modifié)

Bonsoir, je vais essayer de faire court, sinon personne ne va lire.:be:

 

Vous connaissez tous les descriptions que l'on peut trouver dans le catalogue NGC. Par exemple, pour M3 dans les Chiens de chasse: GCL,eB,vL,vsmbM,*11.

 

Elles ont été utilisées par J.L.E Dreyer à la fin du XIXe pour reporter ses observations visuelles, rapidement, avec le moins de caractères possible.

 

C'est astucieux, mais c'est d'un pénible à déchiffrer! Même en connaissant les abréviations...

 

Dans le cas de M3: Globular cluster, extremely bright, very large, very small brighter middle, composed of 11th magnitude stars

 

> Plus d'infos ici > http://obs.nineplanets.org/ngc.html

 

Bref, j'avais l'habitude d'aller sur ce site (http://www.ngc891.com) qui fort d'être bien fourni, proposait un petit outil de traduction des descriptions de Dreyer. Le résultat n'était pas parfait, mais ça mâchait bien le boulot.

 

Je dis "j'avais", car je n'étais pas allé depuis un bon moment. Or, ayant à nouveau besoin de ce petit traducteur fort pratique, je m'y rends et horreur! Le site a subi une refonte et le traducteur a disparu!

 

Ni une, ni deux, j'écris un mail in angliche au webmaster lui demandant le pourquoi de la chose. Et il me répond très gentiment:

1- Il n'était pas satisfait du traducteur en javascript.

2- Il développe une nouvelle version du site, et le traducteur est en priorité basse.

3- Quand il développera un nouveau traducteur, il sera vraisemblablement en PHP.

4- Il n'a plus la source du traducteur javascript, et éventuellement, il partagera avec moi la source PHP... si elle voit le jour!

 

Bien, bien.

Bibi, une seule solution: programmer toi-même ton traducteur! :cool:

 

Seul petit problème: je suis strictement incapable de programmer à partir de zéro, il me faut un script plus ou moins approchant, et à force de tâtonner (et beaucoup tâtonner), j'arrive éventuellement au résultat que j'escomptais.

 

Je me mets donc à la recherche d'un script gratuit tout prêt (en PHP, tant qu'à faire), mais je ne trouve rien. Le Web a bien changé. :confused:

 

Finalement, je dégote un javascript (de 2005!) qui à la base, sert à traduire le langage SMS. :refl:

 

Pas grave. Je fais ma soupe de modifications, et je tombe sur le premier problème que je n'arrive pas à résoudre: le code traduit mot par mot (en tapant, quoi), le copier-coller ne fonctionne pas (seul le dernier terme est traduit dans ce cas).

 

Vous pouvez tester sur cette page.

 

Le script en question:

 

////////////////////////////////////////////////////
//REQUETE()
//Cherche la valeur de dictionnaire
///////////////////////////////////////////////////

function Requete(mot)
{

if(mot!="")
{
var Dico = new Array();

//DICTIONNAIRE
/////////////////////////////////Dreyer - Brightness
Dico["eF"] = "Excessively faint";
Dico["vF"] = "Very faint";
Dico["F"] = "Faint";
Dico["cF"] = "Considerably faint";
Dico["pF"] = "Pretty faint";
Dico["pB"] = "Pretty bright";
Dico["cB"] = "Considerably bright";
Dico["B"] = "Bright";
Dico["vB"] = "Very bright";
Dico["eB"] = "Extremely bright";
/////////////////////////////////Dreyer - Size
Dico["eS"] = "Excessively small";
Dico["vS"] = "Very small";
Dico["S"] = "Small";
Dico["cS"] = "Considerably small";
Dico["pS"] = "Pretty small";
Dico["pL"] = "Pretty large";
Dico["cL"] = "Considerably large";
Dico["L"] = "Large";
Dico["vL"] = "Very large";
Dico["el"] = "Excessively large";
/////////////////////////////////Dreyer - Shape
Dico["R"] = "Round";
Dico["vlE"] = "Very little extended";
Dico["E"] = "Extented or Elliptic/oval";
Dico["cE"] = "Considerably extended";
Dico["pmE"] = "Pretty much extended";
Dico["mE"] = "Much extended";
Dico["vmE"] = "Very much extended";
Dico["eE"] = "Extremely extended";
/////////////////////////////////Dreyer - Codes
////A*
Dico["Ab"] = "about";
Dico["alm"] = "almost";
Dico["am"] = "among";
Dico["app"] = "appended";
Dico["att"] = "attached";
////B*
Dico["b"] = "brighter";
Dico["be"] = "between";
Dico["biN"] = "binuclear";
Dico["bn"] = "brightest towards the north side";
Dico["bs"] = "brightest towards the south side";
Dico["bp"] = "brightest towards the preceding side";
Dico["bf"] = "brightest towards the following side";
////C*
Dico["c"] = "considerably";
Dico["ch"] = "chevelure";
Dico["co"] = "coarse, coarsely";
Dico["com"] = "cometic";
Dico["cont"] = "in contact";
Dico["C"] = "compressed";
Dico["C.G.H."] = "Cape of Good Hope";
Dico["Cl"] = "Cluster";
////D*
Dico["d"] = "diameter";
Dico["def"] = "defined";
Dico["dif"] = "diffused";
Dico["diffic"] = "difficult";
Dico["dist"] = "distance or distant";
Dico["D"] = "double";
////E*
Dico["e"] = "extremely, excessively";
Dico["ee"] = "most extremely";
Dico["er"] = "easily resolvable";
Dico["exc"] = "excentric";
////F*
Dico["f"] = "following";
////G*
Dico["g"] = "gradually";
Dico["gr"] = "group";
////I*
Dico["i"] = "irregular";
Dico["inv"] = "involved, involving";
Dico["iF"] = "irregular figure";
////L*
Dico["l"] = "little, long";
////M*
Dico["m"] = "much or magnitude";
Dico["mm"] = "mixed magnitudes";
Dico["mn"] = "milky nebulosity";
Dico["M"] = "middle, or in the middle";
////N*
Dico["n"] = "north";
Dico["neb"] = "nebula";
Dico["nf"] = "north following";
Dico["np"] = "north preceding";
Dico["nr"] = "near";
Dico["N"] = "Nucleus, or to a Nucleus";
////P*
Dico["p"] = "preceding";
Dico["pg"] = "pretty gradually";
Dico["pm"] = "pretty much";
Dico["ps"] = "pretty suddenly";
Dico["P"] = "poor";
////Q*
Dico["quad"] = "quadrilateral";
Dico["quar"] = "quartile";
////R*
Dico["r"] = "resolvable (mottled, not resolved)";
Dico["rr"] = "partially resolved (some stars seen)";
Dico["rrr"] = "well resolved (clearly consisting of stars)";
Dico["RR"] = "exactly round";
Dico["Ri"] = "rich";
////S*
Dico["s"] = "suddenly or south";
Dico["sp"] = "south preceding";
Dico["sf"] = "south following";
Dico["sc"] = "scattered";
Dico["st"] = "stars";
Dico["sev"] = "several";
Dico["susp"] = "suspected";
Dico["sh"] = "shaped";
Dico["stell"] = "stellar, point like";
Dico["sm"] = "smaller";
////T*
Dico["triN"] = "trinuclear";
Dico["trap"] = "trapezium";
Dico["v"] = "very";
Dico["vv"] = "very, very";
Dico["var"] = "variable";
/////////////////////////////////Dreyer - Symbols
Dico["*"] = "a star";
Dico["*1"] = "a star of 1st magnitude";
Dico["*2"] = "a star of 2nd magnitude";
Dico["*3"] = "a star of 3rd magnitude";
Dico["*4"] = "a star of 4th magnitude";
Dico["*5"] = "a star of 5th magnitude";
Dico["*6"] = "a star of 6th magnitude";
Dico["*7"] = "a star of 7th magnitude";
Dico["*8"] = "a star of 8th magnitude";
Dico["*9"] = "a star of 9th magnitude";
Dico["*10"] = "a star of 10th magnitude";
Dico["*11"] = "a star of 11th magnitude";
Dico["*12"] = "a star of 12th magnitude";
Dico["*13"] = "a star of 13th magnitude";
Dico["**"] = "double star";
Dico["***"] = "triple star";
Dico["!"] = "remarkable";
Dico["!!"] = "very remarkable";
Dico["!!!"] = "a magnificent or otherwise interesting object";
Dico["st 9"] = "stars from the 9th magnitude downwards";
Dico["st 9 13"] = "stars from the 9th to 13th magnitude";
Dico["\""] = "arc-seconds";
Dico["'"] = "arc-minutes";
/////////////////////////////////Dreyer - Variants
Dico["annul"] = "annular or ring nebula";
Dico["alm"] = "almost";
Dico["chev"] = "chevelure";
Dico["comp"] = "companion";
Dico["conn"] = "connected";
Dico["glob."] = "globular";
Dico["nebs"] = "nebulous";
Dico["neby"] = "nebulosity";
Dico["ns"] = "north-south";
Dico["pf"] = "preceding-following";
Dico["plan"] = "planetary nebula";
Dico["prob"] = "probably";
Dico["S*"] = "small (faint) star";
Dico["*7-8"] = "star of 7th or 8th magnitude";
Dico["8..."] = "8th magnitude and fainter";
Dico["deg"] = "degrees";
Dico["irr"] = "irregular";
Dico["P w"] = "paired with";
/////////////////////////////////NGC - Miscelleanous
Dico["Gx"] = "Galaxy";
Dico["OC"] = "Open Cluster";
Dico["Gb"] = "Globular";
Dico["GC"] = "Globular cluster";
Dico["Nb"] = "Bright emission or reflection nebula";
Dico["Pl"] = "Planetary nebula";
Dico["C+N"] = "Cluster associated with nebula";
Dico["Ast"] = "Asterism or group of stars";
Dico["Kt"] = "Knot or nebulous region";
Dico["D*"] = "Double star";
Dico["Dk"] = "Dark nebula";
Dico["DN"] = "Diffuse nebula";
Dico["PN"] = "Planetary nebula";
Dico["Vr"] = "Variable star";
Dico["SN"] = "Supernova";
Dico["?"] = "Uncertain type or may not exist";
Dico["blank"] = "Unidentified at the place given, or type unknown";
Dico["PD"] = "Photographic plate defect";
///////////////

if(Dico[""+mot+""])
{

var TxtVlOrig=document.getElementById("zonetexte").value;

var TxtNbOrig=TxtVlOrig.length;
var MotNbOrig=mot.length;
document.getElementById("zonetexte").value= TxtVlOrig.substring(0,TxtNbOrig-(MotNbOrig+1)) +" "+ Dico[""+mot+""] +", ";
}

}
}


function test(pEvent){

if(pEvent.keyCode==32 || pEvent.keyCode==13)
{

chaine=document.getElementById("zonetexte").value;
tableau = chaine.split(/[ \n]+/);
longueur=tableau.length;

Requete(tableau.pop(),tableau[longueur-2]);
}
}

////////////////fonctions supplémentaires//////////////////////////:
function testbutton(){

{

chaine=document.getElementById("zonetexte").value;
tableau = chaine.split(/[ \n]+/);
longueur=tableau.length;

Requete(tableau.pop(),tableau[longueur-2]);
}
}

function getfocus()
{
document.getElementById('zonetexte').focus()
}

EDIT: j'ai utilisé la balise

 pour que ça soit plus lisible, mais du coup, ça fausse le code. Dans le dictionnaire, pour chaque ligne, il faut lire par exemple [ Dico["eF"] = "Excessively faint"; ] évidemment. Pas grave, y'a les sources jointes au message.[/size]

 

Je suppose qu'il doit falloir faire des modifications au niveau des fonctions substring() et pop().

Mais là, ça outrepasse mes faibles capacités.

 

Je joins au message tous les fichiers ( trois > la page HTML, le javascript, et le CSS). Si quelqu'un veut trafiquer et m'apporter son aide (il doit y en avoir qui s'y connaissent sur Webastro!).

 

[b]Traducteur.zip[/b]

 

Je pense également tomber sur deux autres problèmes:

 

- Dans mon lexique, j'ai [v=very] , [vv=very very] , [L=Large] , et [vL=Very large]. Or, si on veut traduire [vvL] par exemple, ça ne sera pas traduit, vu que l'occurrence n'existe pas dans le lexique. Et il est évidemment impossible d'ajouter tous les variantes possibles...Peut-être y-a-t-il un moyen de vérifier le texte saisi au niveau du caractère et pas du mot...

 

- Selon comme on saisit le texte, ce sera traduit ou non. Par exemple, [vB vL] donnera bien [Very bright, Very large], mais [vB,vL] ne donnera rien à cause de la virgule. Bon, là, je crois qu'il est possible d'appliquer au préalable une fonction à la variable, qui remplacerait tous les caractères "virgule" par un espace. Du genre replace() ? Mais moi pas réussir!:p

 

Voilà, on ne rigole pas au fond, siou'plaît!:be:

 

Merci d'avance, en espérant avoir des réponses!

 

[b]Traducteur.zip[/b]

Modifié par Tannhauser
Posté (modifié)

Tu aimes te faire chier.

 

Prends Chrome: Bouton droit, traduire la page.

Prends IE9: Traduire avec Bing mais là la page est moins belle et la traduction est vraiment pourrie.

 

Sous Firefox il ne me propose pas de traduire, possible que je l'ai désactivé.

En 30s de recherche tu trouves ImTranslator.

 

Si tu veux éviter les complications utilises Chrome.

Dans ton catalogue interactif il a le meilleur rendu graphique et la traduction sur le bouton droit de ta souris et tu peux même la demander en auto si ça t'amuse.

 

Si vraiment tu veux programmer en JavaScript il vaudrait peut être mieux partir de zéro.

Tu as la fonction split

 

truc="B, cL, R, bM";

arBidule=truc.split(','); // tu récupères un tableau ['B', 'cL', 'R','bM']

 

A voir la tête de deux trois bidules il y'a la notion d'ordre (1:Magnitude, 2: type, 3:forme...)

Vu que ça a l'air aussi indigeste que de la notation Hongroise on peut pas dire que ce soit dur à traduire.

 

Ensuite tu te mets un switch par type d'objet (arBidule[1])

Je suppose que pour une double tu as la séparation, pas de forme. Il est donc important de s'occuper du type d'objet en premier pour bien interpréter les différents adjectifs de cette grammaire bizarre.

resultText="";
// Code exemple très très simplifié (case sensitive ? Espaces en début et fin ?)
// Exemple de traitement sur une seule combinaison mais on voie le truc...
switch(arBidule[1])
{
  case 'cL': // Cluster
  {
     resultText="Amas ";

     // La forme générale
     switch (arBidule[2])
     {
        case 'R':
           resultText=resultText+"rond ";
           break;
     }

     // La magnitude
     switch (arBidule[0])
     {
        case 'B':
           resultText=resultText+" brillant";
           break;
     }

  } // case 'cL'
  break;

}

C'est pas du code compliqué mais fastidieux à écrire.

Je crains que certaines abréviations n'aient pas le même sens sur un amas et sur un couple d'étoiles.

Rien n'interdit de créer une fonction par type d'objet pour avoir un code beaucoup plus lisible.

Tu auras alors un case 'cL': resultText=traduisAmas(arBidule);

Ca t'évite d'avoir une fonction illisible qui ferait 28 pages :be:

 

Maintenant tu as ton javascript, comment tu l'interfaces avec la page web ?

Tu comptes faire un plugin ?

 

Testes tout de même la traduction auto de Chrome et si tu écris oublies ce machin pour sms et pars de zéro en analysant la grammaire du catalogue.

Les docs javascript:

https://developer.mozilla.org/fr/docs/JavaScript/R%C3%A9f%C3%A9rence_JavaScript

 

En plus le code que tu as repiqué prend des évènements claviers.

C'est un peu pourri vu que tu as une imbrication modèle vue contrôleur à éviter.

On traduit une chaine vers une chaine, les évènements clavier et le rendu écran n'ont rien à voir avec cette fonctionnalité là sinon tu te fais une véritable usine à gaz impossible à modifier dans deux mois.

 

Si vraiment tu veux coder pars d'une fonction plus simple

function traduisCatalogue(truc)

{

bla bla bla.... (voir le code au dessus)

return resultText;

}

 

Eviter d'imbriquer les choses.

Quand tu traduis tu ne t'occupes surtout pas de comment tu obtiens la chaine, tu as une chaine truc à traduire et rien d'autre comme problématique.

 

Tu testes et une fois que tu es content tu t'occupes d'obtenir la chaine car tu sais que ta traduction sera utilisable dessus.

Enfin tu t'occupes du rendu (dans le DOM, dans un fichier ou dans une fenêtre...)

 

Tu veux pas plutôt utiliser Chrome ? :p

 

Bon ciel

Modifié par Leimury
case 'cL'
Posté (modifié)
Tu aimes te faire chier.

 

C'est involontaire! Comme tous les novices, on se dit "Ça devrait pas être trop compliqué à faire, et ça devrait tenir la route".

Puis une fois qu'on est dedans...!ph34r!

 

Prends Chrome: Bouton droit, traduire la page.

Prends IE9: Traduire avec Bing mais là la page est moins belle et la traduction est vraiment pourrie.

 

Sous Firefox il ne me propose pas de traduire, possible que je l'ai désactivé.

En 30s de recherche tu trouves ImTranslator.

 

Si tu veux éviter les complications utilises Chrome.

Dans ton catalogue interactif il a le meilleur rendu graphique et la traduction sur le bouton droit de ta souris et tu peux même la demander en auto si ça t'amuse.

 

Euh... mais c'est juste pour traduire les abréviations astro de Monsieur Dreyer...

À ma décharge, au préalable, j'ai cherché s'il existait un petit freeware de traduction, où l'on puisse créer son propre dico (donc les vB, vl, etc. dans mon cas).

J'en ai trouvé, mais voilà les usines à gaz... et pour la plupart, il faut être connecté à Internet.

Hop, j'ai abandonné.

 

Si vraiment tu veux programmer en JavaScript il vaudrait peut être mieux partir de zéro.

 

C'est tout le problème: j'en suis incapable. Tu vas me dire: "Ben, prends un bon bouquin, compulse les sites, et au travail!"

 

Euh, oui, mais là, je n'en ai pas trop le courage:p (déjà pour pondre le traducteur en l'état -j'ai essayé plein de trucs-, je vais taire le temps qu'il m'a fallu...)

 

A voir la tête de deux trois bidules il y'a la notion d'ordre (1:Magnitude, 2: type, 3:forme...)

Vu que ça a l'air aussi indigeste que de la notation Hongroise on peut pas dire que ce soit dur à traduire.

 

Ensuite tu te mets un switch par type d'objet (arBidule[1])

Je suppose que pour une double tu as la séparation, pas de forme. Il est donc important de s'occuper du type d'objet en premier pour bien interpréter les différents adjectifs de cette grammaire bizarre.

 

Ben, en fait, c'était le dernier des mes soucis, que ça soit intelligible. Dans ma p'tite tête, on prend la variable, on la traite, et on renvoie la correspondance. C'est ce que faisait le petit traducteur sur le site ngc891.com.

Certes il y avait des erreurs (contexte, mauvais mots), mais ça faisait gagner pas mal de temps.

 

C'est pas du code compliqué mais fastidieux à écrire.

Je crains que certaines abréviations n'aient pas le même sens sur un amas et sur un couple d'étoiles.

Rien n'interdit de créer une fonction par type d'objet pour avoir un code beaucoup plus lisible.

Tu auras alors un case 'cL': resultText=traduisAmas(arBidule);

Ca t'évite d'avoir une fonction illisible qui ferait 28 pages :be:

 

Idem. S'il me renvoie une traduction approximative pas grave. Par exemple, je me souviens qu'il y avait souvent confusion entre le nombre d'étoiles et la magnitude qu'on peut trouver sous la forme *20 (étoiles au nombre de 20 ou étoile de magnitude 20). J'ai fait exprès de prendre 20 comme exemple, parce que je me doute que l'ami Dreyer n'observait pas des étoiles de magnitude 20! :p

Par contre, si c'était disons un chiffre entre 5 et 12, fallait faire un choix! (il parle du nombre ou de la magnitude?)

 

Maintenant tu as ton javascript, comment tu l'interfaces avec la page web ?

Tu comptes faire un plugin ?

 

Ah ben, non, à la base, c'est pour une utilisation personnelle, en local. Je l'ai mis en ligne pour que ceux voulant m'apporter leur aide, puissent voir de quoi il s'agit en gros.

 

Testes tout de même la traduction auto de Chrome et si tu écris oublies ce machin pour sms et pars de zéro en analysant la grammaire du catalogue.

Les docs javascript:

https://developer.mozilla.org/fr/docs/JavaScript/R%C3%A9f%C3%A9rence_JavaScript

 

Répondu plus haut.

 

En plus le code que tu as repiqué prend des évènements claviers.

C'est un peu pourri vu que tu as une imbrication modèle vue contrôleur à éviter.

On traduit une chaine vers une chaine, les évènements clavier et le rendu écran n'ont rien à voir avec cette fonctionnalité là sinon tu te fais une véritable usine à gaz impossible à modifier dans deux mois.

 

Ah oui, les évènements claviers, c'était dans le code d'origine. Je les ai laissé, vu que le copier-coller ne fonctionne pas. Dans l'attente que ça fonctionne, j'avais ajouté un bouton "traduire" et "reset" avec le focus qui reste dans le formulaire.

 

Mes capacités à coder se résument à ça.:be:

Modifié par Tannhauser
Posté

Euh... mais c'est juste pour traduire les abréviations astro de Monsieur Dreyer...

 

Ouaip j'ai pigé mais sur le site tu as le descriptif anglais en clair qui suit la dénomination catalogue..

 

Chrome donne ça sur NGC 2185

 

Le descriptif du site en Anglais:

"A star of 11th magnitude & 4 small stars in very faint, large nebula"

Avec la traduction auto de Chrome:

"Une étoile de magnitude 11 et 4 petites étoiles en très légère, grande nébuleuse"

 

Chrome traduit le descriptif qu'on trouve juste après la dénomination catalogue.

Ça te suffit pas ?

Posté

 

Chrome traduit le descriptif qu'on trouve juste après la dénomination catalogue.

Ça te suffit pas ?

 

Ah ok, je n'avais pas compris le sens de ta remarque. Je me disais: "Mé kéki raconte lui, Chrome va me traduire [*11 and 4 S* in vF L neb] ? :?: "

 

:D

 

En fait, je veux un outil offline, et c'est pour traduire directement les abréviations dans Cartes du Ciel (qui reprend celles du NGC donc).

 

D'autre part, l'anglais, aucun problème!:p

 

PS: comme tu l'as suggéré, je vais trafiquer au niveau du split() et de tableau.pop(), la clé se trouve là (et supprimer les évènements clavier si le copier-coller marche).

Puis de toute façon, un gentil webstram (aubiac) m'a proposé son aide de codeur confirmé.

En attendant, je continue de trifouiller le code au petit bonheur la chance.:p

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.