21 private $foreignNamespacesFlipped;
28 private function normalizeNamespaceName( $name ) {
29 return strtolower( str_replace(
' ',
'_', $name ) );
42 $this->foreignNamespacesFlipped = [];
44 $newKey = self::normalizeNamespaceName( $name );
45 $this->foreignNamespacesFlipped[$newKey] = $id;
78 $pieces = explode(
':', $title, 2 );
79 $key = self::normalizeNamespaceName( $pieces[0] );
83 $isNamespacePartValid = isset( $this->foreignNamespacesFlipped[$key] );
85 if ( count( $pieces ) === 2 && $isNamespacePartValid ) {
86 [ $namespaceName, $pageName ] = $pieces;
87 $ns = $this->foreignNamespacesFlipped[$key];
94 return new ForeignTitle( $ns, $namespaceName, $pageName );
105 $pieces = explode(
':', $title, 2 );
108 $titleIncludesNamespace = ( $ns !=
'0' && count( $pieces ) === 2 );
110 if ( isset( $this->foreignNamespaces[$ns] ) ) {
111 $namespaceName = $this->foreignNamespaces[$ns];
118 $namespaceName = $titleIncludesNamespace ? $pieces[0] :
"Ns$ns";
123 if ( $titleIncludesNamespace ) {
124 $pageName = $pieces[1];
129 return new ForeignTitle( $ns, $namespaceName, $pageName );
134class_alias( NamespaceAwareForeignTitleFactory::class,
'NamespaceAwareForeignTitleFactory' );