Skip to content

Zero hassle internationalization for your next.js apps. It's only under 2kb while letting you choose from more than 100+ locales.

License

Notifications You must be signed in to change notification settings

jaisharx/next-zero-intl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Next Zero Intl

Next Zero Intl is a next.js library built on top of google-translate-apis that you can just drop in your projects, and internationalize your app/website with zero config. Checkout this demo. 👇

Demo App

Installation

npm install next-zero-intl

or, if you're using yarn.

yarn add next-zero-intl

Configuration

First, you need to configure the <TranslationProvider/> in your _app.js file.

// pages/_app.js
import { TranslationProvider } from 'next-zero-intl'

export default function MyApp({ Component, pageProps }) {
  return (
    <TranslationProvider>
      <Component {...pageProps} />
    </TranslationProvider>
  )
}

Now create a translate.js file inside next.js API directory, and add the following code.

// pages/api/translate.js
import { handleTranslation } from 'next-zero-intl/api'

export default handleTranslation

and that's it, you've successfully configured next-zero-intl in your next.js app.

Usage

We provide you two simple hooks useTranslation & and useLocale to very simply add internationalization in your app. A simple example of how you'd use the translation hook is below.

import { useTranslation } from 'next-zero-intl'


function SomeComponent() {
  const { t } = useTranslation()
  render(<p>{t('Hello')}</p>)
}

We try to be as less opinionated as possible, in order to change the text in above component, you can write a simple select component that uses useLocale hook.

import { useLocale } from 'next-zero-intl'
import { useState } from 'react'

export default function ChangeLocale() {
  const [locale, setLocale] = useLocale()
  const [selected, setSelected] = useState(locale)

  const onSelectHandler = e => {
    setSelected(e.target.value)
    setLocale(e.target.value)
  }

  return (
    <select onChange={onSelectHandler} value={selected}>
      <option value="en">English</option>
      <option value="hi">Hindi</option>
    </select>
  )
}

Check out the full list of all the locales here.

Contributing

Check the contributing guidlines here.

License

Next Zero Intl is MIT licensed

About

Zero hassle internationalization for your next.js apps. It's only under 2kb while letting you choose from more than 100+ locales.

Resources

License

Stars

Watchers

Forks