44
55use Koded \Stdlib \Config ;
66use Throwable ;
7- use function error_log ;
87use function ini_set ;
98use function strtr ;
10- use function substr_count ;
119use function vsprintf ;
1210
1311interface I18nFormatter
@@ -65,24 +63,24 @@ public static function translate(
6563 string $ locale = null ): string
6664 {
6765 try {
68- return static ::$ catalogs [$ locale ]->translate ('messages ' , $ string , $ arguments );
66+ return self ::$ catalogs [$ locale ]->translate ('messages ' , $ string , $ arguments );
6967 } catch (Throwable ) {
70- static ::registerCatalog ($ locale ??= static ::locale ());
71- return static ::$ catalogs [$ locale ]->translate ('messages ' , $ string , $ arguments );
68+ self ::registerCatalog ($ locale ??= self ::locale ());
69+ return self ::$ catalogs [$ locale ]->translate ('messages ' , $ string , $ arguments );
7270 }
7371 }
7472
7573 public static function locale (): string
7674 {
77- return static ::$ locale ??= static ::normalizeLocale (\Locale::getDefault ());
75+ return self ::$ locale ??= I18nCatalog ::normalizeLocale (\Locale::getDefault ());
7876 }
7977
8078 /**
8179 * @return array{string, I18nCatalog}
8280 */
8381 public static function catalogs (): array
8482 {
85- return static ::$ catalogs ;
83+ return self ::$ catalogs ;
8684 }
8785
8886 /**
@@ -91,7 +89,7 @@ public static function catalogs(): array
9189 public static function info (): array
9290 {
9391 $ catalogs = [];
94- foreach (static ::$ catalogs as $ locale => $ instance ) {
92+ foreach (self ::$ catalogs as $ locale => $ instance ) {
9593 $ catalogs [$ locale ] = [
9694 'class ' => $ instance ::class,
9795 'formatter ' => $ instance ->formatter ()::class,
@@ -100,7 +98,7 @@ public static function info(): array
10098 ];
10199 }
102100 return [
103- 'locale ' => static ::$ locale ,
101+ 'locale ' => self ::$ locale ,
104102 'catalogs ' => $ catalogs ,
105103 ];
106104 }
@@ -110,52 +108,43 @@ public static function register(
110108 bool $ asDefault = false ): void
111109 {
112110 $ locale = $ catalog ->locale ();
113- if ($ asDefault || empty (static ::$ catalogs )) {
114- static ::setDefaultLocale ($ locale );
115- static ::$ directory = $ catalog ->directory ();
116- static ::$ formatter = $ catalog ->formatter ()::class;
117- static ::$ catalog = $ catalog ::class;
111+ if ($ asDefault || empty (self ::$ catalogs )) {
112+ self ::setDefaultLocale ($ locale );
113+ self ::$ directory = $ catalog ->directory ();
114+ self ::$ formatter = $ catalog ->formatter ()::class;
115+ self ::$ catalog = $ catalog ::class;
118116 }
119- static ::$ catalogs [$ locale ] = $ catalog ;
117+ self ::$ catalogs [$ locale ] = $ catalog ;
120118 }
121119
122120 public static function flush (): void
123121 {
124- static ::$ catalogs = [];
125- static ::$ directory = null ;
126- static ::$ formatter = null ;
127- static ::$ catalog = null ;
128- static ::$ locale = null ;
122+ self ::$ catalogs = [];
123+ self ::$ directory = null ;
124+ self ::$ formatter = null ;
125+ self ::$ catalog = null ;
126+ self ::$ locale = null ;
129127 ini_set ('intl.default_locale ' , '' );
130128 \Locale::setDefault ('' );
131129 }
132130
133131 private static function registerCatalog (string $ locale ): void
134132 {
135- if (isset (static ::$ catalogs [$ locale ])) {
133+ if (isset (self ::$ catalogs [$ locale ])) {
136134 return ;
137135 }
138- static ::$ catalogs [$ locale ] = I18nCatalog::new ((new Config )
136+ self ::$ catalogs [$ locale ] = I18nCatalog::new ((new Config )
139137 ->set ('translation.locale ' , $ locale )
140- ->set ('translation.dir ' , static ::$ directory )
141- ->set ('translation.formatter ' , static ::$ formatter )
142- ->set ('translation.catalog ' , static ::$ catalog )
138+ ->set ('translation.dir ' , self ::$ directory )
139+ ->set ('translation.formatter ' , self ::$ formatter )
140+ ->set ('translation.catalog ' , self ::$ catalog )
143141 );
144142 }
145143
146144 private static function setDefaultLocale (string $ locale ): void
147145 {
148- static ::$ locale = $ locale ;
146+ self ::$ locale = $ locale ;
149147 ini_set ('intl.default_locale ' , $ locale );
150148 \Locale::setDefault ($ locale );
151149 }
152-
153- private static function normalizeLocale (string $ locale ): string
154- {
155- if (substr_count ($ locale , '_ ' ) > 1 ) {
156- $ locale = explode ('_ ' , $ locale );
157- $ locale = "$ locale [0 ]_ $ locale [1 ]" ;
158- }
159- return $ locale ;
160- }
161150}
0 commit comments