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

33 lines
930 B
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`
}
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 (
2019-02-21 15:34:35 +01:00
<I18n>{({ i18n }) =>
2019-02-21 12:53:02 +01:00
<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>
)
}