diff --git wp-includes/pomo/translations.php wp-includes/pomo/translations.php
index 6623a9f02a..0537aad0e3 100644
--- wp-includes/pomo/translations.php
+++ wp-includes/pomo/translations.php
@@ -201,11 +201,8 @@ function nplurals_and_expression_from_header($header) {
 	 * @param string $expression
 	 */
 	function make_plural_form_function($nplurals, $expression) {
-		$expression = str_replace('n', '$n', $expression);
-		$func_body = "
-			\$index = (int)($expression);
-			return (\$index < $nplurals)? \$index : $nplurals - 1;";
-		return create_function('$n', $func_body);
+		$callback = new TranslationMultipleFormCallback($nplurals, $expression);
+		return array( $callback, 'callback');
 	}
 
 	/**
@@ -356,3 +353,36 @@ function merge_with(&$other) {
 	}
 }
 endif;
+
+if ( ! class_exists( 'TranslationMultipleFormCallback', false ) ):
+
+/**
+ * Provides a callable holding data, which will return the right translation
+ * index, according to the plural forms header.
+ * @see https://core.trac.wordpress.org/ticket/37082.
+ * Since create_function() was deprecated in PHP 7.2, and to support PHP 5.2,
+ * which does not has closure support, this class is used to set some data, and
+ * pass a valid callback that can be called with call_user_func() function,
+ * or with $callback($arguments) syntax since PHP 5.4 and later. Ideally, this
+ * should be replaced with a full closure when WordPress requires PHP 5.3
+ * minimum.
+ */
+class TranslationMultipleFormCallback {
+	private $expression;
+	private $nplurals;
+
+	public function __construct($nplurals, $expression) {
+		$this->expression = str_replace('n', '$n', $expression);
+		$this->nplurals = $nplurals;
+	}
+
+	/**
+	 * @param $n
+	 * @return string
+	 */
+	public function callback($n){
+		$index = intval(@eval('return (' . $this->expression . ');'));
+		return $index < $this->nplurals ? $index : $this->nplurals - 1;
+	}
+}
+endif;
