19 public const MESSAGES = LanguageFallbackMode::MESSAGES;
29 private $fallbackCache = [];
40 private readonly
string $siteLangCode,
54 return $this->
getAll( $code )[0] ??
null;
67 public function getAll( $code, $mode = LanguageFallbackMode::MESSAGES ) {
71 if ( $code ===
'en' || !$this->langNameUtils->isValidBuiltInCode( $code ) ) {
74 if ( is_int( $mode ) ) {
75 $mode = LanguageFallbackMode::from( $mode );
77 return match ( $mode ) {
78 LanguageFallbackMode::MESSAGES =>
81 $this->localisationCache->getItem( $code,
'fallbackSequence' ) ?: [
'en' ],
87 $this->localisationCache->getItem( $code,
'originalFallbackSequence' ),
101 $cacheKey =
"{$code}-{$this->siteLangCode}";
103 if ( !array_key_exists( $cacheKey, $this->fallbackCache ) ) {
104 $fallbacks = $this->
getAll( $code );
106 if ( $code === $this->siteLangCode ) {
108 $siteFallbacks = [ $code ];
111 $siteFallbacks = $this->
getAll( $this->siteLangCode );
112 array_unshift( $siteFallbacks, $this->siteLangCode );
115 $siteFallbacks = array_diff( $siteFallbacks, $fallbacks );
118 $this->fallbackCache[$cacheKey] = [ $fallbacks, $siteFallbacks ];
120 return $this->fallbackCache[$cacheKey];
125class_alias( LanguageFallback::class,
'MediaWiki\\Languages\\LanguageFallback' );
@ STRICT
Return a fallback chain for messages in getAll.