---

name: Локализация
theory: |

  Глобализация проявляется во многих аспектах, например, единой системе мер: время, размеры и расстояния, температуры, даты и многое другое. Конечно, есть страны которые выпадают из общего потока, например, США, чуть ли не единственная страна, в которой сохраняется и превалирует [английская система мер](https://ru.wikipedia.org/wiki/Английская_система_мер). Она использует мили вместо километров, фунты вместо килограммов. Во многих восточных странах по-другому устроены календари, и где-то сейчас идет четырёхтысячный год. Но в целом всё унифицировано.

  Несмотря на эту унификацию, в каждой стране есть свои особенности по способу записи, сравнению и другим аспектам. Например, в США принято в датах первым ставить месяц, а затем уже день. В некоторых странах для вывода вещественных чисел используют точку, а в некоторых — запятую: `1,234`. Эти особенности не обязательно привязаны к целой стране. Внутри одной страны может быть множество дополнительных разделений. Каждый такой набор особенностей называют **локалью**, а процесс адаптации к особенностям конкретной локали — **локализацией**.

  Локализация важна в программном обеспечении. Пользователь всегда ожидает, что любой софт (в том числе сайт) будет работать предсказуемо. В это понятие включается и локализация. Понятно, что самостоятельное решение этой задачи слишком затратно. К счастью, этого делать не нужно. Локализация обычно встроена либо в сам язык, либо в специальные библиотеки.

  В PHP для управления локалью используется функция [setlocale()](https://secure.php.net/manual/ru/function.setlocale.php). Эта функция настраивает локаль глобально. То есть её вызов влияет на все последующие функции, опирающиеся на локализацию.

  ```php
  string setlocale ( int $category , string $locale [, string $... ] )
  ```

  Первым параметром эта функция принимает название категории (как константу), к которой нужно применить локаль, передающуюся в параметрах дальше.

  * LC_ALL — всё нижеперечисленное
  * LC_COLLATE — функции сравнения строк (см. `strcoll()`)
  * LC_CTYPE — функции преобразования и классификации строк, например `strtoupper()`
  * LC_MONETARY — для функции `localeconv()`
  * LC_NUMERIC — задаёт символ десятичного разделения (см. также `localeconv()`)
  * LC_TIME — форматирование даты/времени функцией `strftime()`

  Пример того, как влияет установленная локаль на отображение данных:

  ```php
  <?php

  print_r(1.234); // => 1.234
  setlocale(LC_NUMERIC, 'ru_RU');
  print_r(1.234); // => 1,234
  ```

  Если вторым аргументом передать `0` вместо локали: `setlocale(LC_ALL, 0)`, то функция будет возвращать текущую установленную локаль для категории.

instructions: |

  Выведите на экран текущую локаль для категории `LC_CTYPE`.

tips: []

definitions: []
