MediaWiki master
MediaWiki\Language\LanguageConverter Class Reference

Base class for multi-variant language conversion. More...

Inherits MediaWiki\Language\ILanguageConverter.

Collaboration diagram for MediaWiki\Language\LanguageConverter:

Public Member Functions

 __construct ( $langobj)
 
 autoConvert ( $text, $toVariant=false)
 Dictionary-based conversion.
 
 autoConvertToAllVariants ( $text)
 Call translate() to convert text to all valid variants.
 
 convert ( $text)
 Convert text to different variants of a language.
 
 convertCategoryKey ( $key)
 Convert the sorting key for category links.
 
 convertHtml ( $text)
 Perform output conversion on a string, and encode for safe HTML output.
 
 convertNamespace ( $index, $variant=null)
 Get the namespace display name in the preferred variant.
 
 convertSplitTitle ( $title)
 Automatically converts a LinkTarget or PageReference to a readable string in the preferred variant, separating the namespace and the main part of the title.
 
 convertTitle ( $title)
 Automatically convert a LinkTarget or PageReference to a readable string in the preferred variant.
 
 convertTo ( $text, $variant, bool $clearState=true)
 Same as convert() except a extra parameter to custom variant.
 
 findVariantLink (&$link, &$nt, $ignoreOtherCond=false)
 If a language supports multiple variants, it is possible that non-existing link in one variant actually exists in another variant.
 
 getConvRuleTitle ()
 Get the title produced by the conversion rule.
 
 getDefaultVariant ()
 This function would not be affected by user's settings.
 
 getDescCodeSeparator ()
 Get desc code separator.
 
 getDescVarSeparator ()
 Get desc var separator.
 
 getExtraHashOptions ()
 Returns language specific hash options.
 
 getFlags ()
 Get the strings that map to the flags.
 
 getMainCode ()
 Get the language code with converter (the "main" language code).
 
 getManualLevel ()
 Get manual level limit for supported variants.
 
 getPreferredVariant ()
 Get preferred language variant.
 
 getURLVariant ()
 Get the variant specified in the URL.
 
 getVariantFallbacks ( $variant)
 In case some variant is not defined in the markup, we need to have some fallback.
 
 getVariantNames ()
 Get variant names.
 
 getVariants ()
 Get all valid variants.
 
 getVariantsFallbacks ()
 Get language variants fallbacks.
 
 getVarSeparatorPattern ()
 Get the cached separator pattern for ConverterRule::parseRules()
 
 guessVariant ( $text, $variant)
 Guess if a text is written in a variant.
 
 hasVariant ( $variant)
 Strict check if the language has the specific variant.
 
 hasVariants ()
 Check if this is a language with variants.
 
 markNoConversion ( $text, $noParse=false)
 Enclose a string with the "no conversion" tag.
 
 translate ( $text, $variant)
 Translate a string to a variant.
 
 updateConversionTable (LinkTarget $linkTarget)
 Refresh the cache of conversion tables when MediaWiki:Conversiontable* is updated.
 
 validateVariant ( $variant=null)
 Validate the variant and return an appropriate strict internal variant code if one exists.
 

Static Public Attributes

static array< string, string > $languagesWithStaticDefaultVariant
 static default variant of languages supporting variants for use with DefaultOptionsLookup.php
 
static string[] $languagesWithVariants
 languages supporting variants
 

Protected Member Functions

 applyManualConv (ConverterRule $convRule)
 Apply manual conversion rules.
 
 getAdditionalFlags ()
 Provides additional flags for converter.
 
 getAdditionalManualLevel ()
 Provides additional flags for converter.
 
 getHeaderVariant ()
 Determine the language variant from the Accept-Language header.
 
 getLanguageVariants ()
 Get supported variants of the language.
 
 getStaticDefaultVariant ()
 Get static default variant.
 
 getUserVariant (User $user)
 Determine if the user has a variant set.
 
 loadDefaultTables ()
 Load default conversion tables.
 
 loadTables ( $fromCache=true)
 Load conversion tables either from the cache or the disk.
 
 postLoadTables (&$tables)
 Hook for post-processing after conversion tables are loaded.
 
 recursiveConvertRule ( $text, $variant, &$startPos, $depth=0)
 Recursively convert text on the inside.
 
 recursiveConvertTopLevel ( $text, $variant, $depth=0)
 Recursively convert text on the outside.
 
 translateWithoutRomanNumbers ( $text, $variant)
 

