I try to explain our problems with reshaping to Persian language.
Suppose we want to type “Welcome”. The equivalent word for “Welcome” in Persian is “خوش آمدید” and it is a two-word vocabulary. I write it in my text input or condition file as below:
And when I run the experiment, this is what I see in the screen, which is not the same word that I typed:
This statement has two problem regarded to reshaping to Persian: First, it is backward. In Ppersian we read and write from right to left (contrary to English). Thus, the first problem that we need to deal with is defining our program o write the Persian words as they are (from right to left, not backward). Second, the characters in Persian and Arabic are in isolated form, however, when they combine to each other to build a word, they change according to the surrounding characters. For example, “Welcome” in Persian, contains this characters in isolated form:
But, to make a meaningful word, they should attach to each other and some words here will change in their shapes:
This is the second issue that we need to consider when trying to solve the problem. Both od these issues are explained by Diab here:
His online reshaper worked well to solve these two problems. When I reshape strings in his website and copy them to my condition files, they were weird characters, but in the experiment, everything was clear and in the correct form.
For example, the equivalent word for “Mobile app” in Persian is:
Reshaping it in the online reshaper results in the following word:
Although this word seems weird in Persian, but if we look carefully, we will see that it has two characteristics: First, it is backward (maybe to solve the backward problem in Psychopy, this function make it backward already to neutralize the Psychopy backward function). Second, characters are reshaped according to their surrounding words. This is why we see this weird word completely correct during the experiment despite its shape in condition file.
Hope these explanations are clear.