]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/pomo/translations.php
Wordpress 3.6
[autoinstalls/wordpress.git] / wp-includes / pomo / translations.php
index 11f9b8459ff2e36542b563f7e14e71086b64e62d..106b6da1640dc7129b92a415cab8d8257000b489 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Class for a set of entries for translation and their associated headers
  *
 /**
  * Class for a set of entries for translation and their associated headers
  *
- * @version $Id: translations.php 291 2009-10-21 05:46:08Z nbachiyski $
+ * @version $Id: translations.php 718 2012-10-31 00:32:02Z nbachiyski $
  * @package pomo
  * @subpackage translations
  */
  * @package pomo
  * @subpackage translations
  */
@@ -30,6 +30,19 @@ class Translations {
                return true;
        }
 
                return true;
        }
 
+       function add_entry_or_merge($entry) {
+               if (is_array($entry)) {
+                       $entry = new Translation_Entry($entry);
+               }
+               $key = $entry->key();
+               if (false === $key) return false;
+               if (isset($this->entries[$key]))
+                       $this->entries[$key]->merge_with($entry);
+               else
+                       $this->entries[$key] = &$entry;
+               return true;
+       }
+
        /**
         * Sets $header PO header to $value
         *
        /**
         * Sets $header PO header to $value
         *
@@ -44,7 +57,7 @@ class Translations {
                $this->headers[$header] = $value;
        }
 
                $this->headers[$header] = $value;
        }
 
-       function set_headers(&$headers) {
+       function set_headers($headers) {
                foreach($headers as $header => $value) {
                        $this->set_header($header, $value);
                }
                foreach($headers as $header => $value) {
                        $this->set_header($header, $value);
                }
@@ -68,7 +81,7 @@ class Translations {
        /**
         * Given the number of items, returns the 0-based index of the plural form to use
         *
        /**
         * Given the number of items, returns the 0-based index of the plural form to use
         *
-        * Here, in the base Translations class, the commong logic for English is implmented:
+        * Here, in the base Translations class, the common logic for English is implemented:
         *      0 if there is one element, 1 otherwise
         *
         * This function should be overrided by the sub-classes. For example MO/PO can derive the logic
         *      0 if there is one element, 1 otherwise
         *
         * This function should be overrided by the sub-classes. For example MO/PO can derive the logic
@@ -104,13 +117,24 @@ class Translations {
         * @return void
         **/
        function merge_with(&$other) {
         * @return void
         **/
        function merge_with(&$other) {
-               $this->entries = array_merge($this->entries, $other->entries);
+               foreach( $other->entries as $entry ) {
+                       $this->entries[$entry->key()] = $entry;
+               }
+       }
+
+       function merge_originals_with(&$other) {
+               foreach( $other->entries as $entry ) {
+                       if ( !isset( $this->entries[$entry->key()] ) )
+                               $this->entries[$entry->key()] = $entry;
+                       else
+                               $this->entries[$entry->key()]->merge_with($entry);
+               }
        }
 }
 
 class Gettext_Translations extends Translations {
        /**
        }
 }
 
 class Gettext_Translations extends Translations {
        /**
-        * The gettext implmentation of select_plural_form.
+        * The gettext implementation of select_plural_form.
         *
         * It lives in this class, because there are more than one descendand, which will use it and
         * they can't share it effectively.
         *
         * It lives in this class, because there are more than one descendand, which will use it and
         * they can't share it effectively.
@@ -124,7 +148,7 @@ class Gettext_Translations extends Translations {
                }
                return call_user_func($this->_gettext_select_plural_form, $count);
        }
                }
                return call_user_func($this->_gettext_select_plural_form, $count);
        }
-       
+
        function nplurals_and_expression_from_header($header) {
                if (preg_match('/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $header, $matches)) {
                        $nplurals = (int)$matches[1];
        function nplurals_and_expression_from_header($header) {
                if (preg_match('/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $header, $matches)) {
                        $nplurals = (int)$matches[1];
@@ -150,7 +174,7 @@ class Gettext_Translations extends Translations {
        /**
         * Adds parantheses to the inner parts of ternary operators in
         * plural expressions, because PHP evaluates ternary oerators from left to right
        /**
         * Adds parantheses to the inner parts of ternary operators in
         * plural expressions, because PHP evaluates ternary oerators from left to right
-        * 
+        *
         * @param string $expression the expression without parentheses
         * @return string the expression with parentheses added
         */
         * @param string $expression the expression without parentheses
         * @return string the expression with parentheses added
         */
@@ -178,7 +202,7 @@ class Gettext_Translations extends Translations {
                }
                return rtrim($res, ';');
        }
                }
                return rtrim($res, ';');
        }
-       
+
        function make_headers($translation) {
                $headers = array();
                // sometimes \ns are used instead of real new lines
        function make_headers($translation) {
                $headers = array();
                // sometimes \ns are used instead of real new lines
@@ -191,7 +215,7 @@ class Gettext_Translations extends Translations {
                }
                return $headers;
        }
                }
                return $headers;
        }
-       
+
        function set_header($header, $value) {
                parent::set_header($header, $value);
                if ('Plural-Forms' == $header) {
        function set_header($header, $value) {
                parent::set_header($header, $value);
                if ('Plural-Forms' == $header) {
@@ -210,7 +234,7 @@ if ( !class_exists( 'NOOP_Translations' ) ):
 class NOOP_Translations {
        var $entries = array();
        var $headers = array();
 class NOOP_Translations {
        var $entries = array();
        var $headers = array();
-       
+
        function add_entry($entry) {
                return true;
        }
        function add_entry($entry) {
                return true;
        }
@@ -218,7 +242,7 @@ class NOOP_Translations {
        function set_header($header, $value) {
        }
 
        function set_header($header, $value) {
        }
 
-       function set_headers(&$headers) {
+       function set_headers($headers) {
        }
 
        function get_header($header) {
        }
 
        function get_header($header) {