Right-to-left Text Support

I guess this makes sense if I understand correctly, in this example sentence, the number “4” was typed before all other Hebrew letters right?

I think yes, my hunch is that it doesn’t know what to do with numbers in that sentence so it shoves it were it would belong in English but in ‏עברית (Hebrew)
It makes no sense

1 Like

this is what’s expected:
image

and this is what comes up when you send it in the chat
image

and with emojis its the other way around if you put them at the end like this:
image

this is what comes up in the chat:
image

now as ive said before if you were to type a long sentence like this:
image

in the chat it does work properly as there are no symbols/numbers at the end of the sentence:
image

but if i were to put one like this:
image

the order of the lines suddenly become reversed:
image

all of these images were captured on notepad allthough it visualizes exactly how it is on the roblox chat

3 Likes

seems like theres a new update to the RTL in Hebrew, which fixed a lot of issues as I’ve mentioned before,
But for some reason that fix has brought a brand new issue:
image

On there for all someone use chat hebrew get like this, Only english are support for chat so. I think maybe to fix to right/left for people will can to see hebrew

What i dont understand a single word

1 Like

Yes we have rolled out a few updates recently. Thanks for reporting the new issue, does that happen in the legacy in-game chat box?

— Update —
I’m able to reproduce the issue for the legacy in-game chat box. Did you fork the chat module?

If not, one solution is to update the place by using the new chat module. Navigate to Explorer > TextChatService, change ChatVersion to TextChatService instead of LegacyChatService. This way, the place will adopt the new chat module, which should resolve the issue you’re experiencing.

However, if you have modified the legacy chat module separately, as it’s now considered deprecated, it might be challenging to fix the issue from our end. One possible workaround is to add a leading Unicode character to the chat message. To implement this change, navigate to the Explorer, locate Chat > ChatScript > ChatMain, and insert a new line

message = "\u{200E}"..message

above these two lines:

message = string.gsub(message, "\n", "")
message = string.gsub(message, "[ ]+", " ")

By implementing this change, the chat message will be rendered as a left-to-right (LTR) paragraph. Rest assured, the right-to-left (RTL) sentences will still display in the correct order.

We apologize for any inconvenience caused. Furthermore, we will investigate to see if there are any additional actions we can take to address this issue.

1 Like

that seemed to have fixed that problem but now symbols get to the start of the word for example:
instead of it being !היי
it chats like this: היי!
same issue occurs the other way around

i would use the new textchatservice but it looks awful so players just dont like it, aswell as that with Hebrew you used to need to press Q to chat on the legacychat since thats where the / key is in Hebrew keyboards, but on the new one instead of inputting “/” which is a different key in every language you now have to press the “/” key which is “.” in Hebrew.

is there a way to only do that for the chat window itself or maybe just fix that issue in a different way

  • Update
    after checking your fix in game it turned out to break the chat completely for everyone in all languages
    image
    not a good idea after all

Yeah since the chat messages in RTL will render from right to left, the leading spaces we save for the username will come to the right, thus causing the overlapping issue. We are also trying to come up with a better fix for this. Would it be acceptable to put all usernames on the right side?

Or a brute force solution can be to have the chat message contents displayed in a new line.

Bad idea. but if thats the only way to do it i guess so allthought people really hate when stuff cover up their screen

Do you maybe know a way to only do text change on the chat window instead of actually changing what players say maybe that would work by putting some unicode

  • Update
    So it seems like the issue is on all rtl languages effecting millions of games with languages like hebrew and arabic, but ive come to a solution which seems like everyone does: disabling the new RTL feature, which makes the chat normal again but then they fix bubblechat using Arial font.
    Allthough before the recent update to the RTL feature ive used it and it was working fine on the chat window, maybe you could just make the RTL feature not run on the chat window? That will most likely fix the issue! :grin:

Thanks for the update and suggestion. It can also be hard to just disable a feature for a certain thing but that sounds reasonable. I am also experimenting using RichText for the chat window and that could be another potential solution too. I will keep you updated in this thread and yeah if disabling the feature and using Arial works for now, that’s great!

1 Like

RichText did not fix the issue I’ve just made sure, the only solution is to turn off RTL or wait for you or someone to just disable it for the old chat window

1 Like

Actually I have tried adding an extra tag for example
"<b>"..string.rep(" ", numNeededSpaces).."</b>" to the leading spaces of the chat messages which worked but is just a bit hacky.

