Browse Source

Fixes in docs [skip ci] (#15909)

tags/2.0.16
Disassem 7 years ago committed by Alexander Makarov
parent
commit
8a80e48f1d
  1. 82
      docs/guide-ru/output-formatting.md
  2. 50
      docs/guide-ru/start-databases.md
  3. 91
      docs/guide-ru/tutorial-i18n.md
  4. 6
      docs/internals-ja/git-workflow.md
  5. 6
      docs/internals-pl/git-workflow.md
  6. 22
      docs/internals-ru/git-workflow.md
  7. 2
      docs/internals-ru/translation-workflow.md
  8. 6
      docs/internals-sr-Latn/git-workflow.md
  9. 6
      docs/internals-uk/git-workflow.md
  10. 9
      docs/internals/git-workflow.md
  11. 2
      framework/CHANGELOG.md

82
docs/guide-ru/output-formatting.md

@ -1,7 +1,7 @@
Форматирование данных Форматирование данных
============== =====================
Для форматирования вывода Yii предоставляет класс, преобразующий данные в человеко понятный формат. Для форматирования вывода Yii предоставляет класс, преобразующий данные в человеко-понятный формат.
[[yii\i18n\Formatter]] это класс-помощник, который зарегистрирован как [[yii\i18n\Formatter]] это класс-помощник, который зарегистрирован как
[компонент приложения](structure-application-components.md), по умолчанию под именем `formatter`. [компонент приложения](structure-application-components.md), по умолчанию под именем `formatter`.
@ -9,7 +9,7 @@
локализации форматы. локализации форматы.
Formatter может быть использован двумя различными способами. Formatter может быть использован двумя различными способами.
1. Напрямую используя методы форматирования (все методы форматирования имеют префикс `as`): 1. Напрямую, используя методы форматирования (все методы форматирования имеют префикс `as`):
```php ```php
echo Yii::$app->formatter->asDate('2014-01-01', 'long'); // выведет: January 1, 2014 echo Yii::$app->formatter->asDate('2014-01-01', 'long'); // выведет: January 1, 2014
@ -21,7 +21,7 @@ Formatter может быть использован двумя различны
``` ```
2. Используя метод [[yii\i18n\Formatter::format()|format()]] и имя формата. 2. Используя метод [[yii\i18n\Formatter::format()|format()]] и имя формата.
Этот метод также используется в виджетах на подобии [[yii\grid\GridView]] и [[yii\widgets\DetailView]], в которых Этот метод также используется в виджетах наподобие [[yii\grid\GridView]] и [[yii\widgets\DetailView]], в которых
вы можете задать формат отображения данных в колонке через конфигурацию виджета. вы можете задать формат отображения данных в колонке через конфигурацию виджета.
```php ```php
@ -36,7 +36,7 @@ Formatter может быть использован двумя различны
[[yii\i18n\Formatter::locale|locale]]. Если оно не было настроено, то в качестве локали будет использован [[yii\i18n\Formatter::locale|locale]]. Если оно не было настроено, то в качестве локали будет использован
[[yii\base\Application::language|язык приложения]]. Подробнее смотрите в разделе «[интернационализация](tutorial-i18n.md)». [[yii\base\Application::language|язык приложения]]. Подробнее смотрите в разделе «[интернационализация](tutorial-i18n.md)».
Компонент форматирования будет выбирать корректный формат для даты и чисел в соответствии с локалью, включая имена Компонент форматирования будет выбирать корректный формат для даты и чисел в соответствии с локалью, включая имена
месяцев и дней недели, переведённые на текущий язык. месяцев и дней недели, переведённые на текущий язык.
Форматирование дат также зависит от [[yii\i18n\Formatter::timeZone|часового пояса]], который будет взят из одноимённого свойства [[yii\base\Application::timeZone|timeZone]] приложения, если не был задан явно. В свою очередь [[yii\base\Application::timeZone|timeZone]] устанавливает / читает временную зону PHP. Форматирование дат также зависит от [[yii\i18n\Formatter::timeZone|часового пояса]], который будет взят из одноимённого свойства [[yii\base\Application::timeZone|timeZone]] приложения, если не был задан явно. В свою очередь [[yii\base\Application::timeZone|timeZone]] устанавливает / читает временную зону PHP.
Например, форматирование даты, вызванное с разной локалью, отобразит разные результаты:: Например, форматирование даты, вызванное с разной локалью, отобразит разные результаты::
@ -51,7 +51,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // выведет: 1 январ
``` ```
> Обратите внимание, что форматирование может различаться между различными версиями библиотеки ICU, собранных с PHP, > Обратите внимание, что форматирование может различаться между различными версиями библиотеки ICU, собранных с PHP,
> а также на основе того установлено ли [расширение PHP intl] (http://php.net/manual/ru/book.intl.php) или нет. > а также на основе того установлено ли [расширение PHP intl](http://php.net/manual/ru/book.intl.php) или нет.
> Таким образом, чтобы гарантировать, что ваш сайт будет одинаково отображать данные во всех окружениях рекомендуется > Таким образом, чтобы гарантировать, что ваш сайт будет одинаково отображать данные во всех окружениях рекомендуется
> установить расширение PHP intl во всех окружениях и проверить, что версия библиотеки ICU совпадает. > установить расширение PHP intl во всех окружениях и проверить, что версия библиотеки ICU совпадает.
> См. также: [Настройка PHP окружения для интернационализации](tutorial-i18n.md#setup-environment). > См. также: [Настройка PHP окружения для интернационализации](tutorial-i18n.md#setup-environment).
@ -63,7 +63,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // выведет: 1 январ
Настройка форматирования <span id="configuring-format"></span> Настройка форматирования <span id="configuring-format"></span>
------------------------- --------------------------------------------------------------
Форматы по умолчанию, используемые в методах форматирования, можно настраивать через свойства Форматы по умолчанию, используемые в методах форматирования, можно настраивать через свойства
[[yii\i18n\Formatter|класса форматирования]]. Вы можете задать форматирование по умолчанию для всего приложения, настроив [[yii\i18n\Formatter|класса форматирования]]. Вы можете задать форматирование по умолчанию для всего приложения, настроив
@ -83,19 +83,19 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // выведет: 1 январ
``` ```
Форматирование значений даты и времени <span id="date-and-time"></span> Форматирование значений даты и времени <span id="date-and-time"></span>
------------------------------- -----------------------------------------------------------------------
Класс форматирования предоставляет различные методы для форматирования значений даты и времени. Например: Класс форматирования предоставляет различные методы для форматирования значений даты и времени. Например:
- [[yii\i18n\Formatter::asDate()|date]] - значение будет отформатировано как дата, например `January 01, 2014`. - [[yii\i18n\Formatter::asDate()|date]] значение будет отформатировано как дата, например `January 01, 2014`.
- [[yii\i18n\Formatter::asTime()|time]] - значение будет отформатировано как время, например `14:23`. - [[yii\i18n\Formatter::asTime()|time]] значение будет отформатировано как время, например `14:23`.
- [[yii\i18n\Formatter::asDatetime()|datetime]] - значение будет отформатировано как дата и время, например - [[yii\i18n\Formatter::asDatetime()|datetime]] значение будет отформатировано как дата и время, например
`January 01, 2014 14:23`. `January 01, 2014 14:23`.
- [[yii\i18n\Formatter::asTimestamp()|timestamp]] - значение будет отформатировано как - [[yii\i18n\Formatter::asTimestamp()|timestamp]] значение будет отформатировано как
[unix timestamp](http://en.wikipedia.org/wiki/Unix_time), например, `1412609982`. [unix timestamp](https://ru.wikipedia.org/wiki/UNIX-время), например, `1412609982`.
- [[yii\i18n\Formatter::asRelativeTime()|relativeTime]] - значение будет отформатировано как временной промежуток между - [[yii\i18n\Formatter::asRelativeTime()|relativeTime]] значение будет отформатировано как временной промежуток между
заданной датой и текущим временем в человеко понятном формате, например: `1 час назад`. заданной датой и текущим временем в человеко понятном формате, например: `1 час назад`.
- [[yii\i18n\Formatter::asDuration()|duration]]: значение будет отформатировано как продолжительность в человеко понятном - [[yii\i18n\Formatter::asDuration()|duration]]: значение будет отформатировано как продолжительность в человеко-понятном
формате, например `1 день, 2 минуты`. формате, например `1 день, 2 минуты`.
Форматирование даты и времени для методов [[yii\i18n\Formatter::asDate()|date]], [[yii\i18n\Formatter::asTime()|time]] и Форматирование даты и времени для методов [[yii\i18n\Formatter::asDate()|date]], [[yii\i18n\Formatter::asTime()|time]] и
@ -107,7 +107,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // выведет: 1 январ
в данный момент локали. Поэтому дата и время будут отформатированы наиболее часто используемым способом в стране и языке в данный момент локали. Поэтому дата и время будут отформатированы наиболее часто используемым способом в стране и языке
пользователя. Доступны 4 разных сокращенных формата: пользователя. Доступны 4 разных сокращенных формата:
- `short` в локале `en_GB` отобразит, например, `06/10/2014` для даты и `15:58` для времени, в то время как - `short` в локали `en_GB` отобразит, например, `06/10/2014` для даты и `15:58` для времени, в то время как
- `medium` будет отображать `6 Oct 2014` и `15:58:42` соответственно, - `medium` будет отображать `6 Oct 2014` и `15:58:42` соответственно,
- `long` будет отображать `6 October 2014` и `15:58:42 GMT` соответственно и - `long` будет отображать `6 October 2014` и `15:58:42 GMT` соответственно и
- `full` будет отображать `Monday, 6 October 2014` и `15:58:42 GMT` соответственно. - `full` будет отображать `Monday, 6 October 2014` и `15:58:42 GMT` соответственно.
@ -149,28 +149,28 @@ echo Yii::$app->formatter->asTime('2014-10-06 14:41:00 CEST'); // 14:41:00
> Смотрите также: [Настройка вашего PHP окружения для интернационализации](tutorial-i18n.md#setup-environment). > Смотрите также: [Настройка вашего PHP окружения для интернационализации](tutorial-i18n.md#setup-environment).
Форматирование чисел <span id="numbers"></span> Форматирование чисел <span id="numbers"></span>
------------------ -----------------------------------------------
Для форматирования числовых значений класс форматирования предоставляет следующие методы: Для форматирования числовых значений класс форматирования предоставляет следующие методы:
- [[yii\i18n\Formatter::asInteger()|integer]] - значение будет отформатировано как целое число, например `42`. - [[yii\i18n\Formatter::asInteger()|integer]] значение будет отформатировано как целое число, например `42`.
- [[yii\i18n\Formatter::asDecimal()|decimal]] - значение будет отформатировано как дробное число, состоящее из целого и - [[yii\i18n\Formatter::asDecimal()|decimal]] значение будет отформатировано как дробное число, состоящее из целого и
дробной части, например: `2,542.123` или `2.542,123`. дробной части, например: `2,542.123` или `2.542,123`.
- [[yii\i18n\Formatter::asPercent()|percent]] - значение будет отформатировано как процентное значение, например `42%`. - [[yii\i18n\Formatter::asPercent()|percent]] значение будет отформатировано как процентное значение, например `42%`.
- [[yii\i18n\Formatter::asScientific()|scientific]] - значение будет отформатировано в научном формате, например: `4.2E4`. - [[yii\i18n\Formatter::asScientific()|scientific]] значение будет отформатировано в научном формате, например: `4.2E4`.
- [[yii\i18n\Formatter::asCurrency()|currency]] - значение будет отформатировано в денежном формате, например: `£420.00`. - [[yii\i18n\Formatter::asCurrency()|currency]] значение будет отформатировано в денежном формате, например: `£420.00`.
Обратите внимание, чтобы эта функция работала правильно, локаль должна включать в себя часть со страной, например: `en_GB` Обратите внимание, чтобы эта функция работала правильно, локаль должна включать в себя часть со страной, например: `en_GB`
или` en_US` потому что только язык будет неоднозначным в этом случае. или `en_US` (потому что указание только языка будет неоднозначным в этом случае).
- [[yii\i18n\Formatter::asSize()|size]] - значение будет отформатировано как количество байт в человеко понятном формате, - [[yii\i18n\Formatter::asSize()|size]] значение будет отформатировано как количество байт в человеко-понятном формате,
например: `410 kibibytes`. например: `410 kibibytes`.
- [[yii\i18n\Formatter::asShortSize()|shortSize]] - сокращённая версия [[yii\i18n\Formatter::asSize()|size]], например: - [[yii\i18n\Formatter::asShortSize()|shortSize]] сокращённая версия [[yii\i18n\Formatter::asSize()|size]], например:
`410 KiB`. `410 KiB`.
Форматирование чисел может быть скорректирована с помощью [[yii\i18n\Formatter::decimalSeparator|дробного разделителя]] и Форматирование чисел может быть скорректировано с помощью [[yii\i18n\Formatter::decimalSeparator|дробного разделителя]] и
[[yii\i18n\Formatter::thousandSeparator|тысячного разделителя]], которые были заданы в соответствии с локалью. [[yii\i18n\Formatter::thousandSeparator|тысячного разделителя]], которые были заданы в соответствии с локалью.
Для более сложной конфигурации, [[yii\i18n\Formatter::numberFormatterOptions]] и [[yii\i18n\Formatter::numberFormatterTextOptions]] Для более сложной конфигурации [[yii\i18n\Formatter::numberFormatterOptions]] и [[yii\i18n\Formatter::numberFormatterTextOptions]]
могут быть использованы для настройки внутренне используемого [класса NumberFormatter](http://php.net/manual/ru/class.numberformatter.php) могут быть использованы для настройки внутренне используемого [класса NumberFormatter](http://php.net/manual/ru/class.numberformatter.php).
Например, чтобы настроить максимальное и минимальное количество знаков после запятой, вы можете настроить свойство Например, чтобы настроить максимальное и минимальное количество знаков после запятой, вы можете настроить свойство
[[yii\i18n\Formatter::numberFormatterOptions]] как в примере ниже: [[yii\i18n\Formatter::numberFormatterOptions]] как в примере ниже:
@ -183,33 +183,33 @@ echo Yii::$app->formatter->asTime('2014-10-06 14:41:00 CEST'); // 14:41:00
``` ```
Остальное форматирование <span id="other"></span> Остальное форматирование <span id="other"></span>
---------------- --------------------------------------------------
Кроме форматирование даты, времени и чисел, Yii предоставляет набор других полезных средств форматирования для различных Кроме форматирование даты, времени и чисел, Yii предоставляет набор других полезных средств форматирования для различных
ситуаций: ситуаций:
- [[yii\i18n\Formatter::asRaw()|raw]] - значением будет отображено как есть, это псевдо-форматирование, которое не даёт - [[yii\i18n\Formatter::asRaw()|raw]] — значение будет отображено как есть, это псевдо-форматирование, которое не даёт
никакого эффекта, никакого эффекта,
кроме значений `null`, которые будет отформатированы в соответствии с [[nullDisplay]]. кроме значений `null`, которые будет отформатированы в соответствии с [[yii\i18n\Formatter::nullDisplay|nullDisplay]].
- [[yii\i18n\Formatter::asText()|text]] - значением будет экранированный от HTML текст. - [[yii\i18n\Formatter::asText()|text]] значением будет экранированный от HTML текст.
Это формат по умолчанию, используемый в [GridView DataColumn](output-data-widgets.md#data-column). Это формат по умолчанию, используемый в [GridView DataColumn](output-data-widgets.md#data-column).
- [[yii\i18n\Formatter::asNtext()|ntext]] - значением будет экранированный от HTML текст с новыми строками, - [[yii\i18n\Formatter::asNtext()|ntext]] значением будет экранированный от HTML текст с новыми строками,
сконвертированными в разрывы строк. сконвертированными в разрывы строк.
- [[yii\i18n\Formatter::asParagraphs()|paragraphs]] - значением будет экранированный от HTML текст с параграфами, - [[yii\i18n\Formatter::asParagraphs()|paragraphs]] значением будет экранированный от HTML текст с параграфами,
обрамлёнными в `<p>` теги. обрамлёнными в `<p>` теги.
- [[yii\i18n\Formatter::asHtml()|html]] - значение будет очищено, используя [[HtmlPurifier]] с целью предотвратить XSS - [[yii\i18n\Formatter::asHtml()|html]] значение будет очищено, используя [[yii\helpers\HtmlPurifier|HtmlPurifier]], с целью предотвратить XSS
атаки. Вы можете задать дополнительные параметры, такие как `['html', ['Attr.AllowedFrameTargets' => ['_blank']]]`. атаки. Вы можете задать дополнительные параметры, такие как `['html', ['Attr.AllowedFrameTargets' => ['_blank']]]`.
- [[yii\i18n\Formatter::asEmail()|email]] - значение будет отформатировано как ссылка `mailto`. - [[yii\i18n\Formatter::asEmail()|email]] значение будет отформатировано как ссылка `mailto`.
- [[yii\i18n\Formatter::asImage()|image]] - значение будет отформатировано как тег картинки. - [[yii\i18n\Formatter::asImage()|image]] значение будет отформатировано как тег картинки.
- [[yii\i18n\Formatter::asUrl()|url]] - значение будет отформатировано как ссылка <a>. - [[yii\i18n\Formatter::asUrl()|url]] значение будет отформатировано как ссылка <a>.
- [[yii\i18n\Formatter::asBoolean()|boolean]] - значение форматируется как логическое. По умолчанию `true` будет - [[yii\i18n\Formatter::asBoolean()|boolean]] значение форматируется как логическое. По умолчанию `true` будет
отображено как `Yes` и `false` как `No`, переведенное на язык приложения. Вы можете настроить это через свойство отображено как `Yes` и `false` как `No`, переведенное на язык приложения. Вы можете настроить это через свойство
[[yii\i18n\Formatter::booleanFormat]]. [[yii\i18n\Formatter::booleanFormat]].
`null` значения <span id="null-values"></span> `null` значения <span id="null-values"></span>
------------- ----------------------------------------------
Для значений `null` в PHP, класс форматирования будет отображать вместо пустой строки маркер, по умолчанию это Для значений `null` в PHP класс форматирования будет отображать вместо пустой строки маркер, по умолчанию это
`(not set)`, переведенный на язык приложения. Вы можете настроить свойство [[yii\i18n\Formatter::nullDisplay|nullDisplay]] `(not set)`, переведенный на язык приложения. Вы можете настроить свойство [[yii\i18n\Formatter::nullDisplay|nullDisplay]]
для установки собственного маркера. Если вы не хотите обрабатывать `null` значения, то установите свойство для установки собственного маркера. Если вы не хотите обрабатывать `null` значения, то установите свойство
[[yii\i18n\Formatter::nullDisplay|nullDisplay]] в `null`. [[yii\i18n\Formatter::nullDisplay|nullDisplay]] в `null`.

50
docs/guide-ru/start-databases.md

@ -1,25 +1,25 @@
Работа с базами данных Работа с базами данных
====================== ======================
Этот раздел расскажет о том, как создать новую страницу, отображающую данные по странам, полученные из таблицы `countries` базы данных. Для достижения этой цели вам будет необходимо настроить подключение к базе данных, создать класс [Active Record](db-active-record.md), определить [action](structure-controllers.md), и создать [view](structure-views.md). Этот раздел расскажет о том, как создать новую страницу, отображающую данные по странам, полученные из таблицы `countries` базы данных. Для достижения этой цели вам будет необходимо настроить подключение к базе данных, создать класс [Active Record](db-active-record.md), определить [action](structure-controllers.md) и создать [view](structure-views.md).
Изучив эту часть, вы научитесь: Изучив эту часть, вы научитесь:
* Настраивать подключение к БД * Настраивать подключение к БД.
* Определять класс Active Record * Определять класс Active Record.
* Запрашивать данные, используя класс Active Record * Запрашивать данные, используя класс Active Record.
* Отображать данные во view с использованием пагинации * Отображать данные во view с использованием пагинации.
Обратите внимание, чтобы усвоить этот раздел, вы должны иметь базовые знания и навыки использования баз данных. Обратите внимание, чтобы усвоить этот раздел, вы должны иметь базовые знания и навыки использования баз данных.
В частности, вы должны знать, как создать базу данных, и как выполнять SQL запросы, используя клиентские инструменты для работы с БД. В частности, вы должны знать, как создать базу данных и как выполнять SQL запросы, используя клиентские инструменты для работы с БД.
Подготавливаем базу данных <span id="preparing-database"></span> Подготавливаем базу данных <span id="preparing-database"></span>
---------------------- ----------------------------------------------------------------
Для начала, создайте базу данных под названием `yii2basic`, из которой вы будете получать данные в вашем приложении. Для начала создайте базу данных под названием `yii2basic`, из которой вы будете получать данные в вашем приложении.
Вы можете создать базу данных SQLite, MySQL, PostgreSQL, MSSQL или Oracle, так как Yii имеет встроенную поддержку для многих баз данных. Для простоты, в дальнейшем описании будет подразумеваться MySQL. Вы можете создать базу данных SQLite, MySQL, PostgreSQL, MSSQL или Oracle, так как Yii имеет встроенную поддержку для многих баз данных. Для простоты, в дальнейшем описании будет подразумеваться MySQL.
После этого создайте в базе данных таблицу `country`, и добавьте в неё немного демонстрационных данных. Вы можете запустить следующую SQL инструкцию, чтобы сделать это: После этого создайте в базе данных таблицу `country` и добавьте в неё немного демонстрационных данных. Вы можете запустить следующую SQL инструкцию, чтобы сделать это:
```sql ```sql
CREATE TABLE `country` ( CREATE TABLE `country` (
@ -40,12 +40,12 @@ INSERT INTO `country` VALUES ('RU','Russia',146519759);
INSERT INTO `country` VALUES ('US','United States',322976000); INSERT INTO `country` VALUES ('US','United States',322976000);
``` ```
На данный момент у вас есть база данных под названием `yii2basic`, и внутри неё таблица `country` с тремя столбцами, содержащими десять строк данных. На данный момент у вас есть база данных под названием `yii2basic` и внутри неё таблица `country` с тремя столбцами, содержащими десять строк данных.
Настраиваем подключение к БД <span id="configuring-db-connection"></span> Настраиваем подключение к БД <span id="configuring-db-connection"></span>
--------------------------- -------------------------------------------------------------------------
Перед продолжением убедитесь, что у вас установлены PHP-расширение [PDO](http://www.php.net/manual/en/book.pdo.php) и драйвер PDO для используемой вами базы данных (н `pdo_mysql` для MySQL). Это базовое требование в случае использования вашим приложением реляционной базы данных. Перед продолжением убедитесь, что у вас установлены PHP-расширение [PDO](http://php.net/manual/ru/book.pdo.php) и драйвер PDO для используемой вами базы данных (например, `pdo_mysql` для MySQL). Это базовое требование в случае использования вашим приложением реляционной базы данных.
После того, как они установлены, откройте файл `config/db.php` и измените параметры на верные для вашей базы данных. По умолчанию этот файл содержит следующее: После того, как они установлены, откройте файл `config/db.php` и измените параметры на верные для вашей базы данных. По умолчанию этот файл содержит следующее:
```php ```php
@ -60,7 +60,7 @@ return [
]; ];
``` ```
Файл `config/db.php` - типичный [конфигурационный](concept-configurations.md) инструмент, базирующийся на файлах. Данный конфигурационный файл определяет параметры, необходимые для создания и инициализации экземпляра [[yii\db\Connection]], через который вы можете делать SQL запросы к подразумеваемой базе данных. Файл `config/db.php` типичный [конфигурационный](concept-configurations.md) инструмент, базирующийся на файлах. Данный конфигурационный файл определяет параметры, необходимые для создания и инициализации экземпляра [[yii\db\Connection]], через который вы можете делать SQL запросы к подразумеваемой базе данных.
Подключение к БД, настроенное выше, доступно в коде приложения через выражение `Yii::$app->db`. Подключение к БД, настроенное выше, доступно в коде приложения через выражение `Yii::$app->db`.
@ -77,9 +77,9 @@ return [
Создаём потомка Active Record <span id="creating-active-record"></span> Создаём потомка Active Record <span id="creating-active-record"></span>
------------------------- -----------------------------------------------------------------------
Чтобы представлять и получать данные из таблицы `country`, создайте класс - потомок [Active Record](db-active-record.md), под названием `Country`, и сохраните его в файле `models/Country.php`. Чтобы представлять и получать данные из таблицы `country`, создайте класс потомок [Active Record](db-active-record.md), под названием `Country` и сохраните его в файле `models/Country.php`.
```php ```php
<?php <?php
@ -95,7 +95,7 @@ class Country extends ActiveRecord
Класс `Country` наследуется от [[yii\db\ActiveRecord]]. Вам не нужно писать ни строчки кода внутри него! С кодом, приведённым выше, Yii свяжет имя таблицы с именем класса. Класс `Country` наследуется от [[yii\db\ActiveRecord]]. Вам не нужно писать ни строчки кода внутри него! С кодом, приведённым выше, Yii свяжет имя таблицы с именем класса.
> Info: Если нет возможности задать прямой зависимости между именем таблицы и именем класса, вы можете переопределить > Info: Если нет возможности задать прямую зависимость между именем таблицы и именем класса, вы можете переопределить
метод [[yii\db\ActiveRecord::tableName()]], чтобы явно задать имя связанной таблицы. метод [[yii\db\ActiveRecord::tableName()]], чтобы явно задать имя связанной таблицы.
Используя класс `Country`, вы можете легко манипулировать данными в таблице `country`, как показано в этих фрагментах: Используя класс `Country`, вы можете легко манипулировать данными в таблице `country`, как показано в этих фрагментах:
@ -117,12 +117,12 @@ $country->name = 'U.S.A.';
$country->save(); $country->save();
``` ```
> Info: Active Record - мощный способ доступа и манипулирования данными БД в объектно-ориентированном стиле. > Info: Active Record мощный способ доступа и манипулирования данными БД в объектно-ориентированном стиле.
Вы можете найти подробную информацию в разделе [Active Record](db-active-record.md). В качестве альтернативы, вы также можете взаимодействовать с базой данных, используя более низкоуровневый способ доступа, называемый [Data Access Objects](db-dao.md). Вы можете найти подробную информацию в разделе [Active Record](db-active-record.md). В качестве альтернативы, вы также можете взаимодействовать с базой данных, используя более низкоуровневый способ доступа, называемый [Data Access Objects](db-dao.md).
Создаём Action <span id="creating-action"></span> Создаём Action <span id="creating-action"></span>
------------------ -------------------------------------------------
Для того, чтобы показать данные по странам конечным пользователям, вам надо создать новый action. Вместо размещения нового action'a в контроллере `site`, как вы делали в предыдущих разделах, будет иметь больше смысла создать новый контроллер специально для всех действий, относящихся к данным по странам. Назовите новый контроллер `CountryController`, и создайте action `index` внутри него, как показано ниже. Для того, чтобы показать данные по странам конечным пользователям, вам надо создать новый action. Вместо размещения нового action'a в контроллере `site`, как вы делали в предыдущих разделах, будет иметь больше смысла создать новый контроллер специально для всех действий, относящихся к данным по странам. Назовите новый контроллер `CountryController`, и создайте action `index` внутри него, как показано ниже.
@ -169,7 +169,7 @@ Action `index` вызывает `Country::find()`. Данный метод Activ
В конце кода action `index` выводит view с именем `index`, и передаёт в него данные по странам вместе c информацией о пагинации. В конце кода action `index` выводит view с именем `index`, и передаёт в него данные по странам вместе c информацией о пагинации.
Создаём View <span id="creating-view"></span> Создаём View <span id="creating-view"></span>
--------------- ---------------------------------------------
Первым делом создайте поддиректорию с именем `country` внутри директории `views`. Эта папка будет использоваться для хранения всех view, выводимых контроллером `country`. Внутри директории `views/country` создайте файл с именем `index.php`, содержащий следующий код: Первым делом создайте поддиректорию с именем `country` внутри директории `views`. Эта папка будет использоваться для хранения всех view, выводимых контроллером `country`. Внутри директории `views/country` создайте файл с именем `index.php`, содержащий следующий код:
@ -182,7 +182,7 @@ use yii\widgets\LinkPager;
<ul> <ul>
<?php foreach ($countries as $country): ?> <?php foreach ($countries as $country): ?>
<li> <li>
<?= Html::encode("{$country->name} ({$country->code})") ?>: <?= Html::encode("{$country->code} ({$country->name})") ?>:
<?= $country->population ?> <?= $country->population ?>
</li> </li>
<?php endforeach; ?> <?php endforeach; ?>
@ -196,7 +196,7 @@ View имеет 2 части относительно отображения д
Испытываем в действии <span id="trying-it-out"></span> Испытываем в действии <span id="trying-it-out"></span>
------------- ------------------------------------------------------
Чтобы увидеть, как работает весь вышеприведённый код, перейдите по следующей ссылке в своём браузере: Чтобы увидеть, как работает весь вышеприведённый код, перейдите по следующей ссылке в своём браузере:
@ -213,14 +213,14 @@ http://hostname/index.php?r=country%2Findex
http://hostname/index.php?r=country%2Findex&page=2 http://hostname/index.php?r=country%2Findex&page=2
``` ```
За кадром, [[yii\data\Pagination|Pagination]] предоставляет всю необходимую функциональность для постраничной разбивки набора данных: За кадром [[yii\data\Pagination|Pagination]] предоставляет всю необходимую функциональность для постраничной разбивки набора данных:
* В начале [[yii\data\Pagination|Pagination]] показывает первую страницу, которая отражает SELECT запрос стран с параметрами `LIMIT 5 OFFSET 0`. Как результат, первые пять стран будут получены и отображены. * В начале [[yii\data\Pagination|Pagination]] показывает первую страницу, которая отражает SELECT запрос стран с параметрами `LIMIT 5 OFFSET 0`. Как результат, первые пять стран будут получены и отображены.
* Виджет [[yii\widgets\LinkPager|LinkPager]] выводит кнопки страниц используя URL'ы, созданные [[yii\data\Pagination::createUrl()|Pagination]]. Эти URL'ы будут содержать параметр запроса `page`, который представляет различные номера страниц. * Виджет [[yii\widgets\LinkPager|LinkPager]] выводит кнопки страниц используя URL'ы, созданные [[yii\data\Pagination::createUrl()|Pagination]]. Эти URL'ы будут содержать параметр запроса `page`, который представляет различные номера страниц.
* Если вы кликните по кнопке "2", сработает и обработается новый запрос для маршрута `country/index`. Таким образом новый запрос стран будет иметь параметры `LIMIT 5 OFFSET 5` и вернет следующие пять стран для отображения. * Если вы кликните по кнопке "2", сработает и обработается новый запрос для маршрута `country/index`. Таким образом новый запрос стран будет иметь параметры `LIMIT 5 OFFSET 5` и вернет следующие пять стран для отображения.
Заключение <span id="summary"></span> Заключение <span id="summary"></span>
------- -------------------------------------
В этом разделе вы научились работать с базой данных. Также вы научились получать и отображать данные с постраничной разбивкой с помощью [[yii\data\Pagination]] и [[yii\widgets\LinkPager]]. В этом разделе вы научились работать с базой данных. Также вы научились получать и отображать данные с постраничной разбивкой с помощью [[yii\data\Pagination]] и [[yii\widgets\LinkPager]].
В следующем разделе вы научитесь использовать мощный инструмент генерации кода, называемый [Gii](start-gii.md), чтобы с его помощью быстро осуществлять некоторые часто используемые функции, такие, как операции Create-Read-Update-Delete (CRUD) для работы с данными в таблице базы данных. На самом деле код, который вы только что написали, в Yii может быть полностью сгенерирован автоматически с использованием Gii. В следующем разделе вы научитесь использовать мощный инструмент генерации кода, называемый [Gii](start-gii.md), чтобы с его помощью быстро осуществлять некоторые часто используемые функции, такие как операции Create-Read-Update-Delete (CRUD) для работы с данными в таблице базы данных. На самом деле код, который вы только что написали, в Yii может быть полностью сгенерирован автоматически с использованием Gii.

91
docs/guide-ru/tutorial-i18n.md

@ -8,13 +8,12 @@
пользователи могут приходить из разных стран. пользователи могут приходить из разных стран.
Yii располагает несколькими средствами, призванными помочь с интернационализацией веб-приложения: [переводом Yii располагает несколькими средствами, призванными помочь с интернационализацией веб-приложения: [переводом
сообщений][], [форматированием чисел и дат][]. сообщений](#message-translation), [форматированием чисел и дат](#date-number).
Локализация и языки Локализация и языки <span id="locale-language"></span>
------------------- ------------------------------------------------------
В Yii приложении определены два языка: [[yii\base\Application::$sourceLanguage|исходный язык]] и [[yii\base\ В Yii приложении определены два языка: [[yii\base\Application::$sourceLanguage|исходный язык]] и [[yii\base\Application::$language|язык перевода]].
Application::$language|язык перевода]].
На "исходном языке" написаны сообщения в коде приложения. Если мы определяем исходным языком английский, то На "исходном языке" написаны сообщения в коде приложения. Если мы определяем исходным языком английский, то
в коде можно использовать конструкцию: в коде можно использовать конструкцию:
@ -36,7 +35,7 @@ return [
] ]
``` ```
> Tip: значение по умолчанию для [[yii\base\Application::$sourceLanguage|исходного языка]] - английский. > Tip: значение по умолчанию для [[yii\base\Application::$sourceLanguage|исходного языка]] английский.
Вы можете установить значение текущего языка в самом приложении в соответствии с языком, который выбрал пользователь. Вы можете установить значение текущего языка в самом приложении в соответствии с языком, который выбрал пользователь.
Это необходимо сделать до того, как будет сгенерирован какой-либо вывод, чтобы не возникло проблем с его Это необходимо сделать до того, как будет сгенерирован какой-либо вывод, чтобы не возникло проблем с его
@ -46,21 +45,21 @@ return [
\Yii::$app->language = 'ru-RU'; \Yii::$app->language = 'ru-RU';
``` ```
Формат для установки языка/локали: `ll-CC`, где `ll` - это двух или трёхбуквенный код языка в нижнем регистре в Формат для установки языка/локали: `ll-CC`, где `ll` это двух или трёхбуквенный код языка в нижнем регистре в
соответствии со стандартом [ISO-639](http://www.loc.gov/standards/iso639-2/), а `CC` - это код страны в соответствии соответствии со стандартом [ISO-639](http://www.loc.gov/standards/iso639-2/), а `CC` это код страны в соответствии
со стандартом [ISO-3166](http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html). со стандартом [ISO-3166](https://ru.wikipedia.org/wiki/ISO_3166-1#Список_кодов_по_ISO_3166).
> Note: больше информации о синтаксисе и концепции локалей можно получить в [документации проекта ICU](http://userguide.icu-project.org/locale#TOC-The-Locale-Concept). > Note: больше информации о синтаксисе и концепции локалей можно получить в [документации проекта ICU](http://userguide.icu-project.org/locale#TOC-The-Locale-Concept).
Перевод сообщений Перевод сообщений <span id="message-translation"></span>
----------------- --------------------------------------------------------
Перевод используется для локализации сообщений, которые будут выведены в приложении в соответствии с языком, Перевод используется для локализации сообщений, которые будут выведены в приложении в соответствии с языком,
который выбрал пользователь. который выбрал пользователь.
По сути, Yii просто находит в файле с сообщениями на выбранном языке строку, соответствующую сообщению на исходном По сути, Yii просто находит в файле с сообщениями на выбранном языке строку, соответствующую сообщению на исходном
языке приложения. Для перевода сообщений, необходимо в самом приложении заключать их в метод [[Yii::t()]]. Первый языке приложения. Для перевода сообщений необходимо в самом приложении заключать их в метод [[Yii::t()]]. Первый
аргумент метода - это категория, которая позволяет группировать сообщения по определённому признаку, а второй - само аргумент метода это категория, которая позволяет группировать сообщения по определённому признаку, а второй само
сообщение. сообщение.
```php ```php
@ -68,7 +67,7 @@ echo \Yii::t('app', 'This is a string to translate!');
``` ```
Yii попытается загрузить файл перевода сообщений, соответствующий текущему [[yii\base\Application::$language|языку приложения]] Yii попытается загрузить файл перевода сообщений, соответствующий текущему [[yii\base\Application::$language|языку приложения]]
из одного из источников, определённых в `i18n` [компонентах приложения](concept-components.md). Сообщения - это набор из одного из источников, определённых в `i18n` [компонентах приложения](concept-components.md). Сообщения это набор
файлов или база данных, которая содержит переведённые строки. Следующая конфигурация определяет, что сообщения файлов или база данных, которая содержит переведённые строки. Следующая конфигурация определяет, что сообщения
должны браться из PHP-файлов: должны браться из PHP-файлов:
@ -91,15 +90,15 @@ Yii попытается загрузить файл перевода сообщ
], ],
``` ```
В приведённой конфигурации, `app*` - это шаблон, который определяет, какие категории обрабатываются источником. В нашем В приведённой конфигурации, `app*` это шаблон, который определяет, какие категории обрабатываются источником. В нашем
случае, мы обрабатываем все, что начинается с `app`. Файлы с сообщениями находятся в `@app/messages` (папке `messages` случае мы обрабатываем все, что начинается с `app`. Файлы с сообщениями находятся в `@app/messages` (папке `messages`
в вашем приложении). Массив [[yii\i18n\PhpMessageSource::fileMap|fileMap]] определяет, какой файл будет подключаться для в вашем приложении). Массив [[yii\i18n\PhpMessageSource::fileMap|fileMap]] определяет, какой файл будет подключаться для
определённой категории. Если вы не хотите конфигурировать `fileMap`, можно положиться на соглашение, что название определённой категории. Если вы не хотите конфигурировать `fileMap`, можно положиться на соглашение, что название
категории является именем файла. Например, категория `app/error` относится к файлу `app/error.php` в рамках [[yii\i18n\PhpMessageSource::basePath|basePath]]. категории является именем файла. Например, категория `app/error` относится к файлу `app/error.php` в рамках [[yii\i18n\PhpMessageSource::basePath|basePath]].
Переводя сообщение `\Yii::t('app', 'This is a string to translate!')` при установленном языке приложения `ru-RU`, Yii Переводя сообщение `\Yii::t('app', 'This is a string to translate!')` при установленном языке приложения `ru-RU`, Yii
сначала будет искать файл `@app/messages/ru-RU/app.php`, чтобы получить список доступных переводов. Если есть файл сначала будет искать файл `@app/messages/ru-RU/app.php`, чтобы получить список доступных переводов. Если такого файла нет в папке
`ru-RU`, Yii также попробует поискать `ru` перед тем, как примет решение, что попытка перевода не удалась. `ru-RU`, Yii также попробует поискать в папке `ru` перед тем, как примет решение, что попытка перевода не удалась.
Кроме хранения в PHP-файлах (используя [[yii\i18n\PhpMessageSource|PhpMessageSource]]), Yii предоставляет ещё два Кроме хранения в PHP-файлах (используя [[yii\i18n\PhpMessageSource|PhpMessageSource]]), Yii предоставляет ещё два
класса: класса:
@ -135,7 +134,7 @@ echo \Yii::t('app', 'Balance: {0}', $sum);
### Указатели с расширенным форматированием ### Указатели с расширенным форматированием
Чтобы использовать расширенные возможности, вам необходимо установить и включить [PHP-расширение intl](http://www.php.net/manual/en/intro.intl.php). Чтобы использовать расширенные возможности, вам необходимо установить и включить [PHP-расширение intl](http://php.net/manual/ru/intro.intl.php).
После этого вам станет доступен расширенный синтаксис указателей, а также сокращённая запись `{placeholderName, argumentType}`, После этого вам станет доступен расширенный синтаксис указателей, а также сокращённая запись `{placeholderName, argumentType}`,
эквивалентная форме `{placeholderName, argumentType, argumentStyle}`, позволяющая определять стиль форматирования. эквивалентная форме `{placeholderName, argumentType, argumentStyle}`, позволяющая определять стиль форматирования.
@ -171,7 +170,7 @@ echo \Yii::t('app', 'Balance: {0, number, ,000,000000}', $sum);
echo \Yii::t('app', 'Today is {0, date}', time()); echo \Yii::t('app', 'Today is {0, date}', time());
``` ```
Встроенные форматы - это `short`, `medium`, `long`, and `full`: Встроенные форматы это `short`, `medium`, `long` и `full`:
```php ```php
echo \Yii::t('app', 'Today is {0, date, short}', time()); echo \Yii::t('app', 'Today is {0, date, short}', time());
@ -191,7 +190,7 @@ echo \Yii::t('app', 'Today is {0, date,yyyy-MM-dd}', time());
echo \Yii::t('app', 'It is {0, time}', time()); echo \Yii::t('app', 'It is {0, time}', time());
``` ```
Встроенные форматы - это `short`, `medium`, `long`, and `full`: Встроенные форматы это `short`, `medium`, `long` и `full`:
```php ```php
echo \Yii::t('app', 'It is {0, time, short}', time()); echo \Yii::t('app', 'It is {0, time, short}', time());
@ -215,10 +214,10 @@ echo \Yii::t('app', 'Число {n,number} прописью: {n, spellout}', ['n
#### Порядковые числительные #### Порядковые числительные
```php ```php
echo \Yii::t('app', 'Вы - {n, ordinal} посетитель!', ['n' => 42]); echo \Yii::t('app', 'Вы {n, ordinal} посетитель!', ['n' => 42]);
``` ```
Выведет сообщение "Вы - 42-й посетитель!". Выведет сообщение "Вы 42-й посетитель!".
#### Продолжительность #### Продолжительность
@ -248,10 +247,10 @@ echo \Yii::t(
* `=0` означает ноль; * `=0` означает ноль;
* `=1` соответствует ровно `1`; * `=1` соответствует ровно `1`;
* `one` - `21`, `31`, `41` и так далее; * `one` `21`, `31`, `41` и так далее;
* `few` - от `2` до `4`, от `22` до `24` и так далее; * `few` от `2` до `4`, от `22` до `24` и так далее;
* `many` - `0`, от `5` до `20`, от `25` до `30` и так далее; * `many` `0`, от `5` до `20`, от `25` до `30` и так далее;
* `other` - для всех прочих чисел (например, дробных). * `other` для всех прочих чисел (например, дробных).
* Решётка `#` заменяется на значение аргумента `n`. * Решётка `#` заменяется на значение аргумента `n`.
Для некоторых языков правила могут быть более простыми. Например, для английского будет достаточно указать: Для некоторых языков правила могут быть более простыми. Например, для английского будет достаточно указать:
@ -260,8 +259,8 @@ echo \Yii::t(
echo \Yii::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', ['n' => 0]); echo \Yii::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', ['n' => 0]);
``` ```
Следует помнить, что если вы используете указатель дважды и в первый раз он используется, как `plural`, Следует помнить, что если вы используете указатель дважды, и в первый раз он используется как `plural`,
второй раз он должен быть использован, как `number`, иначе вы получите ошибку "Inconsistent types declared второй раз он должен быть использован как `number`, иначе вы получите ошибку "Inconsistent types declared
for an argument: U_ARGUMENT_TYPE_MISMATCH": for an argument: U_ARGUMENT_TYPE_MISMATCH":
``` ```
@ -277,23 +276,23 @@ for an argument: U_ARGUMENT_TYPE_MISMATCH":
демонстрирует возможность подстановки корректного рода в зависимости от параметра: демонстрирует возможность подстановки корректного рода в зависимости от параметра:
```php ```php
echo \Yii::t('app', '{name} - {gender} и {gender, select, женщина{ей} мужчина{ему} other{ему}} нравится Yii!', [ echo \Yii::t('app', '{name} {gender} и {gender, select, женщина{ей} мужчина{ему} other{ему}} нравится Yii!', [
'name' => 'Василий', 'name' => 'Василий',
'gender' => 'мужчина', 'gender' => 'мужчина',
]); ]);
``` ```
Выведет сообщение "Василий - мужчина и ему нравится Yii!". Выведет сообщение "Василий мужчина и ему нравится Yii!".
Вы приведённом выражении, `мужчина` и `женщина` - это возможные варианты пола. На всякий случай, `other` В приведённом выражении, `мужчина` и `женщина` это возможные варианты пола. На всякий случай, `other`
обработает случай, если значение не совпадает с первыми двумя вариантами. Строки в скобках являются вторичными обработает случай, если значение не совпадает с первыми двумя вариантами. Строки в скобках являются вторичными
выражениями и могут быть просто строкой или строкой, содержащей дополнительные указатели. выражениями и могут быть просто строкой или строкой, содержащей дополнительные указатели.
### Определение перевода по умолчанию ### Определение перевода по умолчанию
Вы можете определить переводы, которые будут использованы, как переводы по умолчанию для категорий, которые Вы можете определить переводы, которые будут использованы как переводы по умолчанию для категорий, которые
не попадают в другие переводы. Этот перевод должен быть помечен звёздочкой `*` и указан в конфигурации не попадают в другие переводы. Этот перевод должен быть помечен звёздочкой `*` и указан в конфигурации
приложения, как: приложения как:
```php ```php
// конфигурация i18n компонента // конфигурация i18n компонента
@ -447,7 +446,7 @@ Yii поставляется с набором сообщений по умол
когда источник не содержит искомой строки. Для этого следует использовать обработку события когда источник не содержит искомой строки. Для этого следует использовать обработку события
[[yii\i18n\MessageSource::EVENT_MISSING_TRANSLATION|missingTranslation]] компонента [[yii\i18n\MessageSource]]. [[yii\i18n\MessageSource::EVENT_MISSING_TRANSLATION|missingTranslation]] компонента [[yii\i18n\MessageSource]].
Например, чтобы отметить все не переведённые строки, чтобы их было легче находить на странице, необходимо Например, чтобы отметить все непереведённые строки, чтобы их было легче находить на странице, необходимо
создать обработчик события. Изменим конфигурацию приложения: создать обработчик события. Изменим конфигурацию приложения:
```php ```php
@ -485,7 +484,7 @@ class TranslationEventHandler
} }
``` ```
Если [[yii\i18n\MissingTranslationEvent::translatedMessage]] установлен, как обработчик события, на странице будет Если [[yii\i18n\MissingTranslationEvent::translatedMessage]] установлен как обработчик события, на странице будет
выведен соответствующий результат перевода. выведен соответствующий результат перевода.
> Warning: каждый источник обрабатывает недостающие переводы самостоятельно. Если вы используете несколько разных > Warning: каждый источник обрабатывает недостающие переводы самостоятельно. Если вы используете несколько разных
@ -493,8 +492,8 @@ class TranslationEventHandler
> обработчик события для каждого источника. > обработчик события для каждого источника.
Представления Представления <span id="view-translation"></span>
------------- -------------------------------------------------
Вместо того, чтобы переводить сообщения так, как указано в предыдущем разделе, вы можете использовать `i18n` в ваших Вместо того, чтобы переводить сообщения так, как указано в предыдущем разделе, вы можете использовать `i18n` в ваших
представлениях, чтобы обеспечить поддержку нескольких языков. Например, если существует представление `views/site/index.php` представлениях, чтобы обеспечить поддержку нескольких языков. Например, если существует представление `views/site/index.php`
@ -506,22 +505,22 @@ class TranslationEventHandler
> найти представления в папке `en` перед тем, как использовать исходные. > найти представления в папке `en` перед тем, как использовать исходные.
Форматирование чисел и дат Форматирование чисел и дат <span id="date-number"></span>
-------------------------- ---------------------------------------------------------
См. описание [форматирования дат](output-formatting.md). См. описание [форматирования дат](output-formatting.md).
Настройка PHP-окружения <span id="setup-environment"></span> Настройка PHP-окружения <span id="setup-environment"></span>
-------------------------------------------------------- ------------------------------------------------------------
Для работы с большей частью функций интернационализации, Yii использует [PHP-расширение intl](http://php.net/manual/en/book.intl.php). Для работы с большей частью функций интернационализации Yii использует [PHP-расширение intl](http://php.net/manual/ru/book.intl.php).
Например, это расширение используют классы, отвечающие за форматирование чисел и дат [[yii\i18n\Formatter]] и за форматирование Например, это расширение используют классы, отвечающие за форматирование чисел и дат [[yii\i18n\Formatter]] и за форматирование
строк [[yii\i18n\MessageFormatter]]. Оба класса поддерживают базовый функционал даже в том случае, если расширение `intl` не строк [[yii\i18n\MessageFormatter]]. Оба класса поддерживают базовый функционал даже в том случае, если расширение `intl` не
установлено. Однако, этот запасной вариант более-менее будет работать только для сайтов на английском языке, хотя, даже для установлено. Однако, этот запасной вариант более-менее будет работать только для сайтов на английском языке, хотя даже для
них, большая часть широких возможностей расширения `intl` не будет доступна, поэтому его установка настоятельно рекомендуется. них большая часть широких возможностей расширения `intl` не будет доступна, поэтому его установка настоятельно рекомендуется.
[PHP-расширение intl](http://php.net/manual/en/book.intl.php) основано на [библиотеке ICU](http://site.icu-project.org/), которая [PHP-расширение intl](http://php.net/manual/ru/book.intl.php) основано на [библиотеке ICU](http://site.icu-project.org/), которая
описывает правила форматирования для различных локалей. Поэтому следует помнить, что форматирование чисел и дат вместе с описывает правила форматирования для различных локалей. Поэтому следует помнить, что форматирование чисел и дат вместе с
синтаксисом форматирования может отличаться в зависимости от версии библиотеки ICU, которая была скомпилирована в вашем синтаксисом форматирования может отличаться в зависимости от версии библиотеки ICU, которая была скомпилирована в вашем
дистрибутиве PHP. дистрибутиве PHP.
@ -543,6 +542,6 @@ echo "ICU: " . INTL_ICU_VERSION . "\n";
версии 4.8 и последовательность версий выглядит так: ICU 4.8, ICU 49, ICU 50, ICU 51 и так далее. версии 4.8 и последовательность версий выглядит так: ICU 4.8, ICU 49, ICU 50, ICU 51 и так далее.
Известные проблемы <span id="known-problems"></span> Известные проблемы <span id="known-problems"></span>
-------------------------------------------------------- ----------------------------------------------------
- В ICU версии 52.1 было испорчено форматирование множественных чисел (`plural`) в русском языке. Проблема решается обновлением ICU до версии 53.1 или старше. - В ICU версии 52.1 было испорчено форматирование множественных чисел (`plural`) в русском языке. Проблема решается обновлением ICU до версии 53.1 или старше.

6
docs/internals-ja/git-workflow.md

@ -160,7 +160,7 @@ Enh #999: 機能拡張の内容説明 (あなたの名前)
### 6. 修正をコミットする ### 6. 修正をコミットする
以下のコマンドを使って、コミットしたいファイルや変更を [staging area](http://gitref.org/basic/#add) に追加します。 以下のコマンドを使って、コミットしたいファイルや変更を [staging area](http://git.github.io/git-reference/basic/#add) に追加します。
``` ```
git add path/to/my/file.php git add path/to/my/file.php
@ -195,7 +195,7 @@ git push -u origin 999-name-of-your-branch-goes-here
つまり、次回 `git push` とタイプしたときには、git は既にどこにプッシュすればよいか知っている、ということです。 つまり、次回 `git push` とタイプしたときには、git は既にどこにプッシュすればよいか知っている、ということです。
こうしておくと、後でプルリクエストにコミットを追加したくなった場合に便利です。 こうしておくと、後でプルリクエストにコミットを追加したくなった場合に便利です。
### 9. upstream に対して [プルリクエスト](http://help.github.com/send-pull-requests/) を発行する ### 9. upstream に対して [プルリクエスト](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) を発行する
github 上のあなたのリポジトリに入って、"Pull Request" をクリックし、右側にあるブランチを選び、コメントボックスにもう少し詳細を記述します。 github 上のあなたのリポジトリに入って、"Pull Request" をクリックし、右側にあるブランチを選び、コメントボックスにもう少し詳細を記述します。
プルリクエストを課題とリンクさせるために、プルコメントのどこかに `#999` という書式で課題番号を記載します。 プルリクエストを課題とリンクさせるために、プルコメントのどこかに `#999` という書式で課題番号を記載します。
@ -224,7 +224,7 @@ git push origin --delete 999-name-of-your-branch-goes-here
### 注意: ### 注意:
退行 (regression) を早期に発見するために、github 上の Yii コードベースへのマージは、すべて [Travis CI](http://travis-ci.org) に取り上げられて、自動化されたテストにかけられます。 退行 (regression) を早期に発見するために、github 上の Yii コードベースへのマージは、すべて [Travis CI](http://travis-ci.org) に取り上げられて、自動化されたテストにかけられます。
コアチームとしては、このサービスに過大な負担をかけたくないために、以下の場合にはマージの説明に [`[ci skip]`](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) が含まれるようにしてください。 コアチームとしては、このサービスに過大な負担をかけたくないために、以下の場合にはマージの説明に [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build) が含まれるようにしてください。
すなわち、プルリクエストが、 すなわち、プルリクエストが、
* javascript、css または画像ファイルだけに影響する場合 * javascript、css または画像ファイルだけに影響する場合

6
docs/internals-pl/git-workflow.md

@ -160,7 +160,7 @@ W przypadku drobnych zmian, np. literówek i poprawek dokumentacji, nie ma potrz
### 6. Zatwierdź swoje modyfikacje ### 6. Zatwierdź swoje modyfikacje
Dodaj swoje pliki/zmiany, które chcesz zatwierdzić do [kolejki oczekujących](http://gitref.org/basic/#add) za pomocą Dodaj swoje pliki/zmiany, które chcesz zatwierdzić do [kolejki oczekujących](http://git.github.io/git-reference/basic/#add) za pomocą
``` ```
git add sciezka/do/mojego/pliku.php git add sciezka/do/mojego/pliku.php
@ -195,7 +195,7 @@ Parametr `-u` spowoduje, że Twoja gałąź zostanie automatycznie wysłana i po
razem, kiedy napiszesz `git push`, będzie wiedział, gdzie ją wysłać. Ułatwia to pracę w przypadku, gdy chcesz zatwierdzić więcej razem, kiedy napiszesz `git push`, będzie wiedział, gdzie ją wysłać. Ułatwia to pracę w przypadku, gdy chcesz zatwierdzić więcej
modyfikacji w pojedynczej prośbie o dołączenie kodu. modyfikacji w pojedynczej prośbie o dołączenie kodu.
### 9. Otwórz [prośbę o połączenie kodu](http://help.github.com/send-pull-requests/) z upstream. ### 9. Otwórz [prośbę o połączenie kodu](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) z upstream.
Przejdź do swojego repozytorium na GitHubie i kliknij "Pull Request", wybierz swoją gałąź po prawej stronie i podaj dodatkowe Przejdź do swojego repozytorium na GitHubie i kliknij "Pull Request", wybierz swoją gałąź po prawej stronie i podaj dodatkowe
szczegóły w polu komentarza. Aby połączyć wysyłaną prośbę ze zgłoszeniem umieść gdziekolwiek w komentarzu `#999`, gdzie 999 jest szczegóły w polu komentarza. Aby połączyć wysyłaną prośbę ze zgłoszeniem umieść gdziekolwiek w komentarzu `#999`, gdzie 999 jest
@ -227,7 +227,7 @@ git push origin --delete 999-nazwa-twojej-galezi-w-tym-miejscu
W celu wczesnego wykrycia ewentualnych problemów z integracją, każde żądanie scalenia głównego kodu Yii na GitHubie jest W celu wczesnego wykrycia ewentualnych problemów z integracją, każde żądanie scalenia głównego kodu Yii na GitHubie jest
weryfikowane przez automatyczne testy [Travis CI](http://travis-ci.org). Ponieważ ekipa głównych programistów stara się nie weryfikowane przez automatyczne testy [Travis CI](http://travis-ci.org). Ponieważ ekipa głównych programistów stara się nie
nadużywać tej usługi, [`[ci skip]`](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) jest dodawane przy komentarzu nadużywać tej usługi, [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build) jest dodawane przy komentarzu
scalenia kodu, jeśli żądanie: scalenia kodu, jeśli żądanie:
* dotyczy jedynie javascript, css lub plików obrazków, * dotyczy jedynie javascript, css lub plików obrazków,

22
docs/internals-ru/git-workflow.md

@ -105,11 +105,11 @@ php build/build dev/ext <extension-name> <fork>
Все новые функции и баги должны быть связаны с issue для того, чтоб иметь единое место для обсуждения и документирования. Все новые функции и баги должны быть связаны с issue для того, чтоб иметь единое место для обсуждения и документирования.
Потратьте несколько минут на поиск существующей issue, которая соответствует вашим изменениям. Если вы найдёте её в Потратьте несколько минут на поиск существующей issue, которая соответствует вашим изменениям. Если вы найдёте её в
списке, то пожалуйста оставьте комментарий, что вы начали над ней работать. Если вы не нашли нужной issue пожалуйста списке, то, пожалуйста, оставьте комментарий, что вы начали над ней работать. Если вы не нашли нужной issue, пожалуйста,
[создайте новую issue](report-an-issue.md) или создайте сразу запрос на изменения если это простые изменения. [создайте новую issue](report-an-issue.md) или создайте сразу запрос на изменения, если это простые изменения.
Это позволит команде проверить ваше предложение, и обеспечить соответствующую обратную связь. Это позволит команде проверить ваше предложение и обеспечить соответствующую обратную связь.
> Для небольших изменений или документации, или простых исправлений, вам нет необходимости создавать issue, > Для небольших изменений или документации, или простых исправлений вам нет необходимости создавать issue,
запрос на изменения в этом случае подходит лучше. запрос на изменения в этом случае подходит лучше.
### 2. Получите последний код из основного репозитория Yii ### 2. Получите последний код из основного репозитория Yii
@ -141,7 +141,7 @@ git checkout -b 999-name-of-your-branch-goes-here
Убедитесь, что он работает :) Убедитесь, что он работает :)
Модульные тесты всегда приветствуются. Протестированный и с хорошим покрытием код значительно упрощает задачу проверки Модульные тесты всегда приветствуются. Протестированный и с хорошим покрытием код значительно упрощает задачу проверки
вашего предложения. Сломанные модульные тесты, как описание проблемы, тоже приветствуются. вашего предложения. Сломанные модульные тесты как описание проблемы тоже приветствуются.
### 5. Обновите CHANGELOG ### 5. Обновите CHANGELOG
@ -160,7 +160,7 @@ Enh #999: a description of the enhancement (Your Name)
### 6. Зафиксируйте изменения ### 6. Зафиксируйте изменения
Добавляем файлы/изменения которые вы хотите зафиксировать в [staging area](http://gitref.org/basic/#add) Добавляем файлы/изменения которые вы хотите зафиксировать в [staging area](http://git.github.io/git-reference/basic/#add):
``` ```
git add path/to/my/file.php git add path/to/my/file.php
@ -185,7 +185,7 @@ git pull upstream master
какие-либо конфликты слияния, вы должны исправить их и зафиксировать изменения ещё раз. Это гарантирует, что команда Yii какие-либо конфликты слияния, вы должны исправить их и зафиксировать изменения ещё раз. Это гарантирует, что команда Yii
сможет слить ваши изменения одним кликом. сможет слить ваши изменения одним кликом.
### 8. Разрешив зависимости, отправьте код на Github ### 8. Разрешив конфликты, отправьте код на Github
``` ```
git push -u origin 999-name-of-your-branch-goes-here git push -u origin 999-name-of-your-branch-goes-here
@ -194,20 +194,20 @@ git push -u origin 999-name-of-your-branch-goes-here
Опция `-u` сохранит указание на ветку в Github, чтобы при следующем выполнении `git push`, git знал, куда отправлять Опция `-u` сохранит указание на ветку в Github, чтобы при следующем выполнении `git push`, git знал, куда отправлять
изменения. Это полезно, если вы хотите позже отправлять ещё коммиты в этот запрос на слияние. изменения. Это полезно, если вы хотите позже отправлять ещё коммиты в этот запрос на слияние.
### 9. Откройте [запрос на слияние](http://help.github.com/send-pull-requests/) в *upstream*. ### 9. Откройте [запрос на слияние](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) в *upstream*.
Перейдите в репозиторий на Github и нажмите "Pull Request", выберите ветку справа и введите больше информации Перейдите в репозиторий на Github и нажмите "Pull Request", выберите ветку справа и введите больше информации
в поле комментариев. Чтобы связать запрос на изменение с issue, добавьте в комментарий `#999` - где 999 это номер issue. в поле комментариев. Чтобы связать запрос на изменение с issue, добавьте в комментарий `#999` - где 999 это номер issue.
> Обратите внимание, что каждый запрос на слияние должен исправлять единственное изменение. Для множества независимых > Обратите внимание, что каждый запрос на слияние должен исправлять единственное изменение. Для множества независимых
изменений, пожалуйста откройте несколько запросов на слияние. изменений, пожалуйста, откройте несколько запросов на слияние.
### 10. Проверка вашего кода кем-то ### 10. Проверка вашего кода кем-то
Кто-то будет проверять ваш код, и, возможно, вам будет предложено внести некоторые изменения. Eсли это так, то перейдите Кто-то будет проверять ваш код, и, возможно, вам будет предложено внести некоторые изменения. Eсли это так, то перейдите
к шагу #6 (вам не надо открывать новый запрос на слияние, если текущий ещё открыт). Если код будет принят, он будет к шагу #6 (вам не надо открывать новый запрос на слияние, если текущий ещё открыт). Если код будет принят, он будет
влит в основную ветку и станет частью следующего релиза Yii. Если нет - не унывайте, разным людям необходимы различные влит в основную ветку и станет частью следующего релиза Yii. Если нет - не унывайте, разным людям необходимы различные
функции и Yii не может реализовывать всё для всех, ваш код будет ещё доступен на Github как ссылка для людей кому он функции, и Yii не может реализовывать всё для всех, ваш код будет ещё доступен на Github как ссылка для людей кому он
может пригодится. может пригодится.
### 11. Очистка ### 11. Очистка
@ -225,7 +225,7 @@ git push origin --delete 999-name-of-your-branch-goes-here
Для обнаружения регрессии как можно раньше, каждое слияние кодовой базы Yii на Github будет подхвачено Для обнаружения регрессии как можно раньше, каждое слияние кодовой базы Yii на Github будет подхвачено
[Travis CI](http://travis-ci.org) для автоматического запуска тестов. Люди из *core team* не хотят нагружать [Travis CI](http://travis-ci.org) для автоматического запуска тестов. Люди из *core team* не хотят нагружать
этот сервис, поэтому добавляют текст [`[ci skip]`](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) в описание этот сервис, поэтому добавляют текст [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build) в описание
запроса на слияние, в следующих ситуациях: запроса на слияние, в следующих ситуациях:
* затронуты только JavaScript, CSS файлы или файлы изображений, * затронуты только JavaScript, CSS файлы или файлы изображений,

2
docs/internals-ru/translation-workflow.md

@ -6,7 +6,7 @@ Yii переводится на множество языков, в том чи
Сообщения фреймворка Сообщения фреймворка
-------------------- --------------------
Есть два типа сообщений: исключения, которые нацелены на разработчиков и не переводятся и сообщения, которые показываются Есть два типа сообщений: исключения, которые нацелены на разработчиков и не переводятся, и сообщения, которые показываются
пользователям. Например, ошибки валидации. пользователям. Например, ошибки валидации.
Для того, чтобы обновить перевод: Для того, чтобы обновить перевод:

6
docs/internals-sr-Latn/git-workflow.md

@ -121,7 +121,7 @@ Za veoma male izmene, na primer, greške u tekstu, izmene na dokumentaciji, nije
### 6. Komitujte promene ### 6. Komitujte promene
dodajte fajlove/promene koje želite da [komitujete](http://gitref.org/basic/#add) sa dodajte fajlove/promene koje želite da [komitujete](http://git.github.io/git-reference/basic/#add) sa
``` ```
git add path/to/my/file.php git add path/to/my/file.php
@ -151,7 +151,7 @@ git push -u origin 999-IME-VASE-GRANE
Parametar `-u` će osigurati da će vaša grana moći da šalje pull i push zahteve sa GitHub grane. To znači da ako pozovete `git push` sledeći put će znati gde treba kod da se pošalje. Ovo je korisno ako budete hteli da kasnije dodate više komitova u jednom pull zahtevu. Parametar `-u` će osigurati da će vaša grana moći da šalje pull i push zahteve sa GitHub grane. To znači da ako pozovete `git push` sledeći put će znati gde treba kod da se pošalje. Ovo je korisno ako budete hteli da kasnije dodate više komitova u jednom pull zahtevu.
### 9. Otvorite [pull zahtev](http://help.github.com/send-pull-requests/) na upstream-u. ### 9. Otvorite [pull zahtev](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) na upstream-u.
Posetite vaš repozitorijum na Github-u i kliknite na "Pull Request", izaberite vašu granu na desnoj strani i unesite neki opis u polje za komentar. Kako bi povezali pull zahtev sa temom unesite bilo gde u komentaru `#999` gde 999 je broj teme. Posetite vaš repozitorijum na Github-u i kliknite na "Pull Request", izaberite vašu granu na desnoj strani i unesite neki opis u polje za komentar. Kako bi povezali pull zahtev sa temom unesite bilo gde u komentaru `#999` gde 999 je broj teme.
@ -174,7 +174,7 @@ git push origin --delete 999-IME-VASE-GRANE
### Napomena: ### Napomena:
Kako bi rano otkrili regresije u Yii kodu prilikom svake integracije na GitHub-u pokreće se [Travis CI](http://travis-ci.org) kako bi se radilo testiranje. Pošto Yii tim ne želi da preoptereti ovaj servis, Kako bi rano otkrili regresije u Yii kodu prilikom svake integracije na GitHub-u pokreće se [Travis CI](http://travis-ci.org) kako bi se radilo testiranje. Pošto Yii tim ne želi da preoptereti ovaj servis,
[`[ci skip]`](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) će biti uključen prilikom svake integracije ako pull zahtev: [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build) će biti uključen prilikom svake integracije ako pull zahtev:
* utiče samo na javascript, css i slike, * utiče samo na javascript, css i slike,
* osvežava dokumentaciju, * osvežava dokumentaciju,

6
docs/internals-uk/git-workflow.md

@ -138,7 +138,7 @@ Enh #999: a description of the enhancement (Your Name)
### 6. Створіть комміт ваших змін ### 6. Створіть комміт ваших змін
Додайте файли/зміни, призначені для комміту, в [буферну зону](http://gitref.org/basic/#add) за допомогою команди: Додайте файли/зміни, призначені для комміту, в [буферну зону](http://git.github.io/git-reference/basic/#add) за допомогою команди:
``` ```
git add path/to/my/file.php git add path/to/my/file.php
@ -173,7 +173,7 @@ git push -u origin 999-name-of-your-branch-goes-here
Це означає, якщо ви виконаєте `git push` наступного разу, програма буде знати куди відправляти. Це корисно, якщо ви Це означає, якщо ви виконаєте `git push` наступного разу, програма буде знати куди відправляти. Це корисно, якщо ви
бажаєте пізніше додавати більше коммітів у "pull request". бажаєте пізніше додавати більше коммітів у "pull request".
### 9. Відправте ["pull request"](http://help.github.com/send-pull-requests/) до upstream. ### 9. Відправте ["pull request"](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) до upstream.
Перейдіть до вашого репозиторію на GitHub та натисніть "Pull Request", оберіть вашу гілку справа та внесіть трохи деталей Перейдіть до вашого репозиторію на GitHub та натисніть "Pull Request", оберіть вашу гілку справа та внесіть трохи деталей
у полі коментарю. Щоб пов’язати "pull request" із запитанням, внесіть десь у коментарі `#999`, де 999 - це номер питання. у полі коментарю. Щоб пов’язати "pull request" із запитанням, внесіть десь у коментарі `#999`, де 999 - це номер питання.
@ -203,7 +203,7 @@ git push origin --delete 999-name-of-your-branch-goes-here
Для виявлення регресу на ранніх стадіях кожне поєднання з кодовою базою Yii на GitHub опрацьовується у Для виявлення регресу на ранніх стадіях кожне поєднання з кодовою базою Yii на GitHub опрацьовується у
[Travis CI](http://travis-ci.org) для автоматичного запуску тестів. Оскільки основна команда розробників не бажає [Travis CI](http://travis-ci.org) для автоматичного запуску тестів. Оскільки основна команда розробників не бажає
перевантажувати сервіс, додавайте [`[ci skip]`](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) до перевантажувати сервіс, додавайте [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build) до
опису поєднання, якщо ваш "pull request": опису поєднання, якщо ваш "pull request":
* зачіпає лише файли javascript, css або файли зображень, * зачіпає лише файли javascript, css або файли зображень,

9
docs/internals/git-workflow.md

@ -41,8 +41,7 @@ The following steps are not necessary if you want to work only on translations o
If you are going to work with JavaScript: If you are going to work with JavaScript:
- run `npm install` to install JavaScript testing tools and dependencies (assuming you have [Node.js and NPM installed] - run `npm install` to install JavaScript testing tools and dependencies (assuming you have [Node.js and NPM installed](https://nodejs.org/en/download/package-manager/)).
(https://nodejs.org/en/download/package-manager/)).
> Note: JavaScript tests depend on [jsdom](https://github.com/tmpvar/jsdom) library which requires Node.js 4 or newer. > Note: JavaScript tests depend on [jsdom](https://github.com/tmpvar/jsdom) library which requires Node.js 4 or newer.
Using of Node.js 6 or 7 is more preferable. Using of Node.js 6 or 7 is more preferable.
@ -157,7 +156,7 @@ For very small fixes, e.g. typos and documentation changes, there is no need to
### 6. Commit your changes ### 6. Commit your changes
add the files/changes you want to commit to the [staging area](http://gitref.org/basic/#add) with add the files/changes you want to commit to the [staging area](http://git.github.io/git-reference/basic/#add) with
``` ```
git add path/to/my/file.php git add path/to/my/file.php
@ -192,7 +191,7 @@ The `-u` parameter ensures that your branch will now automatically push and pull
if you type `git push` the next time it will know where to push to. This is useful if you want to later add more commits if you type `git push` the next time it will know where to push to. This is useful if you want to later add more commits
to the pull request. to the pull request.
### 9. Open a [pull request](http://help.github.com/send-pull-requests/) against upstream. ### 9. Open a [pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) against upstream.
Go to your repository on GitHub and click "Pull Request", choose your branch on the right and enter some more details Go to your repository on GitHub and click "Pull Request", choose your branch on the right and enter some more details
in the comment box. To link the pull request to the issue put anywhere in the pull comment `#999` where 999 is the in the comment box. To link the pull request to the issue put anywhere in the pull comment `#999` where 999 is the
@ -222,7 +221,7 @@ git push origin --delete 999-name-of-your-branch-goes-here
To detect regressions early every merge to the Yii codebase on GitHub will be picked up by To detect regressions early every merge to the Yii codebase on GitHub will be picked up by
[Travis CI](http://travis-ci.org) for an automated testrun. As core team doesn't wish to overtax this service, [Travis CI](http://travis-ci.org) for an automated testrun. As core team doesn't wish to overtax this service,
[`[ci skip]`](http://about.travis-ci.org/docs/user/how-to-skip-a-build/) will be included to the merge description if [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/#Skipping-a-build) will be included to the merge description if
the pull request: the pull request:
* affect javascript, css or image files only, * affect javascript, css or image files only,

2
framework/CHANGELOG.md

@ -18,7 +18,7 @@ Yii Framework 2 Change Log
- Bug #15817: Fixed support of deprecated array format type casting in `yii\db\Command::bindValues()` (silverfire) - Bug #15817: Fixed support of deprecated array format type casting in `yii\db\Command::bindValues()` (silverfire)
- Bug #15822: Fixed `yii\base\Component::off()` not to throw an exception when handler does not exist (silverfire) - Bug #15822: Fixed `yii\base\Component::off()` not to throw an exception when handler does not exist (silverfire)
- Bug #15829: Fixed JSONB support in PostgreSQL 9.4 (silverfire) - Bug #15829: Fixed JSONB support in PostgreSQL 9.4 (silverfire)
- Bug #15836: Fixed nesting of `yii\db\ArrayExpresiion`, `yii\db\JsonExpression` (silverfire) - Bug #15836: Fixed nesting of `yii\db\ArrayExpression`, `yii\db\JsonExpression` (silverfire)
- Bug #15839: Fixed `yii\db\mysql\JsonExpressionBuilder` to cast JSON explicitly (silverfire) - Bug #15839: Fixed `yii\db\mysql\JsonExpressionBuilder` to cast JSON explicitly (silverfire)
- Bug #15840: Fixed regression on load fixture data file (leandrogehlen) - Bug #15840: Fixed regression on load fixture data file (leandrogehlen)
- Bug #15858: Fixed `Undefined offset` error calling `yii\helpers\Html::errorSummary()` with the same error messages for different model attributes (FabrizioCaldarelli, silverfire) - Bug #15858: Fixed `Undefined offset` error calling `yii\helpers\Html::errorSummary()` with the same error messages for different model attributes (FabrizioCaldarelli, silverfire)

Loading…
Cancel
Save