PHPackages                             slexx/lang - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. slexx/lang

ActiveLibrary[Localization &amp; i18n](/categories/localization)

slexx/lang
==========

Internalization library

v0.1(8y ago)314MITPHP

Since Dec 28Pushed 8y agoCompare

[ Source](https://github.com/slexx1234/lang)[ Packagist](https://packagist.org/packages/slexx/lang)[ RSS](/packages/slexx-lang/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

Internalization library
=======================

[](#internalization-library)

Класс для управления локализацией, не привязан к файловой системе, может работать с любой структурой файлов и папок. Умеет работать с json, yaml, ini и php файлами.

[![Latest Stable Version](https://camo.githubusercontent.com/d6963e62c32e8fd06a88c1e35f19581fd2c841a2b1e6c802475e983a77a766f4/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f6c616e672f762f737461626c65)](https://packagist.org/packages/slexx/lang) [![Total Downloads](https://camo.githubusercontent.com/ad63f6d2b3f4068665249a5c73e03028199ca269bc463fdad61bdd1cfea103ed/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f6c616e672f646f776e6c6f616473)](https://packagist.org/packages/slexx/lang) [![Latest Unstable Version](https://camo.githubusercontent.com/69a9d061801b289c0dd6fcffcb494abcad588cb23128e7f6ddab3008b8f705dd/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f6c616e672f762f756e737461626c65)](https://packagist.org/packages/slexx/lang) [![License](https://camo.githubusercontent.com/d657c20506453d25a2ffceb74c154b5015d2d2a0b0a463ec4446811363acebe0/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f6c616e672f6c6963656e7365)](https://packagist.org/packages/slexx/lang)

```
// Устанавливаем файлы с переводами
Lang::setFile('ru', 'messages', __DIR__ . '/locales/ru/messages.json');
Lang::setFile('en', 'messages', __DIR__ . '/locales/en/messages.yaml');

// Устанавливаем локализацию
Lang::setLocale(Lang::searchLocale('ru'));

// Добываем переводы в нужных местах
Lang::translate('messages:key');
```

Установка
---------

[](#установка)

Установка через composer:

```
$ composer require slexx/lang
```

Документация
------------

[](#документация)

### Lang::setFile($locale, $namespace, $path)

[](#langsetfilelocale-namespace-path)

Устанавливает файл локализации

**Аргументы:**

ИмяТипОписание`$locale``string`ISO код язака (ru, en\_AU, ru\_RU...)`$namespace``string`Пространство имён для строк локализации`$path``string`Путь к файлу (yaml, json, php, ini)**Исключения:**

ТипОписание`FileNotExistsException`Будет брошено если файла не существует**Возвращает:** `void`

### Lang::hasFile($locale, $namespace)

[](#langhasfilelocale-namespace)

Проверка существования файла локализации

**Аргументы:**

ИмяТипОписание`$locale``string`ISO код язака (ru, en\_AU, ru\_RU...)`$namespace``string`Пространство имён для строк локализации**Возвращает:** `bool`

### Lang::getFile($locale, $namespace)

[](#langgetfilelocale-namespace)

Получение пути к файлу локализации

**Аргументы:**

ИмяТипОписание`$locale``string`ISO код язака (ru, en\_AU, ru\_RU...)`$namespace``string`Пространство имён для строк локализации**Возвращает:** `string`, `null` - Путь к файлу или `null` в случае его отсуцтвия

### Lang::removeFile($locale, $namespace)

[](#langremovefilelocale-namespace)

Удаление файла локализации

**Аргументы:**

ИмяТипОписание`$locale``string`ISO код язака (ru, en\_AU, ru\_RU...)`$namespace``string`Пространство имён для строк локализации**Возвращает:** `void`

### Lang::getLocales()

[](#langgetlocales)

Получение списка всех доступных локализаций

**Возвращает:** `string[]`

### Lang::props($string, $props)

[](#langpropsstring-props)

Замена переменных в строке

ИмяТипОписание`$string``string`Строка в которой будет произведена замена`$props``array`Массив параметров**Возвращает:** `string`

**Пример:**

```
echo Lang::props('Hello, :name!', ['name' => 'World']);
// Hello, World!
```

### Lang::parseAcceptLanguage()

[](#langparseacceptlanguage)

Парсинг HTTP заголовка Accept-Language

**Возвращает:** `array`

**Пример:**

```
var_dump(Lang::parseAcceptLanguage());
// [
//     ['code' => 'ru', 'region' => 'RU', 'quality' => 1],
//     ['code' => 'ru', 'region' => null, 'quality' => 0.8],
//     ['code' => 'en', 'region' => 'US', 'quality' => 0.6],
//     ['code' => 'en', 'region' => null, 'quality' => 0.4],
//     ...
// ]
```

### Lang::hasLocale($locale)

[](#langhaslocalelocale)

Проверка доступности локализации

**Аргументы:**

ИмяТипОписание`$locale``string`ISO код язака (ru, en\_AU, ru\_RU...)**Возвращает:** `bool`

### Lang::setLocale($locale)

[](#langsetlocalelocale)

Установка локализации

**Аргументы:**

ИмяТипОписание`$locale``string`ISO код язака (ru, en\_AU, ru\_RU...)**Исключения:**

ТипОписание`UndefinedLocaleException`Если локализация отсуцтвует**Возвращает:** `void`

### Lang::getLocale()

[](#langgetlocale)

Получение локализации

**Возвращает:** `string`

### Lang::searchLocale(\[$default\])

[](#langsearchlocaledefault)

Ищет наиболее подходящюю локализацию по заголовку Accept-Language. Перед использованием метода следует указать файлы локализации с помощью метода setFile

**Аргументы:**

ИмяТипОписание`[$default]``string`Локализация по умолчанию, в случае если парсинг Accept-Language не дал результатов**Возвращает:** `string` - ISO код наиболее подходящей локализации

### Lang::raw($path)

[](#langrawpath)

Получение сырого не обработанного перевода

**Аргументы:**

ИмяТипОписание`$path``string`Клуч перевода вида: пространство\_имён:ключ\_в\_массиве**Исключения:**

ТипОписание`NamespaceNotExistsException`Если пространство имён не существует`NoLocalizationException`Если локализация не существует**Возвращает:** `array`, `string`, `null`

### Lang::translate($path\[, $props\])

[](#langtranslatepath-props)

Получение перевода с заменой параметров

**Аргументы:**

ИмяТипОписание$path`string`Клуч перевода вида: пространство\_имён:ключ\_в\_массиве\[$props\]`array`Массив параметров**Исключения:**

ТипОписание`NamespaceNotExistsException`Если пространство имён не существует`NoLocalizationException`Если локализация не существует**Возвращает:** `string`

**Пример:**

messages.php:

```
