Ejegg has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/363971 )

Change subject: Revert "Revert "Merge branch 'master' into deployment""
......................................................................

Revert "Revert "Merge branch 'master' into deployment""

Basically re-applying all the stuff we reverted, since the
problems have fixes

This reverts commit f8314476c2d391e992725686cb106f4b4488c7d6.

Change-Id: Ie7e641537cf2495e1282e447934838865c2f4d02
---
M DonationInterface.alias.php
M adyen_gateway/adyen.adapter.php
M amazon_gateway/amazon.adapter.php
M amazon_gateway/amazon.api.php
M amazon_gateway/i18n/en.json
M amazon_gateway/i18n/fr.json
M amazon_gateway/i18n/qqq.json
M amazon_gateway/i18n/ru.json
M amazon_gateway/i18n/uk.json
M extras/FraudFilter.php
M extras/banner_history/BannerHistoryLogIdProcessor.php
M gateway_common/DonationData.php
M gateway_common/DonationQueue.php
M gateway_common/GatewayType.php
M gateway_common/NationalCurrencies.php
M gateway_common/WmfFramework.drupal.php
M gateway_common/WmfFramework.mediawiki.php
M gateway_common/gateway.adapter.php
M gateway_common/i18n/interface/ast.json
M gateway_common/i18n/interface/bg.json
M gateway_common/i18n/interface/bn.json
M gateway_common/i18n/interface/bs.json
M gateway_common/i18n/interface/en.json
M gateway_common/i18n/interface/es.json
M gateway_common/i18n/interface/fr.json
M gateway_common/i18n/interface/hr.json
M gateway_common/i18n/interface/ia.json
M gateway_common/i18n/interface/it.json
M gateway_common/i18n/interface/jv.json
M gateway_common/i18n/interface/lt.json
M gateway_common/i18n/interface/mk.json
M gateway_common/i18n/interface/nb.json
M gateway_common/i18n/interface/pt.json
M gateway_common/i18n/interface/qqq.json
M gateway_common/i18n/interface/ru.json
M gateway_common/i18n/interface/sv.json
M gateway_common/i18n/interface/uk.json
M gateway_common/i18n/interface/ur.json
M gateway_common/i18n/interface/yi.json
M gateway_common/i18n/interface/zh-hans.json
M gateway_common/i18n/interface/zh-hant.json
M gateway_forms/mustache/forms.css
M globalcollect_gateway/globalcollect_resultswitcher.body.php
M globalcollect_gateway/i18n/es.json
M globalcollect_gateway/orphan.adapter.php
M paypal_gateway/express_checkout/paypal_express.adapter.php
46 files changed, 306 insertions(+), 301 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DonationInterface 
refs/changes/71/363971/1

diff --git a/DonationInterface.alias.php b/DonationInterface.alias.php
index 725754d..060dee0 100644
--- a/DonationInterface.alias.php
+++ b/DonationInterface.alias.php
@@ -1,11 +1,9 @@
 <?php
 
-// @codingStandardsIgnoreFile
-
-$specialPageAliases = array();
+$specialPageAliases = [];
 
 /** English */
-$specialPageAliases['en'] = array(
-       'GatewayFormChooser' => array( 'GatewayFormChooser' ),
-       'SystemStatus' => array( 'SystemStatus' ),
-);
+$specialPageAliases['en'] = [
+       'GatewayFormChooser' => [ 'GatewayFormChooser' ],
+       'SystemStatus' => [ 'SystemStatus' ],
+];
diff --git a/adyen_gateway/adyen.adapter.php b/adyen_gateway/adyen.adapter.php
index c86adb5..8129c3e 100644
--- a/adyen_gateway/adyen.adapter.php
+++ b/adyen_gateway/adyen.adapter.php
@@ -215,8 +215,8 @@
         * whether to capture the payment or leave it for manual review.
         * @return array
         */
-       protected function getStompTransaction() {
-               $transaction = parent::getStompTransaction();
+       protected function getQueueDonationMessage() {
+               $transaction = parent::getQueueDonationMessage();
                $transaction['risk_score'] = $this->risk_score;
                return $transaction;
        }
diff --git a/amazon_gateway/amazon.adapter.php 
b/amazon_gateway/amazon.adapter.php
index 8d4473a..08e499a 100644
--- a/amazon_gateway/amazon.adapter.php
+++ b/amazon_gateway/amazon.adapter.php
@@ -199,7 +199,7 @@
                ) );
                // Stash their info in pending queue and logs to fill in data 
for
                // audit and IPN messages
-               $details = $this->getStompTransaction();
+               $details = $this->getQueueDonationMessage();
                $this->logger->info( 'Got info for Amazon donation: ' . 
json_encode( $details ) );
                $this->sendPendingMessage();
        }
diff --git a/amazon_gateway/amazon.api.php b/amazon_gateway/amazon.api.php
index 740b912..3b9cd54 100644
--- a/amazon_gateway/amazon.api.php
+++ b/amazon_gateway/amazon.api.php
@@ -24,7 +24,9 @@
                        ),
                );
 
-               $adapter = new AmazonAdapter( $adapterParams );
+               $adapterClass = DonationInterface::getAdapterClassForGateway( 
'amazon' );
+               // @var AmazonAdapter
+               $adapter = new $adapterClass( $adapterParams );
 
                if ( $adapter->getErrorState()->hasErrors() ) {
                        $output->addValue(
diff --git a/amazon_gateway/i18n/en.json b/amazon_gateway/i18n/en.json
index d0ba913..4b1ef57 100644
--- a/amazon_gateway/i18n/en.json
+++ b/amazon_gateway/i18n/en.json
@@ -4,6 +4,7 @@
        },
        "amazon_gateway-desc": "Amazon payment processing",
        "apihelp-di_amazon_bill-description": "",
+       "apihelp-di_amazon_bill-summary": "",
        "apihelp-di_amazon_bill-param-amount": "",
        "apihelp-di_amazon_bill-param-billingAgreementId": "",
        "apihelp-di_amazon_bill-param-currency": "",
diff --git a/amazon_gateway/i18n/fr.json b/amazon_gateway/i18n/fr.json
index 277724b..bec4a03 100644
--- a/amazon_gateway/i18n/fr.json
+++ b/amazon_gateway/i18n/fr.json
@@ -1,8 +1,10 @@
 {
        "@metadata": {
                "authors": [
-                       "Erkethan"
+                       "Erkethan",
+                       "Benoit Rochon"
                ]
        },
-       "amazon_gateway-desc": "Traitement des paiements Amazon"
+       "amazon_gateway-desc": "Traitement des paiements Amazon",
+       "apihelp-di_amazon_bill-param-currency": "..."
 }
diff --git a/amazon_gateway/i18n/qqq.json b/amazon_gateway/i18n/qqq.json
index 24ce590..23dd614 100644
--- a/amazon_gateway/i18n/qqq.json
+++ b/amazon_gateway/i18n/qqq.json
@@ -6,6 +6,7 @@
        },
        "amazon_gateway-desc": "{{desc}}",
        "apihelp-di_amazon_bill-description": 
"{{doc-apihelp-description|di_amazon_bill}}",
+       "apihelp-di_amazon_bill-summary": 
"{{doc-apihelp-summary|di_amazon_bill}}",
        "apihelp-di_amazon_bill-param-amount": 
"{{doc-apihelp-param|di_amazon_bill|amount}}",
        "apihelp-di_amazon_bill-param-billingAgreementId": 
"{{doc-apihelp-param|di_amazon_bill|billingAgreementId}}",
        "apihelp-di_amazon_bill-param-currency": 
"{{doc-apihelp-param|di_amazon_bill|currency}}",
diff --git a/amazon_gateway/i18n/ru.json b/amazon_gateway/i18n/ru.json
index b14eb0f..60d8b18 100644
--- a/amazon_gateway/i18n/ru.json
+++ b/amazon_gateway/i18n/ru.json
@@ -4,6 +4,5 @@
                        "KPu3uC B Poccuu"
                ]
        },
-       "amazongateway": "Сделать ваше пожертвование сейчас",
        "amazon_gateway-desc": "Обработка платежей Amazon"
 }
diff --git a/amazon_gateway/i18n/uk.json b/amazon_gateway/i18n/uk.json
index 935f416..a83e2d5 100644
--- a/amazon_gateway/i18n/uk.json
+++ b/amazon_gateway/i18n/uk.json
@@ -1,9 +1,11 @@
 {
        "@metadata": {
                "authors": [
-                       "Ата"
+                       "Ата",
+                       "Piramidion"
                ]
        },
-       "amazongateway": "Зробіть Вашу пожертву зараз",
-       "amazon_gateway-desc": "Обробка платежу Amazon"
+       "amazon_gateway-desc": "Обробка платежу Amazon",
+       "apihelp-di_amazon_bill-summary": ".",
+       "apihelp-di_amazon_bill-param-currency": "."
 }
diff --git a/extras/FraudFilter.php b/extras/FraudFilter.php
index 9113c88..3656fb3 100644
--- a/extras/FraudFilter.php
+++ b/extras/FraudFilter.php
@@ -28,7 +28,6 @@
                        'validation_action' => $validationAction,
                        'risk_score' => $totalScore,
                        'score_breakdown' => $scoreBreakdown,
-                       'php-message-class' => 
'SmashPig\CrmLink\Messages\DonationInterfaceAntifraud',
                        'user_ip' => 
$this->gateway_adapter->getData_Unstaged_Escaped( 'user_ip' ),
                );
                //If we need much more here to help combat fraud, we could just
@@ -36,7 +35,7 @@
                //Legal said ok... but this seems a bit excessive to me at the
                //moment.
 
-               $transaction = 
$this->gateway_adapter->makeFreeformStompTransaction( $stomp_msg );
+               $transaction = 
$this->gateway_adapter->addStandardMessageFields( $stomp_msg );
 
                // In the rare case that we fraud-fail before we have an order 
ID, use ct_id
                if ( empty( $transaction['order_id'] ) ) {
diff --git a/extras/banner_history/BannerHistoryLogIdProcessor.php 
b/extras/banner_history/BannerHistoryLogIdProcessor.php
index ecc7206..64c95f1 100644
--- a/extras/banner_history/BannerHistoryLogIdProcessor.php
+++ b/extras/banner_history/BannerHistoryLogIdProcessor.php
@@ -67,7 +67,6 @@
                }
 
                $data = array(
-                       'freeform' => true,
                        'banner_history_id' => $bannerHistoryId,
                        'contribution_tracking_id' => $contributionTrackingId,
                );
diff --git a/gateway_common/DonationData.php b/gateway_common/DonationData.php
index 0b2943b..823481d 100644
--- a/gateway_common/DonationData.php
+++ b/gateway_common/DonationData.php
@@ -920,7 +920,6 @@
                        'contribution_tracking_id',
                        'optout',
                        'anonymous',
-                       'size',
                        'utm_source',
                        'utm_medium',
                        'utm_campaign',
diff --git a/gateway_common/DonationQueue.php b/gateway_common/DonationQueue.php
index f9fa83c..6971174 100644
--- a/gateway_common/DonationQueue.php
+++ b/gateway_common/DonationQueue.php
@@ -34,12 +34,12 @@
                return $sourceRevision;
        }
 
-       public function push( $transaction, $queue ) {
+       public function push( $message, $queue ) {
                // TODO: This should be checked once, at a higher level.
                if ( !GatewayAdapter::getGlobal( 'EnableQueue' ) ) {
                        return;
                }
-               $message = $this->buildBody( $transaction );
+               SourceFields::addToMessage( $message );
                $this->newBackend( $queue )->push( $message );
        }
 
@@ -59,25 +59,6 @@
                $backend = $this->newBackend( $queue );
 
                return $backend->peek();
-       }
-
-       /**
-        * Build a body string, given a donation data array
-        *
-        * @param array $transaction
-        *
-        * @return array Message body.  Note that we aren't json_encoding here, 
cos
-        * PHPQueue expects an array.
-        */
-       protected function buildBody( $transaction ) {
-               if ( array_key_exists( 'freeform', $transaction ) && 
$transaction['freeform'] ) {
-                       $data = $transaction;
-               } else {
-                       // Assume anything else is a regular donation.
-                       $data = $this->buildTransactionMessage( $transaction );
-               }
-               SourceFields::addToMessage( $data );
-               return $data;
        }
 
        /**
@@ -119,81 +100,6 @@
                        throw new RuntimeException( "Queue backend class not 
found: [$className]" );
                }
                return new $className( $serverConfig );
-       }
-
-       /**
-        * Assign correct values to the array of data to be sent to the 
ActiveMQ server
-        * TODO: Probably something else. I don't like the way this works and 
neither do you.
-        *
-        * Older notes follow:
-        * Currency in receiving module has currency set to USD, should take 
passed variable for these
-        * PAssed both ISO and country code, no need to look up
-        * 'gateway' = globalcollect, e.g.
-        * 'date' is sent as $date("r")
-        *  so it can be translated with strtotime like Paypal transactions 
(correct?)
-        * Processor txn ID sent in the transaction response is assigned to 
'gateway_txn_id' (PNREF)
-        * Order ID (generated with transaction) is assigned to 
'contribution_tracking_id'?
-        * Response from processor is assigned to 'response'
-        *
-        * @param array $transaction values from gateway adapter
-        * @return array values normalized to wire format
-        */
-       protected function buildTransactionMessage( $transaction ) {
-               // specifically designed to match the CiviCRM API that will 
handle it
-               // edit this array to include/ignore transaction data sent to 
the server
-
-               $message = array(
-                       'contribution_tracking_id' => 
$transaction['contribution_tracking_id'],
-                       'country' => $transaction['country'],
-                       // the following int casting fixes an issue that is 
more in Drupal/CiviCRM than here.
-                       // The code there should also be fixed.
-                       'date' => (int)$transaction['date'],
-                       'fee' => '0',
-                       'gateway_account' => $transaction['gateway_account'],
-                       'gateway' => $transaction['gateway'],
-                       'gateway_txn_id' => $transaction['gateway_txn_id'],
-                       'language' => $transaction['language'],
-                       'order_id' => $transaction['order_id'],
-                       'payment_method' => $transaction['payment_method'],
-                       'payment_submethod' => 
$transaction['payment_submethod'],
-                       'response' => $transaction['response'],
-                       'user_ip' => $transaction['user_ip'],
-                       'utm_source' => $transaction['utm_source'],
-               );
-
-               // We're using this mapping for optional fields, and to cheat 
on not
-               // transforming messages a if they are processed through this 
function
-               // multiple times.
-               $optional_keys = array(
-                       'anonymous' => 'anonymous',
-                       'city' => 'city',
-                       'currency' => 'currency',
-                       'email' => 'email',
-                       'first_name' => 'first_name',
-                       'gross' => 'amount',
-                       'gateway_session_id' => 'gateway_session_id',
-                       'last_name' => 'last_name',
-                       'optout' => 'optout',
-                       'recurring' => 'recurring',
-                       'risk_score' => 'risk_score',
-                       'state_province' => 'state_province',
-                       'street_address' => 'street_address',
-                       'supplemental_address_1' => 'supplemental_address_1',
-                       'subscr_id' => 'subscr_id',
-                       'utm_campaign' => 'utm_campaign',
-                       'utm_medium' => 'utm_medium',
-                       'postal_code' => 'postal_code',
-               );
-               foreach ( $optional_keys as $mkey => $tkey ) {
-                       if ( isset( $transaction[$tkey] ) ) {
-                               $message[$mkey] = $transaction[$tkey];
-                       } elseif ( isset( $transaction[$mkey] ) ) {
-                               // Just copy if it's already using the correct 
key.
-                               $message[$mkey] = $transaction[$mkey];
-                       }
-               }
-
-               return $message;
        }
 
        /**
diff --git a/gateway_common/GatewayType.php b/gateway_common/GatewayType.php
index 8389b1c..b5226f9 100644
--- a/gateway_common/GatewayType.php
+++ b/gateway_common/GatewayType.php
@@ -345,7 +345,7 @@
         * @param array $transaction The fields that we are interested in 
sending.
         * @return array The fields that will actually be sent. So, 
$transaction ++ some other things we think we're likely to always need.
         */
-       public function makeFreeformStompTransaction( $transaction );
+       public function addStandardMessageFields( $transaction );
 
        /**
         * returns information about how to manage the Order ID
diff --git a/gateway_common/NationalCurrencies.php 
b/gateway_common/NationalCurrencies.php
index 44f2371..430e9d5 100644
--- a/gateway_common/NationalCurrencies.php
+++ b/gateway_common/NationalCurrencies.php
@@ -157,6 +157,7 @@
                        "MU" => "EUR",
                        "MS" => "XCD",
                        "MA" => "MAD",
+                       "MX" => "MXN",
                        "MZ" => "MZN",
                        "MM" => "MMK",
                        "NA" => "NAD",
diff --git a/gateway_common/WmfFramework.drupal.php 
b/gateway_common/WmfFramework.drupal.php
index 4ddd5f8..9cb3d9f 100644
--- a/gateway_common/WmfFramework.drupal.php
+++ b/gateway_common/WmfFramework.drupal.php
@@ -29,10 +29,6 @@
                throw new BadMethodCallException( 'Unimplemented' );
        }
 
-       static function getHostname() {
-               return gethostname();
-       }
-
        static function formatMessage( $message_identifier ) {
                // TODO: Use the i18n logic in wmf_communication
                return $message_identifier;
diff --git a/gateway_common/WmfFramework.mediawiki.php 
b/gateway_common/WmfFramework.mediawiki.php
index 94ac1e4..73d76bf 100644
--- a/gateway_common/WmfFramework.mediawiki.php
+++ b/gateway_common/WmfFramework.mediawiki.php
@@ -27,10 +27,6 @@
                return RequestContext::getMain()->getRequest()->getHeader( $key 
);
        }
 
-       static function getHostname() {
-               return wfHostname();
-       }
-
        static function formatMessage( $message_identifier /*, ... */ ) {
                return call_user_func_array( 'wfMessage', func_get_args() 
)->text();
        }
diff --git a/gateway_common/gateway.adapter.php 
b/gateway_common/gateway.adapter.php
index 9a25296..be079a7 100644
--- a/gateway_common/gateway.adapter.php
+++ b/gateway_common/gateway.adapter.php
@@ -20,6 +20,7 @@
 use ForceUTF8\Encoding;
 use MediaWiki\Session\SessionManager;
 use Psr\Log\LogLevel;
+use SmashPig\Core\UtcDate;
 use Symfony\Component\Yaml\Parser;
 
 /**
@@ -1775,74 +1776,82 @@
        }
 
        /**
-        * Formats an array in preparation for dispatch to a STOMP queue
+        * Collect donation details and normalize keys for pending or
+        * donations queue
         *
-        * @return array Pass this return array to STOMP :)
-        *
-        * TODO: Stop saying "STOMP".
+        * @return array
         */
