¿Cómo hacer que un guión sea independiente de la configuración del idioma?¡Hola!
Tengo un script que da el resultado correcto si JMP 15 está configurado en inglés y da errores en la configuración de otro idioma.
Lo que estoy usando en el script es
:Name( "Mean(Something)" )
y esa es la causa del problema, porque, por ejemplo, en la configuración del idioma alemán, la columna a la que realmente quiero hacer referencia es "Mittelwert (Algo)". Lo mismo ocurre con "Std Dev", etc., que también se denominan de forma diferente en otras configuraciones de idioma. Esas columnas a las que me gustaría hacer referencia son resultados de columnas de resumen de un tabular.
¿Cómo hacer que un skript sea independiente de la configuración de idioma cuando se trata de hacer referencia a columnas de resumen como esta? ¿Existe una buena práctica?
OtroScriptingRe: ¿Cómo hacer que un script sea independiente de la configuración del idioma?Con respecto a las 'buenas prácticas', ciertamente echaría un vistazo a el periódico Discovery desde @hecht_jmp .
Re: ¿Cómo hacer que un script sea independiente de la configuración del idioma?Ian, gracias por el grito. Pero creo que la pregunta de Robbb es más sobre cómo hacer referencia a una columna generada en una tabla de datos cuyo nombre está localizado.
Robbb, este guión:
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];
funciona para mí tanto si estoy usando JMP en inglés como en alemán. En ambos casos imprime 58.125 en el registro. Funciona porque la columna "Mittelwert (altura)" se crea con un alias de "Media (altura)". Puede ver esto si copia la secuencia de comandos de la tabla y la pega en una nueva ventana de secuencia de comandos:
New Column( ["de" => "Mittelwert(height)", "en" => "Mean(height)"],
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 1 ),<BR />// etc.
Al buscar la columna por nombre, JMP examina tanto el nombre de la configuración regional actual como el alias en inglés, buscando una coincidencia.
¿Puede darnos más detalles sobre lo que le está fallando?
Re: ¿Cómo hacer que un script sea independiente de la configuración del idioma?¡Por supuesto! Gracias por su respuesta. Eso es lo que pensé. Recuerdo cuando pensé "Oh, vaya, JMP incluso analiza y traduce nombres de columnas de resumen automáticamente".
Pero en mi caso de alguna manera no funciona. Lo rompí. Por favor intente esto:
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!
)
);
Inglés
Ejecutar guión
La columna "Fórmula estúpida" está llena.
Cambiado a alemán
Reiniciado JMP 15.2.1
Ejecutar guión
La columna "Fórmula estúpida" no está llena.
Re: ¿Cómo hacer que un script sea independiente de la configuración del idioma?PD: Tu ejemplo no me funciona. Columna (dt_summ, "Media (altura)") [1]; produce "no se puede encontrar la columna". ¿Reinició JMP después de cambiar el idioma?
Mi script de tabla de su script se ve a continuación. Como puede ver, no hay un alias para la columna media. Pero para N Rows lo hay. ¿Porqué es eso?
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: ¿Cómo hacer que un script sea independiente de la configuración del idioma?La estrategia depende de varias cosas, aún no lo sé.
Por lo tanto, si su secuencia de comandos crea el tabular, es posible que ya sepa el nombre correcto y puede actuar en consecuencia.
También puede probar el idioma correcto y advertir al usuario, o utilizar esta información en el siguiente script.
Si la tabla existe al iniciar su script, y si siempre tiene la misma estructura, puede hacer referencia a ella por la posición de la columna, es decir, columna (dt, 3) para la tercera columna.
Y así.
Re: ¿Cómo hacer que un script sea independiente de la configuración del idioma?Robbb, estoy ejecutando esto en una Mac, así que debo reiniciar JMP para cambiar de idioma.
Pude reproducir su problema con Tabulate. No genera correctamente los alias de nombres de columna. Informaré esto como un error. Mientras tanto, puede solucionarlo así:
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)));
No es bonito, pero te ayudará a superar este problema.
En cuanto al ejemplo de resumen, tendré que investigar por qué funciona para mí y no para ti. Quizás fue arreglado recientemente.
Re: ¿Cómo hacer que un script sea independiente de la configuración del idioma?¡Gracias! Sí, tienes razón, está lejos de ser bonito. Pero es suficiente en mi caso. Usaré el código de idioma en algunas declaraciones if.
Todavía tengo curiosidad por saber qué encontrará sobre el ejemplo de resumen.