---
title: useI18n
description: Read localized OpenPencil UI messages and switch the active SDK locale.
---
# useI18n
`useI18n()` returns reactive translation groups plus locale controls for OpenPencil-powered editor shells.
Use it when you want SDK-backed labels for menus, commands, panels, pages, and dialogs, or when you need to let users switch locales.
## Usage
```ts
import { useI18n } from '@open-pencil/vue'
const { menu, commands, panels, locale, availableLocales, localeLabels, setLocale } = useI18n()
```
## Returns
- `menu`
- `commands`
- `tools`
- `panels`
- `pages`
- `dialogs`
- `locale`
- `availableLocales`
- `localeLabels`
- `setLocale`
## Basic example
```vue
```
## Notes
- locale changes are reactive across all SDK message groups
- the SDK also exports lower-level locale primitives when you need direct store access
## Related APIs
- [useMenuModel](./use-menu-model)
- [SDK Locale APIs](../advanced/locale-apis)