Randomization and translation using macros?

If we want to randomize a block of questions, we were going to use a macro to randomly shuffle the text in an array. This works fine for one language:

var r = Math.Log(1 + Math.Floor(Quest.IRnd()*1000000)/1000000);
var s = r.ToString(“0.0000000000”).Substring(2);
var items = new[]{
“Sample text 1”,
“Sample text 2”,
“Sample text 3”,
“Sample text 4”};

for (var i = 0; i < items.Length; i++)
    var n = Convert.ToInt32(s.Substring(i,1));
    if (n >= items.Length) n = 0;
    var t = items[i];
    items[i] = items[n];
    items[n] = t;

return items

What is the best way to apply this to multiple languages, so that the referenced text is language specific?

Thanks for any guidance on this one.


normally text substitutions should be kept invariant between translations, but in your case it is justifiable to also change the variable used for the substitution. So that you have two (three, more) variables, each evaluating content in the proper language e.g. monthNameEng, monthNameGrk, monthNameFre. And you refer to the proper one in the translated question text.

Best, Sergiy

Sergiy, Is it possible to use IF/ELSE logic in the macro example, so that you can return the array in one or another language based on the response of a prior question? Ideally, i’d imagine that the var items= new[]{} block could be in an if/elseif/else statement to cover all languages. I’ve tried this, but get an error regardless of the condition i try to evaluate. Even an "if (“1”==“1”){} causes an error. Is there a trick to making this work in a single macro for all languages?

-david p-

David, in Survey Solutions there is a conditional operator that helps out in these cases. Hence you can write in a string variable’s [Q] expression something like:

(lng==1)?"electricity":"ηλεκτρική ενέργεια"

then use the value of Q in subsequent questions:
How big of an obstacle is access to %Q%?

Clearly [lng] is a question that you’ve asked earlier about the language. Here with values 1 corresponding to English and 2 to Greek.

Best, Sergiy

Dear Sergiy,
Is this problem fixed? We are facing same issues where Randomized questions are changed when it reaches to Supervisor level.

THank you

I don’t see how randomization changes can be connected to the above discussion.

Which problem?