The advice given so far is correct and provided you are dealing with simple text and only using standard GUI components everything will work well and without too much work on your behalf. The problem starts getting more complex when you have to dynamically generate text and even more complicated if you are creating your own GUI components and/or decided to layout the text yourself.
Dynamic text: For example if you want to display a message such as "You have selected 5 items" the number '5' needs to be inserted into the static
string. Now that in itself is not difficult in each of your language files you simply add a place holder(s) in your text for where you want the number to go (ie You have selected {0} items) and ResourceBundle provides methods to insert the value for you. The difficulty is in the way different languages deal with plurals, in the example given in English the
word 'item' needs to be 'items' where the number is 0 or greater than 1 and 'item' if it is 1. I'm not sure what the rules are in Arabic but they probably aren't the same. Again ResourceBundle does provide means of handling this scenario but it can become very complicated.
Laying Out Text: My advice is don't try and do this unless you really really have to and even then think long and hard before heading down this path as it's almost certainly the wrong thing to do. Providing support for left to right, right to left and top to bottom text layouts is particularly complicated (and tedious) and whilst there are lots of classes to help you it's a lot of work to do properly. If you need to create your own components use a standard text component either as a composite part of your component or as a rubber stamp to handle the laying out of text.