Skip to content
/ yoi18n Public

⚡ Straightforward & less effort React i18n library. (Under 1kb gminzipped)

License

Notifications You must be signed in to change notification settings

fzn0x/yoi18n

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9a95893 · Dec 26, 2024

History

22 Commits
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 23, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Dec 26, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024
Jul 21, 2024

Repository files navigation

yoi18n

Warning

This package is still a work in progress.


GitHub Workflow Status GitHub npm npm JSR Bundle Size Bundle Size GitHub commit activity GitHub last commit


⚡Straightforward & less effort React i18n library.

Get to Know

Installation

bun install yoi18n
npm install yoi18n
yarn add yoi18n
pnpm install yoi18n

Usage

Creates lang.json and lang-admin.json files:

lang.json :

{
  "en": {
    "hello": "hello world"
  },
  "de": {
    "hello": "Guten Morgen"
  },
  "id": {
    "hello": "Hallo bang"
  }
}

lang-admin.json :

{
  "en": {
    "hello": "hello world from admin"
  },
  "de": {
    "hello": "Guten Morgen from admin"
  },
  "id": {
    "hello": "Hallo bang from admin"
  }
}

JavaScript

// lang.js
const i18n = require('yoi18n')

const t = i18n.init({
  namespace: {
    default: {
      // user pages
      load: `/lang.json`,
      defaultLang: 'en',
    },
    admin: {
      // admin pages
      load: `/lang-admin.json`,
      defaultLang: 'en',
    },
  },
  detection: {
    order: ['cookie', 'path', 'query'], // use defaultLang if not found
    defaultLang: 'en',
  },
})

console.log(t('hello')) // "hello" from default namespace
console.log(t('admin.hello')) // "hello" from admin namespace,

// You can export for reusability
// module.exports = t;

TypeScript

// lang.ts
import i18n from 'yoi18n'

const t = i18n.init({
  namespace: {
    default: {
      // user pages
      load: `/lang.json`,
      defaultLang: 'en',
    },
    admin: {
      // admin pages
      load: `/lang-admin.json`,
      defaultLang: 'en',
    },
  },
  detection: {
    order: ['cookie', 'path', 'query'], // use defaultLang if not found
    defaultLang: 'en',
  },
})

console.log(t('hello')) // "hello" from default namespace
console.log(t('admin.hello')) // "hello" from admin namespace,

// You can export for reusability
// export default t;

React

import i18n from 'yoi18n'

const t = i18n.init({
  namespace: {
    default: {
      // user pages
      load: `/lang.json`,
      defaultLang: 'en',
    },
    admin: {
      // admin pages
      load: `/lang-admin.json`,
      defaultLang: 'en',
    },
  },
  detection: {
    order: ['cookie', 'path', 'query'], // use defaultLang if not found
    defaultLang: 'en',
  },
})

// Creates a function LanguageSwitch to change defaultLang
export default function LanguageSwitch({ lang, ns }) {
  // t.switch is to change the defaultLang
  return <div onClick={() => t.switch(lang, ns)}>Switch Language for {ns}</div>
}

;<LanguageSwitch lang='de' ns='default' />
;<LanguageSwitch lang='de' ns='admin' />

License

yoi18n is MIT Licensed and Open Source Software by @fzn0x