Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Wikipedia: Mediawiki-CVS

SVN: [37610] trunk/extensions/Translate

 

 

Wikipedia mediawiki-cvs RSS feed   Index | Next | Previous | View Threaded


nikerabbit at svn

Jul 13, 2008, 6:08 AM

Post #1 of 1 (32 views)
Permalink
SVN: [37610] trunk/extensions/Translate

Revision: 37610
Author: nikerabbit
Date: 2008-07-13 13:08:33 +0000 (Sun, 13 Jul 2008)

Log Message:
-----------
* 2008-07-13:1 experimental alias-export for extensions

Modified Paths:
--------------
trunk/extensions/Translate/MessageGroups.php
trunk/extensions/Translate/README
trunk/extensions/Translate/Translate.php
trunk/extensions/Translate/_autoload.php
trunk/extensions/Translate/ffs/Wiki.php

Added Paths:
-----------
trunk/extensions/Translate/scripts/alias-export.php

Modified: trunk/extensions/Translate/MessageGroups.php
===================================================================
--- trunk/extensions/Translate/MessageGroups.php 2008-07-13 12:12:10 UTC (rev 37609)
+++ trunk/extensions/Translate/MessageGroups.php 2008-07-13 13:08:33 UTC (rev 37610)
@@ -371,6 +371,57 @@
}
}

+class AliasMessageGroup extends ExtensionMessageGroup {
+
+ public function fillCollection( MessageCollection $collection ) {
+ $this->fill( $collection );
+ $this->fillContents( $collection );
+ }
+
+
+ function fill( MessageCollection $messages ) {
+ $cache = $this->load( $messages->code );
+ foreach ( $messages->keys() as $key ) {
+ if ( isset($cache[$key]) ) {
+ if ( is_array($cache[$key]) ) {
+ $messages[$key]->infile = implode( ',', $cache[$key] );
+ } else {
+ $messages[$key]->infile = $cache[$key];
+ }
+ }
+ }
+ }
+
+ public function fillContents( MessageCollection $collection ) {
+ $data = TranslateUtils::getMessageContent( 'sp-translate-data-SpecialPageAliases', $collection->code );
+
+ if ( !$data ) return;
+
+ $lines = array_map( 'trim', explode( "\n", $data ) );
+ $array = array();
+ foreach ( $lines as $line ) {
+ if ( $line === '' || $line[0] === '#' || $line[0] === '<' ) continue;
+ if ( strpos( $line, '=' ) === false ) continue;
+
+ list( $name, $values ) = array_map( 'trim', explode( '=', $line, 2 ) );
+ if ( $name === '' || $values === '' ) continue;
+
+ if ( isset($collection[$name]) ) {
+ $collection[$name]->database = $values;
+ }
+ }
+
+ }
+
+ public function getWriter() {
+ $writer = new WikiExtensionFormatWriter( $this );
+ $writer->variableName = $this->getVariableName();
+ $writer->commaToArray = true;
+ return $writer;
+ }
+
+}
+
class CoreMostUsedMessageGroup extends CoreMessageGroup {
protected $label = 'MediaWiki messages (most used)';
protected $id = 'core-mostused';

Modified: trunk/extensions/Translate/README
===================================================================
--- trunk/extensions/Translate/README 2008-07-13 12:12:10 UTC (rev 37609)
+++ trunk/extensions/Translate/README 2008-07-13 13:08:33 UTC (rev 37610)
@@ -34,6 +34,7 @@

== Changes in version 10 ==

+* 2008-07-13:1 experimental alias-export for extensions
* 2008-07-08:1 simple edit stats with phplot
* 2008-07-05:1 fuzzy.php was ignoring the namespace
* 2008-07-04:2

Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php 2008-07-13 12:12:10 UTC (rev 37609)
+++ trunk/extensions/Translate/Translate.php 2008-07-13 13:08:33 UTC (rev 37610)
@@ -11,7 +11,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/

-define( 'TRANSLATE_VERSION', '9 (2008-07-08:1)' );
+define( 'TRANSLATE_VERSION', '9 (2008-07-13:1)' );

$wgExtensionCredits['specialpage'][] = array(
'name' => 'Translate',
@@ -25,6 +25,7 @@
// Setup class autoloads
$dir = dirname(__FILE__) . '/';
require_once( $dir . '_autoload.php' );
+#require_once( $dir . 'MessageFunctions.php' );

$wgExtensionMessagesFiles['Translate'] = $dir . 'Translate.i18n.php';
$wgExtensionAliasesFiles['Translate'] = $dir . 'Translate.alias.php';

Modified: trunk/extensions/Translate/_autoload.php
===================================================================
--- trunk/extensions/Translate/_autoload.php 2008-07-13 12:12:10 UTC (rev 37609)
+++ trunk/extensions/Translate/_autoload.php 2008-07-13 13:08:33 UTC (rev 37610)
@@ -19,6 +19,7 @@

$wgAutoloadClasses['MessageChecks'] = $dir . 'MessageChecks.php';
$wgAutoloadClasses['MessageGroups'] = $dir . 'MessageGroups.php';
+$wgAutoloadClasses['AliasMessageGroup'] = $dir . 'MessageGroups.php';

$wgAutoloadClasses['MessageCollection'] = $dir . 'Message.php';
$wgAutoloadClasses['TMessage'] = $dir . 'Message.php';

Modified: trunk/extensions/Translate/ffs/Wiki.php
===================================================================
--- trunk/extensions/Translate/ffs/Wiki.php 2008-07-13 12:12:10 UTC (rev 37609)
+++ trunk/extensions/Translate/ffs/Wiki.php 2008-07-13 13:08:33 UTC (rev 37610)
@@ -58,6 +58,7 @@
}

class WikiFormatWriter extends SimpleFormatWriter {
+ public $commaToArray = false;

public function makeHeader( $handle, $code ) {
list( $name, $native ) = $this->getLanguageNames($code);
@@ -156,6 +157,19 @@
fwrite( $handle, str_repeat( ' ', $pad - strlen($key) ) );
fwrite( $handle, ' => ' );

+ if ( $this->commaToArray ) {
+ fwrite( $handle, 'array( ' );
+ $values = array_map( 'trim', explode( ',', $value ) );
+ $values = array_map( array( __CLASS__, 'quote' ), $values );
+ fwrite( $handle, implode( ', ', $values ) );
+ fwrite( $handle, " ),\n" );
+ } else {
+ fwrite( $handle, self::quote($value) );
+ fwrite( $handle, ",\n" );
+ }
+ }
+
+ public static function quote( $value ) {
# Check for the appropriate apostrophe and add the value
# Quote \ here, because it needs always escaping
$value = addcslashes( $value, '\\' );
@@ -188,7 +202,6 @@
}
}

- fwrite( $handle, $quote . $value . $quote );
- fwrite( $handle, ",\n" );
+ return $quote . $value . $quote;
}
}

Added: trunk/extensions/Translate/scripts/alias-export.php
===================================================================
--- trunk/extensions/Translate/scripts/alias-export.php (rev 0)
+++ trunk/extensions/Translate/scripts/alias-export.php 2008-07-13 13:08:33 UTC (rev 37610)
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Script to export translations of one message group to file(s).
+ *
+ * @author Niklas Laxstrom
+ *
+ * @copyright Copyright © 2008, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @file
+ */
+
+$optionsWithArgs = array( 'lang', 'target', 'group' );
+require( dirname(__FILE__) . '/cli.inc' );
+
+function showUsage() {
+ STDERR( <<<EOT
+Alias exporter.
+
+Usage: php aliasexport.php [options...]
+
+Options:
+ --target Target directory for exported files
+ --lang Comma separated list of language codes
+ --group Group id
+EOT
+);
+ exit( 1 );
+}
+
+if ( isset($options['help']) || $args === 1 ) {
+ showUsage();
+}
+
+if ( !isset($options['target']) ) {
+ STDERR( "You need to specify target directory" );
+ exit(1);
+}
+if ( !isset($options['lang']) ) {
+ STDERR( "You need to specify languages to export" );
+ exit(1);
+}
+
+if ( !is_writable( $options['target'] ) ) {
+ STDERR( "Target directory is not writable" );
+ exit(1);
+}
+
+$langs = array_map( 'trim', explode( ',', $options['lang'] ) );
+
+
+if ( !file_exists(TRANSLATE_ALIASFILE) || !is_readable(TRANSLATE_ALIASFILE) ) {
+ STDERR( "Alias file not defined" );
+ exit(1);
+}
+
+$defines = file_get_contents( TRANSLATE_ALIASFILE );
+$sections = preg_split( "/\n\n/", $defines, -1, PREG_SPLIT_NO_EMPTY );
+
+foreach ( $sections as $section ) {
+ $lines = array_map( 'trim', preg_split( "/\n/", $section ) );
+ $name = '';
+ foreach ( $lines as $line ) {
+ if ( $line === '' ) continue;
+ if ( strpos( $line, '=' ) === false ) {
+ if ( $name === '' ) {
+ $name = $line;
+ } else {
+ throw new MWException( "Trying to define name twice: " . $line );
+ }
+ } else {
+ list( $key, $value ) = array_map( 'trim', explode( '=', $line, 2 ) );
+ if ( $key === 'file' ) $file = $value;
+ }
+ }
+
+ if ( $name !== '' ) {
+ // Fake a group
+ $group = new AliasMessageGroup( $name );
+ $group->setMessageFile( $file );
+ $group->setVariableName( 'aliases' );
+ $writer = $group->getWriter();
+ $writer->fileExport( $langs, $options['target'] );
+ }
+}


Property changes on: trunk/extensions/Translate/scripts/alias-export.php
___________________________________________________________________
Name: svn:eol-style
+ native



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS[at]lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Wikipedia mediawiki-cvs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.