Subscribe Bookmark RSS Feed

Running English JSL Scripts on a French PC

I have about twenty JSL scripts that need to be able to run on PCs around the world.  To date I've had no difficulty running them anywhere, including Germany and Japan; however I've recently hit problems in France.  I initially tried running them on French installations of both JMP 8 and JMP 9, and assumed - I think correctly - that the problem was simply that some of the functions were returning French text as opposed to English text.  However, I have now tried installing JMP from an English installation file, selecting only English language options, on one of these machines, and have hit the same problem again.

The following few lines of script illustrate what's happening, in a situation where I'm loading a column of names and at least one numeric variable from one of the build-in data sets, and then want to test to see if I've pressed the "Proceed" button:

open("$SAMPLE_DATA/Big Class.jmp");

VarList = ColumnDialog(Title("Select Raw Data Columns:"),

                Rfac = ColList("Name ID", Max Col(1)),

                Yvar = ColList("Variable(s)", Min Col(1), DataType(Numeric))

                );

Proceed = char(VarList[nItems(VarList)]);

show(Proceed);

if(Proceed=="Button(1)",

                ResponseList = VarList["Yvar"];

                show(ResponseList)

                );

However, when the user does press the Proceed button, what is returned isn't "Button(1)" but "Bouton(1)" - obviously because "bouton" is French for "button".  Now, obviously I could just find all instances of this sort of problem and allow for both possibilities, but (a) I don't know how many problems of a similar nature I'm likely to encounter, and (b) I don't know whether I'm going to hit the same problem again on PCs in any other country.

So, I need to prevent JMP returning French responses, even when the installation is carried out entirely in English.  Does anyone know how I can do that?

Many thanks

1 ACCEPTED SOLUTION

Accepted Solutions
Solution

Hi David,

Sorry for my late answer, variable name is LanguagePref.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\SAS Institute Inc.\JMP\9.0\Options]
"LanguagePref"="en"

Regards,

Guillaume

13 REPLIES
gbu

Community Trekker

Joined:

Jun 23, 2011

Hi,

I have the same problem. Even if you don't install the french langage, JMP use windows langage settings to identify the langage for JMP.

The only way is to modify preferences for your French users. In windows specifics choose English.

Maybe a script command can do that... If you find it, could you tell me ?

Regards,

Guillaume

Jeff_Perkinson

Community Manager

Joined:

Jun 23, 2011

David and Guillaume,

Please contact our Technical Support department (support@jmp.com) for assistance with these issues.

Thanks!

Jeff

-Jeff

Thanks Jeff - I've now submitted a copy of this thread to Technical Support, and I'll post their reply.

Cheers,

David

gbu

Community Trekker

Joined:

Jun 23, 2011

Hi David,


Did you have a response of technical support or may I contact support too ?

Thanks

Guillaume

Hi Guillaume,

My apologies: I tried out Dave's "Save Scripts in English" suggestion (see below) at the time, and discovered that it did indeed solve my problem - at least partially. Certainly the production of the "Bouton(1)" message instead of "Button(1)" within the ColumnDialog was resolved by it; however other errors that I hadn't seen before started being generated within some fairly complex scripts of my own, making it necessary for me to dissect those scripts before I could be sure exactly what I needed Support to help me with.  I therefore had to ask them to wait until I could be more specific about what was going wrong.

I've been sidetracked into other projects since then, and simply haven't had time to do it yet. I'm hoping to carry out that exercise this coming weekend, and will post my findings as soon as I have them. By all means feel free to contact Support in the meantime: it may be that the problem is easier to isolate in your scripts than in mine.

David

An afterthought: since my earlier post above, I've been mulling over the remaining problems in my scripts, and have had an idea.  Guillaume - if you type "show(3.1416);" into your script window, what do you get?  Do you see 3.1416 or 3,1416?  On my French laptop I see 3,1416 (i.e. with the decimal point shown as a comma), whereas on an English laptop I get 3.1416.  Normally this wouldn't be important - it's only a matter of how the number is displayed - but my scripts include a considerable amount of parsing of text that has been generated by the scripts themselves.  So if I calculate a number which includes a decimal point, convert it into text and then parse it, on an English PC it would return the original number, but on a French PC it would crash because it wouldn't know how to interpret the resulting comma.  I've just tried running "show(eval(parse(char(3.1416))))" on both machines, and this is indeed what happens.  (Obviously the text I'm actually parsing is far more complicated than this, but it illustrates the point.)

