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 and().
|
protected |
Apply manual conversion rules.
ConverterRule | $convRule |
Definition at line 561 of file LanguageConverter.php.
References and(), 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, and(), 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, 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, and(), 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 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, and(), 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, and(), 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, and(), 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(), 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 and().
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, and(), 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.
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, and(), CONTENT_MODEL_WIKITEXT, Revision\newFromTitle(), 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 and(), 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, and(), 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 and(), and 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 and(), and 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, 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 and().
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.