Index: controls.pp
===================================================================
--- controls.pp	(revision 22274)
+++ controls.pp	(working copy)
@@ -2365,6 +2365,8 @@
 
 function IsColorDefault(AControl: TControl): Boolean;
 
+function BidiFlipAlignment(Alignment: TAlignment; Flip: Boolean = True): TAlignment;
+
 function DbgS(a: TAnchorKind): string; overload;
 function DbgS(Anchors: TAnchors): string; overload;
 function DbgS(a: TAlign): string; overload;
@@ -2468,6 +2470,17 @@
   end;
 end;
 
+function BidiFlipAlignment(Alignment: TAlignment; Flip: Boolean): TAlignment;
+const
+  BidiAlignment: array[Boolean, TAlignment] of TAlignment =
+  (
+    ( taLeftJustify, taRightJustify, taCenter ),
+    ( taRightJustify, taLeftJustify, taCenter )
+  );
+begin
+  Result := BidiAlignment[Flip, Alignment];
+end;
+
 function DbgS(a: TAnchorKind): string;
 begin
   Result:=AnchorNames[a];
Index: include/customlabel.inc
===================================================================
--- include/customlabel.inc	(revision 22274)
+++ include/customlabel.inc	(working copy)
@@ -460,7 +460,7 @@
     FillChar(TR,SizeOf(TR),0);
     with TR do
     begin
-      Alignment := Self.Alignment;
+      Alignment := BidiFlipAlignment(Self.Alignment, UseRightToLeftAlignment);
       WordBreak := wordWrap;
       SingleLine:= not WordWrap and not HasMultiLine;
       Clipping := True;
Index: interfaces/win32/win32wsstdctrls.pp
===================================================================
--- interfaces/win32/win32wsstdctrls.pp	(revision 22274)
+++ interfaces/win32/win32wsstdctrls.pp	(working copy)
@@ -212,6 +212,9 @@
     class procedure GetPreferredSize(const AWinControl: TWinControl;
           var PreferredWidth, PreferredHeight: integer;
           WithThemeSpace: Boolean); override;
+    class procedure SetBiDiMode(const AWinControl: TWinControl;
+       UseRightToLeftAlign, UseRightToLeftReading,
+       UseRightToLeftScrollBar: Boolean); override;
     class procedure SetAlignment(const ACustomStaticText: TCustomStaticText; const NewAlignment: TAlignment); override;
     class procedure SetStaticBorderStyle(const ACustomStaticText: TCustomStaticText; const NewBorderStyle: TStaticBorderStyle); override;
     class procedure SetText(const AWinControl: TWinControl; const AText: String); override;
@@ -1390,6 +1393,15 @@
   end;
 end;
 
+class procedure TWin32WSCustomStaticText.SetBiDiMode(
+  const AWinControl: TWinControl; UseRightToLeftAlign, UseRightToLeftReading,
+  UseRightToLeftScrollBar: Boolean);
+begin
+  if not WSCheckHandleAllocated(AWinControl, 'SetBiDiMode') then
+    exit;
+  RecreateWnd(AWinControl);//to adjust the update the Alignment
+end;
+
 class procedure TWin32WSCustomStaticText.SetAlignment(const ACustomStaticText: TCustomStaticText; const NewAlignment: TAlignment);
 begin
   if not WSCheckHandleAllocated(ACustomStaticText, 'SetAlignment') then