If this is your problem also, the solution would presumably be to redefine the character used by Windows to represent the decimal point - which can be done from the control panel, though offhand I'm not sure exactly how.   Alternatively, you could write a small function to replace any character string representing a number containing a comma with a decimal point before parsing it.  I don't yet know that this is actually the problem I have in my own scripts, but it's a distinct possibility.

ms

Super User

Joined:

Jun 23, 2011

I have recently run into exactly this problem. I was using char(col << get formula) to generate text in display box. The user has the option to edit the formula which then is parsed and sent back to the column. However, if the formula has constants like 1.5 the char() function replaces them to 1,5 on non-English systems (save scripts in English in pref. makes no difference here). Parsing would in those cases fail as the comma is not interpreted as decimal mark but as argument separator.

My solution was a function, similar to what you suggest, that replaces commas in numbers with periods. It works (try example below) but I am not sure it will work for all OS languages. What I fear is that some settings use comma as thousands separator. I don't have JMP on an English OS to test, but I would be very interested to know the output of e.g. Show(Char(10000.5)) on an typical english OS.

Output of the script below be identical on Engles and e.g. French OS.

delocalize = Function( {string},

  While( Pat Match( string, Pat Regex( "\d+,\d+" ) ),

  Regex Match( string, Pat Regex( "^(.*?)(\d+),(\d+)(.*$)" ), "\1\2.\3\4" )

          );

          string;

);

Ex1=delocalize(char(3.1416));

Ex2=delocalize("3,1416");

Ex3=eval(parse(delocalize(char(1.5 + 0.5))));

Ex4=eval(parse(delocalize("1,5 + 0,5")));

show(Ex1, Ex2, Ex3, Ex4);

David_Burnham

Super User

Joined:

Jul 13, 2011

David

One thing you should test out is the "Save Scripts In English" option under the General tab of File > Preferences.

This option controls whether JMP generated scripts are in English or the local language.  I don't know if it influences responses from dialogs but its worth checking out.

Dave

-Dave

... and that can be done from script within JMP 9:

// Get a list of all preferences in JMP 9;

get preferences();

// Get current setting for saving scripts in English;

get preferences(Save Scripts in English);

// Change it if necessary, and make sure it's done it;

set preferences(Save Scripts in English(1));

get preferences(Save Scripts in English);

// Change it back again if you want to;

set preferences(Save Scripts in English(0));

get preferences(Save Scripts in English);

I can't see a way to do the same thing in JMP 8 however, and have forwarded the question of whether that can be done to Support.  I suspect it can't, but I'll be happy to be proved wrong.  Dave - thanks for the tip: I find that I look at the preferences so rarely after a new version is up and running that I forget what's in them.

PS: I've also now started taking my scripts to pieces at last, and have at least a partial answer to the original problem, i.e. that of why they aren't running on the French PC, even when the preferences are set as above.  Two little gems surfaced almost immediately:

  • On a few occasions I'd used the "Main Menu" command to do things like closing every open window, i.e. Main Menu("Close All").  On the French PC however, that needs to be Main Menu("Tout Fermer"), because the menu commands are displayed in French.  I'm therefore now going through my scripts removing all such constructions.

  • Secondly, I make use of the Fit Model platform in several of my scripts, and generate ANOVA tables from which I then extract an assortment of summary statistics for subsequent use.  For example, to set the format of the residual mean square column, I've used:

column(AOVTable, "Mean Square") << format("Fixed Dec", 10, 2)

This works in English - but not in French, because the label of that particular column of the ANOVA table isn't "Mean Square" but "Carré moyen".  The moral is evidently not to use the label to identify the column when it's referenced in script: it's the 4th column of the table wherever it's run, so the way to avoid the problem is to refer to it as column(AOVTable, 4), instead of by using its name.

I've no doubt I'll find others, but I suspect they'll all be the same sort of thing.

David