import { Meta } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional/Functions/computedByLanguage - Вычисляемое свойство по языку'/>

# `computedByLanguage`

Создаёт реактивное вычисляемое свойство, которое автоматически пересчитывается при изменении текущего языка или зависимостей внутри геттеров.

### Как это работает

Функция выполняет проверку в следующем порядке:
1. **Проверка языка**: Проверяет наличие установленного языка через `GeoRef.get().value`.
2. **Проверка условий**: Если передан параметр `conditions`, он вызывается для дополнительной проверки (например, проверка прав доступа или состояния загрузки данных).
3. **Выполнение основного геттера**: Если обе проверки выше прошли успешно, вызывается `getter`. Если он возвращает значение (не `undefined`), это значение становится результатом.
4. **Резервный вариант**: Если любая из проверок не прошла или `getter` вернул `undefined`, выполняется `getterNone`.

**Параметры:**
- `getter: ComputedGetter<R>` — Основная логика получения значения. Вызывается только если язык установлен и условия выполнены.
- `getterNone: R | (() => R)` — Резервное значение или функция, возвращающая его. Вызывается как "план Б". По умолчанию: `() => undefined`.
- `conditions?: () => boolean` — Функция-условие. Служит "затвором" (gatekeeper): если она возвращает `false`, основной `getter` даже не будет запущен.
- `debugOptions?: DebuggerOptions` — Опции отладки реактивных вычислений Vue.js.

**Возвращает:**
`ComputedRef<R>` — Реактивное вычисляемое свойство.

```typescript
import { computedByLanguage } from '@dxtmisha/functional'
import { ref } from 'vue'

// Базовый пример
const label = computedByLanguage(() => translateKey('hello'))

// С резервным значением
const title = computedByLanguage(
  () => translateKey('page.title'),
  () => 'Untitled'
)

// С дополнительным условием
const isReady = ref(true)
const content = computedByLanguage(
  () => translateKey('content'),
  () => 'Loading...',
  () => isReady.value
)
```
