summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'MLEB/Translate/ffs/IntuitionTextdomains.php')
-rw-r--r--MLEB/Translate/ffs/IntuitionTextdomains.php110
1 files changed, 110 insertions, 0 deletions
diff --git a/MLEB/Translate/ffs/IntuitionTextdomains.php b/MLEB/Translate/ffs/IntuitionTextdomains.php
new file mode 100644
index 00000000..12ab21b6
--- /dev/null
+++ b/MLEB/Translate/ffs/IntuitionTextdomains.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Class for Intuition for Translatewiki.net
+ *
+ * @file
+ * @author Niklas Laxström
+ * @author Krinkle
+ * @copyright Copyright © 2008-2013, Niklas Laxström
+ * @copyright Copyright © 2011, Krinkle
+ * @license GPL-2.0+
+ */
+
+/**
+ * Support for tools using Intuition at the Toolserver and Wikimedia Labs.
+ */
+class PremadeIntuitionTextdomains extends PremadeMediawikiExtensionGroups {
+ protected $useConfigure = false;
+ protected $groups;
+ protected $idPrefix = 'tsint-';
+ protected $namespace = NS_INTUITION;
+
+ protected function processGroups( $groups ) {
+ $fixedGroups = array();
+ foreach ( $groups as $g ) {
+ if ( !is_array( $g ) ) {
+ $g = array( $g );
+ }
+
+ $name = $g['name'];
+ $sanitizedName = preg_replace( '/\s+/', '', strtolower( $name ) );
+
+ if ( isset( $g['id'] ) ) {
+ $id = $g['id'];
+ } else {
+ $id = $this->idPrefix . $sanitizedName;
+ }
+
+ if ( isset( $g['file'] ) ) {
+ $file = $g['file'];
+ } else {
+ // Intuition text-domains are case-insensitive and internally
+ // converts to lowercase names starting with a capital letter.
+ // eg. "MyTool" -> "Mytool.i18n.php"
+ // No subdirectories!
+ $file = ucfirst( $sanitizedName ) . '.i18n.php';
+ }
+
+ if ( isset( $g['descmsg'] ) ) {
+ $descmsg = $g['descmsg'];
+ } else {
+ $descmsg = "$id-desc";
+ }
+
+ if ( isset( $g['url'] ) ) {
+ $url = $g['url'];
+ } else {
+ $url = false;
+ }
+
+ $newgroup = array(
+ 'name' => 'Intuition - ' . $name,
+ 'file' => $file,
+ 'descmsg' => $descmsg,
+ 'url' => $url,
+ );
+
+ // Prefix is required, if not customized use the sanitized name
+ if ( !isset( $g['prefix'] ) ) {
+ $g['prefix'] = "$sanitizedName-";
+ }
+
+ // All messages are prefixed with their groupname
+ $g['mangle'] = array( '*' );
+
+ // Prevent E_NOTICE undefined index.
+ // PremadeMediawikiExtensionGroups::factory should probably check this better instead
+ if ( !isset( $g['ignored'] ) ) {
+ $g['ignored'] = array();
+ }
+
+ if ( !isset( $g['optional'] ) ) {
+ $g['optional'] = array();
+ }
+
+ $g['format'] = 'php';
+
+ $copyvars = array(
+ 'aliasfile',
+ 'desc',
+ 'format',
+ 'ignored',
+ 'magicfile',
+ 'mangle',
+ 'optional',
+ 'prefix',
+ 'var',
+ );
+
+ foreach ( $copyvars as $var ) {
+ if ( isset( $g[$var] ) ) {
+ $newgroup[$var] = $g[$var];
+ }
+ }
+
+ $fixedGroups[$id] = $newgroup;
+ }
+
+ return $fixedGroups;
+ }
+}