rsnext/examples/with-lingui/components/LangSwitcher.js

45 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-02-21 12:53:02 +01:00
import Router from 'next/router'
import { I18n } from '@lingui/react'
import { t, Trans } from '@lingui/macro'
const availableLanguageNames = {
en: t`English`,
sv: t`Swedish`
2019-02-21 12:53:02 +01:00
}
const availableLanguages = Object.keys(availableLanguageNames)
export default () => {
function onSubmit (evt) {
evt.preventDefault()
Router.push({
pathname: window.location.pathname,
2019-02-21 15:34:35 +01:00
query: { lang: evt.currentTarget.lang.value }
2019-02-21 12:53:02 +01:00
})
}
return (
<I18n>
{({ i18n }) => (
<form onSubmit={onSubmit}>
<select
key={i18n.language}
name='lang'
defaultValue={availableLanguages.find(
lang => lang !== i18n.language
)}
>
{availableLanguages.map(lang => (
<option key={lang} value={lang} disabled={i18n.language === lang}>
{i18n._(availableLanguageNames[lang])}
</option>
))}
</select>
<button>
<Trans>Switch language</Trans>
</button>
</form>
)}
</I18n>
2019-02-21 12:53:02 +01:00
)
}