1.1.6 • Published 7 years ago
react-transboard v1.1.6
react-transboard
- A translation board for making your react app multilingual.
Installation
npm install --save react-transboardUsage
Top level usage
react-transboardsuppliesTranslationProvider,TranslatorandTranslationViewercomponents.TranslationProvideris the translation context provider of the app.props:devis the environment indicator. If true, all relevant widgets will render, otherwise, the current translation will be used without supplying the translation board itself.dictis a dictionary built ahead you can supply for components to use.
Translatoris the translation board itself.TranslationViewera cool widget based onreact-state-tracewhich lets you see the translation data as you edit it.
import React from 'react';
import ReactDOM from 'react-dom';
import {
TranslationProvider,
TranslationViewer,
Translator,
} from 'react-transboard';
import AppRouter from './router';
import StoreProvider from './store';
const dict = {
Spanish: {
hello: 'hola',
goodbye: 'adios',
},
Russian: {
hello: 'Привет',
goodbye: 'до свидания',
},
};
const dev = window.DEVELOPMENT;
const App = () => (
<TranslationProvider
dev={dev}
dict={dict}
>
<Translator/>
<TranslationViewer/>
<StoreProvider>
<AppRouter/>
</StoreProvider>
</TranslationProvider>
);
ReactDOM.render(
<App/>,
document.getElementById('root')
);The text in the application
react-transboardsupplies the functiontwhich you should pass your text to using the base language you want to translate from, so the text in your app will be trackable by theTranslator.
import React from 'react';
import { t } from 'react-transboard';
import { NavLink } from 'react-router-dom';
import AuthLayout from './Base/AuthLayout';
import LoginForm from './Base/LoginForm';
import LoginMessage from './Base/LoginMessage';
const Login = () => (
<AuthLayout header={t('Connect to your account')}>
<LoginForm />
<LoginMessage>
<NavLink to='/signup'>
{t('Join')}
</NavLink>
</LoginMessage>
</AuthLayout>
);
export default Login;Translation hooks
react-transboardsupplies 2 very useful hooks that expose data and functionality.useTranslationslets you extract:baseLocalewhich is the base language you translate from.translatedLocaleswhich is an array of the languages you chose to translate to.translationswhich is the object that holds your translations.translateTo(lang: String)which is a function you can apply to move to a translation.
useDictlets you consume the dictionary (if you provided one) provided byTranslationProvidercomponent.
import React from 'react';
import { useTranslations, useDict } from 'react-transboard';
const Info = () => {
const { baseLocale, translatedLocales, translations, translateTo } = useTranslations();
const HELLO = useDict('hello');
return (
<div>
<p>Base Locale: {baseLocale}</p>
<ul>
<li>Translatable Locales:</li>
{translatedLocales.map(locale =>
<li key={locale}>{locale}</li>
)}
</ul>
<div>Translations: {JSON.stringify(translations, null, 2)}</div>
<div>
<button onClick={() => translateTo('Spanish')}>Spanish</button>
<button onClick={() => translateTo('Russian')}>Russian</button>
<button onClick={() => alert(HELLO)}>
Say hello in the current language!
</button>
</div>
</div>
);
};
export default Info;