Example #1
0
 /**
  * Accord a verb to its past form
  *
  * @param  Message $message
  * @return Message
  */
 public static function past(Message $message)
 {
     // Get translated form of the state
     $state = Babel::state('past.' . $message->state);
     // Pluralize if necessary
     switch (Babel::lang()) {
         case 'fr':
             if ($message->isPlural()) {
                 $state = str_replace('a été', 'ont été', $state);
             }
             break;
         case 'en':
             if ($message->isPlural()) {
                 $state = str_replace('was', 'were', $state);
             }
             break;
     }
     // Save it
     $message->state = $state;
     return static::conjugate($message);
 }
Example #2
0
    /**
     * Generate a babel box for the given language and level.
     *
     * @param $code String: Language code to use.
     * @param $level String or Integer: Level of ability to use.
     * @return String: A single babel box, in wikitext format.
     */
    protected static function mGenerateBox($code, $level)
    {
        wfProfileIn(__METHOD__);
        $lang = wfBCP47($code);
        $portal = wfMessage('babel-portal', $code)->inContentLanguage()->plain();
        if ($portal !== '') {
            $portal = "[[{$portal}|{$lang}]]";
        } else {
            $portal = $lang;
        }
        $header = "{$portal}<span class=\"mw-babel-box-level-{$level}\">-{$level}</span>";
        $code = strtolower($code);
        $name = BabelLanguageCodes::getName($code);
        $code = BabelLanguageCodes::getCode($code);
        $text = self::mGetText($name, $code, $level);
        $dir_current = Language::factory($code)->getDir();
        $spacing = Babel::mCssAttrib('border-spacing', 'babel-cellspacing', true);
        $padding = Babel::mCssAttrib('padding', 'babel-cellpadding', true);
        $style = '';
        if ($spacing === '') {
            $style = $padding === '' ? '' : 'style="' . $padding . '"';
        } else {
            $style = $padding === '' ? 'style="' . $spacing . '"' : 'style="' . $padding . ' ' . $spacing . '"';
        }
        $dir_head = self::$title->getPageLanguage()->getDir();
        $box = <<<EOT
<div class="mw-babel-box mw-babel-box-{$level}" dir="{$dir_head}">
{|{$style}
! dir="{$dir_head}" | {$header}
| dir="{$dir_current}" lang="{$lang}" | {$text}
|}
</div>
EOT;
        wfProfileOut(__METHOD__);
        return $box;
    }
 protected function getBabel($languageCode, $user)
 {
     $babel = array();
     $babelCategoryNames = $this->getBabelCategoryNames();
     if (count($babelCategoryNames)) {
         // A little redundant but it's the only way to get required information with current Babel API.
         $previousLevelBabel = array();
         foreach ($babelCategoryNames as $level => $_) {
             // Make the current language at the top of the chain.
             $levelBabel = array_unique(array_merge(array($languageCode), \Babel::getUserLanguages($user, $level)));
             $babel[$level] = array_diff($levelBabel, $previousLevelBabel);
             $previousLevelBabel = $levelBabel;
         }
     } else {
         $babel['N'] = array($languageCode);
     }
     return $babel;
 }
    /**
     * Generate a babel box for the given language and level.
     *
     * @param $code String: Language code to use.
     * @param $level String or Integer: Level of ability to use.
     * @return String: A single babel box, in wikitext format.
     */
    protected static function mGenerateBox($code, $level)
    {
        $lang = wfBCP47($code);
        $portal = wfMessage('babel-portal', $code)->inContentLanguage()->plain();
        if ($portal !== '') {
            $portal = "[[{$portal}|{$lang}]]";
        } else {
            $portal = $lang;
        }
        $header = "{$portal}<span class=\"mw-babel-box-level-{$level}\">-{$level}</span>";
        $code = strtolower($code);
        $name = BabelLanguageCodes::getName($code);
        $code = BabelLanguageCodes::getCode($code);
        $text = self::mGetText($name, $code, $level);
        $dir_current = Language::factory($code)->getDir();
        $cellspacing = Babel::mHtmlAttrib('cellspacing', 'babel-cellspacing');
        $cellpadding = Babel::mHtmlAttrib('cellpadding', 'babel-cellpadding');
        $dir_head = self::$title->getPageLanguage()->getDir();
        $box = <<<EOT
<div class="mw-babel-box mw-babel-box-{$level}" dir="{$dir_head}">
{|{$cellspacing}{$cellpadding}
! dir="{$dir_head}" | {$header}
| dir="{$dir_current}" | {$text}
|}
</div>
EOT;
        return $box;
    }