Global local in EJ2 TypeScript Treegrid control
17 Dec 202424 minutes to read
Localization
The Localization
library allows you to localize default text content of the TreeGrid. The treegrid component has static text on some features (like toolbar area text, filter menu text, pager information text, etc.) that can be changed to other cultures (Arabic, Deutsch, French, etc.) by defining the
locale
value and translation object.
The following list of properties and its values are used in the treegrid.
Locale keywords | Text |
---|---|
EmptyRecord | No records to display |
True | true |
False | false |
ExpandAll | Expand All |
CollapseAll | Collapse All |
RowIndent | Indent |
RowOutdent | Outdent |
InvalidFilterMessage | Invalid Filter Data |
FilterbarTitle | \s filter bar cell |
Add | Add |
Edit | Edit |
Cancel | Cancel |
Update | Update |
Delete | Delete |
Pdfexport | PDF Export |
Excelexport | Excel Export |
Wordexport | Word Export |
Csvexport | CSV Export |
Search | Search |
Save | Save |
EditOperationAlert | No records selected for edit operation |
DeleteOperationAlert | No records selected for delete operation |
SaveButton | Save |
OKButton | OK |
CancelButton | Cancel |
EditFormTitle | Details of |
AddFormTitle | Add New Record |
ConfirmDelete | Are you sure you want to Delete Record? |
SearchColumns | search columns |
Matchs | No Matches Found |
FilterButton | Filter |
ClearButton | Clear |
StartsWith | Starts With |
EndsWith | Ends With |
Contains | Contains |
Equal | Equal |
NotEqual | Not Equal |
LessThan | Less Than |
LessThanOrEqual | Less Than Or Equal |
GreaterThan | Greater Than |
GreaterThanOrEqual | Greater Than Or Equal |
ChooseDate | Choose a Date |
EnterValue | Enter the value |
autoFitAll | Auto Fit all columns |
autoFit | Auto Fit this column |
Export | Export |
FirstPage | First Page |
LastPage | Last Page |
PreviousPage | Previous Page |
NextPage | Next Page |
SortAscending | Sort Ascending |
SortDescending | Sort Descending |
EditRecord | Edit Record |
DeleteRecord | Delete Record |
Above | Above |
Below | Below |
AddRow | Add Row |
FilterMenu | Filter |
SelectAll | Select All |
Blanks | Blanks |
FilterTrue | True |
FilterFalse | False |
NoResult | No Matches Found |
ClearFilter | Clear Filter |
NumberFilter | Number Filters |
TextFilter | Text Filters |
DateFilter | Date Filters |
MatchCase | Match Case |
Between | Between |
CustomFilter | Custom Filter |
CustomFilterPlaceHolder | Enter the value |
CustomFilterDatePlaceHolder | Choose a date |
AND | AND |
OR | OR |
ShowRowsWhere | Show rows where: |
currentPageInfo | {0} of {1} pages |
totalItemsInfo | ({0} items) |
firstPageTooltip | Go to first page |
lastPageTooltip | Go to last page |
nextPageTooltip | Go to next page |
previousPageTooltip | Go to previous page |
nextPagerTooltip | Go to next pager |
previousPagerTooltip | Go to previous pager |
pagerDropDown | Items per page |
pagerAllDropDown | Items |
All | All |
Loading translations
To load translation object in an application, use load
function of the L10n
class.
The following example demonstrates the TreeGrid in Deutsch
culture.
import { L10n } from '@syncfusion/ej2-base';
import { TreeGrid, Toolbar, Page, Filter } from '@syncfusion/ej2-treegrid';
import { sampleData } from './datasource.ts';
TreeGrid.Inject(Toolbar, Filter, Page);
L10n.load({
'de-DE': {
'treegrid': {
'EmptyRecord': 'Keine Aufzeichnungen angezeigt',
'Expand All': 'Alle erweitern',
'Collapse All': 'Alles einklappen',
"Print": "Drucken",
"Pdfexport": "PDF-Export",
"Excelexport": "Excel-Export",
"Wordexport": "Word-Export",
"FilterButton": "Filter",
"ClearButton": "klar",
"StartsWith": "Beginnt mit",
"EndsWith": "Endet mit",
"Contains": "Enthält",
"Equal": "Gleich",
"NotEqual": "Nicht gleich",
"LessThan": "Weniger als",
"LessThanOrEqual": "Weniger als oder gleich",
"GreaterThan": "Größer als",
"GreaterThanOrEqual": "Größer als oder gleich",
"EnterValue": "Geben Sie den Wert ein",
"FilterMenu": "Filter"
},
'pager': {
'currentPageInfo': '{0} von {1} Seiten',
'totalItemsInfo': '({0} Beiträge)',
'firstPageTooltip': 'Zur ersten Seite',
'lastPageTooltip': 'Zur letzten Seite',
'nextPageTooltip': 'Zur nächsten Seite',
'previousPageTooltip': 'Zurück zur letzten Seit',
'nextPagerTooltip': 'Zum nächsten Pager',
'previousPagerTooltip': 'Zum vorherigen Pager'
},
"dropdowns": {
"noRecordsTemplate": "Keine Aufzeichnungen gefunden"
},
"datepicker": {
"placeholder": "Wählen Sie ein Datum",
"today": "heute"
}
}
});
TreeGrid.Inject(Toolbar, Filter);
let treeGridObj: TreeGrid = new TreeGrid({
dataSource: sampleData,
locale: 'de-DE',
childMapping: 'subtasks',
toolbar: ['Print'],
allowFiltering: true,
filterSettings: {type: 'Menu'},
height: 220,
allowPaging: true,
pageSettings: {pageSize: 7},
treeColumnIndex: 1,
columns: [
{ field: 'taskID', headerText: 'Task ID', width: 90, textAlign: 'Right' },
{ field: 'taskName', headerText: 'Task Name', width: 180, textAlign: 'Left' },
{ field: 'duration', headerText: 'Duration', width: 80, textAlign: 'Right' }
]
});
treeGridObj.appendTo('#TreeGrid');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Grid</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript Grid Control" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-base/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-grids/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-treegrid/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-buttons/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-popups/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-navigations/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-dropdowns/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-lists/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-inputs/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-calendars/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-splitbuttons/styles/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container'>
<div id='TreeGrid'></div>
</div>
</body>
</html>
Localization of dependent components in TreeGrid
When localizing TreeGrid, it’s important to include dependent components like DatePicker, Form Validator, and Grid, as they have their own static text that requires localization. Follow these steps to localize these components:
-
DatePicker: Localize placeholders, “today” text, etc., using the DatePicker localization keys
Example localization keys for the date picker:
"datepicker": { "placeholder": "Wählen Sie ein Datum", "today": "heute" }
-
Form Validator: Localize validation messages (e.g., required fields, email validation) using the Form Validator localization keys.
Example keys for form validation localization:
"formValidator":{ "required": "This field is required", "email": "Please enter a valid email address", "minLength": "Please enter at least {0} characters" }
-
Grid Keys: For additional TreeGrid-related keys, use the Grid localization keys.
Example keys for grid keys localization:
"grid" :{ "True": "true", "False": "false", "Item": "item", "Items": "items", "OKButton": "OK", }
Below is an example JSON snippet consolidating the localization keys for dependent components used in TreeGrid using
load
function of theL10n
class and update thelocale
property of treegrid with the culture name used in theload
function:L10n.load({ 'de-DE': { "datepicker": { "placeholder": "Wählen Sie ein Datum", "today": "heute" }, "formValidator":{ "required": "This field is required", "email": "Please enter a valid email address", "minLength": "Please enter at least {0} characters" }, "grid" :{ "True": "true", "False": "false", "Item": "item", "Items": "items", "OKButton": "OK", } } });
Internationalization
The Internationalization
library is used to globalize number, date, and time values in treegrid component using format strings in the columns.format
.
import { loadCldr, L10n, setCulture, setCurrencyCode } from '@syncfusion/ej2-base';
import * as currencies from './currencies.json';
import * as cagregorian from './ca-gregorian.json';
import * as numbers from './numbers.json';
import * as timeZoneNames from './timeZoneNames.json';
import * as numberingSystems from './numberingSystems.json';
import { TreeGrid, Page, Toolbar, Filter } from '@syncfusion/ej2-treegrid';
import { formatData } from './datasource.ts';
TreeGrid.Inject(Page, Toolbar, Filter);
loadCldr(currencies, cagregorian, numbers, timeZoneNames, numberingSystems);
setCulture('de');
setCurrencyCode('EUR');
L10n.load({
'de-DE': {
'grid': {
'EmptyRecord': 'Keine Aufzeichnungen angezeigt',
"Print": "Drucken",
"FilterButton": "Filter",
"ClearButton": "klar",
"StartsWith": "Beginnt mit",
"EndsWith": "Endet mit",
"Contains": "Enthält",
"Equal": "Gleich",
"NotEqual": "Nicht gleich",
"LessThan": "Weniger als",
"LessThanOrEqual": "Weniger als oder gleich",
"GreaterThan": "Größer als",
"GreaterThanOrEqual": "Größer als oder gleich",
"EnterValue": "Geben Sie den Wert ein",
"FilterMenu": "Filter"
},
'pager': {
'currentPageInfo': '{0} von {1} Seiten',
'totalItemsInfo': '({0} Beiträge)',
'firstPageTooltip': 'Zur ersten Seite',
'lastPageTooltip': 'Zur letzten Seite',
'nextPageTooltip': 'Zur nächsten Seite',
'previousPageTooltip': 'Zurück zur letzten Seit',
'nextPagerTooltip': 'Zum nächsten Pager',
'previousPagerTooltip': 'Zum vorherigen Pager'
},
"dropdowns": {
"noRecordsTemplate": "Keine Aufzeichnungen gefunden"
},
"datepicker": {
"placeholder": "Wählen Sie ein Datum",
"today": "heute"
}
}
});
let treeGridObj: TreeGrid = new TreeGrid({
dataSource: formatData,
locale: 'de-DE',
childMapping: 'subtasks',
toolbar: ['Print'],
allowFiltering: true,
filterSettings: {type: 'Menu'},
height: 220,
allowPaging: true,
pageSettings: {pageSize: 7},
treeColumnIndex: 1,
columns: [
{ field: 'orderID', headerText: 'Order ID', textAlign: 'Right', width: 90 },
{ field: 'orderName', headerText: 'Order Name', textAlign: 'Left', width: 180 },
{ field: 'price', headerText: 'Price', textAlign: 'Right', width: 80, format: {
format: 'C2', useGrouping: false,
minimumSignificantDigits: 1, maximumSignificantDigits: 3, currency: 'EUR'
}, type: 'number' },
]
});
treeGridObj.appendTo('#TreeGrid');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Grid</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript Grid Control" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-base/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-grids/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-treegrid/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-buttons/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-popups/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-navigations/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-dropdowns/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-lists/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-inputs/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-calendars/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-splitbuttons/styles/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container'>
<div id='TreeGrid'></div>
</div>
</body>
</html>
Right to left (RTL)
RTL provides an option to switch the text direction and layout of the TreeGrid component from right to left. It improves the user experiences and accessibility for users who use right-to-left languages (Arabic, Farsi, Urdu, etc.). To enable RTL Grid, set the enableRtl
to true.
import { L10n } from '@syncfusion/ej2-base';
import { TreeGrid, Page, Toolbar, Filter } from '@syncfusion/ej2-treegrid';
import { sampleData } from './datasource.ts';
TreeGrid.Inject(Page, Toolbar, Filter);
L10n.load({
'ar-AE': {
'treegrid': {
"EmptyRecord": "لا سجلات لعرضها",
"Print": "طباعة",
"FilterButton": "منقي",
"ClearButton": "واضح",
"StartsWith": "ابدا ب",
"EndsWith": "ينتهي مع",
"Contains": "يحتوي على",
"Equal": "مساو",
"NotEqual": "غير متساوي",
"LessThan": "أقل من",
"LessThanOrEqual": "اصغر من او يساوي",
"GreaterThan": "أكثر من",
"GreaterThanOrEqual": "أكبر من أو يساوي",
"ChooseDate": "اختر تاريخا",
"EnterValue": "أدخل القيمة",
"FilterMenu": "منقي"
},
'pager': {
'currentPageInfo': '{0} من {1} صفحة',
'totalItemsInfo': '({0} العناصر)',
'firstPageTooltip': 'انتقل إلى الصفحة الأولى',
'lastPageTooltip': 'انتقل إلى الصفحة الأخيرة',
'nextPageTooltip': 'انتقل إلى الصفحة التالية',
'previousPageTooltip': 'انتقل إلى الصفحة السابقة',
'nextPagerTooltip': 'الذهاب إلى بيجر المقبل',
'previousPagerTooltip': 'الذهاب إلى بيجر السابقة'
},
"dropdowns": {
"noRecordsTemplate": "لا توجد سجلات"
},
"datepicker": {
"placeholder": "اختر تاريخا",
"today": "اليوم"
}
}
});
let treeGridObj: TreeGrid = new TreeGrid({
dataSource: sampleData,
locale: 'ar-AE',
enableRtl: true,
childMapping: 'subtasks',
toolbar: ['Print'],
allowFiltering: true,
filterSettings: {type: 'Menu'},
height: 210,
allowPaging: true,
pageSettings: {pageSize: 7},
treeColumnIndex: 1,
columns: [
{ field: 'taskID', headerText: 'Task ID', width: 90, textAlign: 'Right' },
{ field: 'taskName', headerText: 'Task Name', width: 180, textAlign: 'Right' },
{ field: 'duration', headerText: 'Duration', width: 80, textAlign: 'Right' }
]
});
treeGridObj.appendTo('#TreeGrid');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Grid</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript Grid Control" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-base/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-grids/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-treegrid/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-buttons/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-popups/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-navigations/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-dropdowns/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-lists/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-inputs/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-calendars/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-splitbuttons/styles/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container'>
<div id='TreeGrid'></div>
</div>
</body>
</html>
See Also
You can refer to our
JavaScript Tree Grid
feature tour page for its groundbreaking feature representations. You can also explore our JavaScript Tree Grid exampleJavaScript Tree Grid example
to knows how to present and manipulate data.