rsnext/examples/with-react-intl/components/Nav.tsx
Henrik Wenz 6124e7d20c
Update with-react-intl example (#28336)
This PR implements Internationalized Routing using formatjs / react-intl.

## Changelog

- Updated formatjs to latest version
- Remove  deprecated babel-react-intl-plugin in favor of babel-formatjs-plugin
- Remove server in favour of Internationalized Routing
- Added linter with formatjs rules
- Refactored JSX
- Added missing types
- Auto run formtjs script via before hooks
- Adjusted readme docs
- Added message descriptions
- Removed default configs



fixes #27870

## Bug

- [x] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have helpful link attached, see `contributing.md`

## Documentation / Examples

- [x] Make sure the linting passes
2021-09-20 02:19:06 +00:00

51 lines
1.3 KiB
TypeScript

import Link from 'next/link'
import { useRouter } from 'next/router'
import { FormattedMessage } from 'react-intl'
import styles from './Nav.module.css'
export default function Nav() {
const { locale, locales, asPath } = useRouter()
return (
<nav className={styles.nav}>
<li className={styles.li}>
<Link href="/" passHref>
<a>
<FormattedMessage
defaultMessage="Home"
description="Nav: Index name"
/>
</a>
</Link>
</li>
<li className={styles.li}>
<Link href="/about" passHref>
<a>
<FormattedMessage
defaultMessage="About"
description="Nav: About item"
/>
</a>
</Link>
</li>
<li className={styles.divider}></li>
{locales.map((availableLocale) => (
<li key={availableLocale} className={styles.li}>
<Link
href={asPath}
locale={availableLocale}
passHref
prefetch={false}
>
<a
className={availableLocale === locale ? styles.active : undefined}
>
{availableLocale}
</a>
</Link>
</li>
))}
</nav>
)
}