0.2.6 • Published 3 years ago

@otosense/locale v0.2.6

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

oto-locale

Small UI localization utility build with MobX. Reads the current locale from the browser, then downloads a JSON file containing strings and string templates for that locale.

Usage

Initialization

import LocaleStore from 'oto-locale';

// Load locale from browser from default file path `/static/json/locales/${LOCALE}.json` 
const localeStore: LocaleStore = new LocaleStore();

Basic strings

const plainString: string = localeStore.strings.plainExample;
const plainNestedString: string = localStore.strings.nestedExamples.plain;

Keyword formatting

localeStore.strings.formatExample = 'Template string with variables {a}, {b}, {c}';
const keywords: any = {a: '1', b: '2', c: '3'}
const formattedString: string = localeStore.getFormattedString('formatExample', keywords);
// 'Template string with variables 1, 2, 3'

Positional formatting

localeStore.strings.formatExample2 = 'Template string with variables {0}, {1}, {2}'
const values: string[] = ['a', 'b', 'c']
const formattedString2: string = localeStore.getFormattedString('formatExample2', values);
// 'Template string with variables a, b, c'

Formatting nested values

localeStore.strings.nestedExamples = {
    formatExample3: 'Nested template with a variable {0}'
}
const value: string[] = ['A']
const formattedString3: string = localeStore.getFormattedString('nestedExamples.formatExample3', value);
// 'Nested template with a variable A'

Overriding default file path

const localeDirectory: string = '/src/shared/localeStrings'; // should not have a trailing slash
const newLocaleStore: LocaleStore = new LocaleStore(localeDirectory);

Manually setting locale

import { LOCALES } from 'oto-locale';
newLocaleStore.setLocale(LOCALES.DANISH);

// Alternative using standard locale codes
newLocaleStore.setLocale('es');

Usage with React

import * as React from 'react';

import { Provider } from 'mobx-react';
import LocaleStore, { LOCALES } from 'oto-locale';

export default class App extends React.Component<any, null>{
    localeStore: LocaleStore;
    constructor(props) {
        super(props);
        const supportedLocales: LOCALES[] = [LOCALES.ENGLISH, LOCALES.SPANISH, LOCALES.FRENCH]; 
        this.localeStore = new LocaleStore({ supportedLocales });
    }

    render() {
        return (
            <Provider localeStore={this.localeStore}>
                Put application components here, using mobx @inject to access localeStore
            </Provider>
        );
    }   

}
0.2.6

3 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.0.5

4 years ago