-       protected function getStompTransaction() {
-               $transaction = array(
+       protected function getQueueDonationMessage() {
+               $queueMessage = array(
                        'gateway_txn_id' => $this->getTransactionGatewayTxnID(),
                        'response' => $this->getTransactionMessage(),
-                       // Can this be deprecated?
-                       'correlation-id' => $this->getCorrelationID(),
-                       'php-message-class' => 
'SmashPig\CrmLink\Messages\DonationInterfaceMessage',
                        'gateway_account' => $this->account_name,
+                       'fee' => 0, // FIXME: don't we know this for some 
gateways?
+               );
+
+               $messageKeys = DonationData::getMessageFields();
+
+               $requiredKeys = array(
+                       'amount',
+                       'contribution_tracking_id',
+                       'country',
+                       'gateway',
+                       'language',
+                       'order_id',
+                       'payment_method',
+                       'payment_submethod',
+                       'user_ip',
+                       'utm_source',
+               );
+
+               $remapKeys = array(
+                       'amount' => 'gross',
                );
 
                // Add the rest of the relevant data
                // FIXME: This is "normalized" data.  We should refer to it as 
such,
                // and rename the getData_Unstaged_Escaped function.
-               $stomp_data = array_intersect_key(
-                       $this->getData_Unstaged_Escaped(),
-                       array_flip( $this->dataObj->getMessageFields() )
-               );
-
-               // The order here is important, values in $transaction are 
considered more definitive
-               // in case the transaction already had keys with those values
-               $transaction = array_merge( $stomp_data, $transaction );
-
+               $data = $this->getData_Unstaged_Escaped();
+               foreach ( $messageKeys as $key ) {
+                       if ( isset( $queueMessage[$key] ) ) {
+                               // don't clobber the pre-sets
+                               continue;
+                       }
+                       if ( !isset( $data[$key] ) ) {
+                               if ( in_array( $key, $requiredKeys ) ) {
+                                       throw new RuntimeException( "Missing 
required message key $key" );
+                               }
+                               continue;
+                       }
+                       $value = Encoding::toUTF8( $data[$key] );
+                       if ( isset( $remapKeys[$key] ) ) {
+                               $queueMessage[$remapKeys[$key]] = $value;
+                       } else {
+                               $queueMessage[$key] = $value;
+                       }
+               }
                // FIXME: Note that we're not using any existing date or ts 
fields.  Why is that?
-               $transaction['date'] = time();
+               $queueMessage['date'] = time();
 
-               // Force any incorrect encoding to UTF-8.
-               // FIXME: Move down to the PHP-Queue library
-               $transaction = Encoding::toUTF8( $transaction );
-
-               return $transaction;
+               return $queueMessage;
        }
 
-       public function makeFreeformStompTransaction( $transaction ) {
-               if ( !array_key_exists( 'php-message-class', $transaction ) ) {
-                       $this->logger->warning( "Trying to send a freeform 
STOMP message with no class defined. Bad programmer." );
-                       $transaction['php-message-class'] = 
'undefined-loser-message';
-               }
-
-               // Mark as freeform so we avoid normalization.
-               $transaction['freeform'] = true;
-
+       public function addStandardMessageFields( $transaction ) {
                //bascially, add all the stuff we have come to take for 
granted, because syslog.
-               $transaction['gateway_txn_id'] = 
$this->getTransactionGatewayTxnID();
-               $transaction['correlation-id'] = $this->getCorrelationID();
-               $transaction['date'] = ( int ) time(); //I know this looks odd. 
Just trust me here.
-               $transaction['server'] = WmfFramework::getHostname(); // FIXME: 
duplicated in the source fields
+               $transaction['gateway_txn_id'] = 
$this->getTransactionGatewayTxnId();
+               $transaction['date'] = UtcDate::getUtcTimestamp();
+               $transaction['server'] = gethostname();
 
                $these_too = array (
                        'gateway',
                        'contribution_tracking_id',
                        'order_id',
-                       'payment_method', //the stomp sender gets mad if we 
don't have this. @TODO: Stop being lazy someday.
                );
                foreach ( $these_too as $field ) {
                        $transaction[$field] = $this->getData_Unstaged_Escaped( 
$field );
                }
 
                return $transaction;
-       }
-
-       protected function getCorrelationID(){
-               return $this->getIdentifier() . '-' . 
$this->getData_Unstaged_Escaped('order_id');
        }
 
        /**
@@ -2072,7 +2081,6 @@
         */
        public function sendFinalStatusMessage( $status ) {
                $transaction = array(
-                       'php-message-class' => 
'SmashPig\CrmLink\Messages\DonationInterfaceFinalStatus',
                        'validation_action' => $this->getValidationAction(),
                        'payments_final_status' => $status,
                );
@@ -2091,7 +2099,7 @@
                        $transaction[$key] = $this->getData_Unstaged_Escaped( 
$key );
                }
 
-               $transaction = $this->makeFreeformStompTransaction( 
$transaction );
+               $transaction = $this->addStandardMessageFields( $transaction );
 
                try {
                        // FIXME: Dispatch "freeform" messages transparently as 
well.
@@ -2246,13 +2254,13 @@
 
        protected function pushMessage( $queue ) {
                $this->logger->info( "Pushing transaction to queue [$queue]" );
-               DonationQueue::instance()->push( $this->getStompTransaction(), 
$queue );
+               DonationQueue::instance()->push( 
$this->getQueueDonationMessage(), $queue );
        }
 
        protected function sendPendingMessage() {
                $order_id = $this->getData_Unstaged_Escaped( 'order_id' );
                $this->logger->info( "Sending donor details for $order_id to 
pending queue" );
-               DonationQueue::instance()->push( $this->getStompTransaction(), 
'pending' );
+               DonationQueue::instance()->push( 
$this->getQueueDonationMessage(), 'pending' );
        }
 
        /**
@@ -3630,7 +3638,7 @@
        }
 
        protected function logPaymentDetails( $preface = self::REDIRECT_PREFACE 
) {
-               $details = $this->getStompTransaction();
+               $details = $this->getQueueDonationMessage();
                $json = json_encode( $details );
                $this->logger->info( $preface . $json );
        }
diff --git a/gateway_common/i18n/interface/ast.json 
b/gateway_common/i18n/interface/ast.json
index 2799fee..c31f7cf 100644
--- a/gateway_common/i18n/interface/ast.json
+++ b/gateway_common/i18n/interface/ast.json
@@ -391,6 +391,7 @@
        "donate_interface-error-http-403": "Nun tienes permisu d'accesu pa esta 
páxina.",
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "Esta API te permite unviar una donación 
a la Fundación Wikimedia, usando dellos procesadores de pagu.",
+       "apihelp-donate-summary": "Esta API te permite unviar una donación a la 
Fundación Wikimedia, usando dellos procesadores de pagu.",
        "apihelp-donate-param-gateway": "Qué pasera de pagu utilizar: adyen, 
globalcollect, etc.",
        "apihelp-donate-param-amount": "La cantidá donada.",
        "apihelp-donate-param-currency": "Códigu de moneda.",
diff --git a/gateway_common/i18n/interface/bg.json 
b/gateway_common/i18n/interface/bg.json
index b2e038b..114b4c8 100644
--- a/gateway_common/i18n/interface/bg.json
+++ b/gateway_common/i18n/interface/bg.json
@@ -119,9 +119,9 @@
        "donate_interface-paypal-button": "Даряване с PayPal",
        "donate_interface-paypal-redirect": "Пренасочване към PayPal…",
        "donate_interface-amazon-button": "Дарение чрез Amazon",
-       "donate_interface-cc-button": "Даряване с кредитна карта",
+       "donate_interface-cc-button": "Дарение с кредитна карта",
        "donate_interface-ccdc-button": "Дарение с кредитна/дебитна карта",
-       "donate_interface-dd-button": "Даряване с директен дебит",
+       "donate_interface-dd-button": "Дарение с директен дебит",
        "donate_interface-bt-button": "Дарение с банков превод",
        "donate_interface-rt-button": "Дарение през банка $1",
        "donate_interface-ewallet-button": "Дарете чрез $1",
@@ -134,16 +134,16 @@
        "donate_interface-donor-email": "Адрес на е-поща:",
        "donate_interface-donor-name": "Име:",
        "donate_interface-donor-first_name": "Име:",
-       "donate_interface-donor-mname": "Средно или бащино име:",
+       "donate_interface-donor-mname": "Презиме:",
        "donate_interface-donor-last_name": "Фамилия:",
        "donate_interface-donor-street_address": "Улица:",
-       "donate_interface-donor-street-number": "Число",
+       "donate_interface-donor-street-number": "Номер:",
        "donate_interface-donor-city": "Град:",
        "donate_interface-donor-county": "Окръг",
        "donate_interface-donor-island": "Остров",
        "donate_interface-donor-state_province": "Държава:",
        "donate_interface-donor-postal_code": "Пощенски код:",
-       "donate_interface-donor-postal_code-us": "ЗИП код",
+       "donate_interface-donor-postal_code-us": "Пощенски код",
        "donate_interface-donor-country": "Страна или област:",
        "donate_interface-donor-zone": "Зона",
        "donate_interface-donor-address": "Адрес:",
@@ -163,7 +163,7 @@
        "donate_interface-error-msg-nopaypal": "Поради техническа грешка, не 
можем да изпратим вашата заявка към PayPal. Моля, използвайте нашия традиционен 
формуляр за дарения с кредитна карта.",
        "donate_interface-error-msg-validation": "Моля, коригирайте грешките 
във формуляра.",
        "donate_interface-error-msg-invalid-amount": "Моля, въведете коректна 
сума",
-       "donate_interface-error-msg-invalid-email": "Моля, въведете правилен 
адрес на е-поща",
+       "donate_interface-error-msg-invalid-email": "Моля, въведете правилен 
адрес на е-поща, напр: n...@domain.com",
        "donate_interface-error-msg-card-num": "Моля, въведете валиден номер на 
кредитна карта от някой от признатите видове",
        "donate_interface-error-msg-amex": "Моля, въведете правилен номер на 
карта American Express.",
        "donate_interface-error-msg-mc": "Моля, въведете правилен номер на 
карта MasterCard.",
@@ -188,7 +188,7 @@
        "donate_interface-error-msg-card_type": "тип кредитна карта",
        "donate_interface-error-msg-card_num": "номер на кредитна карта",
        "donate_interface-error-msg-expiration": "Въведете дата на изтичане на 
картата",
-       "donate_interface-error-msg-cvv": "Въведете CCV код, той обикновено е 
изписан на гърба на картата",
+       "donate_interface-error-msg-cvv": "Въведете CCV кодът, който е 
обикновено изписан на гърба на картата",
        "donate_interface-error-msg-account_name": "Титуляр на сметката",
        "donate_interface-error-msg-account_number": "Номер на сметката",
        "donate_interface-error-msg-authorization_id": "ID за оторизация",
diff --git a/gateway_common/i18n/interface/bn.json 
b/gateway_common/i18n/interface/bn.json
index 96b31cb..d012271 100644
--- a/gateway_common/i18n/interface/bn.json
+++ b/gateway_common/i18n/interface/bn.json
@@ -8,7 +8,8 @@
                        "Wikitanvir",
                        "Aftabuzzaman",
                        "Aashaa",
-                       "Elias Ahmmad"
+                       "Elias Ahmmad",
+                       "Mohammed Galib Hasan"
                ]
        },
        "donate_interface": "উইকিমিডিয়াকে সাহায্য করুন",
@@ -170,7 +171,7 @@
        "donate_interface-error-msg-card_type": "ক্রেডিট কার্ডের ধরন",
        "donate_interface-error-msg-card_num": "ক্রেডিট কার্ড নম্বর",
        "donate_interface-error-msg-expiration": "দয়া করে কার্ডের মেয়াদ 
উত্তীর্ণের তারিখ লিখুন",
-       "donate_interface-error-msg-cvv": "কার্ডের পেছনের সিভিভি নম্বর",
+       "donate_interface-error-msg-cvv": "দয়া করে সিভিভি নম্বর প্রবেশ করান, 
সাধারনত এটি কার্ডের পেছনের অংশে থাকে",
        "donate_interface-error-msg-account_name": "অ্যাকাউন্ট নাম",
        "donate_interface-error-msg-account_number": "অ্যাকাউন্ট নম্বর",
        "donate_interface-error-msg-branch_code": "শাখা কোড",
diff --git a/gateway_common/i18n/interface/bs.json 
b/gateway_common/i18n/interface/bs.json
index ed68fcb..5400b68 100644
--- a/gateway_common/i18n/interface/bs.json
+++ b/gateway_common/i18n/interface/bs.json
@@ -47,7 +47,7 @@
        "donate_interface-amount-legend": "Iznos donacije",
        "donate_interface-cvv-link": "Gdje je ovo?",
        "donate_interface-donor-legend": "Donatorske informacije",
-       "donate_interface-donor-amount": "Iznos:",
+       "donate_interface-donor-amount": "Iznos",
        "donate_interface-donor-currency-label": "Valuta:",
        "donate_interface-donor-email": "E-mail adresa",
        "donate_interface-donor-name": "Ime:",
@@ -74,7 +74,7 @@
        "donate_interface-error-msg-mc": "Molimo unesite ispravan broj 
MasterCard kartice.",
        "donate_interface-error-msg-visa": "Molimo unesite ispravan broj Visa 
kartice.",
        "donate_interface-error-msg-discover": "Molimo unesite ispravan broj 
Discover kartice.",
-       "donate_interface-error-msg-amount": "iznos donacije",
+       "donate_interface-error-msg-amount": "Upišite iznos donacije",
        "donate_interface-error-msg-email": "Upišite adresu e-pošte",
        "donate_interface-error-msg-first_name": "Upišite ime",
        "donate_interface-error-msg-last_name": "Molimo unesite Vaše prezime",
diff --git a/gateway_common/i18n/interface/en.json 
b/gateway_common/i18n/interface/en.json
index 48a5bda..032bdc9 100644
--- a/gateway_common/i18n/interface/en.json
+++ b/gateway_common/i18n/interface/en.json
@@ -427,6 +427,7 @@
        "donate_interface-error-http-403": "You do not have permission to 
access this page.",
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "This API allow you to submit a donation 
to the Wikimedia Foundation using a variety of payment processors.",
+       "apihelp-donate-summary": "This API allow you to submit a donation to 
the Wikimedia Foundation using a variety of payment processors.",
        "apihelp-donate-param-gateway": "Which payment gateway to use - adyen, 
globalcollect, etc.",
        "apihelp-donate-param-amount": "The amount donated.",
        "apihelp-donate-param-currency": "Currency code.",
diff --git a/gateway_common/i18n/interface/es.json 
b/gateway_common/i18n/interface/es.json
index fd3e1b0..455e262 100644
--- a/gateway_common/i18n/interface/es.json
+++ b/gateway_common/i18n/interface/es.json
@@ -42,7 +42,7 @@
        "donate_interface-desc": "Página inicial de donativos que integra 
extensiones de puertas de enlace",
        "donate_interface-langonly-desc": "Expone sólo los mensajes del sistema 
DonationInterface",
        "donate_interface-intro": "Elige un método de pago, cantidad y moneda.",
-       "donate_interface-amount": "Cantidad",
+       "donate_interface-amount": "Monto",
        "donate_interface-other-amount": "Otra cantidad",
        "donate_interface-currency": "Moneda:",
        "donate_interface-gateway": "Forma de pago:",
@@ -53,7 +53,7 @@
        "donate_interface-comment-title": "Comentario público",
        "donate_interface-donation-description": "Donación a la Fundación 
Wikimedia",
        "donate_interface-monthly-donation-description": "Donación mensual a la 
Fundación Wikimedia",
-       "donate_interface-amount-error": "Selecciona una cantidad que donar",
+       "donate_interface-amount-error": "Selecciona un monto que donar",
        "donate_interface-smallamount-error": "Selecciona una cantidad (mínimo 
$1)",
        "donate_interface-bigamount-error": "No podemos aceptar donaciones de 
más de 10000 USD ($1 $2) a través de nuestro sitio web. Pónte en contacto con 
nuestro personal de grandes donaciones en $3 .",
        "donate_interface-processing-error": "Se produjo un error al procesar 
la solicitud.\nPonte en contacto con Servicios a donantes por medio de <a 
href=\"mailto:don...@wikimedia.org\";>don...@wikimedia.org</a>.",
@@ -152,10 +152,10 @@
        "donate_interface-rt-button": "Donar a través del banco $1",
        "donate_interface-ewallet-button": "Donar a través de $1",
        "donate_interface-card-legend": "Datos de la tarjeta de crédito",
-       "donate_interface-amount-legend": "Cantidad a donar",
+       "donate_interface-amount-legend": "Monto de la donación",
        "donate_interface-cvv-link": "¿Dónde está esto?",
        "donate_interface-donor-legend": "Datos del donante",
-       "donate_interface-donor-amount": "Cantidad",
+       "donate_interface-donor-amount": "Monto",
        "donate_interface-donor-currency-label": "Moneda",
        "donate_interface-donor-email": "Dirección de correo electrónico",
        "donate_interface-donor-name": "Nombre",
@@ -190,7 +190,7 @@
        "donate_interface-error-msg-general": "Hubo un error al procesar tu 
solicitud.",
        "donate_interface-error-msg-nopaypal": "Debido a un error técnico, no 
podemos enviar tu solicitud a PayPal. Trata de usar nuestro formulario regular 
de donación con tarjeta de crédito.",
        "donate_interface-error-msg-validation": "Corrige los errores en el 
formulario.",
-       "donate_interface-error-msg-invalid-amount": "Escribe una cantidad 
válida",
+       "donate_interface-error-msg-invalid-amount": "Escribe un monto válido",
        "donate_interface-error-msg-invalid-email": "Escribe una dirección de 
correo electrónico válida. Por ejemplo, nom...@dominio.com",
        "donate_interface-error-msg-card-num": "Escribe un número de tarjeta de 
crédito válido para uno de los tipos de tarjetas de crédito aceptadas",
        "donate_interface-error-msg-amex": "Escribe un número de tarjeta 
American Express correcto.",
@@ -412,7 +412,7 @@
        "donate_interface-legal-original": "Esta es una traducción de cortesía. 
En el caso de un conflicto entre esta traducción y la versión en inglés, regirá 
la versión en inglés.",
        "donate_interface-monthlybox-title": "¿Hacerla mensualmente?",
        "donate_interface-monthlybox-content": "Las donaciones mensuales se 
procesarán el segundo día de cada mes. Puedes cancelarlas en cualquier 
momento.",
-       "donate_interface-monthlybox-amount": "Cantidad a donar mensualmente",
+       "donate_interface-monthlybox-amount": "Monto que donar mensualmente",
        "donate_interface-monthlybox-yes": "Sin duda, hacerla mensual",
        "donate_interface-monthlybox-no": "NO, hacer una donación única",
        "donate_interface-monthlybox-bottom": "Tu donación se procesará de 
forma segura.",
@@ -424,7 +424,7 @@
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "Esta API te permite enviar una donación 
a la Fundación Wikimedia, usando una variedad de métodos de pago.",
        "apihelp-donate-param-gateway": "Qué sistema de pago utilizar: adyen, 
globalcollect, etc.",
-       "apihelp-donate-param-amount": "La cantidad donada.",
+       "apihelp-donate-param-amount": "El monto donado.",
        "apihelp-donate-param-currency": "Código de la moneda.",
        "apihelp-donate-param-first_name": "Nombre(s).",
        "apihelp-donate-param-last_name": "Apellido(s).",
diff --git a/gateway_common/i18n/interface/fr.json 
b/gateway_common/i18n/interface/fr.json
index 187797c..f2104fa 100644
--- a/gateway_common/i18n/interface/fr.json
+++ b/gateway_common/i18n/interface/fr.json
@@ -425,6 +425,7 @@
        "donate_interface-error-http-403": "Vous n’avez pas le droit d’accéder 
à cette page.",
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "Cette API vous permettent de faire un 
don à la Wikimedia Foundation en utilisant une variété de modes de paiement.",
+       "apihelp-donate-summary": "Cet API vous permet de soumettre une 
donnation à la Fondation Wikimedia en utilisant divers modes de paiement.",
        "apihelp-donate-param-gateway": "Quelle passerelle de paiement utiliser 
– adyen, globalcollect, etc.",
        "apihelp-donate-param-amount": "Le montant du don.",
        "apihelp-donate-param-currency": "Code de devise.",
diff --git a/gateway_common/i18n/interface/hr.json 
b/gateway_common/i18n/interface/hr.json
index fe4f229..ad39975 100644
--- a/gateway_common/i18n/interface/hr.json
+++ b/gateway_common/i18n/interface/hr.json
@@ -137,6 +137,7 @@
        "donate_interface-donor-email": "E-mail adresa:",
        "donate_interface-donor-name": "Ime",
        "donate_interface-donor-first_name": "Ime:",
+       "donate_interface-donor-first_name-alt": "Ime",
        "donate_interface-donor-mname": "Srednje ime:",
        "donate_interface-donor-last_name": "Prezime:",
        "donate_interface-donor-street_address": "Ulica:",
@@ -175,21 +176,21 @@
        "donate_interface-error-msg-visa": "Molimo, unesite ispravan broj 
kartice za Visu.",
        "donate_interface-error-msg-discover": "Molimo, unesite ispravan broj 
kartice za Discover.",
        "donate_interface-error-msg-amount": "iznos donacije",
-       "donate_interface-error-msg-email": "Molimo unesite vaše e-mail adresa",
+       "donate_interface-error-msg-email": "Molimo unesite vašu adresu 
e-pošte",
        "donate_interface-error-msg-first_name": "Molimo unesite vaše ime",
        "donate_interface-error-msg-last_name": "Molimo unesite vaše prezime",
        "donate_interface-error-msg-street_address": "Molimo unesite vaše 
Adresa ulice",
        "donate_interface-error-msg-city": "Molimo unesite vaš grad",
        "donate_interface-error-msg-state_province": "Molimo unesite vaše 
država",
-       "donate_interface-error-msg-postal_code-us": "Molimo unesite vaše 
poštanski broj",
-       "donate_interface-error-msg-postal_code": "Molimo unesite vaše 
poštanski broj",
+       "donate_interface-error-msg-postal_code-us": "Molimo unesite vaš 
poštanski broj",
+       "donate_interface-error-msg-postal_code": "Molimo unesite vaš poštanski 
broj",
        "donate_interface-error-msg-invalid-first_name": "Molimo ispravite 
pogrješke u vašem ime",
        "donate_interface-error-msg-invalid-last_name": "Molimo ispravite 
pogrješke u vašem prezime",
        "donate_interface-error-msg-invalid-street_address": "Molimo ispravite 
pogrješke u vašem Adresa ulice",
        "donate_interface-error-msg-invalid-city": "Molimo ispravite pogrješke 
u navođenju vašega grada",
        "donate_interface-error-msg-invalid-postal_code-us": "Molimo ispravite 
pogrješke u vašem poštanskom broju",
        "donate_interface-error-msg-invalid-postal_code": "Molimo ispravite 
pogrješke u vašem poštanskom broju",
-       "donate_interface-error-msg-country": "država",
+       "donate_interface-error-msg-country": "Molimo unesite vašu državu",
        "donate_interface-error-msg-card_type": "vrsta kreditne kartice",
        "donate_interface-error-msg-card_num": "broj kreditne kartice",
        "donate_interface-error-msg-expiration": "Molimo unesite datum isteka 
kartice",
@@ -206,6 +207,13 @@
        "donate_interface-error-msg-country-calc": "Pogrješka - trenutačno ne 
možemo prihvatiti vašu donaciju.",
        "donate_interface-error-msg-fiscal_number": "Molimo unesite vaš porezni 
broj (OIB)",
        "donate_interface-error-msg-invalid-fiscal_number": "Molimo ispravite 
pogrješke u vašem poreznom broju (OIB)",
+       "donate_interface-error-msg-invalid-fiscal_number-ar": "Molimo 
ispravite pogrješke u vašem DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-bo": "Molimo 
ispravite pogrješke u vašem NIT",
+       "donate_interface-error-msg-invalid-fiscal_number-br": "Molimo 
ispravite pogrješke u vašem CPF/CNPJ",
+       "donate_interface-error-msg-invalid-fiscal_number-cl": "Molimo 
ispravite pogrješke u vašem RUT",
+       "donate_interface-error-msg-invalid-fiscal_number-mx": "Molimo 
ispravite pogrješke u vašem CURP/RFC/IFE",
+       "donate_interface-error-msg-invalid-fiscal_number-pe": "Molimo 
ispravite pogrješke u vašem DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-uy": "Molimo 
ispravite pogrješke u vašem CI",
        "donate_interface-error-msg-issuer_id": "Banka",
        "donate_interface-donate-error-try-a-different-card": "Molimo [$1 
probajtu drugu karticu] ili jedan od naših [$2 drugih načina uplate] ili nas 
kontaktirajte na $3",
        "donate_interface-donate-error-try-again-html": "Molimo vas <a 
href=\"<span class=\" notranslate\"=\"\" translate=\"no\">$1</span>\">pokušajte 
ponovo</a>, pokušajte jedno od <a href=\"<span class=\" notranslate\"=\"\" 
translate=\"no\">$2</span>\">drugih načina donacije</a> ili nas kontaktirajte 
na adresu <a href=\"mailto:<span class=\" notranslate\"=\"\" 
translate=\"no\">$3</span>\">$3</a>",
diff --git a/gateway_common/i18n/interface/ia.json 
b/gateway_common/i18n/interface/ia.json
index 871f46e..37128cc 100644
--- a/gateway_common/i18n/interface/ia.json
+++ b/gateway_common/i18n/interface/ia.json
@@ -129,14 +129,17 @@
        "donate_interface-donor-email": "Adresse de e-mail:",
        "donate_interface-donor-name": "Nomine:",
        "donate_interface-donor-first_name": "Prenomine:",
+       "donate_interface-donor-first_name-alt": "Prenomine",
        "donate_interface-donor-mname": "Secunde prenomine:",
        "donate_interface-donor-last_name": "Nomine de familia:",
+       "donate_interface-donor-last_name-alt": "Nomine de familia",
        "donate_interface-donor-street_address": "Strata:",
        "donate_interface-donor-street-number": "Numero",
        "donate_interface-donor-city": "Citate:",
        "donate_interface-donor-county": "Contato",
        "donate_interface-donor-island": "Insula",
        "donate_interface-donor-state_province": "Stato:",
+       "donate_interface-donor-state_province-au": "Stato/Territorio",
        "donate_interface-donor-state_province-ca": "Provincia",
        "donate_interface-donor-postal_code": "Codice postal:",
        "donate_interface-donor-postal_code-us": "Codice postal",
@@ -166,21 +169,22 @@
        "donate_interface-error-msg-visa": "Per favor entra un numero correcte 
de carta Visa.",
        "donate_interface-error-msg-discover": "Per favor entra un numero de 
carta correcte pro Discover.",
        "donate_interface-error-msg-amount": "le amonta de tu donation",
+       "donate_interface-error-msg-limit": "Tu donation non poteva esser 
processate. Per favor, essaya un de nostre <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/en\">altere manieras de 
donar</a>, essaya un amonta minor o essaya lo de novo deman.",
        "donate_interface-error-msg-email": "Per favor entra tu adresse de 
e-mail",
-       "donate_interface-error-msg-first_name": "Per favor entra tu tu 
prenomine",
+       "donate_interface-error-msg-first_name": "Per favor entra tu prenomine",
        "donate_interface-error-msg-last_name": "Per favor entra tu tu nomine 
de familia",
-       "donate_interface-error-msg-street_address": "Per favor entra tu tu 
strata e numero",
+       "donate_interface-error-msg-street_address": "Per favor entra tu strata 
e numero",
        "donate_interface-error-msg-city": "Per favor entra tu citate",
-       "donate_interface-error-msg-state_province": "Per favor entra tu tu 
stato/provincia",
+       "donate_interface-error-msg-state_province": "Per favor entra tu stato",
        "donate_interface-error-msg-postal_code-us": "Per favor entra tu codice 
postal",
        "donate_interface-error-msg-postal_code": "Per favor entra tu codice 
postal",
-       "donate_interface-error-msg-invalid-first_name": "Per favor corrige le 
errores in vostre tu prenomine.",
-       "donate_interface-error-msg-invalid-last_name": "Per favor corrige le 
errores in vostre tu nomine de familia.",
-       "donate_interface-error-msg-invalid-street_address": "Per favor corrige 
le errores in vostre tu strata e numero.",
+       "donate_interface-error-msg-invalid-first_name": "Per favor corrige le 
errores in le prenomine",
+       "donate_interface-error-msg-invalid-last_name": "Per favor corrige le 
errores in le nomine de familia",
+       "donate_interface-error-msg-invalid-street_address": "Per favor corrige 
le errores in le strata e numero",
        "donate_interface-error-msg-invalid-city": "Per favor corrige le 
errores in tu citate.",
        "donate_interface-error-msg-invalid-postal_code-us": "Per favor corrige 
le errores in tu codice postal.",
        "donate_interface-error-msg-invalid-postal_code": "Per favor corrige le 
errores in tu codice postal.",
-       "donate_interface-error-msg-country": "pais",
+       "donate_interface-error-msg-country": "Per favor entra tu pais",
        "donate_interface-error-msg-card_type": "typo de carta de credito",
        "donate_interface-error-msg-card_num": "le numero de tu carta de 
credito",
        "donate_interface-error-msg-expiration": "Per favor entra le data de 
expiration del carta",
@@ -197,10 +201,22 @@
        "donate_interface-error-msg-country-calc": "Error - Nos non pote 
acceptar vostre donation in iste momento.",
        "donate_interface-error-msg-fiscal_number": "Per favor entra tu numero 
fiscal",
        "donate_interface-error-msg-invalid-fiscal_number": "Per favor corrige 
le errores in tu numero fiscal.",
+       "donate_interface-error-msg-invalid-fiscal_number-ar": "Per favor 
corrige le errores in tu DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-bo": "Per favor 
corrige le errores in tu NIT",
+       "donate_interface-error-msg-invalid-fiscal_number-br": "Per favor 
corrige le errores in tu CPF/CNPJ",
+       "donate_interface-error-msg-invalid-fiscal_number-cl": "Per favor 
corrige le errores in tu RUT",
+       "donate_interface-error-msg-invalid-fiscal_number-co": "Per favor 
corrige le errores in tu Cédula de Ciudadanía",
+       "donate_interface-error-msg-invalid-fiscal_number-mx": "Per favor 
corrige le errores in tu CURP/RFC/IFE",
+       "donate_interface-error-msg-invalid-fiscal_number-pe": "Per favor 
corrige le errores in tu DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-uy": "Per favor 
corrige le errores in tu CI",
+       "donate_interface-error-msg-issuer_id": "banca",
        "donate_interface-donate-error-try-a-different-card": "Per favor [$1 
tenta lo con un altere carta], o usa un de nostre [$2 altere modos de 
donation], o contacta nos a $3",
+       "donate_interface-donate-error-try-a-different-card-html": "Per favor 
essaya un altere carta o un de nostre <a href=\"$1\">altere manieras de 
donar</a>, o contacta nos a <a href=\"mailto:$2\";>$2</a>",
        "donate_interface-donate-error-try-again-html": "Per favor <a 
href=\"$1\">proba lo de novo</a>, essaya un <a href=\"$2\">altere maniera de 
donar</a>, o contacta nos a <a href=\"mailto:$3\";>$3</a>",
        "donate_interface-donate-error-thank-you-for-your-support": "Gratias 
pro tu appoio!",
        "donate_interface-error-no-form": "Nos non ha potite trovar un 
formulario de donation correspondente a vostre parametros. Per favor, contacta 
[mailto:don...@wikimedia.org nostre equipa de adjuta] pro plus information.",
+       "donate_interface-error-no-form-html": "Nos non ha potite trovar un 
formulario de donation que corresponde a tu parametros. Per favor essaya un de 
nostre <a href=\"$1\">altere manieras de donar</a>, o contacta nos a <a 
href=\"mailto:$2\";>$2</a>.",
+       "donate_interface-error-reference": "Referentia de error: $1",
        "php-response-declined": "Le transaction non poteva esser acceptate.",
        "donate_interface-thankyou": "Gratias pro tu donation!",
        "donate_interface-post-transaction": "Detalios del transaction",
@@ -213,6 +229,8 @@
        "donate_interface-otherways-alt": "Il ha <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/en\">altere modos de 
donar</a>, como per cheque.",
        "donate_interface-otherways-short": "Altere modos de donation",
        "donate_interface-token-mismatch": "Tu session ha expirate. Per favor 
tenta completar e submitter le formulario de novo.",
+       "donate_interface-cc-token-expired": "Tu indicio ha expirate. Clicca 
sur OK pro refrescar.",
+       "donate_interface-try-again": "Nos es temporarimente incapace de 
processar tu donation. Per favor essaya lo de novo in un poco de tempore.",
        "donate_interface-cc-form-header-personal": "Informationes de 
facturation",
        "donate_interface-cc-form-header-payment": "Informationes de pagamento",
        "donate_interface-make-your-donation": "Face tu donation ora",
@@ -281,6 +299,8 @@
        "donate_interface-cvv-number": "Numero CVV",
        "donate_interface-verification-number": "Numero de verification",
        "donate_interface-what-is-this": "Que es isto?",
+       "donate_interface-did-you-mean": "Vole tu dicer <a href=\"#\" 
class=\"correction\">$1</a>?",
+       "donate_interface-debit": "debito",
        "donate_interface-do-not-include-dashes": "Per favor non include 
tractos de union",
        "donate_interface-please-donate-today": "Per favor dona hodie",
        "donate_interface-donate-now": "Donar ora",
@@ -323,6 +343,7 @@
        "donate_interface-obt-generic-name": "Transferentia bancari in linea",
        "donate_interface-obt-biller_id": "Codice de emissor de facturas",
        "donate_interface-obt-customer_payment_reference": "№ de referentia",
+       "donate_interface-obt-customer_payment_reference_note": "Cata numero de 
referentia es valide solmente un vice. Per favor, non re-usa iste numero de 
referentia pro futur donationes.",
        "donate_interface-obt-information": "Information de transferimento 
bancari in linea",
        "donate_interface-online_bank_transfer_message": "Servicios bancari per 
telephono e internet - BPAY®",
        "donate_interface-rtbt-issuer_id": "Banca",
@@ -370,5 +391,35 @@
        "donate_interface-onetime": "Facer un donation unic",
        "donate_interface-monthly-short": "Mensual",
        "donate_interface-onetime-short": "Unic",
-       "donate_interface-error-http-403": "Tu non ha le permission de acceder 
a iste pagina."
+       "donate_interface-error-http-403": "Tu non ha le permission de acceder 
a iste pagina.",
+       "donate_interface-statement": "Wikimedia $1",
+       "apihelp-donate-description": "Iste API permitte submitter un donation 
al Fundation Wikimedia per varie methodos de pagamento.",
+       "apihelp-donate-summary": "Iste API permitte submitter un donation al 
Fundation Wikimedia per varie methodos de pagamento.",
+       "apihelp-donate-param-gateway": "Le passarella de pagamento a usar: 
adyen, globalcollect, etc.",
+       "apihelp-donate-param-amount": "Le amonta donate.",
+       "apihelp-donate-param-currency": "Codice de moneta.",
+       "apihelp-donate-param-first_name": "Prenomine.",
+       "apihelp-donate-param-last_name": "Nomine de familia.",
+       "apihelp-donate-param-street_address": "Prime linea del adresse 
stratal.",
+       "apihelp-donate-param-supplemental_address_1": "Secunde linea del 
adresse stratal.",
+       "apihelp-donate-param-city": "Citate.",
+       "apihelp-donate-param-state_province": "Abbreviation del stato.",
+       "apihelp-donate-param-postal_code": "Codice postal.",
+       "apihelp-donate-param-email": "Adresse de e-mail.",
+       "apihelp-donate-param-country": "Codice del pais.",
+       "apihelp-donate-param-card_num": "Numero del carta de credito.",
+       "apihelp-donate-param-card_type": "Typo de carta de credito.",
+       "apihelp-donate-param-expiration": "Data de expiration.",
+       "apihelp-donate-param-cvv": "Codice de securitate CVV.",
+       "apihelp-donate-param-payment_method": "Methodo de pagamento a usar.",
+       "apihelp-donate-param-payment_submethod": "Submethodo de pagamento a 
usar.",
+       "apihelp-donate-param-language": "Codice de lingua.",
+       "apihelp-donate-param-order_id": "ID del ordine (si un donation ha jam 
essite initiate).",
+       "apihelp-donate-param-wmf_token": "Indicio de modification.",
+       "apihelp-donate-param-utm_source": "Variabile de traciamento.",
+       "apihelp-donate-param-utm_campaign": "Variabile de traciamento.",
+       "apihelp-donate-param-utm_medium": "Variabile de traciamento.",
+       "apihelp-donate-param-referrer": "Referente original.",
+       "apihelp-donate-param-recurring": "Indica que le transaction debe 
repeter se periodicamente.",
+       "apihelp-donate-example-1": "Facer un donation"
 }
diff --git a/gateway_common/i18n/interface/it.json 
b/gateway_common/i18n/interface/it.json
index 2a283c2..89915ae 100644
--- a/gateway_common/i18n/interface/it.json
+++ b/gateway_common/i18n/interface/it.json
@@ -409,6 +409,7 @@
        "donate_interface-error-http-403": "Non si dispone dei permessi 
necessari per accedere a questa pagina.",
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "Questa API consente d'inviare una 
donazione alla Wikimedia Foundation, permettendo di scegliere tra diverse 
modalità di pagamento.",
+       "apihelp-donate-summary": "Questa API consente d'inviare una donazione 
alla Wikimedia Foundation, permettendo di scegliere tra diverse modalità di 
pagamento.",
        "apihelp-donate-param-gateway": "Quale strumento di pagamento 
utilizzare - adyen, globalcollect, etc.",
        "apihelp-donate-param-amount": "L'importo donato.",
        "apihelp-donate-param-currency": "Codice valuta.",
diff --git a/gateway_common/i18n/interface/jv.json 
b/gateway_common/i18n/interface/jv.json
index f5224a6..9987078 100644
--- a/gateway_common/i18n/interface/jv.json
+++ b/gateway_common/i18n/interface/jv.json
@@ -20,7 +20,7 @@
        "donate_interface-amount-error": "Mangga lebokaké jumlah sing sah",
        "donate_interface-smallamount-error": "Sampéyan kudu nyumbang paling 
ora $1",
        "donate_interface-bigamount-error": "Awak dhéwé ora bisa nampa 
sumbangan luwih gedhé saka 1000 USD ($1 $2) liwat situs wèb. Mangga ngubungi 
staf sumbangan gedhé awak dhéwé nèng $3.",
-       "donate_interface-processing-error": "Ana kasalahan mrosès panjalukan 
Sampéyan.\nOra ana pamrosès sumadhiya.",
+       "donate_interface-processing-error": "Ana masalah nalika mrosès 
panyuwuné panjenengan.\nMangga sesambungan karo Layanan Dhonor lumantar <a 
href=\"mailto:don...@wikimedia.org\";>don...@wikimedia.org</a>.",
        "donate_interface-AED": "dirham UEA",
        "donate_interface-ARS": "peso Argèntina",
        "donate_interface-AUD": "dollar Australia",
@@ -293,7 +293,7 @@
        "donate_interface-bt-special_id": "Informasi spésifik nagara",
        "donate_interface-bt-information": "Informasi transfer bank",
        "donate_interface-bt-finished": "Rampung",
-       "donate_interface-obt-biller_id": "Kodhé panagih",
+       "donate_interface-obt-biller_id": "Kodhe bil",
        "donate_interface-obt-customer_payment_reference": "Rujukan #",
        "donate_interface-obt-information": "Informasi transfer bank online",
        "donate_interface-online_bank_transfer_message": "Perbankan Télpon & 
Internet - BPAY®",
diff --git a/gateway_common/i18n/interface/lt.json 
b/gateway_common/i18n/interface/lt.json
index 2ef6a1a..65a7bf4 100644
--- a/gateway_common/i18n/interface/lt.json
+++ b/gateway_common/i18n/interface/lt.json
@@ -12,7 +12,7 @@
        "donate_interface-desc": "Aukojimų nukreipimų puslapis su integruotais 
vartiniais plėtiniais",
        "donate_interface-langonly-desc": "Rodo tik DonationInterface sistemos 
pranešimus",
        "donate_interface-intro": "Prašome pasirinkti mokėjimo metodą, sumą bei 
valiutą.",
-       "donate_interface-amount": "Suma:",
+       "donate_interface-amount": "Suma",
        "donate_interface-other-amount": "Kita suma",
        "donate_interface-currency": "Valiuta:",
        "donate_interface-gateway": "Mokėjimo būdas:",
@@ -23,7 +23,7 @@
        "donate_interface-comment-title": "Viešas komentaras",
        "donate_interface-donation-description": "Auka Vikimedijos Fondui",
        "donate_interface-monthly-donation-description": "Mėnesinė auka 
Vikimedijos Fondui",
-       "donate_interface-amount-error": "Prašome įvesti aukos sumą",
+       "donate_interface-amount-error": "Prašome pasirinkti aukos sumą",
        "donate_interface-smallamount-error": "Prašome pasirinkti sumą 
(mažiausiai $1)",
        "donate_interface-bigamount-error": "Mes negalime priimti aukų didesnių 
nei USD 10000 ($1 $2) per mūsų puslapį.\nPrašome susisiekti su mūsų 
darbuotojais, atsakingais už didelis dovanas - $3.",
        "donate_interface-processing-error": "Įvyko klaida apdorojant Jūsų 
užklausą.\nPrašome susisiekti su Donor Services <a 
href=\"mailto:don...@wikimedia.org\";>don...@wikimedia.org</a>.",
@@ -167,7 +167,7 @@
        "donate_interface-error-msg-mc": "Prašome įvesti teisingą MasterCard 
kortelės numerį",
        "donate_interface-error-msg-visa": "Prašome įvesti teisingą Visa 
kortelės numerį",
        "donate_interface-error-msg-discover": "Prašome įvesti teisingą 
Discover kortelės numerį",
-       "donate_interface-error-msg-amount": "aukojama suma",
+       "donate_interface-error-msg-amount": "Prašome įvesti savo aukos sumą",
        "donate_interface-error-msg-limit": "Jūsų auka negali būti apdorota. 
Prašome pabandyti vieną iš <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/en\">kitų aukos būdų</a>, 
pabandykite aukoti mažesnę sumą arba pabandykite rytoj.",
        "donate_interface-error-msg-email": "Reikia užpildyti šį lauką(-us): 
el. pašto adresas",
        "donate_interface-error-msg-first_name": "Reikia užpildyti šį 
lauką(-us): vardas",
diff --git a/gateway_common/i18n/interface/mk.json 
b/gateway_common/i18n/interface/mk.json
index 63c4964..ff7e352 100644
--- a/gateway_common/i18n/interface/mk.json
+++ b/gateway_common/i18n/interface/mk.json
@@ -397,6 +397,7 @@
        "donate_interface-error-http-403": "Немате дозвола да ја отворите оваа 
страница.",
        "donate_interface-statement": "Викимедија $1",
        "apihelp-donate-description": "Овој извршник ви овозможува да 
поднесувате даровни уплати за Фондацијата Викимедија користејќи низа уплатни 
обработувачи.",
+       "apihelp-donate-summary": "Овој извршник ви овозможува да поднесувате 
даровни уплати за Фондацијата Викимедија користејќи низа уплатни обработувачи.",
        "apihelp-donate-param-gateway": "Кој наплатен портал да се користи — 
adyen, globalcollect и тн.",
        "apihelp-donate-param-amount": "Износ за уплата.",
        "apihelp-donate-param-currency": "Код на валутата.",
diff --git a/gateway_common/i18n/interface/nb.json 
b/gateway_common/i18n/interface/nb.json
index 74affee..b9a4460 100644
--- a/gateway_common/i18n/interface/nb.json
+++ b/gateway_common/i18n/interface/nb.json
@@ -12,7 +12,8 @@
                        "Jrobell",
                        "Kingu",
                        "Jon Harald Søby",
-                       "Telaneo"
+                       "Telaneo",
+                       "Pmt"
                ]
        },
        "donate_interface": "Støtt Wikimedia",
@@ -174,7 +175,7 @@
        "donate_interface-error-msg-mc": "Vennligst oppgi et gyldig kortnummer 
for MasterCard.",
        "donate_interface-error-msg-visa": "Vennligst oppgi et gyldig 
kortnummer for Visa.",
        "donate_interface-error-msg-discover": "Vennligst oppgi et gyldig 
kortnummer for Discover.",
-       "donate_interface-error-msg-amount": "gavebeløp",
+       "donate_interface-error-msg-amount": "Oppgi ditt støttebeløp",
        "donate_interface-error-msg-limit": "Gaven din kunne ikke prosesseres. 
Prøv en av våre <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/en\">andre måter å gi</a>, 
prøv et lavere beløp, eller prøv igjen i morgen.",
        "donate_interface-error-msg-email": "Dette feltet må fylles ut: 
e-postadresse",
        "donate_interface-error-msg-first_name": "Dette feltet må fylles ut: 
fornavn",
diff --git a/gateway_common/i18n/interface/pt.json 
b/gateway_common/i18n/interface/pt.json
index e3c5df1..87212c0 100644
--- a/gateway_common/i18n/interface/pt.json
+++ b/gateway_common/i18n/interface/pt.json
@@ -40,7 +40,7 @@
        "donate_interface-monthly-donation-description": "Donativo mensal à 
Wikimedia Foundation",
        "donate_interface-amount-error": "Insira um montante para o donativo, 
por favor",
        "donate_interface-smallamount-error": "Por favor, insira um montante 
(mínimo de $1)",
-       "donate_interface-bigamount-error": "Não podemos aceitar donativos 
superiores a 10.000 USD ($1  $2) através do nosso site. Entre em contato com a 
nossa equipa de donativos no endereço $3.",
+       "donate_interface-bigamount-error": "Não podemos aceitar donativos 
superiores a 10 000 USD ($1  $2) através do nosso site. Entre em contacto com a 
nossa equipa para grandes donativos no endereço $3.",
        "donate_interface-processing-error": "Ocorreu um erro no processamento 
do seu pedido.\nContacte os serviços de donativos em <a 
href=\"mailto:don...@wikimedia.org\";>don...@wikimedia.org</a>, por favor.",
        "donate_interface-fallback-currency-notice": "A sua moeda não é 
suportada. Se decidir continuar, o processamento acontecerá utilizando $1.",
        "donate_interface-maintenance-notice": "Desculpe-nos, mas este tipo de 
pagamento está temporariamente desativado.",
@@ -202,7 +202,7 @@
        "donate_interface-error-msg-invalid-city": "Por favor, corrija os erros 
no campo a sua cidade",
        "donate_interface-error-msg-invalid-postal_code-us": "Por favor, 
corrija os erros no campo o seu código zip",
        "donate_interface-error-msg-invalid-postal_code": "Por favor, corrija 
os erros no campo o seu código postal",
-       "donate_interface-error-msg-country": "o seu país",
+       "donate_interface-error-msg-country": "Por favor, introduza o seu país",
        "donate_interface-error-msg-card_type": "o seu tipo de cartão de 
crédito",
        "donate_interface-error-msg-card_num": "o seu número de cartão de 
crédito",
        "donate_interface-error-msg-expiration": "Por favor, insira a data de 
expiração do cartão",
@@ -220,9 +220,16 @@
        "donate_interface-error-msg-fiscal_number": "Por favor, introduza 
número de identificação fiscal",
        "donate_interface-error-msg-fiscal_number-br": "Por favor, introduza 
Número fiscal (CPF ou CNPJ)",
        "donate_interface-error-msg-invalid-fiscal_number": "Por favor, corrija 
os erros no campo número de identificação fiscal",
-       "donate_interface-error-msg-invalid-fiscal_number-br": "Por favor, 
corrija os erros no campo Número fiscal (CPF ou CNPJ)",
+       "donate_interface-error-msg-invalid-fiscal_number-ar": "Por favor, 
corrija os erros no seu DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-bo": "Por favor, 
corrija os erros no seu NIT",
+       "donate_interface-error-msg-invalid-fiscal_number-br": "Por favor, 
corrija os erros no seu CPF/CNPJ",
+       "donate_interface-error-msg-invalid-fiscal_number-cl": "Por favor, 
corrija os erros no seu RUT",
+       "donate_interface-error-msg-invalid-fiscal_number-co": "Por favor, 
corrija os erros na sua Cédula de Ciudadanía",
+       "donate_interface-error-msg-invalid-fiscal_number-mx": "Por favor, 
corrija os erros no seu CURP/RFC/IFE",
+       "donate_interface-error-msg-invalid-fiscal_number-pe": "Por favor, 
corrija os erros no seu DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-uy": "Por favor, 
corrija os erros no seu CI",
        "donate_interface-error-msg-issuer_id": "banco",
-       "donate_interface-donate-error-try-a-different-card": "[$1 Tente outro 
cartão], uma das [$2 outras formas de donativo], ou entre em contato conosco no 
endereço $3, por favor.",
+       "donate_interface-donate-error-try-a-different-card": "[$1 Tente outro 
cartão], uma das [$2 outras formas de donativo], ou entre em contacto connosco 
no endereço $3, por favor.",
        "donate_interface-donate-error-try-a-different-card-html": "Tente outro 
cartão ou uma das <a href=\"$1\">outras formas de donativo</a>, ou contacte-nos 
em <a href=\"mailto:$2\";>$2</a>",
        "donate_interface-donate-error-try-again-html": "<a href=\"$1\">Tente 
novamente</a>, tente uma das <a href=\"$2\">outras formas de donativo</a>, ou 
contacte-nos em <a href=\"mailto:$3\";>$3</a>",
        "donate_interface-donate-error-thank-you-for-your-support": "Obrigado 
pelo seu apoio!",
@@ -240,7 +247,7 @@
        "donate_interface-otherways": "Pode <a 
href=\"//wikimediafoundation.org/wiki/Coleta_de_fundos\">fazer um donativo por 
outras vias, incluindo por PayPal, cheque, ou correio</a>.",
        "donate_interface-otherways-alt": "Há <a 
href=\"//wikimediafoundation.org/wiki/Coleta_de_fundos\">outras formas de fazer 
um donativo</a>, incluindo por cheque.",
        "donate_interface-otherways-short": "Outras formas de contribuir",
-       "donate_interface-token-mismatch": "A sua sessão expirou. Tente 
preencher e submeter o formulário outra vez, por favor.",
+       "donate_interface-token-mismatch": "A sua sessão expirou. Tente 
preencher e enviar o formulário outra vez, por favor.",
        "donate_interface-cc-token-expired": "A sua chave expirou, clique OK 
para atualizar.",
        "donate_interface-try-again": "Não foi possível processar o seu 
donativo devido a um erro temporário. Por favor, tente de novo em breves 
momentos.",
        "donate_interface-cc-form-header-personal": "Informação de facturação",
@@ -406,6 +413,7 @@
        "donate_interface-error-http-403": "Não tem permissões para aceder a 
esta página.",
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "Esta API permite o envio de um donativo 
para a Wikimedia Foundation usando vários processadores de pagamentos.",
+       "apihelp-donate-summary": "Esta API permite o envio de um donativo para 
a Wikimedia Foundation usando vários processadores de pagamentos.",
        "apihelp-donate-param-gateway": "Que processador de pagamentos usar, 
adyen, globalcollect, etc.",
        "apihelp-donate-param-amount": "O montante do donativo.",
        "apihelp-donate-param-currency": "Código da divisa.",
@@ -430,7 +438,7 @@
        "apihelp-donate-param-utm_source": "Variável de monitorização.",
        "apihelp-donate-param-utm_campaign": "Variável de monitorização.",
        "apihelp-donate-param-utm_medium": "Variável de monitorização.",
-       "apihelp-donate-param-referrer": "Indicador (<i>referrer</i>) original",
+       "apihelp-donate-param-referrer": "Indicador (referrer) original",
        "apihelp-donate-param-recurring": "Indica que a transação é 
recorrente.",
        "apihelp-donate-example-1": "Faça um donativo"
 }
diff --git a/gateway_common/i18n/interface/qqq.json 
b/gateway_common/i18n/interface/qqq.json
index 08d8917..2b73ae8 100644
--- a/gateway_common/i18n/interface/qqq.json
+++ b/gateway_common/i18n/interface/qqq.json
@@ -452,6 +452,7 @@
        "donate_interface-error-http-403": "Error prompt if the user is not 
allowed to access the page",
        "donate_interface-statement": "Text to appear on donor's credit card 
statement.  '''$1''' is the contribution tracking id.\n{{Identical|Wikimedia}}",
        "apihelp-donate-description": "{{doc-apihelp-description|donate}}",
+       "apihelp-donate-summary": "{{doc-apihelp-summary|donate}}",
        "apihelp-donate-param-gateway": "{{doc-apihelp-param|donate|gateway}}",
        "apihelp-donate-param-amount": "{{doc-apihelp-param|donate|amount}}",
        "apihelp-donate-param-currency": 
"{{doc-apihelp-param|donate|currency}}",
diff --git a/gateway_common/i18n/interface/ru.json 
b/gateway_common/i18n/interface/ru.json
index 8dde65c..174e60c 100644
--- a/gateway_common/i18n/interface/ru.json
+++ b/gateway_common/i18n/interface/ru.json
@@ -26,7 +26,8 @@
                        "Pcoombe",
                        "Mariya",
                        "Jrobell",
-                       "Esukhovnina"
+                       "Esukhovnina",
+                       "Facenapalm"
                ]
        },
        "donate_interface": "Поддержим Фонд Викимедиа!",
@@ -151,14 +152,17 @@
        "donate_interface-donor-email": "Адрес электронной почты:",
        "donate_interface-donor-name": "Имя:",
        "donate_interface-donor-first_name": "Имя:",
+       "donate_interface-donor-first_name-alt": "Имя",
        "donate_interface-donor-mname": "Отчество (или второе имя):",
        "donate_interface-donor-last_name": "Фамилия:",
+       "donate_interface-donor-last_name-alt": "Фамилия",
        "donate_interface-donor-street_address": "Улица:",
        "donate_interface-donor-street-number": "Номер",
        "donate_interface-donor-city": "Город:",
        "donate_interface-donor-county": "Округ",
        "donate_interface-donor-island": "Остров",
        "donate_interface-donor-state_province": "Штат:",
+       "donate_interface-donor-state_province-au": "Штат/Территория",
        "donate_interface-donor-state_province-ca": "Провинция",
        "donate_interface-donor-postal_code": "Почтовый индекс:",
        "donate_interface-donor-postal_code-us": "Индекс",
@@ -188,6 +192,7 @@
        "donate_interface-error-msg-visa": "Пожалуйста, введите правильный 
номер карты Visa.",
        "donate_interface-error-msg-discover": "Пожалуйста, введите правильный 
номер карты Discover.",
        "donate_interface-error-msg-amount": "пожалуйста, введите вашу сумму 
пожертвования",
+       "donate_interface-error-msg-limit": "Ваше пожертвование не может быть 
обработано. Пожалуйста, попробуйте <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/en\">другой способ сделать 
пожертвование</a>, введите меньшую сумму или попробуйте снова завтра.",
        "donate_interface-error-msg-email": "Пожалуйста, введите адрес 
электронной почты",
        "donate_interface-error-msg-first_name": "Пожалуйста, введите имя",
        "donate_interface-error-msg-last_name": "Пожалуйста, введите фамилия",
@@ -219,15 +224,22 @@
        "donate_interface-error-msg-country-calc": "Ошибка - мы не можем 
принять ваше пожертвование сейчас.",
        "donate_interface-error-msg-fiscal_number": "Пожалуйста, введите 
налоговый номер",
        "donate_interface-error-msg-invalid-fiscal_number": "Пожалуйста, 
исправьте ошибки в вашем налоговый номер",
+       "donate_interface-error-msg-invalid-fiscal_number-ar": "Пожалуйста, 
исправьте ошибки в вашем DNI",
        "donate_interface-error-msg-invalid-fiscal_number-bo": "пожалуйста, 
исправьте ошибки в вашем NIT",
+       "donate_interface-error-msg-invalid-fiscal_number-br": "пожалуйста, 
исправьте ошибки в вашем CPF/CNPJ",
        "donate_interface-error-msg-invalid-fiscal_number-cl": "Пожалуйста, 
исправьте ошибки в вашем RUT",
+       "donate_interface-error-msg-invalid-fiscal_number-co": "Пожалуйста, 
исправьте ошибки в вашем Cédula de Ciudadanía",
        "donate_interface-error-msg-invalid-fiscal_number-mx": "пожалуйста, 
исправьте ошибки в вашем CURP/RFC/IFE",
        "donate_interface-error-msg-invalid-fiscal_number-pe": "пожалуйста, 
исправьте ошибки в Вашем DNI",
+       "donate_interface-error-msg-invalid-fiscal_number-uy": "Пожалуйста, 
исправьте ошибки в вашем CI",
+       "donate_interface-error-msg-issuer_id": "банк",
        "donate_interface-donate-error-try-a-different-card": "Пожалуйста, [$1 
попробуйте другую карту] или выберите [$2 другой способ сделать пожертвование], 
либо свяжитесь с нами по адресу $3",
+       "donate_interface-donate-error-try-a-different-card-html": "Пожалуйста, 
попробуйте другую карту или один из <a href=\"$1\">остальных способов сделать 
пожертвование</a>, или напишите нам на <a href=\"mailto:$2\";>$2</a>",
        "donate_interface-donate-error-try-again-html": "Пожалуйста, <a 
href=\"$1\">попробуйте ещё раз</a>, попробуйте один из <a href=\"$2\">других 
способов пожертвования</a> или свяжитесь с нами по адресу <a 
href=\"mailto:$3\";>$3</a>",
        "donate_interface-donate-error-thank-you-for-your-support": "Спасибо за 
Вашу поддержку!",
        "donate_interface-error-no-form": "Мы не смогли найти форму 
пожертвований, соответствующую заданным вами параметрам. Пожалуйста, свяжитесь 
с [mailto:don...@wikimedia.org нашей командой поддержки] для получения 
дополнительной информации.",
        "donate_interface-error-no-form-html": "Нам не удалось найти форму 
пожертвований, соответствующую заданным параметрам. Пожалуйста, попробуйте один 
из альтернативных <a href=\"$1\">способов</a> или напишите нам на <a 
href=\"mailto:$2\";>$2</a>.",
+       "donate_interface-error-reference": "Ошибка ссылки: $1",
        "php-response-declined": "Ваша транзакция не может быть принята.",
        "donate_interface-thankyou": "Спасибо за ваше пожертвование!",
        "donate_interface-post-transaction": "Сведения о транзакции",
@@ -240,6 +252,7 @@
        "donate_interface-otherways-alt": "Существуют <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/ru\">другие способы сделать 
пожертвование</a>, в том числе чеком.",
        "donate_interface-otherways-short": "Другие способы сделать 
пожертвование",
        "donate_interface-token-mismatch": "Ваш сеанс истёк. Пожалуйста, 
заполните форму ещё раз.",
+       "donate_interface-cc-token-expired": "Ваш токен истёк, нажмите OK для 
обновления.",
        "donate_interface-try-again": "Мы временно не может обработать ваше 
пожертвование. Попробуйте еще раз чуть позже.",
        "donate_interface-cc-form-header-personal": "Платёжные сведения",
        "donate_interface-cc-form-header-payment": "Информация об оплате",
@@ -309,6 +322,8 @@
        "donate_interface-cvv-number": "Номер CVV",
        "donate_interface-verification-number": "Проверочный код",
        "donate_interface-what-is-this": "Что это значит?",
+       "donate_interface-did-you-mean": "Вы имели в виду <a href=\"#\" 
class=\"correction\">$1</a>?",
+       "donate_interface-debit": "дебет",
        "donate_interface-do-not-include-dashes": "Пожалуйста, не используйте 
тире",
        "donate_interface-please-donate-today": "Пожалуйста, сделайте 
пожертвование, не откладывая",
        "donate_interface-donate-now": "Сделать пожертвование, не откладывая",
@@ -351,6 +366,7 @@
        "donate_interface-obt-generic-name": "Банковский перевод через 
интернет",
        "donate_interface-obt-biller_id": "Код (Biller code)",
        "donate_interface-obt-customer_payment_reference": "Отметка (Reference 
#)",
+       "donate_interface-obt-customer_payment_reference_note": "Каждый номер 
ссылки действителен только единожды. Пожалуйста, не используйте этот номер для 
дальнейших пожертвований.",
        "donate_interface-obt-information": "Отметки банка (Online bank 
transfer information)",
        "donate_interface-online_bank_transfer_message": "Telephone & Internet 
Banking - BPAY®",
        "donate_interface-rtbt-issuer_id": "Выберите банк",
@@ -394,13 +410,14 @@
        "donate_interface-monthlybox-yes": "Конечно, делать это ежемесячно",
        "donate_interface-monthlybox-no": "НЕТ, сделать единовременное 
пожертвование",
        "donate_interface-monthlybox-bottom": "Информация о вашем пожертвовании 
будет обработана в защищённом режиме.",
-       "donate_interface-monthly-cancel": "Для регулярных спонсоров 
фиксированные ежемесячные платежи будут списываться «Фондом Викимедия» по 
истечении каждого очередного месяца с даты первого пожертвования на протяжении 
всего времени вплоть до получения от Вас уведомления о прекращении 
пожертвований. Пожертвования, инициированные 29-го, 30-го или 31-го числа 
месяца, будут списываться в последний день коротких месяцев, как можно ближе к 
первоначальной дате. Все вопросы Вы можете направлять по адресу 
don...@wikimedia.org.",
+       "donate_interface-monthly-cancel": "Для регулярных спонсоров 
фиксированные ежемесячные платежи будут списываться «Фондом Викимедиа» по 
истечении каждого очередного месяца с даты первого пожертвования на протяжении 
всего времени вплоть до получения от Вас уведомления о прекращении 
пожертвований. Пожертвования, инициированные 29-го, 30-го или 31-го числа 
месяца, будут списываться в последний день коротких месяцев, как можно ближе к 
первоначальной дате. Все вопросы Вы можете направлять по адресу 
don...@wikimedia.org.",
        "donate_interface-onetime": "Сделать единовременное пожертвование",
        "donate_interface-monthly-short": "Ежемесячно",
        "donate_interface-onetime-short": "Один раз",
        "donate_interface-error-http-403": "Извините, у вас недостаточно прав 
для доступа к этой странице.",
        "donate_interface-statement": "Викимедиа $1",
        "apihelp-donate-description": "Этот API позволяет Вам отправить 
пожертвование в фонд Викимедиа, используя различные платёжные системы.",
+       "apihelp-donate-summary": "Этот API позволяет Вам отправить 
пожертвование в фонд Викимедиа, используя различные платёжные системы.",
        "apihelp-donate-param-gateway": "Какой платёжный шлюз использовать: 
adyen, globalcollect и т. д.",
        "apihelp-donate-param-amount": "Сумма пожертвования.",
        "apihelp-donate-param-currency": "Код валюты.",
@@ -409,6 +426,7 @@
        "apihelp-donate-param-street_address": "Первая строка адреса.",
        "apihelp-donate-param-supplemental_address_1": "Вторая строка адреса.",
        "apihelp-donate-param-city": "Город.",
+       "apihelp-donate-param-state_province": "Аббревиатура штата.",
        "apihelp-donate-param-postal_code": "Почтовый индекс.",
        "apihelp-donate-param-email": "Адрес электронной почты.",
        "apihelp-donate-param-country": "Код страны.",
@@ -417,6 +435,14 @@
        "apihelp-donate-param-expiration": "Срок окончания действия.",
        "apihelp-donate-param-cvv": "Код безопасности CVV.",
        "apihelp-donate-param-payment_method": "Используемый способ оплаты.",
+       "apihelp-donate-param-payment_submethod": "Используемый подметод 
оплаты.",
        "apihelp-donate-param-language": "Код языка.",
+       "apihelp-donate-param-order_id": "Идентификатор заказа (если 
пожертвование уже было начато).",
+       "apihelp-donate-param-wmf_token": "Токен редактирования",
+       "apihelp-donate-param-utm_source": "Отслеживающая переменная.",
+       "apihelp-donate-param-utm_campaign": "Отслеживающая переменная.",
+       "apihelp-donate-param-utm_medium": "Отслеживающая переменная.",
+       "apihelp-donate-param-referrer": "Оригинальный реферер.",
+       "apihelp-donate-param-recurring": "Означает, что транзакция будет 
повторяющейся.",
        "apihelp-donate-example-1": "Сделать пожертвование"
 }
diff --git a/gateway_common/i18n/interface/sv.json 
b/gateway_common/i18n/interface/sv.json
index 03edea1..7a4c448 100644
--- a/gateway_common/i18n/interface/sv.json
+++ b/gateway_common/i18n/interface/sv.json
@@ -189,21 +189,21 @@
        "donate_interface-error-msg-discover": "Vänligen uppge ett giltigt 
Discover-kortnummer.",
        "donate_interface-error-msg-amount": "gåvobelopp",
        "donate_interface-error-msg-limit": "Din donation kunde inte behandlas. 
Prova ett av våra <a 
href=\"//wikimediafoundation.org/wiki/Ways_to_Give/sv\">andra sätt att ge</a>, 
prova ett mindre belopp eller försök igen i morgon.",
-       "donate_interface-error-msg-email": "Detta fältet måste fyllas i: 
e-postadress",
+       "donate_interface-error-msg-email": "Ange din e-postadress",
        "donate_interface-error-msg-first_name": "Detta fältet måste fyllas i: 
förnamn",
        "donate_interface-error-msg-last_name": "Detta fältet måste fyllas i: 
efternamn",
        "donate_interface-error-msg-street_address": "Detta fältet måste fyllas 
i: gatuadress",
-       "donate_interface-error-msg-city": "Detta fältet måste fyllas i: stad",
+       "donate_interface-error-msg-city": "Ange din stad",
        "donate_interface-error-msg-state_province": "Detta fältet måste fyllas 
i: delstat",
-       "donate_interface-error-msg-postal_code-us": "Detta fältet måste fyllas 
i: postnummer",
-       "donate_interface-error-msg-postal_code": "Detta fältet måste fyllas i: 
postkod",
+       "donate_interface-error-msg-postal_code-us": "Ange ditt postnummer",
+       "donate_interface-error-msg-postal_code": "Ange din postkod",
        "donate_interface-error-msg-invalid-first_name": "Var god rätta felen i 
din/ditt förnamn",
        "donate_interface-error-msg-invalid-last_name": "Var god rätta felen i 
ditt efternamn",
        "donate_interface-error-msg-invalid-street_address": "Var god rätta 
felen i din gatuadress",
        "donate_interface-error-msg-invalid-city": "Var god rätta felen i din 
stad",
        "donate_interface-error-msg-invalid-postal_code-us": "Var god rätta 
felen i ditt postnummer",
        "donate_interface-error-msg-invalid-postal_code": "Var god rätta felen 
i ditt postnummer",
-       "donate_interface-error-msg-country": "land",
+       "donate_interface-error-msg-country": "Ange ditt land",
        "donate_interface-error-msg-card_type": "kreditkortstyp",
        "donate_interface-error-msg-card_num": "kreditkortsnummer",
        "donate_interface-error-msg-expiration": "Vänligen ange kortets sista 
giltighetsdatum",
@@ -405,6 +405,7 @@
        "donate_interface-error-http-403": "Du har inte behörighet att komma åt 
denna sida.",
        "donate_interface-statement": "Wikimedia $1",
        "apihelp-donate-description": "Detta API låter dig skicka en donation 
till Wikimedia Foundation med en mängd olika betalningsmetoder.",
+       "apihelp-donate-summary": "Detta API låter dig skicka en donation till 
Wikimedia Foundation med en mängd olika betalningsmetoder.",
        "apihelp-donate-param-gateway": "Vilken betalningsport att använda - 
adyen, globalcollect, etc.",
        "apihelp-donate-param-amount": "Det donerade beloppet.",
        "apihelp-donate-param-currency": "Valutakod.",
diff --git a/gateway_common/i18n/interface/uk.json 
b/gateway_common/i18n/interface/uk.json
index 4899b23..bd28960 100644
--- a/gateway_common/i18n/interface/uk.json
+++ b/gateway_common/i18n/interface/uk.json
@@ -409,6 +409,7 @@
        "donate_interface-error-http-403": "Вибачте, у вас недостатньо прав для 
доступу до цієї сторінки.",
        "donate_interface-statement": "Вікімедіа $1",
        "apihelp-donate-description": "Цей API дозволяє Вам зробити пожертву в 
Фонд Вікімедіа, використовуючи різні платіжні системи.",
+       "apihelp-donate-summary": "Цей API дозволяє Вам зробити пожертву у Фонд 
Вікімедіа, використовуючи різні платіжні системи.",
        "apihelp-donate-param-gateway": "Якої платіжний шлюз використовувати — 
adyen, globalcollect тощо.",
        "apihelp-donate-param-amount": "Сума пожертви.",
        "apihelp-donate-param-currency": "Код валюти.",
diff --git a/gateway_common/i18n/interface/ur.json 
b/gateway_common/i18n/interface/ur.json
index 645f2e2..3f2107d 100644
--- a/gateway_common/i18n/interface/ur.json
+++ b/gateway_common/i18n/interface/ur.json
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Noor2020",
-                       "පසිඳු කාවින්ද"
+                       "පසිඳු කාවින්ද",
+                       "Obaid Raza"
                ]
        },
        "donate_interface": "وکی میڈیا کی حمایت",
@@ -72,6 +73,8 @@
        "donate_interface-name-on-card": "کارڈ پر نام",
        "donate_interface-type-of-card": "کارڈ کی قسم",
        "donate_interface-cards-accepted": "کارڈ قبول",
+       "donate_interface-expires-question": "اختتام؟",
+       "donate_interface-expires": "اختتام",
        "donate_interface-cvv": "CVV",
        "donate_interface-cvv-number-abbreviated": "CVV #",
        "donate_interface-cvv2": "CVV2",
diff --git a/gateway_common/i18n/interface/yi.json 
b/gateway_common/i18n/interface/yi.json
index a8cf795..0e9ad69 100644
--- a/gateway_common/i18n/interface/yi.json
+++ b/gateway_common/i18n/interface/yi.json
@@ -22,7 +22,7 @@
        "donate_interface-monthly-donation-description": "מאנאטלעכע נדבה צו דער 
וויקימעדיע פונדאציע",
        "donate_interface-amount-error": "ביטע קלויבט אַ סומע מנדב צו זיין",
        "donate_interface-smallamount-error": "ביטע קלויבט אויס א סכום (כאטש 
$1)",
-       "donate_interface-processing-error": "ס'איז געשען א פֿעלער ביים 
פראצעסירן אײַער בקשה.\nנישט פֿאַראַן קיין פראצעסאר.",
+       "donate_interface-processing-error": "ס'איז געשען א פֿעלער ביים 
פראצעסירן אײַער בקשה.\nזייט אזוי גוט און פֿארבינדט זיך מיט ביישטייערער דינסטן 
ביי <a href=\"mailto:don...@wikimedia.org\";>don...@wikimedia.org</a>.",
        "donate_interface-AED": "פאראייניקטע אראבישע עמיראטן דירהאם",
        "donate_interface-ARS": "ארגענטינישער פעסא",
        "donate_interface-AUD": "אויסטראַלישער טאָלער",
diff --git a/gateway_common/i18n/interface/zh-hans.json 
b/gateway_common/i18n/interface/zh-hans.json
index b906537..22a84ab 100644
--- a/gateway_common/i18n/interface/zh-hans.json
+++ b/gateway_common/i18n/interface/zh-hans.json
@@ -267,7 +267,7 @@
        "donate_interface-middle": "中名",
        "donate_interface-last": "姓",
        "donate_interface-other": "其他",
-       "donate_interface-noscript-msg": 
"似乎你没有启用JavaScript,或者你的浏览器不支持JavaScript。\n为了给你提供安全、 
舒适的体验,我们的捐助表格需要使用JavaScript。",
+       "donate_interface-noscript-msg": 
"似乎您没有启用JavaScript,或者您的浏览器不支持JavaScript。为了给你提供安全、舒适的体验,我们的捐助表格需要使用JavaScript。",
        "donate_interface-noscript-redirect-msg": 
"如果您不想或不能启用JavaScript,您依然可以在以下地址完成捐助:",
        "donate_interface-anon-message": "请在公开的捐助者名单中列出我的名字。",
        "donate_interface-donate-wikipedia": "捐助维基百科",
@@ -353,7 +353,7 @@
        "donate_interface-via-paypal": "(通过 PayPal)",
        "donate_interface-select": "选择",
        "donate_interface-donation-must-equal": "捐赠必须等于或大于$1。",
-       "donate_interface-thank-you": "谢谢!我们已经收到你的捐赠。",
+       "donate_interface-thank-you": "谢谢!我们已经收到您的捐赠。",
        "donate_interface-change": "修改",
        "donate_interface-select-credit-card": "选择信用卡类别",
        "donate_interface-optional": "可选",
@@ -423,6 +423,7 @@
        "donate_interface-error-http-403": "您没有权限访问该页面。",
        "donate_interface-statement": "维基媒体 $1",
        "apihelp-donate-description": "此API允许您向维基媒体基金会递交一次捐款,使用多种付款处理器。",
+       "apihelp-donate-summary": "此API允许您向维基媒体基金会递交一次捐款,使用多种付款处理器。",
        "apihelp-donate-param-gateway": "要使用的支付网关——adyen、globalcollect等。",
        "apihelp-donate-param-amount": "所捐赠的金额。",
        "apihelp-donate-param-currency": "货币代码。",
diff --git a/gateway_common/i18n/interface/zh-hant.json 
b/gateway_common/i18n/interface/zh-hant.json
index bcdc3b5..fe899b8 100644
--- a/gateway_common/i18n/interface/zh-hant.json
+++ b/gateway_common/i18n/interface/zh-hant.json
@@ -186,7 +186,7 @@
        "donate_interface-error-msg-email": "請輸入您的 電子郵件地址",
        "donate_interface-error-msg-first_name": "請輸入您的 名",
        "donate_interface-error-msg-last_name": "請輸入您的 姓",
-       "donate_interface-error-msg-street_address": "請輸入您的 街道地址",
+       "donate_interface-error-msg-street_address": "請輸入您的街道地址",
        "donate_interface-error-msg-city": "請輸入您的城市",
        "donate_interface-error-msg-state_province": "請輸入您的 州",
        "donate_interface-error-msg-postal_code-us": "請輸入您的郵政編碼",
@@ -212,7 +212,7 @@
        "donate_interface-error-msg-captcha-please": "為確保您的信用卡安全,請輸入上方顯示的文字。",
        "donate_interface-error-msg-cookies": "請開啟您瀏覽器上允許執行 cookies 的選項",
        "donate_interface-error-msg-country-calc": "錯誤 - 我們無法接受您此次的捐款。",
-       "donate_interface-error-msg-fiscal_number": "請輸入您的 財政號",
+       "donate_interface-error-msg-fiscal_number": "請輸入您的財政號",
        "donate_interface-error-msg-invalid-fiscal_number": "請更正錯誤:財政號。",
        "donate_interface-error-msg-issuer_id": "銀行",
        "donate_interface-donate-error-try-a-different-card": "請試用[$1 
另外一個信用卡]或[$2 其他捐贈方法],或者傳送至 $3 聯絡我們",
diff --git a/gateway_forms/mustache/forms.css b/gateway_forms/mustache/forms.css
index 3d66217..8265b69 100644
--- a/gateway_forms/mustache/forms.css
+++ b/gateway_forms/mustache/forms.css
@@ -2,7 +2,6 @@
        max-width: 100px;
 }
 div#payment_gateway-donate-submessage {
-       font-size: 90%;
        line-height: 120%;
 }
 div#payment_gateway-donate-submessage img {
@@ -54,14 +53,14 @@
        background-color: transparent;
 }
 div#content {
-       background-color: transparent !important;
-       background-image: none !important;
+       background-color: transparent;
+       background-image: none;
 }
 div#mw-head-base {
-       background-image: none !important;
+       background-image: none;
 }
 #footer {
-       background-image: none !important;
+       background-image: none;
 }
 
 /* Hiding stuff we don't need */
@@ -71,8 +70,8 @@
 
 /* NEW STUFF */
 ul#moreinfolinks li{
-    list-style: none !important;
-    list-style-image: none !important;
+    list-style: none;
+    list-style-image: none;
 }
 .form .options-h {
     margin: 0;
@@ -120,17 +119,17 @@
     opacity: 1;
 }
 #donate {
-  min-width: 32em !important;
-  padding: 1em !important;
+  min-width: 32em;
+  padding: 1em;
 }
 
 
 #greenBackground {
-  background-color: #e2e2e2 !important;
-  position: relative !important;
-  padding: 1.6em !important;
-  border: 0 !important;
-  width: auto !important;
+  background-color: #e2e2e2;
+  position: relative;
+  padding: 1.6em;
+  border: 0;
+  width: auto;
 }
 
 #greenBackground:before {
@@ -183,8 +182,8 @@
     margin-left: 8px;
 }
 
-div.donor { width: auto !important; }
-div.donor { width: 100% !important; }
+div.donor { width: auto; }
+div.donor { width: 100%; }
 
 #payment-table-donor input[type="text"],
 #payment-table-donor input[type="number"],
@@ -192,7 +191,7 @@
 #payment-table-donor input[type="email"],
 #payment-table-donor select {
   background-color: #f6f6f6;
-  padding: 1em !important;
+  padding: 1em;
   -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, .2), inset 0 0 0 1px rgba(0, 0, 0, 
.1);
   -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .2), inset 0 0 0 1px rgba(0, 0, 
0, .1);
   box-shadow: 0 1px 1px rgba(0, 0, 0, .2), inset 0 0 0 1px rgba(0, 0, 0, .1);
@@ -227,7 +226,7 @@
   box-shadow: inset 0 1px 3px rgba(0,0,1,.5), inset 0 0 0 1px rgba(0,0,0,.1);
 }
 
-#payment-table-donor select { padding: .9em 1em !important; line-height: 40px; 
}
+#payment-table-donor select { padding: .9em 1em; line-height: 40px; }
 
 #amount_input * {
     vertical-align: top;
@@ -242,7 +241,7 @@
 
 .mw-donate-submessage {
   text-transform: uppercase;
-  font-size: .75em !important;
+  font-size: 0.75em;
   color: #7c7c7c;
   text-align: center;
 }
@@ -259,7 +258,7 @@
 #cards:after { clear: both; }
 #cards li {
     background: #d1d1d1;
-    margin: 0 .7% .7% 0 !important;
+    margin: 0 .7% .7% 0;
     float: left;
     text-align: center;
     -moz-border-radius: 4px;
@@ -301,8 +300,8 @@
 #cards li input {
     display: block;
     width: 100%;
-    margin: 0 0 .7em !important;
-    box-shadow: none !important;
+    margin: 0 0 .7em;
+    box-shadow: none;
 }
 #cards li label {
     cursor: pointer;
@@ -310,20 +309,20 @@
     display: block;
 }
 #cards li label img {
-    margin: 0 auto !important;
-    height: auto !important;
+    margin: 0 auto;
+    height: auto;
 }
 #cards li.has_sub_text label {
     margin-top: 0;
 }
 #cards li.has_sub_text input {
-    margin-bottom: 0.1em !important;
+    margin-bottom: 0.1em;
 }
 #cards li label p.card_sub_text {
     margin: -0.5em auto;
 }
 #paymentContinue, #paymentSubmit {
-  margin-top: 1em !important;
+  margin-top: 1em;
   clear: both;
   display: none;
 }
@@ -331,21 +330,21 @@
     display:block;
 }
 .btn {
-  background-color: #757575 !important;
-  color: #fff !important;
+  background-color: #757575;
+  color: #fff;
   width: 100%;
   text-transform: uppercase;
   font-size: 1.3em;
   -moz-border-radius: 4px;
   -webkit-border-radius: 4px;
   border-radius: 4px;
-  padding: .6em !important;
+  padding: .6em;
 }
 .btn.enabled {
-  background-color: #367fb4 !important;
+  background-color: #367fb4;
   cursor: pointer;
 }
-.btn.enabled:hover { background-color: #1d5278 !important; }
+.btn.enabled:hover { background-color: #1d5278; }
 .btn:active {
   -moz-box-shadow: inset 0 1px 4px rgba(0,0,1,.5);
   -webkit-box-shadow: inset 0 1px 4px rgba(0,0,1,.5);
@@ -401,26 +400,26 @@
     }
 
     #payment-table-donor select {
-        font-size: 16px !important;
-        padding: 13px !important;
-        background: #fff !important;
+        font-size: 16px;
+        padding: 13px;
+        background: #fff;
         border: 1px solid #ccc;
-        box-shadow: none !important;
-        border-radius: 2px !important;
-        color: #666 !important;
-        margin-bottom: 10px !important;
+        box-shadow: none;
+        border-radius: 2px;
+        color: #666;
+        margin-bottom: 10px;
         transition: none;
     }
     select#state_province:hover {
         background: #fff;
-        color: #222 !important;
+        color: #222;
     }
     td#donate form input[type="text"],
     td#donate form input[type="email"]
     {
         display: block;
         font-size: 16px;
-        padding: 14px !important;
+        padding: 14px;
         margin-bottom: 10px;
         background: #fff;
         box-shadow: inset 0 0 0 0.1em #fff;
@@ -449,15 +448,15 @@
         display: none;
     }
     body #mw-content-text #donate #greenBackground {
-        background: transparent !important;
-        padding: 0px !important;
-        width: 100% !important;
+        background: transparent;
+        padding: 0px;
+        width: 100%;
     }
     body #donate {
-        padding: 0 !important;
-        margin: 0 auto !important;
-        min-width: 200px !important;
-        max-width: 400px !important;
+        padding: 0;
+        margin: 0 auto;
+        min-width: 200px;
+        max-width: 400px;
     }
 
     body #mw-page-base {
@@ -497,7 +496,7 @@
         margin: 0;
     }
     #cards li label img {
-        width: 80% !important;
+        width: 80%;
     }
     #cards li:hover {
         background: #EAF3FF;
diff --git a/globalcollect_gateway/globalcollect_resultswitcher.body.php 
b/globalcollect_gateway/globalcollect_resultswitcher.body.php
index c34114d..2a1d81d 100644
--- a/globalcollect_gateway/globalcollect_resultswitcher.body.php
+++ b/globalcollect_gateway/globalcollect_resultswitcher.body.php
@@ -1,25 +1,6 @@
 <?php
 
 class GlobalCollectGatewayResult extends GatewayPage {
-       /**
-        * Defines the action to take on a GlobalCollect transaction.
-        *
-        * Possible values include 'process', 'challenge',
-        * 'review', 'reject'.  These values can be set during
-        * data processing validation, for instance.
-        *
-        * Defaults to 'process'.
-        * @var string
-        */
-       public $action = 'process';
-
-       /**
-        * An array of form errors
-        * @var array
-        */
-       public $errors = array( );
-
-       protected $qs_oid = null;
 
        protected $gatewayIdentifier = GlobalCollectAdapter::IDENTIFIER;
 
diff --git a/globalcollect_gateway/i18n/es.json 
b/globalcollect_gateway/i18n/es.json
index e917ecf..60243b3 100644
--- a/globalcollect_gateway/i18n/es.json
+++ b/globalcollect_gateway/i18n/es.json
@@ -6,14 +6,14 @@
                        "Larjona",
                        "Ryo567",
                        "Macofe",
-                       "Ncontinanza"
+                       "Ncontinanza",
+                       "Fitoschido"
                ]
        },