Protected Attributes

ReplacementArray[] $mTables = []
 

Detailed Description

Base class for multi-variant language conversion.

Definition at line 54 of file LanguageConverter.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Language\LanguageConverter::__construct ( $langobj)
Parameters
Language | StubUserLang$langobj

Definition at line 130 of file LanguageConverter.php.

Member Function Documentation

◆ applyManualConv()

MediaWiki\Language\LanguageConverter::applyManualConv ( ConverterRule $convRule)
protected

Apply manual conversion rules.

Parameters
ConverterRule$convRule

Definition at line 678 of file LanguageConverter.php.

References MediaWiki\Language\ConverterRule\getConvTable(), MediaWiki\Language\ConverterRule\getRulesAction(), and MediaWiki\Language\ConverterRule\getTitle().

◆ autoConvert()

MediaWiki\Language\LanguageConverter::autoConvert ( $text,
$toVariant = false )

Dictionary-based conversion.

This function would not parse the conversion rules. If you want to parse rules, try to use convert() or convertTo().

Parameters
string$textThe text to be converted
string | false$toVariantThe target language code
Returns
string The converted text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 466 of file LanguageConverter.php.

◆ autoConvertToAllVariants()

MediaWiki\Language\LanguageConverter::autoConvertToAllVariants ( $text)

Call translate() to convert text to all valid variants.

Parameters
string$textThe text to be converted
Returns
array Variant => converted text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 662 of file LanguageConverter.php.

◆ convert()

MediaWiki\Language\LanguageConverter::convert ( $text)

Convert text to different variants of a language.

The automatic conversion is done in autoConvert(). Here we parse the text marked with -{}-, which specifies special conversions of the text that cannot be accomplished in autoConvert().

Syntax of the markup: -{code1:text1;code2:text2;...}- or -{flags|code1:text1;code2:text2;...}- or -{text}- in which case no conversion should take place for text

Warning
Glossary state is maintained between calls. Never feed this method input that hasn't properly been escaped as it may result in an XSS in subsequent calls, even if those subsequent calls properly escape things.
Parameters
string$textText to be converted; already html escaped.
Returns
string Converted text (html)

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 779 of file LanguageConverter.php.

◆ convertCategoryKey()

MediaWiki\Language\LanguageConverter::convertCategoryKey ( $key)

Convert the sorting key for category links.

This should make different keys that are variants of each other map to the same key.

Parameters
string$key
Returns
string

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1209 of file LanguageConverter.php.

◆ convertHtml()

MediaWiki\Language\LanguageConverter::convertHtml ( $text)

Perform output conversion on a string, and encode for safe HTML output.

Since
1.35
Parameters
string$textText to be converted
Returns
string string converted to be safely used in HTML

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1274 of file LanguageConverter.php.

◆ convertNamespace()

MediaWiki\Language\LanguageConverter::convertNamespace ( $index,
$variant = null )

Get the namespace display name in the preferred variant.

Parameters
int$indexNamespace id
string | null$variantVariant code or null for preferred variant
Returns
string Namespace name for display

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 728 of file LanguageConverter.php.

References NS_MAIN.

◆ convertSplitTitle()

MediaWiki\Language\LanguageConverter::convertSplitTitle ( $title)

Automatically converts a LinkTarget or PageReference to a readable string in the preferred variant, separating the namespace and the main part of the title.

Since
1.39
Parameters
LinkTarget | PageReference$title
Returns
string[] Three elements: converted namespace text, converted namespace separator, and the converted main part of the title

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 709 of file LanguageConverter.php.

◆ convertTitle()

MediaWiki\Language\LanguageConverter::convertTitle ( $title)

Automatically convert a LinkTarget or PageReference to a readable string in the preferred variant.

Parameters
LinkTarget | PageReference$title
Returns
string Converted title text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 721 of file LanguageConverter.php.

◆ convertTo()

