# Language switcher hook and context

Canonical page: https://docs.ovok.com/native-sdk/guide/components/language-switcher/advanced-api

`useLanguageSwitcher` reads the current selection and change callback from the
nearest `LanguageSwitcher`. The built-in option children already use this context;
use the hook when an app-owned child needs to render its own selected state.

```tsx
import { LanguageSwitcher, useLanguageSwitcher } from "@ovok/native/language-switcher";

function CurrentLanguage() {
  const { selectedLanguage } = useLanguageSwitcher();
  return <Text>{selectedLanguage}</Text>;
}

<LanguageSwitcher
  selectedLanguage={language}
  onLanguageChange={setLanguage}
>
  <CurrentLanguage />
  <LanguageSwitcher.Option value="en_US">
    <LanguageSwitcher.Option.Label>English</LanguageSwitcher.Option.Label>
  </LanguageSwitcher.Option>
</LanguageSwitcher>
```

The hook throws outside a `LanguageSwitcher`. The context contains only the selected
language and setter; it does not load translations or persist the selection.

## Public exports [#public-exports]

- `useLanguageSwitcher`
- `LanguageSwitcherContext`
- `LanguageSwitcherContextType`
