--- 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)