MediaWiki\Language\LanguageConverter::convertTo ( $text,
$variant,
bool $clearState = true )

Same as convert() except a extra parameter to custom variant.

Parameters
string$textText to be converted; already html escaped
string$variantThe target variant code
bool$clearStateWhether to clear the converter title before conversion (defaults to true)
Returns
string Converted text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 784 of file LanguageConverter.php.

◆ findVariantLink()

MediaWiki\Language\LanguageConverter::findVariantLink ( & $link,
& $nt,
$ignoreOtherCond = false )

If a language supports multiple variants, it is possible that non-existing link in one variant actually exists in another variant.

This function tries to find it. See e.g., LanguageZh.php The input parameters may be modified upon return

Parameters
string&$linkThe name of the link
Title&$ntThe title object of the link
bool$ignoreOtherCondTo disable other conditions when we need to transclude a template or update a category's link

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 925 of file LanguageConverter.php.

References MediaWiki\Page\PageIdentity\exists(), and NS_MAIN.

◆ getAdditionalFlags()

MediaWiki\Language\LanguageConverter::getAdditionalFlags ( )
protected

Provides additional flags for converter.

By default, it returns empty array and typically should be overridden by implementation of converter.

Returns
array

Definition at line 206 of file LanguageConverter.php.

◆ getAdditionalManualLevel()

MediaWiki\Language\LanguageConverter::getAdditionalManualLevel ( )
protected

Provides additional flags for converter.

By default, this function returns an empty array and typically should be overridden by the implementation of converter.

Since
1.36
Returns
array

Definition at line 236 of file LanguageConverter.php.

◆ getConvRuleTitle()

MediaWiki\Language\LanguageConverter::getConvRuleTitle ( )

Get the title produced by the conversion rule.

Returns
string|false The converted title text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 283 of file LanguageConverter.php.

◆ getDefaultVariant()

MediaWiki\Language\LanguageConverter::getDefaultVariant ( )

This function would not be affected by user's settings.

Returns
string The default variant code

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 321 of file LanguageConverter.php.

◆ getDescCodeSeparator()

MediaWiki\Language\LanguageConverter::getDescCodeSeparator ( )

Get desc code separator.

By default returns ":", can be overridden by implementation of converter.

Since
1.36
Returns
string

Definition at line 247 of file LanguageConverter.php.

◆ getDescVarSeparator()

MediaWiki\Language\LanguageConverter::getDescVarSeparator ( )

Get desc var separator.

By default returns ";", can be overridden by implementation of converter.

Since
1.36
Returns
string

Definition at line 258 of file LanguageConverter.php.

◆ getExtraHashOptions()

MediaWiki\Language\LanguageConverter::getExtraHashOptions ( )

Returns language specific hash options.

Returns
string

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 999 of file LanguageConverter.php.

◆ getFlags()

MediaWiki\Language\LanguageConverter::getFlags ( )
final

Get the strings that map to the flags.

Since
1.36
Returns
array

Definition at line 179 of file LanguageConverter.php.

◆ getHeaderVariant()

MediaWiki\Language\LanguageConverter::getHeaderVariant ( )
protected

Determine the language variant from the Accept-Language header.

Returns
string|null Variant if one found, null otherwise

Definition at line 417 of file LanguageConverter.php.

◆ getLanguageVariants()

MediaWiki\Language\LanguageConverter::getLanguageVariants ( )
abstractprotected

Get supported variants of the language.

Since
1.36
Returns
array

◆ getMainCode()

MediaWiki\Language\LanguageConverter::getMainCode ( )
abstract

Get the language code with converter (the "main" language code).

Page language code would be the same of the language code with converter. Note that this code might not be included as one of the variant languages.

Since
1.36
Returns
string

◆ getManualLevel()

MediaWiki\Language\LanguageConverter::getManualLevel ( )
final

Get manual level limit for supported variants.

Since
1.36
Returns
array

Definition at line 216 of file LanguageConverter.php.

◆ getPreferredVariant()

MediaWiki\Language\LanguageConverter::getPreferredVariant ( )

Get preferred language variant.

Returns
string The preferred language code

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 287 of file LanguageConverter.php.

