> line exists. * * Usually called from <> * Contributed translation are stored in UsersPage/ContributedTranslations * * Examples: * pagename="Some text in english" action=TranslateText lang=es * * @author: Reini Urban */ require_once 'lib/plugin/WikiTranslation.php'; class WikiPlugin_TranslateText extends WikiPlugin_WikiTranslation { function getDescription() { return _("Define a translation for a specified text."); } function getDefaultArguments() { return array('lang' => false, 'pagename' => '[pagename]', 'translate' => false, ); } function run($dbi, $argstr, &$request, $basepage) { extract($this->getArgs($argstr, $request)); if (!$lang) return $this->error( _("This internal action page cannot viewed.") . "\n" . _("You can only use it via the WikiTranslation plugin.")); $this->lang = $lang; //action=save if (!empty($translate) and isset($translate['submit']) and $request->isPost()) { $trans = $translate["content"]; if (empty($trans) or $trans == $pagename) { $header = HTML(HTML::h2(_("Translation Error!")), HTML::p(_("Your translated text is either empty or equal to the untranslated text. Please try again."))); } else { //save translation in a users subpage $user = $request->getUser(); $homepage = $user->_HomePagehandle; $transpagename = $homepage->getName() . SUBPAGE_SEPARATOR . _("ContributedTranslations"); $page = $dbi->getPage($transpagename); $current = $page->getCurrentRevision(); $version = $current->getVersion(); if ($version) { $text = $current->getPackedContent() . "\n"; $meta = $current->_data; } else { $text = ''; $meta = array('author' => $user->getId()); } $text .= $user->getId() . " " . Iso8601DateTime() . "\n" . "* " . sprintf(_("Translate ā€œ%sā€ to ā€œ%sā€ in *%s*"), $pagename, $trans, $lang); $text .= "\n locale/po/$lang.po:\n msgid \"" . $pagename . "\"\n msgstr \"" . $trans . "\"\n "; $meta['summary'] = sprintf(_("Translate %s to %s in %s"), substr($pagename, 0, 15), substr($trans, 0, 15), $lang); $page->save($text, $version + 1, $meta); // TODO: admin notification return HTML(HTML::h2(_("Thanks for adding this translation!")), HTML::p(fmt("Your translated text doesn't yet appear in this %s, but the Administrator will pick it up and add to the installation.", WIKI_NAME)), fmt("Your translation is stored in %s", WikiLink($transpagename))); } } $trans = $this->translate($pagename, $lang, 'en'); //Todo: google lookup or at least a google lookup button. if (isset($header)) $header = HTML($header, fmt("From english to %s: ", HTML::strong($lang))); else $header = fmt("From english to %s: ", HTML::strong($lang)); $button_label = _("Translate"); $buttons = HTML::p(Button('submit:translate[submit]', $button_label, 'wikiadmin'), Button('submit:translate[cancel]', _("Cancel"), 'button')); return HTML::form(array('action' => $request->getPostURL(), 'method' => 'post'), $header, HTML::textarea(array('class' => 'wikiedit', 'name' => 'translate[content]', 'id' => 'translate[content]', 'rows' => 4, 'cols' => $request->getPref('editWidth') ), $trans), HiddenInputs($request->getArgs(), false, array('translate')), HiddenInputs(array('translate[action]' => $pagename, 'require_authority_for_post' => WIKIAUTH_BOGO, )), $buttons); } } // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: