Example #1
0
 /**
  * Return nested array with CK messages
  *
  * Messages are read in the following order:
  * 1. CK.core.i18n.php - autogenerated messages from Ckeditor's JS files
  * 2. CK.wikia.i18n.php - Wikia messages from custom features
  * 3. messages localized locally (on per wiki basis using MediaWiki namespace pages)
  */
 public static function getMessages($lang)
 {
     wfProfileIn(__METHOD__);
     // message files
     $dir = dirname(__FILE__);
     $msgFiles = array('CKcore' => $dir . '/i18n/CK.core.i18n.php', 'CKwikia' => $dir . '/i18n/CK.wikia.i18n.php');
     // load messages file to get list of messages we should return:
     // 1. CKeditor's core messages
     $coreMessages = self::getMessagesFromFile($msgFiles['CKcore'], $lang);
     // 2. Wikia specific messages
     $wikiaMessages = self::getMessagesFromFile($msgFiles['CKwikia'], $lang);
     $coreMessages = array_merge($coreMessages, $wikiaMessages);
     // 3. get list of extension's messages
     $list = array_keys($coreMessages);
     // convert flat array to nested array
     wfProfileIn(__METHOD__ . '::loop');
     self::$messages = array();
     foreach ($list as $msgName) {
         // check for messages customized via "local" MW page or messaging.wikia.com
         $mwMsg = wfMsg($msgName);
         if (wfEmptyMsg($msgName, $mwMsg)) {
             // no message defined using MW page - use a message from CK message files
             $value = $coreMessages[$msgName];
         } else {
             // use "local" message from MW page
             $value = $mwMsg;
             //wfDebug(__METHOD__ . " - {$msgName} customized via MW page\n");
         }
         // add a message to the output
         $key = substr($msgName, 7);
         self::addMessage($key, $value);
     }
     ksort(self::$messages);
     wfProfileOut(__METHOD__ . '::loop');
     wfProfileOut(__METHOD__);
     return self::$messages;
 }
Example #2
0
 /**
  * Get messages script (format specific to CKEditor)
  */
 public static function getMessagesScript()
 {
     // code of requested language
     global $wgLang;
     $lang = $wgLang->getCode();
     // get CK messages array
     $messages = RTELang::getMessages($lang);
     $js = "CKEDITOR.lang['{$lang}'] = " . json_encode($messages) . ';';
     return $js;
 }
Example #3
0
 /**
  * Get localisation
  */
 public static function i18n()
 {
     // code of requested language
     global $wgLang;
     $lang = $wgLang->getCode();
     // get CK messages array
     $messages = RTELang::getMessages($lang);
     $js = "CKEDITOR.lang['{$lang}'] = " . json_encode($messages) . ';';
     $ret = new AjaxResponse($js);
     $ret->setContentType('application/x-javascript');
     $ret->setCacheDuration(86400 * 365 * 10);
     // 10 years
     return $ret;
 }