◆ getStaticDefaultVariant()

MediaWiki\Language\LanguageConverter::getStaticDefaultVariant ( )
protected

Get static default variant.

For use of specify the default variant form when it different from the default "unconverted/mixed-variant form".

Since
1.40
Returns
string

Definition at line 152 of file LanguageConverter.php.

◆ getURLVariant()

MediaWiki\Language\LanguageConverter::getURLVariant ( )

Get the variant specified in the URL.

Returns
string|null Variant if one found, null otherwise

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 357 of file LanguageConverter.php.

◆ getUserVariant()

MediaWiki\Language\LanguageConverter::getUserVariant ( User $user)
protected

Determine if the user has a variant set.

Parameters
User$user
Returns
string|null Variant if one found, null otherwise

Definition at line 380 of file LanguageConverter.php.

References MediaWiki\User\User\isRegistered(), and MediaWiki\User\User\isSafeToLoad().

◆ getVariantFallbacks()

MediaWiki\Language\LanguageConverter::getVariantFallbacks ( $variant)

In case some variant is not defined in the markup, we need to have some fallback.

For example, in zh, normally people will define zh-hans and zh-hant, but less so for zh-sg or zh-hk.

When zh-sg is preferred but not defined, we will pick zh-hans in this case. Right now this is only used by zh.

Parameters
string$variantThe language code of the variant
Returns
string|array The code of the fallback language or the main code if there is no fallback

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 279 of file LanguageConverter.php.

◆ getVariantNames()

MediaWiki\Language\LanguageConverter::getVariantNames ( )

Get variant names.

Returns
array

Definition at line 267 of file LanguageConverter.php.

◆ getVariants()

MediaWiki\Language\LanguageConverter::getVariants ( )
final

Get all valid variants.

Returns
string[] Contains all valid variants

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 273 of file LanguageConverter.php.

◆ getVariantsFallbacks()

MediaWiki\Language\LanguageConverter::getVariantsFallbacks ( )
abstract

Get language variants fallbacks.

Since
1.36
Returns
array

◆ getVarSeparatorPattern()

MediaWiki\Language\LanguageConverter::getVarSeparatorPattern ( )

Get the cached separator pattern for ConverterRule::parseRules()

Returns
string

Definition at line 1227 of file LanguageConverter.php.

◆ guessVariant()

MediaWiki\Language\LanguageConverter::guessVariant ( $text,
$variant )

Guess if a text is written in a variant.

This should be implemented in subclasses.

Parameters
string$textThe text to be checked
string$variantLanguage code of the variant to be checked for
Returns
bool True if $text appears to be written in $variant, false if not
Author
Nikola Smolenski smole.nosp@m.nsk@.nosp@m.eunet.nosp@m..rs
Since
1.19

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1005 of file LanguageConverter.php.

◆ hasVariant()

MediaWiki\Language\LanguageConverter::hasVariant ( $variant)

Strict check if the language has the specific variant.

Compare to LanguageConverter::validateVariant() which does a more lenient check and attempts to coerce the given code to a valid one.

Since
1.35
Parameters
string$variant
Returns
bool

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1270 of file LanguageConverter.php.

◆ hasVariants()

MediaWiki\Language\LanguageConverter::hasVariants ( )

Check if this is a language with variants.

Since
1.35
Returns
bool

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1266 of file LanguageConverter.php.

◆ loadDefaultTables()

MediaWiki\Language\LanguageConverter::loadDefaultTables ( )
abstractprotected

Load default conversion tables.

Returns
array

◆ loadTables()

MediaWiki\Language\LanguageConverter::loadTables ( $fromCache = true)
protected

Load conversion tables either from the cache or the disk.

Access: private
Parameters
bool$fromCacheWhether to load from cache. Defaults to true.

Definition at line 1021 of file LanguageConverter.php.

◆ markNoConversion()

MediaWiki\Language\LanguageConverter::markNoConversion ( $text,
$noParse = false )

Enclose a string with the "no conversion" tag.

This is used by various functions in the Parser.

Parameters
string$textText to be tagged for no conversion
bool$noParseUnused
Returns
string The tagged text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1200 of file LanguageConverter.php.