1 Like

Where should I place this line of code? Additional details would be beneficial.

  • UPDATE
    After discussing the problem with Arabic game developers and myself (the issue occurs with all languages writted from right to left), a Hebrew game developer, we have came to the conclusion that to fix the issue (for us game developers who has no access to modify the RTL feature), we suggest disabling the Right-to-Left (RTL) feature and enabling the Arial font (which has a lot more issues but less noticeable ones although they’re quite annoying). However, this means the feature becomes useless.
    To fix the RTL feature, we have two ideas. One option is to modify it so that it doesn’t affect the chat functionality, specifically the chat window in the legacytextservice. Although you mentioned it might not be simple to do, an alternative is to automatically add default scripts to the chat service that can handle and resolve the problem automatically. This way, the feature will work smoothly without any issues.
1 Like

Hi @lliliililililillliii , thanks for the updates! I understand that this issue blocks us from using the feature so we are working on exploring more alternative solutions to it. I have some questions for you and all RTL developers -

  • Did most of you fork the chat scripts and made a lot of customization to them?
  • Is it hard to switch to use the new chat service and customize the hot key?
  • If we are to fix it by pushing new changes to the legacy chat scripts, will that work?
    Thank you!
2 Likes

I will answer your questions:

  • First question:
    I encountered the issue without even needing to fork or modify the chat. Here are the steps I followed to reproduce the problem:
  1. Set the chat to the legacy chat service.
  2. Enable the RTL (Right-to-Left) feature. By doing this, the problem occurs when I chat using an RTL language.
    image

image


  • Second question:
    It is not difficult to change the hotkey, but there are complications associated with it. For instance, if I were to change it to ‘q,’ it would remain ‘q’ for both English and Hebrew. However, everyone already got used to ‘/’ for English and ‘q’ for Hebrew since its been like that for years. Additionally, the new chat service has a visually unappealing design, occupying a significant portion of the screen. Players who have encountered similar implementations in other games are aware of its drawbacks, which may negatively affect their perception of our game.

  • Third question:
    If the issue can be resolved by implementing changes exclusively to the legacy chat scripts without altering the bubble chat, which is already functioning perfectly, then I believe it would effectively address the problem.



  • update:

attention CharlieGordonnn!

after countless days encountering the chat issue, I’m excited to announce we have developed a fix that addresses the problem! and it supports most if not all right to left written languages.

here are the steps to install it:

  1. fork the chat scripts

  2. go to the “DefaultChatMessage” module script located here:
    image

  3. replace it’s code with this:
    Updated DefaultChatMessage.txt (5.7 KB)

finished product:

2 Likes

@CharlieGordonnn tho it still has some issues like if you whisper players it doesn’t work, but maybe u can send it to the team that handles that as a suggestion how to fix the chat?? (pls credit)

2 Likes

Hi @lliliililililillliii , thanks for the updates and putting together the fix, really appreciated! While I am working on other possible solutions to this, since the new chat has come out, we will have to put less time on maintaining legacy chat. However we will continue working on this issue brought by the RTL feature because it does break things if the new chat does not work for you. We are sorry for the inconvenience.

Throughout our brain storms on this issue we have several possible solutions -
One of my thoughts would be - to put the name tags on the right side for messages in right-to-left languges, also wondering your feedback on this idea.

Another workaround could be - to use RichText. What I did is

  1. In Chat > ClientChatModules > MessageCreatorModules > Util, add a new method
function methods:CreateLeadingSpaces(numNeededSpaces)
    return "<font transparency=\"1\">" .. string.rep(" ", numNeededSpaces).. "</font>"
end
  1. In the same script, find function methods:CreateBaseMessage(message, font, textSize, chatColor) and add BaseMessage.RichText = true before returning the BaseFrame and BaseMessage

  2. In the same script, find function methods:GetMessageHeight(BaseMessage, BaseFrame, xSize) and replace BaseMessage.Text with BaseMessage.ContentText since we made it RichText

  3. Search for string.rep(" ", numNeededSpaces) in Studio, and replace all that appeared in Chat (not CoreGui) with `util:CreateLeadingSpaces(numNeededSpaces)

Here I attached the whole module package:
TheChatModules.rbxm (121.2 KB)
And the screenshot I tried with this change
image

Please don’t hesitate to let me know if this works for you and any other questions! Thank you

3 Likes