diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index bc4d333..e5ba480 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 Change Log 2.0.14 under development ------------------------ -- no changes in this release. +- Bug #14276: Fixed I18N format with dotted parameters (developeruz) 2.0.13.1 November 14, 2017 diff --git a/framework/i18n/I18N.php b/framework/i18n/I18N.php index 4b6bd69..49cf93b 100644 --- a/framework/i18n/I18N.php +++ b/framework/i18n/I18N.php @@ -110,7 +110,7 @@ class I18N extends Component return $message; } - if (preg_match('~{\s*[\w]+\s*,~u', $message)) { + if (preg_match('~{\s*[\w.]+\s*,~u', $message)) { $formatter = $this->getMessageFormatter(); $result = $formatter->format($message, $params, $language); if ($result === false) { diff --git a/tests/framework/i18n/I18NTest.php b/tests/framework/i18n/I18NTest.php index a57c21a..2b28143 100644 --- a/tests/framework/i18n/I18NTest.php +++ b/tests/framework/i18n/I18NTest.php @@ -275,4 +275,13 @@ class I18NTest extends TestCase $message = 'Incorrect password (length must be from {min, number} to {max, number} symbols).'; $this->assertEquals($message, $this->i18n->format($message, ['attribute' => 'password'], 'en')); } + + public function testFormatMessageWithDottedParameters() + { + $message = 'date: {dt.test}'; + $this->assertEquals('date: 1510147434', $this->i18n->format($message, ['dt.test' => 1510147434], 'en')); + + $message = 'date: {dt.test,date}'; + $this->assertEquals('date: Nov 8, 2017', $this->i18n->format($message, ['dt.test' => 1510147434], 'en')); + } }