1 | <?php |
||
15 | class Localizer { |
||
16 | |||
17 | /** |
||
18 | * @var Localizer |
||
19 | */ |
||
20 | private static $instance = null; |
||
21 | |||
22 | /** |
||
23 | * @var Language |
||
24 | */ |
||
25 | private $contentLanguage = null; |
||
26 | |||
27 | /** |
||
28 | * @since 2.1 |
||
29 | * |
||
30 | * @param Language $contentLanguage |
||
31 | */ |
||
32 | 108 | public function __construct( Language $contentLanguage ) { |
|
35 | |||
36 | /** |
||
37 | * @since 2.1 |
||
38 | * |
||
39 | * @return Localizer |
||
40 | */ |
||
41 | 304 | public static function getInstance() { |
|
49 | |||
50 | /** |
||
51 | * @since 2.1 |
||
52 | */ |
||
53 | 117 | public static function clear() { |
|
56 | |||
57 | /** |
||
58 | * @since 2.1 |
||
59 | * |
||
60 | * @return Language |
||
61 | */ |
||
62 | 302 | public function getContentLanguage() { |
|
65 | |||
66 | /** |
||
67 | * @since 2.4 |
||
68 | * |
||
69 | * @return Language |
||
70 | */ |
||
71 | 267 | public function getUserLanguage() { |
|
74 | |||
75 | /** |
||
76 | * @note |
||
77 | * |
||
78 | * 1. If the page content language is availabe use it as preferred language |
||
79 | * (as it is clear that the page content was intended to be in a specific |
||
80 | * language) |
||
81 | * 2. If no page content language was assigned use the global content |
||
82 | * language |
||
83 | * |
||
84 | * General rules: |
||
85 | * - Special pages are in the user language |
||
86 | * - Display of values (DV) should use the user language if available otherwise |
||
87 | * use the content language as fallback |
||
88 | * - Storage of values (DI) should always use the content language |
||
89 | * |
||
90 | * Notes: |
||
91 | * - The page content language is the language in which the content of a page is |
||
92 | * written in wikitext |
||
93 | * |
||
94 | * @since 2.4 |
||
95 | * |
||
96 | * @param DIWikiPage|Title|null $title |
||
97 | * |
||
98 | * @return Language |
||
99 | */ |
||
100 | 206 | public function getPreferredContentLanguage( $title = null ) { |
|
117 | |||
118 | /** |
||
119 | * @since 2.4 |
||
120 | * |
||
121 | * @param string $languageCode |
||
122 | * |
||
123 | * @return Language |
||
124 | */ |
||
125 | 11 | public function getLanguage( $languageCode = '' ) { |
|
133 | |||
134 | /** |
||
135 | * @since 2.4 |
||
136 | * |
||
137 | * @param Language|string $languageCode |
||
138 | * |
||
139 | * @return ExtraneousLanguage |
||
140 | */ |
||
141 | 299 | public function getExtraneousLanguage( $language = '' ) { |
|
155 | |||
156 | /** |
||
157 | * @since 2.1 |
||
158 | * |
||
159 | * @param integer $index |
||
160 | * |
||
161 | * @return string |
||
162 | */ |
||
163 | 282 | public function getNamespaceTextById( $index ) { |
|
166 | |||
167 | /** |
||
168 | * @since 2.5 |
||
169 | * |
||
170 | * @param integer $index |
||
171 | * |
||
172 | * @return string |
||
173 | */ |
||
174 | 3 | public function getCanonicalNamespaceTextById( $index ) { |
|
184 | |||
185 | 16 | /** |
|
186 | * @since 2.1 |
||
187 | 16 | * |
|
188 | * @param string $namespaceName |
||
189 | * |
||
190 | 16 | * @return integer|boolean |
|
191 | */ |
||
192 | public function getNamespaceIndexByName( $namespaceName ) { |
||
195 | |||
196 | /** |
||
197 | * @since 2.4 |
||
198 | * |
||
199 | * @param string $languageCode |
||
200 | * |
||
201 | * @return boolean |
||
202 | */ |
||
203 | public static function isSupportedLanguage( $languageCode ) { |
||
214 | |||
215 | /** |
||
216 | * @see IETF language tag / BCP 47 standards |
||
217 | * |
||
218 | * @since 2.4 |
||
219 | * |
||
220 | * @param string $languageCode |
||
221 | * |
||
222 | * @return string |
||
223 | */ |
||
224 | public static function asBCP47FormattedLanguageCode( $languageCode ) { |
||
227 | |||
228 | /** |
||
229 | * @deprecated 2.5, use Localizer::getAnnotatedLanguageCodeFrom instead |
||
230 | 275 | * @since 2.4 |
|
231 | * |
||
232 | 275 | * @param string &$value |
|
233 | * |
||
234 | 275 | * @return string|false |
|
235 | */ |
||
236 | 275 | public static function getLanguageCodeFrom( &$value ) { |
|
239 | 275 | ||
240 | /** |
||
241 | * @since 2.5 |
||
242 | * |
||
243 | * @param integer $index |
||
244 | * @param string $url |
||
245 | * |
||
246 | * @return string |
||
247 | */ |
||
248 | public function getCanonicalizedUrlByNamespace( $index, $url ) { |
||
261 | |||
262 | 12 | /** |
|
263 | 10 | * @since 2.4 |
|
264 | * |
||
265 | * @param string &$value |
||
266 | 2 | * |
|
267 | * @return string|false |
||
268 | */ |
||
269 | public static function getAnnotatedLanguageCodeFrom( &$value ) { |
||
286 | |||
287 | /** |
||
288 | * @see Language::convertDoubleWidth |
||
289 | * |
||
290 | * Convert double-width roman characters to single-width. |
||
291 | * range: ff00-ff5f ~= 0020-007f |
||
292 | * |
||
293 | * @param string $string |
||
294 | * |
||
295 | * @return string |
||
296 | */ |
||
297 | public static function convertDoubleWidth( $string ) { |
||
318 | |||
319 | } |
||
320 |
Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable: