X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=languages%2FLanguageConverter.php;h=78b3572ce86a66e871ab30aba70e4c1b5f1434bf;hb=9d741c3667fd47d6e65325c12e01c0975b2ec32d;hp=787930907ec043bc46f6f3a62b60cd3885c83f2c;hpb=07fb2b295acc889f6b36c7a7627ea221913fb245;p=lhc%2Fweb%2Fwiklou.git
diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php
index 787930907e..78b3572ce8 100644
--- a/languages/LanguageConverter.php
+++ b/languages/LanguageConverter.php
@@ -539,27 +539,45 @@ class LanguageConverter {
* @return string Namespace name for display
*/
public function convertNamespace( $index, $variant = null ) {
+ if ( $index === NS_MAIN ) {
+ return '';
+ }
+
if ( $variant === null ) {
$variant = $this->getPreferredVariant();
}
- if ( $index === NS_MAIN ) {
- return '';
- } else {
- // First check if a message gives a converted name in the target variant.
- $nsConvMsg = wfMessage( 'conversion-ns' . $index )->inLanguage( $variant );
- if ( $nsConvMsg->exists() ) {
- return $nsConvMsg->plain();
- }
- // Then check if a message gives a converted name in content language
- // which needs extra translation to the target variant.
+
+ $cache = ObjectCache::newAccelerator( CACHE_NONE );
+ $key = wfMemcKey( 'languageconverter', 'namespace-text', $index, $variant );
+ $nsVariantText = $cache->get( $key );
+ if ( $nsVariantText !== false ) {
+ return $nsVariantText;
+ }
+
+ // First check if a message gives a converted name in the target variant.
+ $nsConvMsg = wfMessage( 'conversion-ns' . $index )->inLanguage( $variant );
+ if ( $nsConvMsg->exists() ) {
+ $nsVariantText = $nsConvMsg->plain();
+ }
+
+ // Then check if a message gives a converted name in content language
+ // which needs extra translation to the target variant.
+ if ( $nsVariantText === false ) {
$nsConvMsg = wfMessage( 'conversion-ns' . $index )->inContentLanguage();
if ( $nsConvMsg->exists() ) {
- return $this->translate( $nsConvMsg->plain(), $variant );
+ $nsVariantText = $this->translate( $nsConvMsg->plain(), $variant );
}
+ }
+
+ if ( $nsVariantText === false ) {
// No message exists, retrieve it from the target variant's namespace names.
$langObj = $this->mLangObj->factory( $variant );
- return $langObj->getFormattedNsText( $index );
+ $nsVariantText = $langObj->getFormattedNsText( $index );
}
+
+ $cache->set( $key, $nsVariantText, 60 );
+
+ return $nsVariantText;
}
/**
@@ -1092,13 +1110,13 @@ class LanguageConverter {
// text should be splited by ";" only if a valid variant
// name exist after the markup, for example:
// -{zh-hans:xxx;zh-hant:\
- // yyy;}-
+ // yyy;}-
// we should split it as:
// array(
- // [0] => 'zh-hans:xxx'
- // [1] => 'zh-hant:yyy'
- // [2] => ''
- // )
+ // [0] => 'zh-hans:xxx'
+ // [1] => 'zh-hant:yyy'
+ // [2] => ''
+ // )
$pat = '/;\s*(?=';
foreach ( $this->mVariants as $variant ) {
// zh-hans:xxx;zh-hant:yyy