@@ -120,13 +120,19 @@ class Translations extends ArrayObject
120120 ],
121121 ];
122122
123- private $ headers ;
123+ protected $ headers ;
124+
125+ protected $ translationClass ;
124126
125127 /**
126128 * @see ArrayObject::__construct()
127129 */
128- public function __construct ($ input = [], $ flags = 0 , $ iterator_class = 'ArrayIterator ' )
129- {
130+ public function __construct (
131+ $ input = [],
132+ $ flags = 0 ,
133+ $ iterator_class = 'ArrayIterator ' ,
134+ $ translationClass = 'Gettext\Translation '
135+ ) {
130136 $ this ->headers = static ::$ options ['defaultHeaders ' ];
131137
132138 foreach (static ::$ options ['defaultDateHeaders ' ] as $ header ) {
@@ -135,6 +141,8 @@ public function __construct($input = [], $flags = 0, $iterator_class = 'ArrayIte
135141
136142 $ this ->headers [self ::HEADER_LANGUAGE ] = '' ;
137143
144+ $ this ->translationClass = $ translationClass ;
145+
138146 parent ::__construct ($ input , $ flags , $ iterator_class );
139147 }
140148
@@ -455,7 +463,7 @@ public function countTranslated()
455463 */
456464 public function insert ($ context , $ original , $ plural = '' )
457465 {
458- return $ this ->offsetSet (null , new Translation ($ context , $ original , $ plural ));
466+ return $ this ->offsetSet (null , $ this -> createNewTranslation ($ context , $ original , $ plural ));
459467 }
460468
461469 /**
@@ -473,4 +481,18 @@ public function mergeWith(Translations $translations, $options = Merge::DEFAULTS
473481
474482 return $ this ;
475483 }
484+
485+ /**
486+ * Create a new instance of a Translation object.
487+ *
488+ * @param string $context The context of the translation
489+ * @param string $original The original string
490+ * @param string $plural The original plural string
491+ * @return Translation New Translation instance
492+ */
493+ public function createNewTranslation ($ context , $ original , $ plural = '' )
494+ {
495+ $ class = $ this ->translationClass ;
496+ return $ class ::create ($ context , $ original , $ plural );
497+ }
476498}
0 commit comments