@nanointl/react
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

@nanointl/react

Optional package provides first class citizen support for nanointl with React framework.

Installation

pnpm add @nanointl/react
# or: npm install @nanointl/react

Usage

  1. Create IntlProvider component, useTranslation and useIntlControls hooks via makeReactIntl:
// src/i18n.ts
import { makeReactIntl } from '@nanointl/react/src/nanointl-react';
import enMessages from './locales/en.json';
import { tagsPlugin } from 'nanointl/tags';

export const { IntlProvider, useTranslation, useIntlControls } = makeReactIntl('en', enMessages);
  1. Wrap React application into IntlProvider.
// src/main.tsx
+ import { IntlProvider } from './i18n'
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
  <React.StrictMode>
+    <IntlProvider>
      <App />
+    </IntlProvider>
  </React.StrictMode>,
);
  1. Use localized messages via useTranslation or switch locales via useIntlControls.
// src/App.tsx
...
export const App: React.FC = () => {
+ const t = useTranslation();
  ...
  <div className="card">
    <button onClick={() => setCount((count) => count + 1)}>
-     clicked {count} time(s)
+     {t('counter', { count })}
    </button>
    <p>
-     Edit <code>{filePath}</code> and save to test HMR
+      {t('description', {
+        filePath: 'src/App.tsx',
+        code: ({ children }) => <code key="code">{children}</code>,
+      })}
    </p>
  </div>
  ...

Package Sidebar

Install

npm i @nanointl/react

Weekly Downloads

1

Version

0.0.2

License

MIT

Unpacked Size

4.14 kB

Total Files

4

Last publish

Collaborators

  • phytonmk