* @maintainers fdcn <fdcn64@gmail.com>, shinjiman <shinjiman@gmail.com>, PhiLiP <philip.npc@gmail.com>
*/
class LanguageConverter {
+
+ /**
+ * languages supporting variants
+ * @since 1.20
+ * @var array
+ */
+ static public $languagesWithVariants = array(
+ 'gan',
+ 'iu',
+ 'kk',
+ 'ku',
+ 'shi',
+ 'sr',
+ 'tg',
+ 'uz',
+ 'zh',
+ );
+
var $mMainLanguageCode;
var $mVariants, $mVariantFallbacks, $mVariantNames;
var $mTablesLoaded = false;
// We record these fallback variants, and process
// them later.
$fallbacks = $this->getVariantFallbacks( $language );
- if ( is_string( $fallbacks ) ) {
+ if ( is_string( $fallbacks ) && $fallbacks !== $this->mMainLanguageCode ) {
$fallbackLanguages[] = $fallbacks;
} elseif ( is_array( $fallbacks ) ) {
$fallbackLanguages =
*/
public function convertTo( $text, $variant ) {
global $wgDisableLangConversion;
- if ( $wgDisableLangConversion || $this->guessVariant( $text, $variant ) ) {
+ if ( $wgDisableLangConversion ) {
return $text;
}
return $this->recursiveConvertTopLevel( $text, $variant );
$startPos = 0;
$out = '';
$length = strlen( $text );
+ $shouldConvert = !$this->guessVariant( $text, $variant );
+
while ( $startPos < $length ) {
$pos = strpos( $text, '-{', $startPos );
if ( $pos === false ) {
// No more markup, append final segment
- $out .= $this->autoConvert( substr( $text, $startPos ), $variant );
+ $fragment = substr( $text, $startPos );
+ $out .= $shouldConvert? $this->autoConvert( $fragment, $variant ): $fragment;
return $out;
}
// Markup found
// Append initial segment
- $out .= $this->autoConvert( substr( $text, $startPos, $pos - $startPos ), $variant );
+ $fragment = substr( $text, $startPos, $pos - $startPos );
+ $out .= $shouldConvert? $this->autoConvert( $fragment, $variant ): $fragment;
// Advance position
$startPos = $pos;
$inner .= '-{';
if ( !$warningDone ) {
$inner .= '<span class="error">' .
- wfMsgForContent( 'language-converter-depth-warning',
- $this->mMaxDepth ) .
+ wfMessage( 'language-converter-depth-warning' )
+ ->numParams( $this->mMaxDepth )->inContentLanguage()->text() .
'</span>';
$warningDone = true;
}
class ConverterRule {
var $mText; // original text in -{text}-
var $mConverter; // LanguageConverter object
- var $mManualCodeError = '<strong class="error">code error!</strong>';
var $mRuleDisplay = '';
var $mRuleTitle = false;
var $mRules = '';// string : the text of the rules
}
}
if ( $this->mRuleDisplay === false ) {
- $this->mRuleDisplay = $this->mManualCodeError;
+ $this->mRuleDisplay = '<span class="error">'
+ . wfMessage( 'converter-manual-rule-error' )->inContentLanguage()->escaped()
+ . '</span>';
}
$this->generateConvTable();