Comment rendre un script indépendant des paramètres de langue ?Bonjour!
J'ai un script qui donne le résultat correct si JMP 15 est défini sur l'anglais et qu'il donne des erreurs dans un autre paramètre de langue.
Ce que j'utilise dans le script est
:Name( "Mean(Something)" )
et c'est la cause du problème, car, par exemple, dans la langue allemande, la colonne à laquelle je veux réellement faire référence est "Mittelwert (quelque chose)". Il en va de même pour "Std Dev", etc., qui sont également nommés différemment dans d'autres paramètres de langue. Ces colonnes que je voudrais référencer sont les résultats des colonnes récapitulatives d'un tableau.
Comment rendre un skript indépendant des paramètres de langue lorsqu'il s'agit de référencer des colonnes récapitulatives comme celle-ci ? Existe-t-il une bonne pratique ?
AutreScriptRe : Comment rendre un script indépendant des paramètres de langue ?Merci! Oui, tu as raison, c'est loin d'être joli. Mais c'est suffisant dans mon cas. J'utiliserai le code de langue dans certaines instructions if.
Je suis toujours curieux de savoir ce que vous découvrirez sur l'exemple de résumé.Re : Comment rendre un script indépendant des paramètres de langue ?Robbb, je l'exécute sur un Mac, je dois donc redémarrer JMP pour changer de langue.
J'ai pu reproduire votre problème avec Tabulate. Il ne génère pas correctement les alias de nom de colonne. Je vais signaler cela comme un bug. En attendant, vous pouvez contourner le problème comme suit :
mean height = Match(System Service(Get Language Code),
"de", "Mittelwert(height)",<BR /> // Add more language cases here as needed
"Mean(height)"
);
DT = Open( "$SAMPLE_DATA/Big Class.jmp" );
Table1 = DT << Tabulate(
Add Table(
Column Table( Analysis Columns( :height ), Statistics( Mean ) ), // Here another language than English is not a problem.
Row Table( Grouping Columns( :age ) )
)
);
DT2 = Table1 << Make Into Data Table;
Eval(Parse(Substitute("\[
DT2 << New Column( "Stupid Formula",
Formula(
:Name("^MEAN HEIGHT") + 1 // Here it is a problem!
)
)]\",
"^MEAN HEIGHT", mean height)));
Ce n'est pas joli, mais ça vous fera surmonter cette bosse.
En ce qui concerne l'exemple de résumé, je devrai examiner pourquoi cela fonctionne pour moi et pas pour vous. Peut-être n'a-t-il été réparé que récemment.
Re : Comment rendre un script indépendant des paramètres de langue ?La stratégie dépend de plusieurs choses, je ne sais pas encore.
Ainsi, si le tableau est créé par votre script, vous connaissez peut-être déjà le bon nom et vous pouvez agir en conséquence.
Vous pouvez également tester la bonne langue et avertir l'utilisateur, ou utiliser ces informations dans le script suivant.
Si la table existe au démarrage de votre script, et si elle a toujours la même structure, vous pouvez la référencer par la position de la colonne, c'est-à-dire column(dt, 3) pour la troisième colonne.
Et ainsi de suite.
Re : Comment rendre un script indépendant des paramètres de langue ?PS: Votre exemple ne fonctionne pas pour moi. Colonne( dt_summ, "Moyenne(hauteur)" )[1] ; donne "la colonne est introuvable". Avez-vous redémarré JMP après avoir changé de langue ?
Mon script de table de votre script ressemble à ci-dessous. Comme vous le voyez, il n'y a pas d'alias pour la colonne moyenne. Mais pour N Rows, il y en a. Pourquoi donc?
New Table( "Big Class Nach (age)",
Add Rows( 6 ),
New Script(
["de" => "Quelle", "en" => "Source"],
Data Table( "Big Class" ) << Summary(
Group( :age ),
Mean( :height ),
Freq( "Keine" ),
Weight( "Keine" )
)
),
New Column(
["en" => "age", "ja" => "年齢", "x-id" => "S_age_Col", "zh-CN" => "年龄"],
Numeric,
"Ordinal",
Format( "Fixed Dec", 5, 0 ),
Set Property( "Notes", "Explore data adventurously" ),
Lock( 1 )
),
New Column( ["de" => "Anzahl Zeilen", "en" => "N Rows"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Lock( 1 )
),
New Column( "Mittelwert(height)",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),
Set Selected,
Lock( 1 )
)
)
Re : Comment rendre un script indépendant des paramètres de langue ?Bien sûr! Merci pour votre réponse. C'est ce que je pensais. Je me souviens quand j'ai pensé "Oh wow, JMP analyse même et traduit automatiquement les noms des colonnes récapitulatives".
Mais dans mon cas, cela ne fonctionne pas. Je l'ai cassé. Veuillez essayer ceci :
DT = Open( "$SAMPLE_DATA/Big Class.jmp" );
Table1 = DT << Tabulate(
Add Table(
Column Table( Analysis Columns( :height ), Statistics( <STRONG>Mean</STRONG> ) ), // Here another language than English is not a problem.
Row Table( Grouping Columns( :age ) )
)
);
DT2 = Table1 << Make Into Data Table;
DT2 << New Column( "Stupid Formula",
Formula(
<STRONG>:Name( "Mean(height)" )</STRONG> + 1 // Here it is a problem!
)
);
Anglais
Script de lancement
La colonne "Formule stupide" est remplie.
Changé en allemand
JMP 15.2.1 redémarré
Script de lancement
La colonne "Formule stupide" n'est pas remplie.
Re : Comment rendre un script indépendant des paramètres de langue ?Ian, merci pour le cri ! Mais je pense que la question de Robbb concerne davantage la façon de faire référence à une colonne générée dans une table de données dont le nom est localisé.
Robbb, ce script :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt_summ = dt << Summary(
Group( :age ),
Mean( :height ),
Freq( "None" ),
Weight( "None" )
);
Column( dt_summ, "Mean(height)" )[1];
fonctionne pour moi, que j'utilise JMP en anglais ou en allemand. Dans les deux cas, il imprime 58.125 dans le journal. Cela fonctionne parce que la colonne "Mittelwert(height)" est créée avec un nom d'alias de "Mean(height)". Vous pouvez le voir si vous copiez le script de table et le collez dans une nouvelle fenêtre de script :
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
Lors de la recherche de la colonne par nom, JMP examine à la fois le nom de l'environnement local actuel et l'alias anglais, à la recherche d'une correspondance.
Pouvez-vous nous donner plus de détails sur ce qui ne va pas pour vous ?
Re : Comment rendre un script indépendant des paramètres de langue ?En ce qui concerne les "bonnes pratiques", j'examinerais certainement le papier découverte depuis @hecht_jmp .