npm.io
0.1.1 • Published 7 years ago

i18next-react-markdown

Licence
MIT
Version
0.1.1
Deps
8
Size
8.9 MB
Vulns
0
Weekly
0

i18next-react-markdown

Embed React elements using markdown in i18next translation strings.

This wraps marksy with an HTML element and React component config import util.

Getting Started

Install and Build

npm install
Storybook
Run local storybook
npm start
Build storybook
npm run storybook:build

outputs static storybook site to docs/

Usage

This can be used in your own project and elements can be overriden with custom React components.

Locale keys must have the suffix: _md to use markdown.

Locale usage

Example locale JSON

{
  "website": "Website",
  "website-header_md": "Visit $t(website)"
}

returns "Visit Website"

i18next processor initialisation
import mdProcessor, { parser as mdParser } from 'i18next-react-markdown';

const elements = {
  h1({ id, children }: Attributes) {
    return (
      <h1 id={id}>
        {children}
      </h1>
    );
  },
}

const components = {
  Card({ children }: Attributes) {
    return (
      <div class="card">
        {children}
      </div>
    );
  },
}

const mdProcessor = createProcessor({
  elements,
  components,
  marksyOptions: {} // additional marksy input after elements and components
  markedOptions: {}
});

i18n
  .use(mdProcessor)
  .init({
    // ...
    postProcess: ['react-markdown'],
    // ...
  })

Editor usage

import Editor from 'i18next-react-markdown/Editor';

return (
  <Editor elements={elements} components={components} />
)

Markdown parser usage

import { parser as createMdParser } from 'i18next-react-markdown';


const mdParse = createMdParser(elements, components);