◆ postLoadTables()

MediaWiki\Language\LanguageConverter::postLoadTables ( & $tables)
protected

Hook for post-processing after conversion tables are loaded.

Parameters
ReplacementArray[]&$tables

Definition at line 1058 of file LanguageConverter.php.

◆ recursiveConvertRule()

MediaWiki\Language\LanguageConverter::recursiveConvertRule ( $text,
$variant,
& $startPos,
$depth = 0 )
protected

Recursively convert text on the inside.

Parameters
string$textText to be converted
string$variantThe target variant code
int&$startPos
int$depthDepth of recursion
Returns
string Converted text

Definition at line 858 of file LanguageConverter.php.

References wfMessage().

◆ recursiveConvertTopLevel()

MediaWiki\Language\LanguageConverter::recursiveConvertTopLevel ( $text,
$variant,
$depth = 0 )
protected

Recursively convert text on the outside.

Allow to use nested markups to custom rules.

Parameters
string$textText to be converted
string$variantThe target variant code
int$depthDepth of recursion
Returns
string Converted text

Definition at line 805 of file LanguageConverter.php.

◆ translate()

MediaWiki\Language\LanguageConverter::translate ( $text,
$variant )

Translate a string to a variant.

Doesn't parse rules or do any of that other stuff, for that use convert() or convertTo().

Parameters
string$textText to convert
string$variantVariant language code
Returns
string Translated text

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 618 of file LanguageConverter.php.

◆ translateWithoutRomanNumbers()

MediaWiki\Language\LanguageConverter::translateWithoutRomanNumbers ( $text,
$variant )
protected
Parameters
string$textText to convert
string$variantVariant language code
Returns
string Translated text

Definition at line 633 of file LanguageConverter.php.

References $matches.

◆ updateConversionTable()

MediaWiki\Language\LanguageConverter::updateConversionTable ( LinkTarget $linkTarget)

Refresh the cache of conversion tables when MediaWiki:Conversiontable* is updated.

Parameters
LinkTarget$linkTargetThe LinkTarget of the page being updated

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 1213 of file LanguageConverter.php.

References MediaWiki\Linker\LinkTarget\getDBkey(), MediaWiki\Linker\LinkTarget\getNamespace(), and NS_MEDIAWIKI.

◆ validateVariant()

MediaWiki\Language\LanguageConverter::validateVariant ( $variant = null)

Validate the variant and return an appropriate strict internal variant code if one exists.

Compare to Language::hasVariant() which does a strict test.

Parameters
string | null$variantThe variant to validate
Returns
string|null Returns an equivalent valid variant code if possible, null otherwise

Implements MediaWiki\Language\ILanguageConverter.

Definition at line 334 of file LanguageConverter.php.

Member Data Documentation

◆ $languagesWithStaticDefaultVariant

array<string,string> MediaWiki\Language\LanguageConverter::$languagesWithStaticDefaultVariant
static
Initial value:
= [
'ban' => 'ban',
'en' => 'en',
'crh' => 'crh',
'gan' => 'gan',
'iu' => 'iu',
'ku' => 'ku',
'mni' => 'mni',
'sh' => 'sh-latn',
'shi' => 'shi',
'sr' => 'sr',
'tg' => 'tg',
'tly' => 'tly',
'uz' => 'uz',
'wuu' => 'wuu',
'zgh' => 'zgh',
'zh' => 'zh',
]

static default variant of languages supporting variants for use with DefaultOptionsLookup.php

Since
1.40

Definition at line 87 of file LanguageConverter.php.

◆ $languagesWithVariants

string [] MediaWiki\Language\LanguageConverter::$languagesWithVariants
static
Initial value:
= [
'ban',
'en',
'crh',
'gan',
'iu',
'ku',
'mni',
'sh',
'shi',
'sr',
'tg',
'tly',
'uz',
'wuu',
'zgh',
'zh',
]

languages supporting variants

Since
1.20

Definition at line 62 of file LanguageConverter.php.

◆ $mTables

ReplacementArray [] MediaWiki\Language\LanguageConverter::$mTables = []
protected

Definition at line 109 of file LanguageConverter.php.


The documentation for this class was generated from the following file: