protected $mRawMessages; # Raw list of the messages in each language
protected $mMessages; # Messages in each language (except for English), divided to groups
+ protected $mFallback; # Fallback language in each language
protected $mGeneralMessages; # General messages in English, divided to groups
protected $mIgnoredMessages; # All the messages which should be exist only in the English file
protected $mOptionalMessages; # All the messages which may be translated or not, depending on the language
protected $mNamespaceNames; # Namespace names
protected $mNamespaceAliases; # Namespace aliases
- protected $mSkinNames; # Skin names
protected $mMagicWords; # Magic words
protected $mSpecialPageAliases; # Special page aliases
*/
protected function loadFile( $code ) {
if ( isset( $this->mRawMessages[$code] ) &&
+ isset( $this->mFallback[$code] ) &&
isset( $this->mNamespaceNames[$code] ) &&
isset( $this->mNamespaceAliases[$code] ) &&
- isset( $this->mSkinNames[$code] ) &&
isset( $this->mMagicWords[$code] ) &&
isset( $this->mSpecialPageAliases[$code] ) ) {
return;
}
$this->mRawMessages[$code] = array();
+ $this->mFallback[$code] = '';
$this->mNamespaceNames[$code] = array();
$this->mNamespaceAliases[$code] = array();
- $this->mSkinNames[$code] = array();
$this->mMagicWords[$code] = array();
$this->mSpecialPageAliases[$code] = array();
$filename = Language::getMessagesFileName( $code );
if ( isset( $messages ) ) {
$this->mRawMessages[$code] = $messages;
}
+ if ( isset( $fallback ) ) {
+ $this->mFallback[$code] = $fallback;
+ }
if ( isset( $namespaceNames ) ) {
$this->mNamespaceNames[$code] = $namespaceNames;
}
if ( isset( $namespaceAliases ) ) {
$this->mNamespaceAliases[$code] = $namespaceAliases;
}
- if ( isset( $skinNames ) ) {
- $this->mSkinNames[$code] = $skinNames;
- }
if ( isset( $magicWords ) ) {
$this->mMagicWords[$code] = $magicWords;
}
}
/**
- * Get namespace names for a specific language.
+ * Get fallback language code for a specific language.
*
* @param $code The language code.
*
- * @return Namespace names.
+ * @return Fallback code.
*/
- public function getNamespaceNames( $code ) {
+ public function getFallback( $code ) {
$this->loadFile( $code );
- return $this->mNamespaceNames[$code];
+ return $this->mFallback[$code];
}
/**
- * Get namespace aliases for a specific language.
+ * Get namespace names for a specific language.
*
* @param $code The language code.
*
- * @return Namespace aliases.
+ * @return Namespace names.
*/
- public function getNamespaceAliases( $code ) {
+ public function getNamespaceNames( $code ) {
$this->loadFile( $code );
- return $this->mNamespaceAliases[$code];
+ return $this->mNamespaceNames[$code];
}
/**
- * Get skin names for a specific language.
+ * Get namespace aliases for a specific language.
*
* @param $code The language code.
*
- * @return Skin names.
+ * @return Namespace aliases.
*/
- public function getSkinNames( $code ) {
+ public function getNamespaceAliases( $code ) {
$this->loadFile( $code );
- return $this->mSkinNames[$code];
+ return $this->mNamespaceAliases[$code];
}
/**
}
/**
- * Get the messages which do not use some variables.
+ * Get the messages whose variables do not match the original ones.
*
* @param $code The language code.
*
- * @return The messages which do not use some variables in this language.
+ * @return The messages whose variables do not match the original ones.
*/
- public function getMessagesWithoutVariables( $code ) {
+ public function getMessagesWithMismatchVariables( $code ) {
$this->loadGeneralMessages();
$this->loadMessages( $code );
$variables = array( '\$1', '\$2', '\$3', '\$4', '\$5', '\$6', '\$7', '\$8', '\$9' );
- $messagesWithoutVariables = array();
+ $mismatchMessages = array();
foreach ( $this->mMessages[$code]['translated'] as $key => $value ) {
$missing = false;
foreach ( $variables as $var ) {
!preg_match( "/$var/sU", $value ) ) {
$missing = true;
}
+ if ( !preg_match( "/$var/sU", $this->mGeneralMessages['translatable'][$key] ) &&
+ preg_match( "/$var/sU", $value ) ) {
+ $missing = true;
+ }
}
if ( $missing ) {
- $messagesWithoutVariables[$key] = $value;
+ $mismatchMessages[$key] = $value;
}
}
- return $messagesWithoutVariables;
+ return $mismatchMessages;
}
/**
}
/**
- * Get the untranslated skin names.
+ * Get the untranslated magic words.
*
* @param $code The language code.
*
- * @return The untranslated skin names in this language.
+ * @return The untranslated magic words in this language.
*/
- public function getUntranslatedSkins( $code ) {
+ public function getUntranslatedMagicWords( $code ) {
$this->loadFile( 'en' );
$this->loadFile( $code );
- return array_diff_key( $this->mSkinNames['en'], $this->mSkinNames[$code] );
+ $magicWords = array();
+ foreach ( $this->mMagicWords['en'] as $key => $value ) {
+ if ( !isset( $this->mMagicWords[$code][$key] ) ) {
+ $magicWords[$key] = $value[1];
+ }
+ }
+ return $magicWords;
}
/**
- * Get the untranslated magic words.
+ * Get the obsolete magic words.
*
* @param $code The language code.
*
- * @return The untranslated magic words in this language.
+ * @return The obsolete magic words in this language.
*/
- public function getUntranslatedMagicWords( $code ) {
+ public function getObsoleteMagicWords( $code ) {
$this->loadFile( 'en' );
$this->loadFile( $code );
$magicWords = array();
- foreach ( $this->mMagicWords['en'] as $key => $value ) {
- if ( !isset( $this->mMagicWords[$code][$key] ) ) {
+ foreach ( $this->mMagicWords[$code] as $key => $value ) {
+ if ( !isset( $this->mMagicWords['en'][$key] ) ) {
$magicWords[$key] = $value[1];
}
}
$this->loadFile( $code );
$magicWords = array();
foreach ( $this->mMagicWords[$code] as $key => $local ) {
+ if ( !isset( $this->mMagicWords['en'][$key] ) ) {
+ # Unrecognized magic word
+ continue;
+ }
$en = $this->mMagicWords['en'][$key];
array_shift( $local );
array_shift( $en );
$this->loadFile( $code );
$magicWords = array();
foreach ( $this->mMagicWords[$code] as $key => $local ) {
+ if ( !isset( $this->mMagicWords['en'][$key] ) ) {
+ # Unrecognized magic word
+ continue;
+ }
if ( $local[0] != $this->mMagicWords['en'][$key][0] ) {
$magicWords[$key] = $local[0];
}
}
return $specialPageAliases;
}
+
+ /**
+ * Get the obsolete special page names.
+ *
+ * @param $code The language code.
+ *
+ * @return The obsolete special page names in this language.
+ */
+ public function getObsoleteSpecialPages( $code ) {
+ $this->loadFile( 'en' );
+ $this->loadFile( $code );
+ $specialPageAliases = array();
+ foreach ( $this->mSpecialPageAliases[$code] as $key => $value ) {
+ if ( !isset( $this->mSpecialPageAliases['en'][$key] ) ) {
+ $specialPageAliases[$key] = $value[0];
+ }
+ }
+ return $specialPageAliases;
+ }
}
class extensionLanguages extends languages {