mobx-translate
TypeScript icon, indicating that this package has built-in type declarations

0.0.6 • Public • Published

MobX Translate

Installation:

npm install mobx-translate --save

Usage

First, create interface for your translations:

export interface TranslationKeys {
  list: {
    HEADING
    MORE
  },
  widget: {
    HELLO
    BYE
  }
}

Then, define your strings. With code completion for keys, and full Mustache template support in values:

import {TranslationKeys} from './translation-keys';
 
export const EN:TranslationKeys = {
  list: {
    HEADING: 'Available jobs',
    MORE: 'More'
  },
  widget: {
    HELLO: 'Hello {{name}}',
    BYE: 'Bye {{name}}'
  }
}
 
export const DE:TranslationKeys = {
  list: {
    HEADING: "Verfügbare Berufe",
    MORE: "Mehr"
  },
  widget: {
    HELLO: "Gutten tag {{name}}",
    BYE: "Auf wiedersehn {{name}}"
  }
}

Initialize MobxTranslate, pass your translations interface as a generic:

import {TranslationKeys} from './strings/translation-keys';
import {MobxTranslate} from './mobx-translate';
 
import {EN} from './strings/en';
import {DE} from './strings/de';
 
const translateInstance = new MobxTranslate<TranslationKeys>();
 
translateInstance.loadStrings('EN', EN);
translateInstance.loadStrings('DE', DE);
translateInstance.setLanguage('EN');
 
export const trans = translateInstance;

And then easily switch languages and translate strings in React components. Again, with code completion for translation keys!:

import * as React from 'react';
import {observer} from 'mobx-react';
 
import {trans} from '../stores/translate';
 
@observer
export class Foo extends React.Component<{}, {}> {
  render() {
    return (
    <div className="container">
      <h1>{trans.key.widget.HELLO({name: 'Joe'})}</h1>
      <button onClick={trans.setLanguage.bind(trans,'EN')}>EN</button>
      <button onClick={trans.setLanguage.bind(trans,'DE')}>DE</button>
      <h1>{trans.key.list.HEADING()}</h1>
    </div>)
  }
}

Package Sidebar

Install

npm i mobx-translate

Weekly Downloads

8

Version

0.0.6

License

MIT

Last publish

Collaborators

  • tomaash