MediaWiki master
LanguageConverterIcu.php
Go to the documentation of this file.
1<?php
7namespace MediaWiki\Language;
8
9use Transliterator;
11
19
24
28 protected function loadDefaultTables(): array {
29 $tables = [];
30 foreach ( $this->getVariants() as $variant ) {
31 $tables[$variant] = new ReplacementArray();
32 }
33 return $tables;
34 }
35
37 public function translate( $text, $variant ) {
38 $text = parent::translate( $text, $variant );
39 if ( trim( $text ) ) {
40 $text = $this->icuTranslate( $text, $variant );
41 }
42 return $text;
43 }
44
52 public function icuTranslate( $text, $variant ) {
53 return $this->getTransliterators()[$variant]->transliterate( $text );
54 }
55
62 abstract protected function getIcuRules();
63
69 protected function getTransliterators() {
70 if ( $this->mTransliterators === null ) {
71 $this->mTransliterators = [];
72 foreach ( $this->getIcuRules() as $variant => $rule ) {
73 // @phan-suppress-next-line PhanTypeMismatchProperty Assume it's not null
74 $this->mTransliterators[$variant] = Transliterator::createFromRules( $rule );
75 }
76 foreach ( $this->getTransliteratorAliases() as $alias => $variant ) {
77 // @phan-suppress-next-line PhanTypeMismatchProperty Assume it's not null
78 $this->mTransliterators[$alias] = $this->mTransliterators[$variant];
79 }
80 }
81 return $this->mTransliterators;
82 }
83
89 protected function getTransliteratorAliases() {
90 return [];
91 }
92}
93
95class_alias( LanguageConverterIcu::class, 'LanguageConverterIcu' );
A class that extends LanguageConverterSpecific for converts that use ICU rule-based transliterators.
translate( $text, $variant)
Translate a string to a variant.Doesn't parse rules or do any of that other stuff,...
getTransliterators()
Get the array mapping variants to ICU transliterators.
icuTranslate( $text, $variant)
Translate a string to a variant using ICU transliterator.
getTransliteratorAliases()
Get the array mapping variant aliases to the main variant.
getIcuRules()
Get the array mapping variants to ICU transliteration rules.
A class that extends LanguageConverter with specific behaviour.
getVariants()
Get all valid variants.string[] Contains all valid variants
Wrapper around strtr() that holds replacements.