https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113015
Revision: 113015
Author: nikerabbit
Date: 2012-03-05 11:23:21 +0000 (Mon, 05 Mar 2012)
Log Message:
-----------
Removed support for tmserver. TTMSever is better in many ways (if not in all
ways).
Since we are no longer running tmserver ourselves anywhere, it's is too much
effort
to test whether refactorings break it.
Modified Paths:
--------------
trunk/extensions/Translate/README
trunk/extensions/Translate/Translate.php
trunk/extensions/Translate/_autoload.php
trunk/extensions/Translate/utils/TranslationHelpers.php
Removed Paths:
-------------
trunk/extensions/Translate/scripts/tm-export.php
trunk/extensions/Translate/utils/TranslationMemoryUpdater.php
Modified: trunk/extensions/Translate/README
===================================================================
--- trunk/extensions/Translate/README 2012-03-05 11:10:24 UTC (rev 113014)
+++ trunk/extensions/Translate/README 2012-03-05 11:23:21 UTC (rev 113015)
@@ -30,6 +30,9 @@
https://translatewiki.net/docs/Translate/html/
== Change log ==
+* 2012-03-05
+- Support for tmserver was removed. Translate comes with TTMServer enabled by
default.
+ To bootstrap it with current translations, run php
scripts/ttmserver-export.php.
* 2012-02-19
- MediaWiki 1.18 or later is now required.
- Group description of translatable pages can be extended by adding content to
Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php 2012-03-05 11:10:24 UTC (rev
113014)
+++ trunk/extensions/Translate/Translate.php 2012-03-05 11:23:21 UTC (rev
113015)
@@ -124,7 +124,6 @@
$wgHooks['SkinTemplateToolboxEnd'][] =
'TranslateToolbox::toolboxAllTranslations';
// Translation memory updates
-$wgHooks['Translate:newTranslation'][] = 'TranslationMemoryUpdater::update';
$wgHooks['Translate:newTranslation'][] = 'TranslateHooks::updateTM';
// Translation display related
@@ -321,22 +320,11 @@
/**
* Define various web services that provide translation suggestions.
- * Example for tmserver translation memory from translatetoolkit.
- * <pre>
- * $wgTranslateTranslationServices['tmserver'] = array(
- * 'server' => 'http://127.0.0.1',
- * 'port' => 54321,
- * 'timeout-sync' => 3,
- * 'timeout-async' => 6,
- * 'database' => '/path/to/database.sqlite',
- * 'type' => 'tmserver',
- * );
- * </pre>
*
* For Apertium, you should get an API key.
* @see http://wiki.apertium.org/wiki/Apertium_web_service
*
- * The translation services are provided with the following information:
+ * The machine translation services are provided with the following
information:
* - server ip address
* - versions of MediaWiki and Translate extension
* - clients ip address encrypted with $wgProxyKey
Modified: trunk/extensions/Translate/_autoload.php
===================================================================
--- trunk/extensions/Translate/_autoload.php 2012-03-05 11:10:24 UTC (rev
113014)
+++ trunk/extensions/Translate/_autoload.php 2012-03-05 11:23:21 UTC (rev
113015)
@@ -107,7 +107,6 @@
$wgAutoloadClasses['TranslateYaml'] = "$dir/utils/TranslateYaml.php";
$wgAutoloadClasses['TranslationEditPage'] =
"$dir/utils/TranslationEditPage.php";
$wgAutoloadClasses['TranslationHelpers'] = "$dir/utils/TranslationHelpers.php";
-$wgAutoloadClasses['TranslationMemoryUpdater'] =
"$dir/utils/TranslationMemoryUpdater.php";
$wgAutoloadClasses['TranslationStats'] = "$dir/utils/TranslationStats.php";
/**@}*/
Deleted: trunk/extensions/Translate/scripts/tm-export.php
===================================================================
--- trunk/extensions/Translate/scripts/tm-export.php 2012-03-05 11:10:24 UTC
(rev 113014)
+++ trunk/extensions/Translate/scripts/tm-export.php 2012-03-05 11:23:21 UTC
(rev 113015)
@@ -1,110 +0,0 @@
-<?php
-/**
- * Script to bootstrap translatetoolkit translation memory
- *
- * @author Niklas Laxstrom
- * @copyright Copyright © 2010-2011, Niklas Laxström
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
2.0 or later
- * @file
- */
-
-// Standard boilerplate to define $IP
-if ( getenv( 'MW_INSTALL_PATH' ) !== false ) {
- $IP = getenv( 'MW_INSTALL_PATH' );
-} else {
- $dir = dirname( __FILE__ ); $IP = "$dir/../../..";
-}
-require_once( "$IP/maintenance/Maintenance.php" );
-
-/// Script to bootstrap translatetoolkit translation memory
-class TMExport extends Maintenance {
- public function __construct() {
- parent::__construct();
- $this->mDescription = 'Script to export messages for
translatetoolkit translation memory';
- }
-
- public function execute() {
- global $wgContLang;
-
- $dbw = TranslationMemoryUpdater::getDatabaseHandle();
- if ( $dbw === null ) {
- $this->error( "Database file not configured" );
- $this->exit();
- }
- $dbw->setFlag( DBO_TRX ); // HUGE speed improvement
-
- $groups = MessageGroups::singleton()->getGroups();
- // TODO: encapsulate list of valid language codes
- $languages = Language::getLanguageNames( false );
- unset( $languages['en'] );
-
- foreach ( $groups as $id => $group ) {
- if ( $group->isMeta() ) {
- continue;
- }
-
- $this->output( "Processing: {$group->getLabel()} ", $id
);
- $capitalized = MWNamespace::isCapitalized(
$group->getNamespace() );
- $ns_text = $wgContLang->getNsText(
$group->getNamespace() );
-
- $definitions = $group->load(
$group->getSourceLanguage() );
- foreach ( $definitions as $key => $definition ) {
- // TODO: would be nice to do key normalisation
closer to the message groups, to avoid transforming back and forth.
- // But how to preserve the original keys...
- $key = strtr( $key, ' ', '_' );
- $key = $capitalized ? $wgContLang->ucfirst(
$key ) : $key;
-
- $dbr = wfGetDB( DB_SLAVE );
- $tables = array( 'page', 'revision', 'text' );
- // selectFields to stfu Revision class
- $vars = array_merge(
Revision::selectTextFields(), array( 'page_title' ), Revision::selectFields() );
- $conds = array(
- 'page_latest = rev_id',
- 'rev_text_id = old_id',
- 'page_namespace' =>
$group->getNamespace(),
- 'page_title ' . $dbr->buildLike(
"$key/", $dbr->anyString() )
- );
-
- $res = $dbr->select( $tables, $vars, $conds,
__METHOD__ );
- // Assure that there is at least one translation
- if ( $res->numRows() < 1 ) {
- continue;
- }
-
- $insert = array(
- 'text' => $definition,
- 'context' => "$ns_text:$key",
- 'length' => strlen( $definition ),
- 'lang' => $group->getSourceLanguage(),
- );
-
- $source_id = $dbw->selectField( '`sources`',
'sid', $insert, __METHOD__ );
- if ( $source_id === false ) {
- $dbw->insert( '`sources`', $insert,
__METHOD__ );
- $source_id = $dbw->insertId();
- }
-
- $this->output( ' ', $id );
-
- foreach ( $res as $row ) {
- list( , $code ) =
TranslateUtils::figureMessage( $row->page_title );
- $revision = new Revision( $row );
- $insert = array(
- 'text' => $revision->getText(),
- 'lang' => $code,
- 'time' => wfTimestamp(),
- 'sid' => $source_id );
- // We only do SQlite which doesn't need
to know unique indexes
- $dbw->replace( '`targets`', null,
$insert, __METHOD__ );
- }
- $this->output( "{$res->numRows()}", $id );
-
- } // each translation>
-
- $dbw->commit();
- } // each group>
- }
-}
-
-$maintClass = 'TMExport';
-require_once( DO_MAINTENANCE );
Modified: trunk/extensions/Translate/utils/TranslationHelpers.php
===================================================================
--- trunk/extensions/Translate/utils/TranslationHelpers.php 2012-03-05
11:10:24 UTC (rev 113014)
+++ trunk/extensions/Translate/utils/TranslationHelpers.php 2012-03-05
11:23:21 UTC (rev 113015)
@@ -251,86 +251,6 @@
* @param $config
* @return string Html snippet which contains the suggestions.
*/
- protected function getTmBox( $serviceName, $config ) {
- $this->mustHaveDefinition();
- self::checkTranslationServiceFailure( $serviceName );
-
- // Needed data
- $page = $this->handle->getKey();
- $code = $this->handle->getCode();
- if ( !$code ) {
- $code = $this->group->getSourceLanguage();
- }
- $definition = $this->getDefinition();
- $ns = $this->handle->getTitle()->getNsText();
-
- // Fetch suggestions
- $server = $config['server'];
- $port = $config['port'];
- $timeout = $config['timeout'];
- $def = rawurlencode( $definition );
- $url = "$server:$port/tmserver/en/$code/unit/$def";
- $suggestions = Http::get( $url, $timeout );
-
- $sugFields = array();
- // Parse suggestions, but limit to three (in case there would
be more)
- $boxes = array();
-
- if ( $suggestions === false ) {
- // Assume timeout
- self::reportTranslationServiceFailure( $serviceName );
- }
- $suggestions = FormatJson::decode( $suggestions, true );
-
- foreach ( $suggestions as $s ) {
- // No use to suggest them what they are currently
viewing
- if ( $s['context'] === "$ns:$page" ) {
- continue;
- }
-
- $accuracy = wfMsgHtml( 'translate-edit-tmmatch' ,
sprintf( '%.2f', $s['quality'] ) );
- $legend = array( $accuracy => array() );
-
- $source_page = Title::newFromText( $s['context'] .
"/$code" );
- if ( $source_page ) {
- $legend[$accuracy][] = self::ajaxEditLink(
$source_page, '•' );
- }
-
- $text = $this->suggestionField( $s['target'] );
- $params = array( 'class' =>
'mw-sp-translate-edit-tmsug', 'title' => $s['source'] );
-
- if ( isset( $sugFields[$s['target']] ) ) {
- $sugFields[$s['target']][2] =
array_merge_recursive( $sugFields[$s['target']][2], $legend );
- } else {
- $sugFields[$s['target']] = array( $text,
$params, $legend );
- }
- }
-
- foreach ( $sugFields as $field ) {
- list( $text, $params, $label ) = $field;
- $legend = array();
-
- foreach ( $label as $acc => $links ) {
- $legend[] = $acc . ' ' . implode( " ", $links );
- }
-
- $legend = implode( ' | ', $legend );
- $boxes[] = Html::rawElement( 'div', $params,
self::legend( $legend ) . $text . self::clear() ) . "\n";
- }
-
- $boxes = array_slice( $boxes, 0, 3 );
- $result = implode( "\n", $boxes );
-
- // Limit to three max
- return $result;
- }
-
- /**
- * Returns suggestions from a translation memory.
- * @param $serviceName
- * @param $config
- * @return string Html snippet which contains the suggestions.
- */
protected function getTTMServerBox( $serviceName, $config ) {
$this->mustHaveDefinition();
$this->mustBeTranslation();
@@ -401,9 +321,7 @@
$config['timeout'] = $config['timeout-sync'];
}
- if ( $config['type'] === 'tmserver' ) {
- $boxes[] = $this->getTmBox( $name, $config );
- } elseif ( $config['type'] === 'ttmserver' ) {
+ if ( $config['type'] === 'ttmserver' ) {
$boxes[] = $this->getTTMServerBox( $name,
$config );
} elseif ( $config['type'] === 'microsoft' ) {
$boxes[] = $this->getMicrosoftSuggestion(
$name, $config );
Deleted: trunk/extensions/Translate/utils/TranslationMemoryUpdater.php
===================================================================
--- trunk/extensions/Translate/utils/TranslationMemoryUpdater.php
2012-03-05 11:10:24 UTC (rev 113014)
+++ trunk/extensions/Translate/utils/TranslationMemoryUpdater.php
2012-03-05 11:23:21 UTC (rev 113015)
@@ -1,122 +0,0 @@
-<?php
-/**
- * Contains classes for updating the local translation memory.
- *
- * @file
- * @author Niklas Laxström
- * @copyright Copyright © 2010, Niklas Laxström
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
2.0 or later
- */
-
-/**
- * Class for updating the tmserver from translate toolkit during runtime.
- */
-class TranslationMemoryUpdater {
- /**
- * Shovels the new translation into translation memory.
- * Hook: Translate:newTranslation
- *
- * @param $handle MessageHandle
- * @param $revision
- * @param $text string
- * @param $user User
- *
- * @return bool
- */
- public static function update( MessageHandle $handle, $revision, $text,
User $user ) {
- global $wgContLang;
-
- $dbw = self::getDatabaseHandle();
- // Not in use or misconfigured
- if ( $dbw === null ) {
- return true;
- }
-
- // Skip definitions to not slow down mass imports etc.
- // These will be added when first translation is made
- if ( $handle->getCode() === 'en' ) {
- return true;
- }
-
- $group = $handle->getGroup();
- $key = $handle->getKey();
- $code = $handle->getCode();
- $ns_text = $wgContLang->getNsText( $group->getNamespace() );
- $definition = $group->getMessage( $key, 'en' );
- if ( !is_string( $definition ) || !strlen( $definition ) ) {
- wfDebugLog( 'tmserver', "Unable to get definition for
$ns_text:$key/$code" );
- return true;
- }
-
- $tmDefinition = array(
- 'text' => $definition,
- 'context' => "$ns_text:$key",
- 'length' => strlen( $definition ),
- 'lang' => 'en'
- );
-
- // Check that the definition exists, add it if not
- $source_id = $dbw->selectField( '`sources`', 'sid',
$tmDefinition, __METHOD__ );
- if ( $source_id === false ) {
- $dbw->insert( '`sources`', $tmDefinition, __METHOD__ );
- $source_id = $dbw->insertId();
- wfDebugLog( 'tmserver', "Inserted new tm-definition for
$ns_text:$key:\n$definition\n----------" );
- }
-
- $delete = array(
- 'sid' => $source_id,
- 'lang' => $code,
- );
-
- $insert = $delete + array(
- 'text' => $text,
- 'time' => wfTimestamp(),
- );
-
- // Purge old translations for this message
- $dbw->delete( '`targets`', $delete, __METHOD__ );
- // We only do SQlite which does not need to know unique indexes
- $dbw->replace( '`targets`', null, $insert, __METHOD__ );
- wfDebugLog( 'tmserver', "Inserted new tm-translation for
$ns_text:$key/$code" );
-
- return true;
- }
-
- /**
- * Return a handle to tmserver database.
- * Tmserver uses a sqlite database, which we access trough MediaWiki's
- * SQLite database handler.
- * @return DatabaseSqlite or null
- */
- public static function getDatabaseHandle() {
- global $wgTranslateTranslationServices;
-
- $database = null;
-
- foreach ( $wgTranslateTranslationServices as $config ) {
- if ( $config['type'] === 'tmserver' && isset(
$config['database'] ) ) {
- $database = $config['database'];
- break;
- }
- }
-
- if ( $database === null ) return null;
-
- if ( !is_string( $database ) ) {
- wfDebugLog( 'tmserver', 'Database configuration is not
a string' );
- return null;
- }
-
- if ( !file_exists( $database ) ) {
- wfDebugLog( 'tmserver', 'Database file does not exist'
);
- return null;
- }
-
- if ( !is_writable( $database ) ) {
- wfDebugLog( 'tmserver', 'Database file is not writable'
);
- return null;
- }
-
- return new DatabaseSqliteStandalone( $database );
- }
-}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs