Syncfusion AI Assistant

How can I help you?

RTL and Localization Page in Angular PDF Viewer

13 Apr 202621 minutes to read

Use RTL support to render the viewer interface for right-to-left languages.

  • Enable enableRtl to apply right-to-left layout.
  • Load culture-specific strings globally with L10n.load.
  • Set the locale property on the PDF Viewer component to the target culture.

Arabic Localization

Example: enable RTL and provide Arabic localization

Use the example below to enable RTL for languages such as Arabic, Hebrew, and Persian.

import { Component } from '@angular/core';
import { L10n } from '@syncfusion/ej2-base';
import {
  PdfViewerModule,
  ToolbarService,
  MagnificationService,
  NavigationService,
  LinkAnnotationService,
  BookmarkViewService,
  ThumbnailViewService,
  PrintService,
  TextSelectionService,
  TextSearchService,
  AnnotationService,
  FormDesignerService,
  FormFieldsService,
  PageOrganizerService
} from '@syncfusion/ej2-angular-pdfviewer';

/** Load culture files here */
L10n.load({
  'ar-AE': {
    'PdfViewer': {
        'PdfViewer': 'قوات الدفاع الشعبي المشاهد',
        'Cancel': 'إلغاء',
        'Download file': 'تحميل الملف',
        'Download': 'تحميل',
        'Enter Password': 'هذا المستند محمي بكلمة مرور. يرجى إدخال كلمة مرور.',
        'File Corrupted': 'ملف تالف',
        'File Corrupted Content': 'الملف تالف ولا يمكن فتحه.',
        'Fit Page': 'لائق بدنيا الصفحة',
        'Fit Width': 'لائق بدنيا عرض',
        'Automatic': 'تلقائي',
        'Go To First Page': 'عرض الصفحة الأولى',
        'Invalid Password': 'كلمة سر خاطئة. حاول مرة اخرى.',
        'Next Page': 'عرض الصفحة التالية',
        'OK': 'حسنا',
        'Open': 'فتح الملف',
        'Page Number': 'رقم الصفحة الحالية',
        'Previous Page': 'عرض الصفحة السابقة',
        'Go To Last Page': 'عرض الصفحة الأخيرة',
        'Zoom': 'تكبير',
        'Zoom In': 'تكبير في',
        'Zoom Out': 'تكبير خارج',
        'Page Thumbnails': 'مصغرات الصفحة',
        'Bookmarks': 'المرجعية',
        'Print': 'اطبع الملف',
        'Password Protected': 'كلمة المرور مطلوبة',
        'Copy': 'نسخ',
        'Text Selection': 'أداة اختيار النص',
        'Panning': 'وضع عموم',
        'Text Search': 'بحث عن نص',
        'Find in document': 'ابحث في المستند',
        'Match case': 'حالة مباراة',
        'Apply': 'تطبيق',
        'GoToPage': 'انتقل إلى صفحة',
        'No Matches': 'انتهى العارض من البحث في المستند. لم يتم العثور على مزيد من التطابقات',
        'No Text Found': 'لم يتم العثور على نص',
        'Undo': 'فك',
        'Redo': 'فعل ثانية',
        'Annotation': 'إضافة أو تعديل التعليقات التوضيحية',
        'Highlight': 'تسليط الضوء على النص',
        'Underline': 'تسطير النص',
        'Strikethrough': 'نص يتوسطه خط',
        'Delete': 'حذف التعليق التوضيحي',
        'Opacity': 'غموض',
        'Color edit': 'غير اللون',
        'Opacity edit': 'تغيير التعتيم',
        'highlight': 'تسليط الضوء',
        'underline': 'أكد',
        'strikethrough': 'يتوسطه',
        // tslint:disable-next-line:max-line-length
        'Server error': 'خدمة الانترنت لا يستمع. يعتمد قوات الدفاع الشعبي المشاهد على خدمة الويب لجميع ميزاته. يرجى بدء خدمة الويب للمتابعة.',
        'Open text': 'افتح',
        'First text': 'الصفحة الأولى',
        'Previous text': 'الصفحة السابقة',
        'Next text': 'الصفحة التالية',
        'Last text': 'آخر صفحة',
        'Zoom in text': 'تكبير',
        'Zoom out text': 'تصغير',
        'Selection text': 'اختيار',
        'Pan text': 'مقلاة',
        'Print text': 'طباعة',
        'Search text': 'بحث',
        'Annotation Edit text': 'تحرير التعليق التوضيحي',
        'Line Thickness': 'سمك الخط',
        'Line Properties': 'خط الخصائص',
        'Start Arrow': 'ابدأ السهم',
        'End Arrow': 'نهاية السهم',
        'Line Style': 'أسلوب الخط',
        'Fill Color': 'ملء اللون',
        'Line Color': ' الخط اللون',
        'None': 'لا شيء',
        'Open Arrow': 'افتح',
        'Closed Arrow': 'مغلق',
        'Round Arrow': 'مستدير',
        'Square Arrow': 'مربع',
        'Diamond Arrow': 'الماس',
        'Cut': 'يقطع',
        'Paste': 'معجون',
        'Delete Context': 'حذف',
        'Properties': 'الخصائص',
        'Add Stamp': 'إضافة الطوابع',
        'Add Shapes': 'أضف الأشكال',
        'Stroke edit': 'تغيير لون السكتة الدماغية',
        'Change thickness': 'تغيير سمك الحدود',
        'Add line': 'إضافة خط',
        'Add arrow': 'سهم إضافة',
        'Add rectangle': 'أضف مستطيل',
        'Add circle': 'إضافة دائرة',
        'Add polygon': 'أضف مضلع',
        'Add Comments': 'أضف تعليقات',
        'Comments': 'تعليقات',
        'No Comments Yet': 'لا توجد تعليقات حتى الآن',
        'Accepted': 'وافقت',
        'Completed': 'منجز',
        'Cancelled': 'ألغيت',
        'Rejected': 'مرفوض',
        'Leader Length': 'زعيم الطول',
        'Scale Ratio': 'نسبة مقياس',
        'Calibrate': 'عاير',
        'Calibrate Distance': 'معايرة المسافة',
        'Calibrate Perimeter': 'معايرة محيط',
        'Calibrate Area': 'عاير منطقة',
        'Calibrate Radius': 'معايرة نصف القطر',
        'Calibrate Volume': 'معايرة الحجم',
        'Depth': 'عمق',
        'Closed': 'مغلق',
        'Round': 'مستدير',
        'Square': 'ميدان',
        'Diamond': 'الماس',
        'Edit': 'تصحيح',
        'Comment': 'تعليقات',
        'Comment Panel': 'لوحة التعليقات',
        'Set Status': 'تعيين الحالة',
        'Post': 'بريد',
        'Page': 'صفحة',
        'Add a comment': 'أضف تعليق',
        'Add a reply': 'أضف رد',
        'Import Annotations': 'استيراد التعليقات التوضيحية',
        'Export Annotations': 'شروح التصدير',
        'Add': 'أضف',
        'Clear': 'واضح',
        'Bold': 'بالخط العريض',
        'Italic': 'مائل',
        'Strikethroughs': 'يتوسطه',
        'Underlines': 'تحت الخط',
        'Superscript': 'حرف فوقي',
        'Subscript': 'الفرعية النصي',
        'Align left': 'محاذاة اليسار',
        'Align right': 'محاذاة اليمين',
        'Center': 'مركز',
        'Justify': 'برر',
        'Font color': 'لون الخط',
        'Text Align': 'محاذاة النص',
        'Text Properties': 'نوع الخط',
        'Draw Signature': 'ارسم التوقيع',
        'Create': 'خلق',
        'Font family': 'خط العائلة',
        'Font size': 'حجم الخط',
        'Free Text': 'نص حر',
        'Import Failed': 'نوع ملف سلمان أو اسم الملف غير صالح ؛ يرجى تحديد ملف سلمانصالح',
        'File not found': 'لم يتم العثور على ملف سلمان المستورد في الموقع المطلوب',
        'Export Failed': 'شل إجراء تصدير التعليقات التوضيحية ؛ يرجى التأكد من إضافة التعليقات التوضيحية بشكل صحيح',
        'Dynamic': 'متحرك',
        'Standard Business': 'الأعمال القياسية',
        'Sign Here': 'وقع هنا',
        'Custom Stamp': 'ختم مخصص',
        'InitialFieldDialogHeaderText': 'إضافة الأولية',
        'HandwrittenInitialDialogHeaderText': 'إضافة الأولية',
        'SignatureFieldDialogHeaderText': 'أضف التوقيع',
        'HandwrittenSignatureDialogHeaderText': 'أضف التوقيع',
        'Draw-hand Signature': 'يرسم',
        'Type Signature': 'نوع',
        'Upload Signature': 'تحميل',
        'Browse Signature Image': 'تصفح',
        'Save Signature': 'احفظ التوقيع',
        'Save Initial': 'حفظ الأولي',
        'Highlight context': 'تسليط الضوء',
        'Underline context': 'تسطير',
        'Strikethrough context': 'يتوسطه خط',
        'FormDesigner': 'إضافة وتحرير حقل النموذج',
        'SubmitForm': 'تقديم النموذج',
        'Search Text': 'بحث',
        'Draw Ink': 'ارسم الحبر',
        'Revised': 'مراجعة',
        'Reviewed': 'تمت المراجعة',
        'Received': 'تم الاستلام',
        'Confidential': 'مؤتمن',
        'Approved': 'وافق',
        'Not Approved': 'غير مقبول',
        'Witness': 'الشاهد',
        'Initial Here': 'المبدئي هنا',
        'Draft': 'مشروع',
        'Final': 'أخير',
        'For Public Release': 'للنشر العام',
        'Not For Public Release': 'ليس للنشر العام',
        'For Comment': 'للتعليق',
        'Void': 'فارغ',
        'Preliminary Results': 'نتائج اولية',
        'Information Only': 'المعلومات فقط',
        'Enter Signature as Name': 'أدخل أسمك',
        'Textbox': 'مربع الكتابة',
        'Password': 'كلمه السر',
        'Check Box': 'خانة اختيار',
        'Radio Button': 'زر الراديو',
        'Dropdown': 'اسقاط',
        'List Box': 'مربع القائمة',
        'Signature': 'إمضاء',
        'Delete FormField': 'حذف حقل النموذج',
        'FormDesigner Edit text': 'إضافة وتحرير حقل النموذج',
        'in': 'في',
        'm': 'م',
        'ft_in': 'قدم',
        'ft': 'قدم',
        'p': 'ص',
        'cm': 'سم',
        'mm': 'مم',
        'pt': 'نقطة',
        'cu': 'مكعب',
        'sq': 'قدم مربع',
        'General': 'جنرال لواء',
        'Appearance': 'مظهر خارجي',
        'Options': 'والخيارات',
        'Textbox Properties': 'خصائص مربع النص',
        'Name': 'اسم',
        'Tooltip': 'تلميح',
        'Value': 'القيمة',
        'Form Field Visibility': 'رؤية حقل النموذج',
        'Read Only': 'يقرأ فقط',
        'Required': 'مطلوب',
        'Checked': 'التحقق',
        'Show Printing': 'عرض الطباعة',
        'Formatting': 'صيغة',
        'Fill': 'يملأ',
        'Border': 'الحدود',
        'Border Color': 'لون الحدود',
        'Thickness': 'السماكة',
        'Max Length': 'الحد الاقصى للطول',
        'List Item': 'اسم العنصر',
        'Export Value': 'قيمة البند',
        'Dropdown Item List': 'قائمة العناصر المنسدلة',
        'List Box Item List': 'قائمة عناصر مربع القائمة',
        'Delete Item': 'حذف',
        'Up': 'فوق',
        'Down': 'تحت',
        'Multiline': 'متعدد الأسطر',
        'Initial': 'أولي',
        'Export XFDF': 'تصدير التعليق التوضيحي إلى ملف XFDF',
        'Import XFDF': 'استيراد التعليقات التوضيحية من ملف XFDF',
        'Organize Pages': 'تنظيم الصفحات',
        'Insert Right': 'أدخل الحق',
        'Insert Left': 'أدخل اليسار',
        'Total': 'المجموع',
        'Pages': 'الصفحات',
        'Rotate Right': 'تدوير لليمين',
        'Rotate Left': 'استدر يسارا',
        'Delete Page': 'حذف الصفحة',
        'Delete Pages': 'حذف الصفحات',
        'Copy Page': 'انسخ الصفحة',
        'Copy Pages': 'نسخ الصفحات',
        'Save': 'يحفظ',
        'Save As': 'حفظ باسم',
        'Select All': 'اختر الكل',
        'Import Document': 'استيراد المستند',
        'Match any word': 'تطابق أي كلمة',
        'Client error': 'تم العثور على خطأ في جانب العميل. يرجى التحقق من رؤوس Ajax المخصصة في خاصية AjaxRequestSettings وطرق الويب في خاصية ServerActionSettings',
        'Cors policy error': 'تعذر استرداد المستند بسبب عنوان URL غير صالح أو قيود على الوصول. يرجى التحقق من عنوان URL للمستند والمحاولة مرة أخرى',
        'No More Matches': 'انتهى العارض من البحث في المستند. لم يتم العثور على تطابقات أخرى',
        'No Search Matches': 'لم يتم العثور على تطابقات',
        'No More Search Matches': 'لم يتم العثور على تطابقات أخرى',
        'Exact Matches': 'تطابقات دقيقة',
        'Total Matches': 'إجمالي التطابقات'
    }
  }
});

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [PdfViewerModule],
  providers: [
    ToolbarService,
    MagnificationService,
    NavigationService,
    LinkAnnotationService,
    BookmarkViewService,
    ThumbnailViewService,
    PrintService,
    TextSelectionService,
    TextSearchService,
    AnnotationService,
    FormDesignerService,
    FormFieldsService,
    PageOrganizerService
  ],
  template: `
    <div class="control-section">
      <!-- Using locale updates culture and enableRtl enables Right to Left rendering -->
      <ejs-pdfviewer
        id="pdfViewer"
        [documentPath]="documentPath"
        [resourceUrl]="resourceUrl"
        locale="ar-AE"
        [enableRtl]="true"
        style="height: 640px">
      </ejs-pdfviewer>
    </div>
  `
})
export class AppComponent {

  public documentPath: string =
    'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';

  public resourceUrl: string =
    'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib';
}

NOTE

A comprehensive list of localization files and default strings is available on GitHub: GitHub Locale. Provide only keys that require overrides; missing keys fall back to the default en-US values.

See Also