1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
<?php
namespace ICanBoogie\Binding\CLDR;
use ICanBoogie\CLDR\FileProvider;
use ICanBoogie\CLDR\Locale;
use ICanBoogie\CLDR\Provider;
use ICanBoogie\CLDR\ProviderCollection;
use ICanBoogie\CLDR\Repository;
use ICanBoogie\CLDR\RunTimeProvider;
use ICanBoogie\CLDR\WebProvider;
use ICanBoogie\Application;
use ICanBoogie\Storage\APCStorage;
class Hooks
{
static public function get_cldr_provider()
{
static $provider;
if (!$provider)
{
$provider = new ProviderCollection(array_filter([
new RunTimeProvider,
APCStorage::is_available() ? new APCStorage('icanboogie:cldr:') : null,
new FileProvider(\ICanBoogie\REPOSITORY . 'cache' . DIRECTORY_SEPARATOR . 'cldr'),
new WebProvider
]));
}
return $provider;
}
static public function get_cldr(Application $app)
{
static $cldr;
if (!$cldr)
{
$cldr = new Repository($app->cldr_provider);
}
return $cldr;
}
static private $locale;
static public function get_locale(Application $app)
{
$locale = self::$locale;
if (!($locale instanceof Locale))
{
$locale = self::$locale = $app->cldr->locales[$locale ?: 'en'];
}
return $locale;
}
static public function set_locale(Application $app, $locale)
{
self::$locale = $locale;
}
static public function get_language(Application $app)
{
return $app->locale->language;
}
}