2017 © Pedro PelΓ‘ez
 

library lang

Internalization library

image

slexx/lang

Internalization library

  • Thursday, December 28, 2017
  • by slexx
  • Repository
  • 0 Watchers
  • 2 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 33 % Grown

The README.md

Internalization library

Класс для управлСния Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π½Π΅ привязан ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с любой структурой Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ. Π£ΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с json, yaml, ini ΠΈ php Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ., (*1)

Latest Stable Version Total Downloads Latest Unstable Version License, (*2)

// УстанавливаСм Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°ΠΌΠΈ
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:, (*3)

$ composer require slexx/lang

ДокумСнтация

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

УстанавливаСт Ρ„Π°ΠΉΠ» Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*4)

АргумСнты:, (*5)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)
$namespace string ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ для строк Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
$path string ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ (yaml, json, php, ini)

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:, (*6)

Вип ОписаниС
FileNotExistsException Π‘ΡƒΠ΄Π΅Ρ‚ Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ Ссли Ρ„Π°ΠΉΠ»Π° Π½Π΅ сущСствуСт

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: void, (*7)

Lang::hasFile($locale, $namespace)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сущСствования Ρ„Π°ΠΉΠ»Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*8)

АргумСнты:, (*9)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)
$namespace string ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ для строк Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: bool, (*10)

Lang::getFile($locale, $namespace)

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*11)

АргумСнты:, (*12)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)
$namespace string ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ для строк Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string, null - ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠ»ΠΈ null Π² случаС Π΅Π³ΠΎ отсуцтвия, (*13)

Lang::removeFile($locale, $namespace)

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*14)

АргумСнты:, (*15)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)
$namespace string ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ для строк Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: void, (*16)

Lang::getLocales()

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка всСх доступных Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, (*17)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string[], (*18)

Lang::props($string, $props)

Π—Π°ΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² строкС, (*19)

Имя Вип ОписаниС
$string string Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Π·Π°ΠΌΠ΅Π½Π°
$props array Массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string, (*20)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:, (*21)

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

Lang::parseAcceptLanguage()

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Accept-Language, (*22)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: array, (*23)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:, (*24)

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)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° доступности Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*25)

АргумСнты:, (*26)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: bool, (*27)

Lang::setLocale($locale)

Установка Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*28)

АргумСнты:, (*29)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:, (*30)

Вип ОписаниС
UndefinedLocaleException Если локализация отсуцтвуСт

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: void, (*31)

Lang::getLocale()

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*32)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string, (*33)

Lang::searchLocale([$default])

Π˜Ρ‰Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡŽΡŽ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ Accept-Language. ΠŸΠ΅Ρ€Π΅Π΄ использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setFile, (*34)

АргумСнты:, (*35)

Имя Вип ОписаниС
[$default] string Локализация ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² случаС Ссли парсинг Accept-Language Π½Π΅ Π΄Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string - ISO ΠΊΠΎΠ΄ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящСй Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, (*36)

Lang::raw($path)

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сырого Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, (*37)

АргумСнты:, (*38)

Имя Вип ОписаниС
$path string ΠšΠ»ΡƒΡ‡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π²ΠΈΠ΄Π°: пространствоимён:ΠΊΠ»ΡŽΡ‡Π²_массивС

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:, (*39)

Вип ОписаниС
NamespaceNotExistsException Если пространство ΠΈΠΌΡ‘Π½ Π½Π΅ сущСствуСт
NoLocalizationException Если локализация Π½Π΅ сущСствуСт

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: array, string, null, (*40)

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

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², (*41)

АргумСнты:, (*42)

Имя Вип ОписаниС
$path string ΠšΠ»ΡƒΡ‡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π²ΠΈΠ΄Π°: пространствоимён:ΠΊΠ»ΡŽΡ‡Π²_массивС
[$props] array Массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:, (*43)

Вип ОписаниС
NamespaceNotExistsException Если пространство ΠΈΠΌΡ‘Π½ Π½Π΅ сущСствуСт
NoLocalizationException Если локализация Π½Π΅ сущСствуСт

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string, (*44)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:, (*45)

messages.php:, (*46)

<?php
return [
    'hello' => 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, :name!',
];

index.php:, (*47)

Lang::setFile('ru', 'messages', __DIR__ . '/messages.php');
Lang::setLocale('ru');

echo Lang::translate('messages:hello', ['name' => 'АлСксСй']);
// Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, АлСксСй!'

Lang::setPluralFunction($locale, $function)

Установка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»ΡŽΡ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для языка, (*48)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)
$function array Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»ΡŽΠ»Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: void, (*49)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:, (*50)

Lang::setPluralFunction('ru', function($n) {
    return $n%10==1&&$n%100!=11?0:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?1:2);
});
Lang::setPluralFunction('en', function($n) {
    return $n>1?1:0;
});

Lang::removePluralFunction($locale)

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»ΡŽΡ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для языка, (*51)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: void, (*52)

Lang::hasPluralFunction($locale)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сущСствования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»ΡŽΡ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для языка, (*53)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: bool, (*54)

Lang::getPluralFunction($locale)

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ»ΡŽΡ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для языка, (*55)

Имя Вип ОписаниС
$locale string ISO код язака (ru, en_AU, ru_RU...)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: callable, null, (*56)

Lang::getPluralFunction($path, $counter[, $props])

ΠŸΠ»ΡŽΡ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, (*57)

Имя Вип ОписаниС
$path string ΠšΠ»ΡƒΡ‡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π²ΠΈΠ΄Π°: пространствоимён:ΠΊΠ»ΡŽΡ‡Π²_массивС
$counter int Π‘Ρ‰Ρ‘Ρ‚Ρ‡ΠΈΠΊ
[$props] array Массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚: string, (*58)

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:, (*59)

Вип ОписаниС
UndefinedPluralFunctionException Если для языка Π½Π΅Ρ‚ Ρ„ΡƒΠ½Ρ†ΠΈΠΈ ΠΏΠ»ΡŽΠ»Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
NoLocalizationException Если локализация Π½Π΅ сущСствуСт

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:, (*60)

blog.php:, (*61)

<?php
return [
    'comments' => [':count ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ', ':count коммСнтария', ':count ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²'],
];

index.php:, (*62)

Lang::setFile('ru', 'blog', __DIR__ . '/blog.php');
Lang::setLocale('ru');

Lang::plural('blog:comments', 1); // 1 ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
Lang::plural('blog:comments', 2); // 2 коммСнтария
Lang::plural('blog:comments', 45); // 45 ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

The Versions

28/12 2017

dev-master

9999999-dev

Internalization library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Aleksei Shchepkin

translation i18n internationalization localization plural pluralization

28/12 2017

v0.1

0.1.0.0

Internalization library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Aleksei Shchepkin

translation i18n internationalization localization plural pluralization

02/08 2017

v0.0.2

0.0.2.0

Internalization library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Aleksei Shchepkin

translation i18n internationalization localization

01/08 2017

v0.0.1

0.0.1.0

Internalization library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Aleksei Shchepkin

translation i18n internationalization localization