# Localization Kepler.gl supports localization through [react-intl]. Locale is determined by `uiState.locale` value. Current supported languages are: | locale code | Language | Default? | |-------------|------------|----------| | en | English | default | | fi | Finnish | | | pt | Portuguese | | | ca | Catalan | | | es | Spanish | | | ja | Japanese | | | cn | Chinese | | | ru | Русский | | ## Changing default language By default the first language is English `en`. The default language can be changed by giving locale value to uiState: ```js import {combineReducers} from 'redux'; import keplerGlReducer from '@kepler.gl/reducers'; import {LOCALE_CODES} from '@kepler.gl/localization'; const customizedKeplerGlReducer = keplerGlReducer.initialState({ uiState: { // use Finnish locale locale: LOCALE_CODES.fi } }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer, app: appReducer }); ``` ## Adding new language Let's say we want to add the Swedish language to kepler.gl. Easiest way to add translation of new language is to follow these 3 steps: - Find out the [language code][language-codes] for Swedish: `sv` - Add new translation file `src/localization/translations/sv.js` by copying `src/localization/translations/en.js` and translating the strings - Update _LOCALES_ in `src/localization/locales.js` to include new language translation: ```javascript export const LOCALES = { en : 'English', fi : 'Suomi', pt: 'Português', // add Swedish language sv: 'Svenska' } ``` ## Modify default translation or add new translation the `localeMessages` prop of `KeplerGl` takes additional translations and merge with default translation. #### Example 1. Update default translation To update the english translation of `layerManager.addData`, pass `localeMessages` like this. ```javascript const localeMessages = { en: { ['layerManager.addData']: 'Add Data to Layer' } }; const App = () => ( ); ``` #### Example 2. Pass additional translation Sometimes together with dependency injection, you might need to add additional translations to the customized component. For example, adding an additional `settings` panel in the side panel, you will need to provide a translation for the panel name assigned to `sidebar.panels.settings` ```javascript const localeMessages = { en: { ['sidebar.panels.settings']: 'Settings' } }; const App = () => ( ); ``` [react-intl]: https://github.com/formatjs/react-intl [language-codes]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes