0.11.0 • Published 3 years ago

@traduki/preact v0.11.0

Weekly downloads
1
License
MIT
Repository
github
Last release
3 years ago

@traduki/preact

npm

See main github repository readme.md

Examples

Install

Usage

\

Make sure to wrap you application in the TradukiProvider:

import { TradukiProvider } from '@traduki/preact';
import App from './App';

render(
    <TradukiProvider initialLocale="en">
        <App />
    </TradukiProvider>
    document.getElementById('root'),
);

useTranslator

Use the useTranslator hook to translate messages.

import { useTranslator } from '@traduki/preact';
import messages from './Component.messages.yaml';

function Component() {
    const t = useTranslator();

    return (
        <div>
            <p>{t(messages.welcome)}</p>
        </div>
    );
}

export default Component;

useLocale

Read the current locale or switch to another locale with the useLocale hook.

import { useLocale } from '@traduki/preact';
import messages from './Component.messages.yaml';

function Component() {
    const [locale, setLocale] = useLocale();

    return (
        <div>
            <p>Current locale: {locale}</p>
            <p>
                <button onClick={() => setLocale('en-US')}>en</button>
                <button onClick={() => setLocale('nl-NL')}>nl</button>
            </p>
        </div>
    );
}

export default Component;

waitForMessages

Traduki is build with code splitting in mind. The preact package provides a waitForMessages function.

Use waitForMessages when using lazy to make sure the chunk's messages are also loaded before rendering the chunk's component. This is prevent a flash of unlocalized texts.

// AsyncComponent.js
import { useTranslator } from '@traduki/preact';
import messages from './AsyncComponent.messages.yaml';

function AsyncComponent() {
    const t = useTranslator();

    return <div>{t(messages.hello)}</div>;
}

export default Component;


// Component.js
import { lazy } from 'preact/compat';
import { waitForMessages, useTranslator } from '@traduki/preact';
import messages from './Component.messages.yaml';

const AsyncComponent = lazy(() => import('./AsyncComponent').then(waitForMessages));

function Component() {
    const t = useTranslator();

    return (
        <div>
            <Suspense fallback={<div>{t(messages.loading)}</div>}>
                <AsyncComponent />
            </Suspense>
        </div>
    );
}

export default Component;
0.11.0

3 years ago

0.10.5

3 years ago

0.10.3

3 years ago

0.10.0

3 years ago

0.9.1

3 years ago

0.8.0

3 years ago

0.7.0

4 years ago