Internalization library
ΠΠ»Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ. Π£ΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ json, yaml, ini ΠΈ php ΡΠ°ΠΉΠ»Π°ΠΌΠΈ., (*1)
, (*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 ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²