MediaWiki REL1_33
|
Base class for language conversion. More...
Public Member Functions | |
__construct (Language $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. | |
convertNamespace ( $index, $variant=null) | |
Get the namespace display name in the preferred variant. | |
convertTitle ( $title) | |
Auto convert a Title 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. | |
loadDefaultTables () | |
Load default conversion tables. | |
loadTables ( $fromCache=true) | |
Load conversion tables either from the cache or the disk. | |
markNoConversion ( $text, $noParse=false) | |
Enclose a string with the "no conversion" tag. | |
parseCachedTable ( $code, $subpage='', $recursive=true) | |
Parse the conversion table stored in the cache. | |
postLoadTables () | |
Hook for post processing after conversion tables are loaded. | |
translate ( $text, $variant) | |
Translate a string to a variant. | |
updateConversionTable (Title $titleobj) | |
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 | |
$mConvRuleTitle = false | |
$mDescCodeSep = ':' | |
$mDescVarSep = ';' | |
$mFlags | |
$mHeaderVariant | |
$mLangObj | |
$mMainLanguageCode | |
$mManualLevel | |
$mMaxDepth = 10 | |
ReplacementArray[] | $mTables |
@phan-var array<string,ReplacementArray> | |
$mTablesLoaded = false | |
$mUcfirst = false | |
$mURLVariant | |
$mUserVariant | |
$mVariantFallbacks | |
$mVariantNames | |
string[] | $mVariants |
$mVarSeparatorPattern | |
const | CACHE_VERSION_KEY = 'VERSION 7' |
Static Public Attributes | |
static array | $languagesWithVariants |
languages supporting variants | |
Protected Member Functions | |
applyManualConv ( $convRule) | |
Apply manual conversion rules. | |
getHeaderVariant () | |
Determine the language variant from the Accept-Language header. | |
getUserVariant () | |
Determine if the user has a variant set. | |
recursiveConvertRule ( $text, $variant, &$startPos, $depth=0) | |
Recursively convert text on the inside. | |
recursiveConvertTopLevel ( $text, $variant, $depth=0) | |
Recursively convert text on the outside. | |
Private Member Functions | |
reloadTables () | |
Reload the conversion tables. | |
Base class for language conversion.
Definition at line 34 of file LanguageConverter.php.
LanguageConverter::__construct | ( | Language | $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 |
Reimplemented in GanConverter, and ZhConverter.
Definition at line 94 of file LanguageConverter.php.
References $wgDisabledVariants, and as.
|
protected |
Apply manual conversion rules.
ConverterRule | $convRule |
Definition at line 561 of file LanguageConverter.php.
References as, 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 |
Definition at line 374 of file LanguageConverter.php.
References $output, as, 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 |
Definition at line 545 of file LanguageConverter.php.
References $ret, as, 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. |
Definition at line 678 of file LanguageConverter.php.
References convertTo(), and getPreferredVariant().
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 |
Reimplemented in GanConverter, KkConverter, and ZhConverter.
Definition at line 1145 of file LanguageConverter.php.
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 |
Definition at line 618 of file LanguageConverter.php.
References $cache, getPreferredVariant(), NS_MAIN, translate(), and wfMessage().
Referenced by convertTitle().
LanguageConverter::convertTitle | ( | $title | ) |
Auto convert a Title object to a readable string in the preferred variant.
Definition at line 599 of file LanguageConverter.php.
References $title, convertNamespace(), getPreferredVariant(), 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 |
Definition at line 692 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 |
Reimplemented in IuConverter, KkConverter, KuConverter, ShiConverter, and SrConverter.
Definition at line 844 of file LanguageConverter.php.
References $link, $titles, $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest, as, autoConvertToAllVariants(), and NS_MAIN.
LanguageConverter::getConvRuleTitle | ( | ) |
Get the title produced by the conversion rule.
Definition at line 156 of file LanguageConverter.php.
LanguageConverter::getDefaultVariant | ( | ) |
Get default variant.
This function would not be affected by user's settings
Definition at line 198 of file LanguageConverter.php.
References $req, $wgDefaultLanguageVariant, getHeaderVariant(), getURLVariant(), and validateVariant().
LanguageConverter::getExtraHashOptions | ( | ) |
Returns language specific hash options.
Definition at line 911 of file LanguageConverter.php.
References getPreferredVariant().
|
protected |
Determine the language variant from the Accept-Language header.
Definition at line 317 of file LanguageConverter.php.
References $languages, $wgRequest, as, getVariantFallbacks(), and validateVariant().
Referenced by getDefaultVariant(), and getPreferredVariant().
LanguageConverter::getPreferredVariant | ( | ) |
Get preferred language variant.
Definition at line 164 of file LanguageConverter.php.
References $req, $wgDefaultLanguageVariant, getHeaderVariant(), getURLVariant(), getUserVariant(), and validateVariant().
Referenced by autoConvert(), convert(), convertNamespace(), convertTitle(), IuConverter\findVariantLink(), KkConverter\findVariantLink(), KuConverter\findVariantLink(), ShiConverter\findVariantLink(), SrConverter\findVariantLink(), and getExtraHashOptions().
LanguageConverter::getURLVariant | ( | ) |
Get the variant specified in the URL.
Definition at line 254 of file LanguageConverter.php.
References $ret, $wgRequest, and validateVariant().
Referenced by getDefaultVariant(), and getPreferredVariant().
|
protected |
Determine if the user has a variant set.
Definition at line 277 of file LanguageConverter.php.
References $ret, 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 |
Definition at line 148 of file LanguageConverter.php.
Referenced by getHeaderVariant().
LanguageConverter::getVariants | ( | ) |
Get all valid variants.
Call this instead of using $this->mVariants directly.
Definition at line 133 of file LanguageConverter.php.
LanguageConverter::getVarSeparatorPattern | ( | ) |
Get the cached separator pattern for ConverterRule::parseRules()
Definition at line 1172 of file LanguageConverter.php.
References as.
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 |
Reimplemented in SrConverter.
Definition at line 927 of file LanguageConverter.php.
Referenced by autoConvert(), and recursiveConvertTopLevel().
LanguageConverter::loadDefaultTables | ( | ) |
Load default conversion tables.
This method must be implemented in derived class.
MWException |
Reimplemented in EnConverter, GanConverter, IuConverter, KkConverter, KuConverter, ShiConverter, SrConverter, TgConverter, UzConverter, ZhConverter, and TestConverter.
Definition at line 938 of file LanguageConverter.php.
Referenced by loadTables().
LanguageConverter::loadTables | ( | $fromCache = true | ) |
Load conversion tables either from the cache or the disk.
bool | $fromCache | Load from memcached? Defaults to true. |
Definition at line 948 of file LanguageConverter.php.
References $cache, $wgLanguageConverterCacheType, as, 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 |
Definition at line 1127 of file LanguageConverter.php.
References $ret.
LanguageConverter::parseCachedTable | ( | $code, | |
$subpage = '' , |
|||
$recursive = true |
|||
) |
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 1020 of file LanguageConverter.php.
References $code, $link, $ret, $s, $t, $title, as, CONTENT_MODEL_WIKITEXT, StringUtils\explode(), Revision\newFromTitle(), NS_MEDIAWIKI, parseCachedTable(), and Revision\RAW.
Referenced by loadTables(), and parseCachedTable().
LanguageConverter::postLoadTables | ( | ) |
Hook for post processing after conversion tables are loaded.
Reimplemented in KkConverter, and ZhConverter.
Definition at line 982 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 766 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 711 of file LanguageConverter.php.
References $out, 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 992 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 |
Reimplemented in EnConverter, IuConverter, KkConverter, KuConverter, ShiConverter, SrConverter, and UzConverter.
Definition at line 529 of file LanguageConverter.php.
References loadTables().
Referenced by autoConvert(), autoConvertToAllVariants(), convertNamespace(), and convertTitle().
LanguageConverter::updateConversionTable | ( | Title | $titleobj | ) |
Refresh the cache of conversion tables when MediaWiki:Conversiontable* is updated.
Definition at line 1155 of file LanguageConverter.php.
References $t, $title, Title\getDBkey(), Title\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 |
Definition at line 226 of file LanguageConverter.php.
References as.
Referenced by applyManualConv(), getDefaultVariant(), getHeaderVariant(), getPreferredVariant(), getURLVariant(), getUserVariant(), and updateConversionTable().
|
static |
languages supporting variants
Definition at line 40 of file LanguageConverter.php.
Referenced by MediaWiki\Preferences\DefaultPreferencesFactory\profilePreferences().
LanguageConverter::$mConvRuleTitle = false |
Definition at line 77 of file LanguageConverter.php.
LanguageConverter::$mDescCodeSep = ':' |
Definition at line 75 of file LanguageConverter.php.
LanguageConverter::$mDescVarSep = ';' |
Definition at line 75 of file LanguageConverter.php.
LanguageConverter::$mFlags |
Definition at line 74 of file LanguageConverter.php.
LanguageConverter::$mHeaderVariant |
Definition at line 80 of file LanguageConverter.php.
LanguageConverter::$mLangObj |
Definition at line 73 of file LanguageConverter.php.
LanguageConverter::$mMainLanguageCode |
Definition at line 54 of file LanguageConverter.php.
LanguageConverter::$mManualLevel |
Definition at line 71 of file LanguageConverter.php.
LanguageConverter::$mMaxDepth = 10 |
Definition at line 81 of file LanguageConverter.php.
ReplacementArray [] LanguageConverter::$mTables |
@phan-var array<string,ReplacementArray>
Definition at line 68 of file LanguageConverter.php.
LanguageConverter::$mTablesLoaded = false |
Definition at line 62 of file LanguageConverter.php.
LanguageConverter::$mUcfirst = false |
Definition at line 76 of file LanguageConverter.php.
LanguageConverter::$mURLVariant |
Definition at line 78 of file LanguageConverter.php.
LanguageConverter::$mUserVariant |
Definition at line 79 of file LanguageConverter.php.
LanguageConverter::$mVariantFallbacks |
Definition at line 60 of file LanguageConverter.php.
LanguageConverter::$mVariantNames |
Definition at line 61 of file LanguageConverter.php.
string [] LanguageConverter::$mVariants |
Definition at line 59 of file LanguageConverter.php.
LanguageConverter::$mVarSeparatorPattern |
Definition at line 82 of file LanguageConverter.php.
const LanguageConverter::CACHE_VERSION_KEY = 'VERSION 7' |
Definition at line 84 of file LanguageConverter.php.