MediaWiki REL1_35
|
Base class for multi-variant language conversion. More...
Public Member Functions | |
__construct ( $langobj, $maincode, $variants=[], $variantfallbacks=[], $flags=[], $manualLevel=[]) | |
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. | |
convertTitle (LinkTarget $linkTarget) | |
Auto convert a LinkTarget object to a readable string in the preferred variant. | |
convertTo ( $text, $variant) | |
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 () | |
Get default variant. | |
getExtraHashOptions () | |
Returns language specific hash options. | |
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. | |
getVariants () | |
Get all valid variants. | |
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. | |
Public Attributes | |
$mDescCodeSep = ':' | |
$mDescVarSep = ';' | |
$mFlags | |
$mMainLanguageCode | |
$mManualLevel | |
$mVariantNames | |
string[] | $mVariants |
Static Public Attributes | |
static array | $languagesWithVariants |
languages supporting variants | |
Protected Member Functions | |
applyManualConv (ConverterRule $convRule) | |
Apply manual conversion rules. | |
getHeaderVariant () | |
Determine the language variant from the Accept-Language header. | |
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 () | |
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. | |
Protected Attributes | |
ReplacementArray[] bool[] | $mTables |
Private Member Functions | |
parseCachedTable ( $code, $subpage='', $recursive=true) | |
Parse the conversion table stored in the cache. | |
reloadTables () | |
Reload the conversion tables. | |
Private Attributes | |
$mConvRuleTitle = false | |
$mHeaderVariant | |
Language | $mLangObj |
$mMaxDepth = 10 | |
$mTablesLoaded = false | |
$mUcfirst = false | |
$mURLVariant | |
$mUserVariant | |
$mVariantFallbacks | |
$mVarSeparatorPattern | |
const | CACHE_VERSION_KEY = 'VERSION 7' |
Base class for multi-variant language conversion.
Definition at line 35 of file LanguageConverter.php.
LanguageConverter::__construct | ( | $langobj, | |
$maincode, | |||
$variants = [] , |
|||
$variantfallbacks = [] , |
|||
$flags = [] , |
|||
$manualLevel = [] |
|||
) |
Language | $langobj | |
string | $maincode | The main language code of this language |
string[] | $variants | The supported variants of this language |
array | $variantfallbacks | The fallback language of each variant |
array | $flags | Defining the custom strings that maps to the flags |
array | $manualLevel | Limit for supported variants |
Definition at line 100 of file LanguageConverter.php.
References $wgDisabledVariants, and deprecatePublicProperty().
|
protected |
Apply manual conversion rules.
ConverterRule | $convRule |
Definition at line 587 of file LanguageConverter.php.
References ConverterRule\getConvTable(), ConverterRule\getRulesAction(), ConverterRule\getTitle(), and validateVariant().
Referenced by recursiveConvertRule().
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().
string | $text | The text to be converted |
bool | string | $toVariant | The target language code |
Implements ILanguageConverter.
Definition at line 396 of file LanguageConverter.php.
References StringUtils\explode(), getPreferredVariant(), guessVariant(), loadTables(), recursiveConvertTopLevel(), and translate().
Referenced by GanConverter\convertCategoryKey(), KkConverter\convertCategoryKey(), ZhConverter\convertCategoryKey(), recursiveConvertRule(), and recursiveConvertTopLevel().
LanguageConverter::autoConvertToAllVariants | ( | $text | ) |
Call translate() to convert text to all valid variants.
string | $text | The text to be converted |
Implements ILanguageConverter.
Definition at line 571 of file LanguageConverter.php.
References loadTables(), and translate().
Referenced by findVariantLink().
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 can not 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
string | $text | Text to be converted, already html escaped. |
Implements ILanguageConverter.
Definition at line 707 of file LanguageConverter.php.
References convertTo(), and getPreferredVariant().
Referenced by convertHtml().
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.
string | $key |
Implements ILanguageConverter.
Reimplemented in GanConverter, KkConverter, and ZhConverter.
Definition at line 1188 of file LanguageConverter.php.
LanguageConverter::convertHtml | ( | $text | ) |
Perform output conversion on a string, and encode for safe HTML output.
string | $text | Text to be converted |
Implements ILanguageConverter.
Definition at line 1286 of file LanguageConverter.php.
References convert().
LanguageConverter::convertNamespace | ( | $index, | |
$variant = null |
|||
) |
Get the namespace display name in the preferred variant.
int | $index | Namespace id |
string | null | $variant | Variant code or null for preferred variant |
Implements ILanguageConverter.
Definition at line 645 of file LanguageConverter.php.
References $cache, Language\getFormattedNsText(), getPreferredVariant(), NS_MAIN, translate(), and wfMessage().
Referenced by convertTitle().
LanguageConverter::convertTitle | ( | LinkTarget | $linkTarget | ) |
Auto convert a LinkTarget object to a readable string in the preferred variant.
LinkTarget | $linkTarget |
Implements ILanguageConverter.
Definition at line 625 of file LanguageConverter.php.
References convertNamespace(), MediaWiki\Linker\LinkTarget\getNamespace(), getPreferredVariant(), MediaWiki\Linker\LinkTarget\getText(), NS_MAIN, and translate().
LanguageConverter::convertTo | ( | $text, | |
$variant | |||
) |
Same as convert() except a extra parameter to custom variant.
string | $text | Text to be converted, already html escaped |
-taint | $text | exec_html |
string | $variant | The target variant code |
Implements ILanguageConverter.
Definition at line 721 of file LanguageConverter.php.
References $wgDisableLangConversion, and recursiveConvertTopLevel().
Referenced by convert().
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
string | &$link | The name of the link |
Title | &$nt | The title object of the link |
bool | $ignoreOtherCond | To disable other conditions when we need to transclude a template or update a category's link |
Implements ILanguageConverter.
Reimplemented in LanguageConverterSpecific.
Definition at line 873 of file LanguageConverter.php.
References $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest, autoConvertToAllVariants(), and NS_MAIN.
LanguageConverter::getConvRuleTitle | ( | ) |
Get the title produced by the conversion rule.
Implements ILanguageConverter.
Definition at line 182 of file LanguageConverter.php.
LanguageConverter::getDefaultVariant | ( | ) |
Get default variant.
This function would not be affected by user's settings
Implements ILanguageConverter.
Definition at line 227 of file LanguageConverter.php.
References $wgDefaultLanguageVariant, getHeaderVariant(), getURLVariant(), and validateVariant().
LanguageConverter::getExtraHashOptions | ( | ) |
Returns language specific hash options.
Implements ILanguageConverter.
Definition at line 940 of file LanguageConverter.php.
References getPreferredVariant().
|
protected |
Determine the language variant from the Accept-Language header.
Definition at line 339 of file LanguageConverter.php.
References $wgRequest, getVariantFallbacks(), and validateVariant().
Referenced by getDefaultVariant(), and getPreferredVariant().
LanguageConverter::getPreferredVariant | ( | ) |
Get preferred language variant.
Implements ILanguageConverter.
Definition at line 190 of file LanguageConverter.php.
References $wgDefaultLanguageVariant, getHeaderVariant(), getURLVariant(), getUserVariant(), and validateVariant().
Referenced by autoConvert(), convert(), convertNamespace(), convertTitle(), LanguageConverterSpecific\findVariantLink(), and getExtraHashOptions().
LanguageConverter::getURLVariant | ( | ) |
Get the variant specified in the URL.
Implements ILanguageConverter.
Definition at line 283 of file LanguageConverter.php.
References $wgRequest, and validateVariant().
Referenced by getDefaultVariant(), and getPreferredVariant().
|
protected |
Determine if the user has a variant set.
User | $user |
Definition at line 307 of file LanguageConverter.php.
References User\getOption(), User\isLoggedIn(), User\isSafeToLoad(), and validateVariant().
Referenced by getPreferredVariant().
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.
string | $variant | The language code of the variant |
Implements ILanguageConverter.
Definition at line 174 of file LanguageConverter.php.
Referenced by getHeaderVariant().
LanguageConverter::getVariants | ( | ) |
Get all valid variants.
Call this instead of using $this->mVariants directly.
Implements ILanguageConverter.
Definition at line 159 of file LanguageConverter.php.
Referenced by hasVariants().
LanguageConverter::getVarSeparatorPattern | ( | ) |
Get the cached separator pattern for ConverterRule::parseRules()
Definition at line 1214 of file LanguageConverter.php.
LanguageConverter::guessVariant | ( | $text, | |
$variant | |||
) |
Guess if a text is written in a variant.
This should be implemented in subclasses.
string | $text | The text to be checked |
string | $variant | Language code of the variant to be checked for |
Implements ILanguageConverter.
Reimplemented in SrConverter.
Definition at line 956 of file LanguageConverter.php.
Referenced by autoConvert(), and recursiveConvertTopLevel().
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.
string | $variant |
Implements ILanguageConverter.
Definition at line 1274 of file LanguageConverter.php.
References validateVariant().
LanguageConverter::hasVariants | ( | ) |
Check if this is a language with variants.
Implements ILanguageConverter.
Definition at line 1260 of file LanguageConverter.php.
References getVariants().
|
protected |
Load default conversion tables.
This method must be implemented in derived class.
MWException |
Reimplemented in EnConverter, GanConverter, IuConverter, KkConverter, KuConverter, ShiConverter, SrConverter, TgConverter, UzConverter, and ZhConverter.
Definition at line 966 of file LanguageConverter.php.
Referenced by loadTables().
|
protected |
Load conversion tables either from the cache or the disk.
bool | $fromCache | Load from memcached? Defaults to true. |
Definition at line 976 of file LanguageConverter.php.
References $cache, $wgLanguageConverterCacheType, loadDefaultTables(), parseCachedTable(), and postLoadTables().
Referenced by autoConvert(), autoConvertToAllVariants(), reloadTables(), IuConverter\translate(), KuConverter\translate(), ShiConverter\translate(), SrConverter\translate(), and translate().
LanguageConverter::markNoConversion | ( | $text, | |
$noParse = false |
|||
) |
Enclose a string with the "no conversion" tag.
This is used by various functions in the Parser.
string | $text | Text to be tagged for no conversion |
bool | $noParse | Unused |
Implements ILanguageConverter.
Definition at line 1170 of file LanguageConverter.php.
|
private |
Parse the conversion table stored in the cache.
The tables should be in blocks of the following form: -{ word => word ; word => word ; ... }-
To make the tables more manageable, subpages are allowed and will be parsed recursively if $recursive == true.
string | $code | Language code |
string | $subpage | Subpage name |
bool | $recursive | Parse subpages recursively? Defaults to true. |
Definition at line 1052 of file LanguageConverter.php.
References $s, $t, $title, CONTENT_MODEL_WIKITEXT, StringUtils\explode(), NS_MEDIAWIKI, and parseCachedTable().
Referenced by loadTables(), and parseCachedTable().
|
protected |
Hook for post processing after conversion tables are loaded.
Reimplemented in KkConverter, and ZhConverter.
Definition at line 1013 of file LanguageConverter.php.
Referenced by loadTables().
|
protected |
Recursively convert text on the inside.
string | $text | Text to be converted |
string | $variant | The target variant code |
int | &$startPos | |
int | $depth | Depth of recursion |
MWException |
Definition at line 795 of file LanguageConverter.php.
References applyManualConv(), autoConvert(), recursiveConvertRule(), and wfMessage().
Referenced by recursiveConvertRule(), and recursiveConvertTopLevel().
|
protected |
Recursively convert text on the outside.
Allow to use nested markups to custom rules.
string | $text | Text to be converted |
string | $variant | The target variant code |
int | $depth | Depth of recursion |
Definition at line 740 of file LanguageConverter.php.
References autoConvert(), guessVariant(), and recursiveConvertRule().
Referenced by autoConvert(), and convertTo().
|
private |
Reload the conversion tables.
Also used by test suites which need to reset the converter state.
Definition at line 1023 of file LanguageConverter.php.
References loadTables().
Referenced by updateConversionTable().
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().
string | $text | Text to convert |
string | $variant | Variant language code |
Implements ILanguageConverter.
Reimplemented in EnConverter, IuConverter, KkConverter, KuConverter, ShiConverter, SrConverter, and UzConverter.
Definition at line 555 of file LanguageConverter.php.
References loadTables().
Referenced by autoConvert(), autoConvertToAllVariants(), convertNamespace(), and convertTitle().
LanguageConverter::updateConversionTable | ( | LinkTarget | $linkTarget | ) |
Refresh the cache of conversion tables when MediaWiki:Conversiontable* is updated.
LinkTarget | $linkTarget | The LinkTarget of the page being updated |
Implements ILanguageConverter.
Definition at line 1198 of file LanguageConverter.php.
References $t, MediaWiki\Linker\LinkTarget\getDBkey(), MediaWiki\Linker\LinkTarget\getNamespace(), NS_MEDIAWIKI, reloadTables(), and validateVariant().
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.
string | null | $variant | The variant to validate |
Implements ILanguageConverter.
Definition at line 255 of file LanguageConverter.php.
Referenced by applyManualConv(), getDefaultVariant(), getHeaderVariant(), getPreferredVariant(), getURLVariant(), getUserVariant(), hasVariant(), and updateConversionTable().
|
static |
languages supporting variants
Definition at line 43 of file LanguageConverter.php.
|
private |
Definition at line 83 of file LanguageConverter.php.
LanguageConverter::$mDescCodeSep = ':' |
Definition at line 80 of file LanguageConverter.php.
LanguageConverter::$mDescVarSep = ';' |
Definition at line 81 of file LanguageConverter.php.
LanguageConverter::$mFlags |
Definition at line 79 of file LanguageConverter.php.
|
private |
Definition at line 86 of file LanguageConverter.php.
|
private |
Definition at line 78 of file LanguageConverter.php.
LanguageConverter::$mMainLanguageCode |
Definition at line 57 of file LanguageConverter.php.
LanguageConverter::$mManualLevel |
Definition at line 73 of file LanguageConverter.php.
|
private |
Definition at line 87 of file LanguageConverter.php.
|
protected |
Definition at line 70 of file LanguageConverter.php.
|
private |
Definition at line 65 of file LanguageConverter.php.
|
private |
Definition at line 82 of file LanguageConverter.php.
|
private |
Definition at line 84 of file LanguageConverter.php.
|
private |
Definition at line 85 of file LanguageConverter.php.
|
private |
Definition at line 63 of file LanguageConverter.php.
LanguageConverter::$mVariantNames |
Definition at line 64 of file LanguageConverter.php.
string [] LanguageConverter::$mVariants |
Definition at line 62 of file LanguageConverter.php.
|
private |
Definition at line 88 of file LanguageConverter.php.
|
private |
Definition at line 90 of file LanguageConverter.php.