-       "globalcollectgateway": "Haz tu donación ahora",
        "globalcollect_gateway-desc": "Procesamiento de pagos de GlobalCollect",
        "globalcollect_gateway-fakesucceed": "Simular un pago correcto",
        "globalcollect_gateway-fakefail": "Simular un pago erróneo",
-       "globalcollect_gateway-response-9130": "País inválido.",
+       "globalcollect_gateway-response-9130": "El país es incorrecto.",
        "globalcollect_gateway-response-9140": "Moneda inválida.",
        "globalcollect_gateway-response-9150": "Idioma no válido.",
        "globalcollect_gateway-response-400530": "Método de pago inválido.",
diff --git a/globalcollect_gateway/orphan.adapter.php 
b/globalcollect_gateway/orphan.adapter.php
index 24a6a18..4956810 100644
--- a/globalcollect_gateway/orphan.adapter.php
+++ b/globalcollect_gateway/orphan.adapter.php
@@ -163,8 +163,8 @@
         *
         * FIXME: Carefully move this to the base class and decide when 
appropriate.
         */
-       protected function getStompTransaction() {
-               $transaction = parent::getStompTransaction();
+       protected function getQueueDonationMessage() {
+               $transaction = parent::getQueueDonationMessage();
 
                // Overwrite the time field, if historical date is available.
                if ( !is_null( $this->getData_Unstaged_Escaped( 'date' ) ) ) {
diff --git a/paypal_gateway/express_checkout/paypal_express.adapter.php 
b/paypal_gateway/express_checkout/paypal_express.adapter.php
index 2a605bb..c614407 100644
--- a/paypal_gateway/express_checkout/paypal_express.adapter.php
+++ b/paypal_gateway/express_checkout/paypal_express.adapter.php
@@ -521,6 +521,15 @@
        }
 
        public function processDonorReturn( $requestValues ) {
+               if (
+                       empty( $requestValues['token'] ) ||
+                       empty( $requestValues['PayerID'] )
+               ) {
+                       throw new ResponseProcessingException(
+                               'Missing required parameters in request',
+                               ResponseCodes::MISSING_REQUIRED_DATA
+                       );
+               }
                $this->addRequestData( array(
                        'gateway_session_id' => $requestValues['token'],
                        'payer_id' => $requestValues['PayerID'],

-- 
To view, visit https://gerrit.wikimedia.org/r/363971
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie7e641537cf2495e1282e447934838865c2f4d02
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/DonationInterface
Gerrit-Branch: deployment
Gerrit-Owner: Ejegg <ej...@ejegg.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to