Arabic, Hebrew and Persian are bidirectional languages. These languages has two special characteristics. They are right to left reading order and mirrored user interface.
Middle Eastern people read from right to left. It is opposite to the Western reading order that is from left to right.
Because text is read from right to left also the user interface should be aligned from right to left. In Western user interface if two controls are in a sequence the first controls in on the left side and the second control on the right side. In bidirectional user interface it is opposite. Generally horizontal mirroring will perform the layout change. Just mirror the form horizontally and it will be right.
Different platforms support bidirectional languages in different way. The following paragraphs describe the bidirectional support of the most important platforms.
WPF supports different reading order and automatic mirroring. This all is done by single property: FlowDirection. It specifies both reading order and layout. If the value is LeftToRight then left to right reading order and original layout is used.. If the value is RightToLeft then right to left reading order and mirrored layout is used.
By default Sisulizer updates the FlowDirection attributes in the localized XAML files to match reading order of the target language. You can turn this features off from source's Options sheet.
See <sisulizersamples>\NET\WPF\Converter sample.
Windows Forms supports different reading order. Starting from .NET 2.0 automatic mirroring is also supported. Support is done with two properties: RightToLeft and RightToLeftLayout (.NET 2.0 and later).
RightToLeft property specifies the reading order. If the value is Yes the reading order of the control is right to left. If the value is No the reading order is left to right. Inherited value means that the control use the reading order of its parent control. Default value is Inherited. Leave this to Inherited. Sisulizer will change the value if needed.
RightToLeftLayout property specifies if the layout of the control should be mirrored before showing. If the value is True mirroring is done. Default value is False. Leave this to False. Sisulizer will change the value if needed.
No matter what your .NET version is Sisulizer can fully create localized files for bidirectional languages. Leave RightToLeft and RightToLeftLayout properties to their default values. When building localized files Sisulizer will change the values of these properties to match the target language.
See <sisulizersamples>\NET\WinForms\Converter sample.
Delphi and C++Builder support bidirectional languages. Support is done with two properties and one method: BiDiMode, ParentBidiMode and FlipChildren.
BiDiMode property specifies the reading order of the control. Default value is bdLeftToRight. Leave this to bdLeftToRight. Sisulizer will change the value if needed.
ParentBidiMode property specifies if the value of the BiDiMode property of the control should be ignored and to use the BiDiMode of the parent control. The default value is True. Leave this to True.
FlipChildren method mirrors the control and optionally its sub controls.
If your VCL version is 5 or later Sisulizer can fully create localized files for bidirectional languages. Leave BiDiMode and ParentBidiMode properties to their default values. If you check Mirror forms check box do not call FlipChildren. When building localized files Sisulizer will change the values of these properties to match the target language.
Read <sisulizersamples>\VCL\VCL.pdf and see <sisulizersamples>\VCL\Delphi\BiDi samples.
Visual C++ uses standard WIN32 resources. They have full support for bidirectional languages.
Classic Visual Basic does not support bidirectional languages.
They might support bidirectional languages but we haven't tested them yet. Please contact Sisulizer to get more information.