JavaScript Grid: Localisation
All the displayed text in the grid is customisable for the purposes of localisation. This is done by providing locale information to the grid for the required language. Either provide an object of key/value pairs via the localeText
property, or provide a localeTextFunc
callback to hook the grid up to your application's localisation.
The default language of the grid is American English. The grid does not come with other locales. If you want to provide the grid in another language, you must provide to the grid the relevant locale information.
Creating a Locale
The grid by default does not need a locale. If no locale is provided, the grid will default to English. If a locale is provided but is missing values, the default English will be used for the missing values.
An example full locale file is provided below. To support other languages, the first step is to copy this file and translate the values into the required language.
// Example locale file for English, give this to your locale team to translate
const AG_GRID_LOCALE_EN = {
// Set Filter
selectAll: '(Select All)',
selectAllSearchResults: '(Select All Search Results)',
searchOoo: 'Search...',
blanks: '(Blanks)',
noMatches: 'No matches',
// Number Filter & Text Filter
filterOoo: 'Filter...',
equals: 'Equals',
notEqual: 'Not equal',
empty: 'Choose One',
// Number Filter
lessThan: 'Less than',
greaterThan: 'Greater than',
lessThanOrEqual: 'Less than or equal',
greaterThanOrEqual: 'Greater than or equal',
inRange: 'In range',
inRangeStart: 'to',
inRangeEnd: 'from',
// Text Filter
contains: 'Contains',
notContains: 'Not contains',
startsWith: 'Starts with',
endsWith: 'Ends with',
// Date Filter
dateFormatOoo: 'yyyy-mm-dd',
// Filter Conditions
andCondition: 'AND',
orCondition: 'OR',
// Filter Buttons
applyFilter: 'Apply',
resetFilter: 'Reset',
clearFilter: 'Clear',
cancelFilter: 'Cancel',
// Filter Titles
textFilter: 'Text Filter',
numberFilter: 'Number Filter',
dateFilter: 'Date Filter',
setFilter: 'Set Filter',
// Side Bar
columns: 'Columns',
filters: 'Filters',
// columns tool panel
pivotMode: 'Pivot Mode',
groups: 'Row Groups',
rowGroupColumnsEmptyMessage: 'Drag here to set row groups',
values: 'Values',
valueColumnsEmptyMessage: 'Drag here to aggregate',
pivots: 'Column Labels',
pivotColumnsEmptyMessage: 'Drag here to set column labels',
// Header of the Default Group Column
group: 'Group',
// Other
loadingOoo: 'Loading...',
noRowsToShow: 'No Rows To Show',
enabled: 'Enabled',
// Menu
pinColumn: 'Pin Column',
pinLeft: 'Pin Left',
pinRight: 'Pin Right',
noPin: 'No Pin',
valueAggregation: 'Value Aggregation',
autosizeThiscolumn: 'Autosize This Column',
autosizeAllColumns: 'Autosize All Columns',
groupBy: 'Group by',
ungroupBy: 'Un-Group by',
resetColumns: 'Reset Columns',
expandAll: 'Expand All',
collapseAll: 'Close All',
copy: 'Copy',
ctrlC: 'Ctrl+C',
copyWithHeaders: 'Copy With Headers',
paste: 'Paste',
ctrlV: 'Ctrl+V',
export: 'Export',
csvExport: 'CSV Export',
excelExport: 'Excel Export',
// Enterprise Menu Aggregation and Status Bar
sum: 'Sum',
min: 'Min',
max: 'Max',
none: 'None',
count: 'Count',
avg: 'Average',
filteredRows: 'Filtered',
selectedRows: 'Selected',
totalRows: 'Total Rows',
totalAndFilteredRows: 'Rows',
more: 'More',
to: 'to',
of: 'of',
page: 'Page',
nextPage: 'Next Page',
lastPage: 'Last Page',
firstPage: 'First Page',
previousPage: 'Previous Page',
// Enterprise Menu (Charts)
pivotChartAndPivotMode: 'Pivot Chart & Pivot Mode',
pivotChart: 'Pivot Chart',
chartRange: 'Chart Range',
columnChart: 'Column',
groupedColumn: 'Grouped',
stackedColumn: 'Stacked',
normalizedColumn: '100% Stacked',
barChart: 'Bar',
groupedBar: 'Grouped',
stackedBar: 'Stacked',
normalizedBar: '100% Stacked',
pieChart: 'Pie',
pie: 'Pie',
doughnut: 'Doughnut',
line: 'Line',
xyChart: 'X Y (Scatter)',
scatter: 'Scatter',
bubble: 'Bubble',
areaChart: 'Area',
area: 'Area',
stackedArea: 'Stacked',
normalizedArea: '100% Stacked',
histogramChart: 'Histogram',
// Charts
pivotChartTitle: 'Pivot Chart',
rangeChartTitle: 'Range Chart',
settings: 'Settings',
data: 'Data',
format: 'Format',
categories: 'Categories',
defaultCategory: '(None)',
series: 'Series',
xyValues: 'X Y Values',
paired: 'Paired Mode',
axis: 'Axis',
navigator: 'Navigator',
color: 'Color',
thickness: 'Thickness',
xType: 'X Type',
automatic: 'Automatic',
category: 'Category',
number: 'Number',
time: 'Time',
xRotation: 'X Rotation',
yRotation: 'Y Rotation',
ticks: 'Ticks',
width: 'Width',
height: 'Height',
length: 'Length',
padding: 'Padding',
spacing: 'Spacing',
chart: 'Chart',
title: 'Title',
titlePlaceholder: 'Chart title - double click to edit',
background: 'Background',
font: 'Font',
top: 'Top',
right: 'Right',
bottom: 'Bottom',
left: 'Left',
labels: 'Labels',
size: 'Size',
minSize: 'Minimum Size',
maxSize: 'Maximum Size',
legend: 'Legend',
position: 'Position',
markerSize: 'Marker Size',
markerStroke: 'Marker Stroke',
markerPadding: 'Marker Padding',
itemSpacing: 'Item Spacing',
itemPaddingX: 'Item Padding X',
itemPaddingY: 'Item Padding Y',
layoutHorizontalSpacing: 'Horizontal Spacing',
layoutVerticalSpacing: 'Vertical Spacing',
strokeWidth: 'Stroke Width',
offset: 'Offset',
offsets: 'Offsets',
tooltips: 'Tooltips',
callout: 'Callout',
markers: 'Markers',
shadow: 'Shadow',
blur: 'Blur',
xOffset: 'X Offset',
yOffset: 'Y Offset',
lineWidth: 'Line Width',
normal: 'Normal',
bold: 'Bold',
italic: 'Italic',
boldItalic: 'Bold Italic',
predefined: 'Predefined',
fillOpacity: 'Fill Opacity',
strokeOpacity: 'Line Opacity',
histogramBinCount: 'Bin count',
columnGroup: 'Column',
barGroup: 'Bar',
pieGroup: 'Pie',
lineGroup: 'Line',
scatterGroup: 'X Y (Scatter)',
areaGroup: 'Area',
histogramGroup: 'Histogram',
groupedColumnTooltip: 'Grouped',
stackedColumnTooltip: 'Stacked',
normalizedColumnTooltip: '100% Stacked',
groupedBarTooltip: 'Grouped',
stackedBarTooltip: 'Stacked',
normalizedBarTooltip: '100% Stacked',
pieTooltip: 'Pie',
doughnutTooltip: 'Doughnut',
lineTooltip: 'Line',
groupedAreaTooltip: 'Area',
stackedAreaTooltip: 'Stacked',
normalizedAreaTooltip: '100% Stacked',
scatterTooltip: 'Scatter',
bubbleTooltip: 'Bubble',
histogramTooltip: 'Histogram',
noDataToChart: 'No data available to be charted.',
pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',
chartSettingsToolbarTooltip: 'Menu',
chartLinkToolbarTooltip: 'Linked to Grid',
chartUnlinkToolbarTooltip: 'Unlinked from Grid',
chartDownloadToolbarTooltip: 'Download Chart',
// ARIA
ariaHidden: 'hidden',
ariaVisible: 'visible',
ariaChecked: 'checked',
ariaUnchecked: 'unchecked',
ariaIndeterminate:'indeterminate',
ariaColumnSelectAll: 'Toggle Select All Columns',
ariaInputEditor: 'Input Editor',
ariaDateFilterInput: 'Date Filter Input',
ariaFilterInput: 'Filter Input',
ariaFilterColumnsInput: 'Filter Columns Input',
ariaFilterValue: 'Filter Value',
ariaFilterFromValue: 'Filter from value',
ariaFilterToValue: 'Filter to value',
ariaFilteringOperator: 'Filtering Operator',
ariaColumnToggleVisibility: 'column toggle visibility',
ariaColumnGroupToggleVisibility: 'column group toggle visibility',
ariaRowSelect: 'Press SPACE to select this row',
ariaRowDeselect: 'Press SPACE to deselect this row',
ariaRowToggleSelection: 'Press Space to toggle row selection',
ariaRowSelectAll: 'Press Space to toggle all rows selection',
ariaSearch: 'Search',
ariaSearchFilterValues: 'Search filter values'
}
You can download the full file from here.
There is one locale file for all of the grid. The file covers all modules across all of AG Grid Enterprise and AG Grid Community. This was done on purpose as having multiple files for each module would provide to much confusion. The decision was made to keep it simple in one file.
Installing a Locale
To install a locale into the grid, set the locale object to the grid's localeText
property. The example below shows this in action:
The example below shows installing a locale file. The example has two local files locale.en.js
and locale.zzz.js
. The second one is a dummy locale, it just adds "zzz" to the start of each value. This is done so that the example looks different - otherwise is would just display English as normal and there would be no way of knowing if the locale was working or not as English is the default.
This to try in the example are as follows:
- Open up in Plunker.
- Change the locale to English by changing
localeText = AG_GRID_LOCALE_ZZZ
tolocaleText = AG_GRID_LOCALE_EN
. - Edit values in
locale.en.js
and observe the changes in the grid.
Changing Locale
The grid uses the locale as it is needed. It does not refresh as the locale changes. If your application allows changing the locale for the application, you must destroy and recreate the grid for it to use the new locale.
Locale Callback
Providing a locale for the grid does not fit in with localisation libraries or localisation for a broader application. If you want the grid to take from an application wide locale, then implement the localeTextFunc
to act as a bridge between the grid and the applications localisation.
The example below shows providing a callback for the grid's localisation. The example for simplicity just returns back the default value in upper case. In a real world application, the callback would use the applications localisation.
In a real world application, the callback would look something like this:
const localeTextFunc = (key, defaultValue) => {
// to avoid key clash with external keys, we add 'grid' to the start of each key.
const gridKey = 'grid.' + key;
// look the value up using an application wide service
return applicationLocaleService(gridKey);
}